Prompted by this reddit thread, the question in the title seems to be a fairly common one among Computer Science undergards as well as those that are just now starting up in the field – What programming language should I choose? Is there a possibility that I will choose the wrong one? Should I learn one or many?
A cursory search of Quora will quickly bring up a giant list of it being asked many times over the past couple of years.
Here is the secret answer – it doesn’t matter what language you choose. Those come and go faster than you imagine. The D programming language is quickly picking up steam, even though Walter Bright (later joined by Andrei Alexandrescu) only released it in 2001. C# is also relatively young, released by Microsoft in 2000. Go first appeared in 2009. Rust – in 2010. Over the next couple of years, it’s safe to assume that more languages will appear, some will skyrocket in popularity, the same way Objective-C did with the release of the iPhone, while others will decline in popularity and potentially go the way of FORTRAN and COBOL.
What’s more important is to focus on what you can build with the help of any programming languages. The question you should be asking yourself is – What projects will I have under my belt? What skills have I applied and developed while creating those projects? Seeing “Wrote a population growth prediction model” is more impressive than “Experience: Java“. What’s even more interesting is that throughout my interviews, the programming language was almost always abstracted out to the point where I just needed to implement a solution and focus on the syntax that I can apply best. If I am a competent software engineer, it won’t take me long to adapt my skills to any programming language used within the team that I am working with.
Granted, you might want to focus on modern languages and those that help you apply your skills in the best way possible – it’s totally fair that ASM might not be your first choice (unless you really want to start writing drivers or firmware for IoT devices, among many other things). Your programming language choice should be driven by the type of things you want to work on, not the other way around.