In the past 4 years of my life, many people who are just starting out in programming world have asked me some version of this question:
Which programming language should I focus on learning?
What technologies should I be learning, so that they prove helpful in my career?
To many of them I have said:
Don’t bother to fix yourself into a grove/niche just yet. You are just starting out, try any and everything that catches your attention and feels interesting.”
When you are just starting out, it is not very useful to just focus on one language/technology. It might even happen that that one thing which you start focusing on doesn’t interest you at all and you just get behind it because you think that it has better career-prospects. In that case your life would become terrible and since you are not interested in your learning, you won’t be producing your best output. Which in turn would cause you to be mediocre at-best.
Let me give my own example, my first foray into programming was during my 10th grade, it was a 10-day after-school crash-course in C programming. It was an utterly horrible experience for me. After those 10-days I swore to never learn programming. The next year in school it was a choice for me to select either Computer Science or Biology, I chose CS because Bio was worse for me. Near the end of high-school I had decidedly switched my career goal from becoming an aerospace engineer to becoming a programmer.
Then college came and this was the time that I actually got to know what a vast sea of options stood in front of me. I was also enthusiastic about picking one language and then mastering it to get a good job and build cool things. There was just one hurdle for me (it actually turned out to be a boon), I didn’t have anyone to ask which language to choose and similarly there wasn’t anyone advising me to choose one, as I did not have confidence in either my teachers’ or my seniors’ knowledge in those regards. So I started looking at different things.
I started with learning Java as I wanted to make GUIs. Let’s just say that it took around a whole semester to be able to get a chat program working on local-network. Then tried learning about Android development, but poor developer experience turned me away. Then after seeing a friend using Visual Studio’s Layout Editor, I decided to learn C# because it was easier to create GUIs in. For some weird reason, I picked-up Visual Basic. Got bored with it in less than a week. My journey with C# didn’t last long. as there came Python, with all its conciseness and no explicit data-types. I had no idea what I should build with them, I just wanted to learn “cool stuff”.
Except these, there were other periods too, like:
- 2 months of competitive algorithmic problem solving, because I wanted to win Google Code-Jam :sweat_smile:
- A month of learning SQL as I wanted to become “The DB Programmer”
- Quite a few months of tinkering with Arduino and IOT
But none of those were able to hold my interest for long. Then I got offered an internship as Android Developer from my neighbor in his new startup. I had nothing to lose and too much to gain so I joined it. That was the turning point of my life that finally fixed my interest in Android Development.
Today 4 years after the start of that internship, I am near completing my first year as a professional Android dev. If I hadn’t tried all those many things I never would have known how little do I like them.
So finally, before parting, this would be my only comment. Don’t worry too much about which technology or language or new hip-concept to focus on and build a career in. Keep an eye out and make sure to try everything that you find interesting. You pretty sure won’t be able to so easily try everything after you start working professionally, an you would have to learn to feel okay with that. My friend Nate Ebel has recently written a nice article on it.