The developers are restless, and quite consumerist to learn new things, and often influences us hype, learn fashion. In any case, learning is good, enriches us and is positive. In fact, in the book The Pragmatic Programmer they recommend learning at least one new programming language every year.
It is common that in our continuous learning process, we have such an extensive list of new languages to look at and mess around with that causes us a certain paralysis and we don’t know which one to choose.
Languages are tools
If you’re a software developer and you’re asked, “What’s your job? in exchange for what do you get paid?”, you probably answer that you get paid for programming. But that’s not the case.
Take the case of a pizza delivery guy. This person gets paid to deliver pizzas to homes, and to get it, he drives a moped. Your boss doesn’t pay you to drive the moped, but to deliver the pizzas on time and in the right place.
In the case of programmers, the same thing happens. The aim of our work is to add value to the business (deliver the pizzas), not to program in itself (drive the moped).
Your job, therefore, is to think about how to solve business problems in the most optimal and appropriate way, and programming languages and frameworks are vehicles to reach those solutions. Sometimes it is good to set up a complex architecture of microservices with a front-end made in React, but other times it is enough to configure an Excel document and it is not even necessary to throw a single line of code.
Therefore, at a professional level, it may not be as relevant as you think to know one language or another, as long as you know the foundations well, which are very similar in all languages for decades, and therefore is unlikely to change in a short period of time.
Strengthen the foundation
Beyond the differences in syntax, programming languages all have the same basis. Once you learn one, it is relatively simple to learn another.
Following the simile of the pizza delivery guy, it’s a good idea to first learn how to drive well, know the street, learn the rules of the road, etc., before worrying about which moped model to choose.
So, before you choose a new language to learn, make sure you know the basics. It is a much more profitable time investment to learn good practices, testing, refactoring techniques, etc.
For example, if you are involved in object-oriented programming, it may be more helpful in your career to learn the SOLID principles or the main design patterns. If functional programming calls you, it may be useful to know what a lambda expression or a monad is.
Obviously, it is not only necessary to learn basic knowledge, but it should be the central pillar of your knowledge and is the best long-term investment.
Learn by doing
The brain is for having ideas, not for storing them. Don’t be obfuscated in memorizing the documentation of language, stay with the key aspects of it.
The best way to do this is to practice. Sometimes it’s not justified to use that new language in your daily work, but you can always start a pet project or do some katas.
Programming is fun if you like it, so you won’t really make a mistake if you decide to devote your time to Kotlin, Python, Go, Scala, Elixir… If you make sure you have a solid foundation, changing from one to the other shouldn’t cost you much.
If a language is really important, it will last and you’ll always have time to learn it, so choose the one you think you’ll enjoy the most; try it, and nothing prevents you from changing again if you feel like it.