What programming language to learn? It doesn’t matter.

Written to the tune of:

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:

Programming Language Learning Search
Quora search for “What programming language should I learn”

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.

15 thoughts on “What programming language to learn? It doesn’t matter.”

  1. thank you. i see two approaches here. know what you want to make then learn the relevant language and learn a language or a set of them then find where to apply your knowledge! the first approach is for developers i.e the non-students where you don’t expect any exams. the last one is basically for presentation purposes suited for students or say lecturers. students or lecturers can then find problems to solve. so i think it depends on who you are. developer or presenter then developer.

  2. Maybe I missed a point made. What language you learn first depends entirely on whether or not this is hobby/free learning and coding or for-profit/paid learning and coding. I took a generic relational database college course in the early 80’s where, on the final was a question: If you could learn just one programming language and database package, what would it be? Having nearly 10 years of paid on the job training/learning mainframe programming using a variety of languages and RDMS packages, my answer was simply “Cobol\IMS because that is where the money is”. No other justification was needed. Got the answer 100% right. Didn’t matter if Cobol was the best language or IMS the best RDMS. No effort was needed to build a case why I chose those over other packages.
    My personal mainframe languages were Assembler, MarkIV, and Easytrieve Plus even though I did 80% of my work in Cobol. When PCs/Servers finally reached critical mass and caught on, I was more in the IBM (Big Blue) and Microsoft camps – learned C, learned VB, did some Lisp and other things and Unix platforms.

    If I had to recommend a language now it would be based what OS they were planning to play/work in. If Windows, I’d recommend both MS Visual Studio which comes with a variety of languages, is we well integrated development stack, has free versions, supports a lot of deployment options (web, server, workstation), lots of examples on web. If Unix\Linus, well, IMBHO, my condolences, Unix\Linux is the most over hyped platform I’ve heard of (well besides Oracle whose marketing team is so much better than their software development team), I can’t actually prove that Unix\Linux platform both blows and sux, but it is my expert opinion after over 40 years of highly paid experience….smile

  3. I began my programming career in 1969. In that year, Jean Sammet published “Programming Languages: History and Fundamentals”, which covered 120 programming languages.

    Of those, I am conversant with only a few (FORTRAN, ALGOL, COBOL, LISP, SNOBOL, APL). Of these, there are only two that are still used to any significant extent.

    So what good was it for me to learn those languages? Underlying ANY procedural programming language there are a set of concepts (for example, conditional execution) that apply to ALL procedural programming languages. As a result of learning those concepts, I have been able to learn additional languages (such as C, C++, C#, and Java) much more quickly than a programmer with no previous experience.

    As time goes on, and even more languages are developed and propagated, I anticipate no problem learning them, BECAUSE of all my prior experience.

    I agree with the original blog entry. It really doesn’t matter which language you learn, as long as your understanding of the language includes the underlying concepts as well as the details of that particular language.

    1. Absolutely – the underlying concepts, aka the foundation, is what actually accrues value. The language itself can be one choice today and another choice tomorrow.

  4. Andrei Alexandrescu didn’t release D, Walter Bright did, and he released it in 2001.

    And the claim that it doesn’t matter what languages you learn is erroneous and foolish. Writing “What’s more important is to focus on” changes the subject and presents a false dichotomy. People asking what languages they should learn are not asserting that that is the most important thing to focus on.

    Oh well, it’s inevitable that a large fraction of the articles that CodeProject presents are shallow fallacious crap.

    1. Thanks for the correction on D – fixed in the post.

      At that, I still stand by the point that language choice should never be the first question asked. It matters as long as you know what you want to accomplish, but should never be the driver of that decision.

  5. >In my opinion it is better to learn C and C++ from the start any way.

    I keep encountering this opinion among people who, I think, probably have not taught a lot of people to program. That’s basically like saying that in order to learn to drive, you should start with a thorough understanding of how each component of a car works. And then we’ll let you sit in the driver’s seat and push on the accelerator. Even if your dream job is to become an automotive engineer, learning to drive is still a first step toward understanding how the machine works.

    The fallacy is that unless you know how to (e.g.) manipulate memory and streams, you’ll somehow go astray and will never be able to learn that “properly” later. That’s simply not true.

    1. This. There is no “right path” – you might as well start with SmallBasic if that fits the needs for what you’re trying to accomplish.

  6. D spoils the hell out of you; going back to C, or C++ you scratch your head for a few minutes asking yourself: Why?
    Totally agree though; any language is good to start with; mainstream languages make you more employable, but I totally will push any static typed language as it teaches the fundamentals to move on to other languages

    1. Felt the same way with C# going back into C++! But that’s why you use a hammer to put a nail in the wall and not a Swiss knife 🙂

  7. Well, I have one opinion about this issue.
    I stand on the other side of room and I am looking at this topic from a very different perspective. It is nice to hear other opinions, however I would need to say that it is not how I see it.
    In my opinion it is better to learn C and C++ from the start any way.
    However I have few different views of how things should work when it comes to creation of graphical user interface and multi threading to.

    So happy New Year people!

  8. I couldn’t agree more. I remember reading somewhere that you’re not really a developer until you know at least four different languages. You can know C#, and you’re a C# developer. You can know Java, and you’re a Java developer. But by learning several languages and becoming proficient in them you gain a better understanding of the concept of programming that can be then applied to any language.

    1. I think there is no quantifiable way to measure one’s “developer-ness” – one can be a C++ expert, while someone else can be a jack-of-all-trades managing to build systems in 14 different languages and stacks. What you build, however, is what matters.

Comments are closed.