What programming language should I learn?

I recently received an email from a young developer who was having some trouble deciding which programming language to learn. I don’t think I’m alone in saying that I remember asking myself the same question when I started programming.

Choosing your first language is a daunting task. It takes a lot of time and effort to learn when you’re starting from scratch, and I believe that many young developers are concerned with making such a large investment only to find in a couple years’ time that the language that they ended up choosing has since fallen out of favour.

The truth is that the language that you choose to learn first just doesn’t matter all that much.

What young developers often fail to realise is that once you’ve learned your first language you’ll never have to work so hard to learn a language ever again. Programming languages, even those which are quite different from one another, share many common fundamentals. I distinctly remember struggling when first trying to understand the difference between marking a variable ByVal and ByRef when learning Visual Basic years ago. Once I had grasped the difference, however, I had a head start on every language I learned thereafter. The more languages you learn, the easier learning the next one becomes. After a very short time you end up picking up languages in a fraction of the time that you would have ever thought possible when starting out as a programmer.

There is however one thing that I think all those starting out in software development should take into account when choosing a language. It’s that passion is perhaps the most valuable asset that a programmer can possess. We are extremely lucky to have a career that virtually guarantees all but the least competent among us (and even them in many cases) a decent job. However this virtue leads many people to become developers because of the job stability, and not because they love what they do.

If you’re passionate about what you do, you’ll stand out, be successful, and have a lot of fun doing it. The best way to start out as a programmer is by developing things that you can get excited about. If you find web development fascinating, try some Node.js or ASP.NET. If you dream of writing mobile applications, then give Java a shot and write an Android app. If you’re really into building gadgets, then learn C++ and buy yourself an Arduino to play with. If you’re enjoying what you do, you’ll learn quickly and get good fast.

Good developers are employable, no matter what language they specialise in.