Don’t Stop Believin’
When I was at school, programming and software development was for nerds. The top achievers were all vying for roles in finance or management consultancy, the booming industries of its day. After the 2008 crisis, regulation and capital control caused the industry to become more selective about who they hired, and those jobs became competitive and scarce.
Soon after, something strange began to happen.
All over the world, tech companies started to eat into the share of these large banks and insurance companies. FANGMAN (an acronym for the biggest tech stocks) became a thing, growing over the last ten years to a market cap now equivalent to the entire GDP of Japan and India combined. From Silicon Valley to Shenzhen, regional hubs sought tech startups to rejuvenate their economies. Finance, too, started to innovate and compete on tech- from the online betting boom to cryptocurrency. In one fell swoop, the high achievers started enrolling for Udemy courses on computer science, the nerds turned into rock stars overnight, and programming was no longer something you did in your mum’s basement.
Choose Your Fighter
I’m guessing that you’re reading this post because you want to know what you should learn as your first programming language. I don’t blame you- Coding’s a useful skill to know given the opportunities, and big tech often pushes the narrative that it should be a necessity in curriculum (I often have doubts about this, but let’s leave that for later).
Here’s the issue though- if you asked experienced software developers which programming language is best to learn, they’re very likely to either recommend ones they’re best at (which isn’t necessarily a bad thing) or be extremely militant about the topic- they’ll probably start telling you that the language or framework they’re working with is best, and every other language is either rubbish or fading into obscurity. Well, thanks for today mate.
It’s All Greek to Me
I have an analogy that might help with your dilemma. Cast your mind back to school again, where you were likely presented with the choice of picking a second language to learn (I never had to choose as my government picked for me, but I’m a strange foreigner). What drove you to learn French? Spanish? Mandarin? English (now then)!?
In reality, picking a programming language to learn is like picking a foreign language. The decisions involved in choosing either are very similar. Think about it- when choosing to learn a language at school, you’re likely thinking about the long-term and how useful it will be in future. Mandarin and Spanish often dominate the narrative in this regard, with demographics and a huge market behind them. Then there’s the cultural argument- perhaps your parents have roots in the Middle East and they would like for you to learn Arabic, and you have family and relatives who speak that language.
Now we can begin to draw our first parallel between the two subjects. A quick Google will show you which programming languages are most popular, with their year-on-year trends. If your only priority is practical use, you can’t go wrong picking any of the top 5 popular programming languages.
Working 9 to 5
It isn’t always about the numbers though. As you grow older you may find demand for certain languages in industry. For instance, German and Japanese may not be as widely spoken, but if you would like to be a skilled specialist in the automobile industry you’d argue that these two languages open up more doors than others.
Of course, it’s total nonsense to think that you’re better than someone just because you can speak a language they can’t. It’s useful to know a few for sure, but there are other important skills in life beyond just being able to speak a language. In IT, many newcomers fall into the trap of “collecting” programming languages to put on their CV- trying to keep up with trends more than anything. This is futile at the end of the day if you can’t really implement anything concrete- the equivalent would probably be walking into a bar in Italy armed with only “una birra per favore”…
Apples and Oranges
An aside- this post is about helping the reader choose a programming language analogous to picking a foreign language. I’m not arguing that foreign and programming languages are perfect substitutes. There have been cases in the USA where states have allowed programming languages to count as foreign language credits in their education system. This doesn’t sit well with me- at some level, the instructions that a computer processes are just different from those that humans understand. Not everybody is going to become the next Mark Zuckerberg because they’ve mastered concurrency in Java over conjugation in French, but I’d argue that you’d be taking away an important communication skill in a student’s development.
I think programming should be included in the curriculum, but paired with subjects that have more in common with it such as maths and logical thinking. We have to be careful with the big tech narrative of coding being an essential skill- while useful, it’s important for it not to come at a cost to other important skills which will impact the students’ (and also our) future.
Just Do It
Anyway, back to picking your first programming language.
I’m going to disappoint and end with the cliché- it doesn’t matter which programming language you learn. Just choose one and stick with it. You’ll find the basics in all programming languages are very similar, aside from a few differences in the syntax. Eventually, once you have the basics nailed down, you can learn another one that best fits your use case, and it’ll be easier to pick up and use that too. In some respects, this is where programming and foreign languages are the most similar to me- once you’ve learned one language, picking up a second or third becomes easier, etc.
So just do it. Pick one, learn about the data types, print your “hello world”, master control flow structures like IF and FOR loops, maybe deploy a simple application or automate a basic process on your desktop. Then you’ll be in a position to apply your skills to more complex problems.