paint-brush
Gentlemen, Choose Your Weapons! Programming Languages You Should (Not?) Learnby@shcherbanich
244 reads

Gentlemen, Choose Your Weapons! Programming Languages You Should (Not?) Learn

by Filipp ShcherbanichSeptember 3rd, 2024
Read on Terminal Reader
Read this story w/o Javascript

Too Long; Didn't Read

In the fast-evolving world of programming, developers must decide whether to adopt new languages or stick with proven ones. The article discusses the pros and cons of both approaches, emphasizing the importance of practical application and career goals in making this choice.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Gentlemen, Choose Your Weapons! Programming Languages You Should (Not?) Learn
Filipp Shcherbanich HackerNoon profile picture

As the old saying goes, few things in life are worse than bringing a knife to a gunfight. As an experienced developer, I can tell you this is 100% true for the programming world as well. You have to stay relevant in an industry that’s changing faster than I’m writing this article. Also, you have so many different tasks to do. So, after years of surviving in this environment, I always keep my favorite toys close and loaded. For a silent and precise job, there’s my trustful C++. If I want to make a big data bang, I choose R, somewhat extravagant, but convincingly powerful. But if things get really messy, I take my JavaScript off the wall: it kept me alive in the past and it can still take some more abuse. No language is good or bad for everyone. It depends on you and the job you have to do. So let’s discuss whether you should always keep up with the fashion or stick to the good old stuff. This question is a bit trickier than it seems…

Is every day a new beginning?..

Given the innovative nature of tech, discussing whether to learn another language may sound silly altogether. Indeed, if the world stood still, we would still be using clay tablets and abacuses. Thankfully, the desire to innovate leads to continuous advancements, necessitating constant skill upgrades. For instance, in the 1960s, communicating with computers involved punching holes in paper and feeding it into a machine. Today, computers fit in our pockets, and the only holes we encounter are in our budgets after buying them. Imagine the most advanced developer from the '60s trying to stay relevant without evolving their skills.


Programming languages evolve faster than their creators. New requirements, ideas, and tools that radically change traditional approaches and practices emerge at a remarkable pace. Specialists who ignore this fact become as outdated as the languages they cling to. A prime example is COBOL, which, despite being popular in the '60s for business applications, has become nearly obsolete with technological advancements.


Another reason to learn a new programming language is career prospects. Understanding that greater knowledge of the latest technologies increases their chances of landing high-paying jobs, some specialists enthusiastically study new languages. This effort is justified: knowing new technologies undoubtedly broadens job opportunities. Sometimes, new technologies are necessary even if the language itself remains relevant but the company changes its tech stack. In such cases, employees must either adapt or find new jobs. Typically, they choose to learn the new technology.


Learning new languages is beneficial not only for practical reasons but also for creativity. It can offer new approaches to familiar tasks, expanding perspectives and potential. For instance, Symfony, a popular PHP framework, was inspired by the Java-based Spring framework. Many open-source library developers have taken ideas from libraries implemented in other languages, and you could be the next innovator.

…Or is old real gold?

But for the sake of truth let’s look the other way round at all the things we discussed in the previous chapter. Do you know when punch cards were last used? Just take a guess… And unless you cheated by googling the answer right now, your guess would probably be wrong. The right answer is 2014. That year, the last punch cards were used by voting machines in the state of Idaho during the general elections in the US. Or take COBOL, the language we smashed as obsolete just a few paragraphs ago. Well, as of 2017, according to Reuters, 43% of all banking systems were based on COBOL; 80% of in-person transactions employed COBOL and there were 220 billion lines of code written in COBOL that were still in use. So there is actually a (not so fine) line between a language’s irrelevance for modern systems and its obsolescence in general.


What are the odds of a programming language that you know or are going to learn, becoming obsolete and useless anytime soon? There is no real answer to that, only guesses. Some authors estimate the average lifecycle of a programming language to lie anywhere between 14 and 18.5 years. Others say it’s closer to 25 years for dominant languages and 5-6 for more niche and exotic tools. But there is also one more point of view worth mentioning because it looks quite proven by history. It is based on the Lindy effect, best described by Nassim Nicholas Taleb in his book ‘Antifragile: Things That Gain from Disorder’: “If a book has been in print for forty years, I can expect it to be in print for another forty years. But, and that is the main difference, if it survives another decade, then it will be expected to be in print another fifty years. This, simply, as a rule, tells you why things that have been around for a long time are not "aging" like persons, but "aging" in reverse. Every year that passes without extinction doubles the additional life expectancy. This is an indicator of some robustness. The robustness of an item is proportional to its life!”


In other words, languages that have been out there long enough will probably stay with us for some more decades. On the contrary, there is a chance that fancy new stuff may become obsolete quite soon – but that remains to be seen. Each year of a language being in active service adds to its chances of surviving longer.

Think careers rather than languages

So what should we do? Learn a language? A new one or an old one? Well, learning itself is always good. Research shows that nearly half of all developers consider learning a new language. According to JetBrains' "The State of Developer Ecosystem 2023" survey, over 40% of respondents expressed this desire. Developers working with JavaScript (49%), PHP and Python (45%), and C++ (44%) developers show the most interest in learning something new. Choosing the language you want to learn actually depends on your career track. If you are thinking about a stable job that could last quite long (but not forever), you may opt for something old and proven. Such opportunities may arise in science, manufacturing and traditional banks, i.e. institutions with long-lasting expensive machinery and/or infrastructure heavily dependent on legacy code.


For instance, the majority of COBOL programmers were between 45 and 55 years old in 2017. Add seven years that passed since the research was published and you will see that many COBOL developers are entering their retirement age. If COBOL lasts as long as it is expected, this may be your chance to become a rare specialist of high value. But keep in mind that such a choice would require very profound knowledge and immaculate skill. Also, should something go wrong, your further job choice may be very limited unless you decide to change your profile.


If you prefer the vibrant life of startups or the power of tech giants, you should choose something more modern and promising. Seeing what others are doing may give you a clue: for instance, check the up-to-date rankings of programming languages by RedMonk or TIOBE. Don’t take them too seriously, as any imaginable ranking is based on some degree of simplification, but they may still give you the big picture of what is going on. Also, the mentioned survey by JetBrains reveals which languages are being learned most often. This way, you're sure to learn a language with a future.

Always get practical

Knowledge gained without practical application quickly becomes outdated. Therefore, learning a new language just for ticking a box is pointless. Instead, consider how you can use it in your current job. If your company already uses the technology, it can be a great incentive to learn. Simply ask your manager or team lead to assign you tasks related to it, allowing you to solidify your knowledge through practice. If your work uses a fixed tech stack and there's no opportunity to learn something new, you can always create your own side project to explore new boundaries independently. Just make sure not to violate your employment contract while doing so.


Even if you're just starting your way in development, the strategy remains the same: choose a technology you can use in real life (at work or in a side project). Pick a language with a bright future, not one the developer community shuns. Since you're just beginning your journey and not burdened by high salaries and expectations as a specialist, you can easily and quickly change your tech stack if the second language you learn appeals to you more than the first. You have greater flexibility in your choice, and it's worth taking advantage of this benefit. Just don't overdo it: too frequent changes in your tech stack and an overwhelming flow of knowledge can be detrimental. Find a balance between what you want and what you can manage, and you will surely achieve success.


For some developers, especially those with many years of experience, my advice may seem obvious. But as the saying goes, "Repetition is the mother of learning," and no one has ever disproved the truth of these wise words. I hope my article will encourage those who have long wanted to but were too lazy to take action and motivate eager novices. I hope my advice proves useful and perhaps even inspires further professional growth.