There were days when I used to search the web for 'best programming languages' and 'most popular programming languages' in my free time. I was not able to decide myself what language to learn and invest my time upon, such that it would pay me back everything I put into it. This was really a hard task, given the fact that I have interest in a wide range of stuff related to computers, from algorithms to designing beautiful forms with CSS.

Given that I had no guidance from the people around me, since I had no one in my family from the technical field, and the college professors were not of much help either. Now that justifies my amateur-ish googling habits.
Leaving that aside, I have lately been asked a lot of times by my fellow mates, what is the 'best language' to start with and what are the current 'hot languages' in the market. To start with, there is no language that is 'best' in every sense. If there was, why would anyone bother creating additional languages in the first place, right? Languages are written and implemented with certain goals in mind, which it should satisfies better than what was present before creating that language, that's the whole point about it. So stop searching for the best language and start looking for your own needs.

Secondly, I don't think anybody should care about the 'hot languages' in the market, except for the tech magazines' journalists. Why? Because if you haven't heard of it yet, then you probably don't actually need it yet. It is much better to know a single language as a whole, than to learn 5 languages just for the sake of them being 'hot'.

If you are new to programming, then most probably you are taught programming using some or the other language (most probably C++ or Python). What most fail to teach is that programming is not equal to learning a language. Programming is the mindset that you develop when you are solving problem for a wide range of sub-problems by writing a common solution to all. Most of the times it means looking for a pattern in the chaos of that problem. You don't need to know a language for finding this pattern, do you? You have to realize this thing at the earliest.

Programming language that you choose is the tool you choose for the task you have in hand. Now, depending upon the task, some tool might be better than the others, and help you in doing the task quicker. You can think of an analogy here, like if you want to cut tree trunks, you can use saw blade or maybe even a kitchen knife. But the saw will get the job done much faster. However, any sane human won't cut vegetables using a saw. The same goes for programming languages. Different tasks demand different languages, and each has its own pros and cons. But the languages won't help a bit if you cannot figure out the problem itself in the first place.

I had start to program in C, jumped to Python because 'Google used it'. Then I came to PHP because I read somewhere that PHP gets you a job quickly. I started with JS and Node.js later due to their growing popularity. I did a lot of mistakes when I started it all. I wish I knew it then, that instead of wasting my time on learning the syntax of languages to do the exact same thing I did with the previous language, I could have been much better off learning some interesting algorithms that would've helped me in solving some tough hackathon problems.

So is the knowledge of language implementations not useful? Of course, I don't mean that. A language is very useful once you know how to use it. You don't have to know everything from a language. Just enough to get the problem solved. Nothing more. For example, you might have probably heard of C++. If you have ever tried to learn C++, you might have realized that it is a really large language. Originally designed for low level embedded programming and as a 'C with Classes', C++ has evolved to be a language that can be used in almost every domain. The 'Standard Template Library' is large enough for you to not miss anything in most of the cases, and even if you do, there is boost at your rescue. So do you think you most know all of the above to call yourself a C++ programmer? No. Many great programmers who use this language use just a subset of it and they are fine with it. I personally don't use the object oriented facilities of the language much, but it doesn't matter as long as it does what you want it to do. So don't aim to know an entire language unless you want to get into compiler development or it's standardization committee. Focus on the thing you are working on, and not the language you are using.

Have the enthusiasm to solve problems. Take pride in building things from the scratch, all by yourself. The love for programming comes in automatically. But most important of all, learn how to program and not how to write syntax of a particular language.

Thank you for reading.


Unrelated