How to choose a programming language to learn: step by step guide

Quite usually I see and read articles where someone is telling which programming language a beginner should start with or just a person who wants to get himself familiar with another programming language. To support his opinion, an author usually provides some pictures with most popular languages against which the most questions are asked on StackOverflow, the amount of repositories for each language created on GitGub, etc. This is, of course, very relevant, but in most cases this person mentions nothing about very important part related to language choose – where this particular language is used / what kind of tasks or problems could be solved using it. In this article I will give you some hints what should be considered when you choose a programming language to learn.

So, the most important thing you should understand and consider while choosing a programming language to learn – where and when you can (will) use it. And that’s the thing which usually is not told about. For example, based on the top of the most popular languages nowadays, you decide to learn JavaScript. Congratulations, well done! But, what you should keep in mind is, that from one hand you have almost unlimited opportunities available for you in both FrontEnd and BackEnd. On the other hand, you will not be able to work, for example, in data processing / analysis field. Of course, you are still able to build and train an AI model using JavaScript, but why will you do that if there is Python available with its godlike ML/AI libraries? Only if you are insane… That’s what both JavaScript and Python developers will think about you if you indeed decide to use JavaScript for AI. And as a result, people from both Python and JavaScript will not recognize you as a programming professional, since professionals are aware what their language is capable of and should be used for; and which areas should be avoided to be used in. That’s how it works in real life…

So, by reading this guide you can avoid some common mistakes done by people who are not aware about the things we are going to discuss here.
Because of that, PLEASE, do a small research about the language you are going to choose to find out which problems are commonly solved using it and what are the most common application areas for this language. For example, if you wanted to learn JavaScript, but understood that Web-application development is not what you wanted to focus on, then return to the starting point and choose the next most-popular language in the top and investigate the application areas for it. If you don’t like these areas as well, take the next language from the top and keep iterating while you find a language which application areas you like. Or until you understand that programming is not the thing you wanted to do 🙂
I believe that’s the first and most important thing to consider / keep in mind while choosing a programming language.

You can also do vise versa and first choose the area you would like to work in and then pick up a most suitable language for it. For example, you are keen on developing marvelous 3D games using the modern game engine Unreal Engine 4. Well, in that case C++ is waiting for you!
Would you like to process / transform huge amount of data, develop high-performance applications for clusters? Welcome to programmer’s elite club, Scala is the best tool you can imagine!
And so on, on Internet you can find a lot of info related to where each language is commonly used in. Maybe something similar will be posted on this blog soon 🙂

The next difficulty you can face – what to do if there are multiple languages used in the same area. What to do then? Which language to choose?
In this case it is quite difficult to suggest something, but I can give you some advice what you should pay attention to.

The first thing you should investigate – which language is recommended to be used by the major players (companies) in this area. If the majority recommends to use language A, you should have a very strong reason why you still would prefer language B over language A.

The second point – how popular each language is. If one of the languages if much more popular than the other one, you could have some problems while searching for additional info or some support from the community, if this community is not big enough. To make a decision on this point, you should use language tops provided by StackOverflow, GitHub to understand which language is more popular in that particular area.

The third thing to consider – you should keep in mind not only how popular the language is now, but also how popular it will be in future. In most cases it is not so easy to understand – you should read a lot of articles, reviews, news from community official sites or developer company’s web site (like in Java case).
Usually it is connected to the first point mentioned above about which language is suggested to be used by the major players. If some of them start strongly suggest to use one particular language, then the other ones could have some problems in future…

The last, but not least – try to get your hands dirty with each of the languages you are choosing from. While you are trying to write the simplest programs, you will still gain some valuable experience related to these languages usage. It would be much more better than reading tens of reviews and guides on Internet… Prioritizing all the points mentioned above, I would rank this particular point as the second most important, just after the areas of usage. That could be the case – you like the area you are going to work in, but you do not like the tools (languages) used there… In that case try to find an good alternative to this language, almost in each area there are multiple languages could be used, you will definitely like at least one!

Let me illustrate everything mentioned above considering the following example. You would like to develop Android applications and monetize them by showing some ads within your applications. And the question is – which language to use for Android apps development? Android as such and AndroidStudio supports two programming languages – Java and Kotlin. So what to do? Let’s make our choice by evaluating each of the points suggested above.
The first point – it is very easy to evaluate. Google, which owns all Android rights, suggests to migrate to Kotlin. The main reason behind that – Oracle (the company which owns Java) made Java not-free for commercial use. So, if you would like to use Java for commercial use, starting from Java v.11 you should pay for it. In the nearest future I plan to post an article about Java distribution model – when you can use it for free and when you cannot. For this point 1:0 Kotlin leads.
Second point – if we evaluate languages based on their popularity, then Java is more popular than Kotlin, there is no doubt about it. But what will happen to this popularity in a couple of years and specifically if we talk about Android apps… But, that’s already a different evaluation point. And based on popularity Java ties 1:1
Third – how perspective the language is in Android context… Here it is more than clear. Google supports Kotlin – that’s enough for Kotlin to lead 2:1
The last point – how convenient you are with each of the languages. It is hard to suggest anything here, that’s what you should decide by yourself. Personally for me Kotlin seems to be more convenient (maybe because I use Scala on daily basis and Kotlin is quite similar?). So that’s why for me personally, in Android apps development context, Kotlin wins 3:1.
One important point to keep in mind – we evaluated the languages considering that each of these points are equally important which is arguable I would say. Anyway, you are the person who should make a decision, after all you are the one who will be affected by it 🙂

Don’t forget forget to subscribe to my YouTube channel if you have not done that yet, bookmark this site and leave some comments, because I am really interested in knowing what you think about this article!

Than you for being patient enough to read this article. See you next time!

Leave a Reply