The best coding language for you to learn.

A few people have asked me what would be the most useful or best coding language to learn.

Skipping aside HTML/CSS—I think the answer rests on what you want to do with code.

Javascript and its frameworks are really useful for building something with just one language.

Angular.js can control the front side of the website that displays to your users, Node.js will act as a web server that can host all of your content, Express.js runs in the middle directing where information goes, and MongoDB acts as the storage center for data you accumulate from your users—the MEAN (Mongo/Express/Angular/Node) technology stack—an organizing framework that helps build everything you’d need for a web application—is the one favoured by a whole lot of startups these days. It’s a whole component of technologies that can build everything web-wise based on one language.

I’ve been using and to catch up on my Angular and MEAN stack skills.  Egghead is focused on video tutorials that are structured sequentially, Scotch has some great graphics about the whole process of building web apps, including the following explaining the MEAN stack.

MEAN Stack from with code(love)

MEAN Stack from with code(love)

They’ve got great tutorials on how you can go about building nifty applications such as basic search engines, and new ways to validate forms (making sure that when you create input forms, people are actually putting in valid criterion). With Angular itself, you can animate a website and make it move, with not too much in terms of setup, which is pretty nifty.

Python is very readable and legible, and has recently become the introductory language of choice for universities teaching computer science majors. It’s fantastic for playing around with data, and doing all sorts of nifty things you wouldn’t have thought possible with its various community modules, such as scraping web pages in their entirety, and doing advanced scientific data analysis. I started out with Learn Python, which suited my fashion of learning by doing.

Java and lower-level languages (languages that are closer to interacting with computer hardware) that are a bit more difficult to interpret for human eyes are wonderful for understanding more of how code actually works—and how you’re interacting with the computer. Java is also something that is used for mobile development on the Android ecosystem, which is something that will always be in demand.

If we want to switch briefly from knowledge to money, I’ve seen a lot of demand for iOS developers, and Objective-C and SWIFT aren’t that hard to pick up. Ruby, especially when used in conjunction with Rails, is also something a lot of startups are building on for which the learning curve isn’t that high (in fact, there was a children’s book for Ruby).

I myself am personally learning Python for playing with data, Javascript and the MEAN stack for building web applications, and Java for a deeper understanding of computer science, and building things for mobile, which I think is a well-balanced set of languages carrying forward. I’ve got together a bunch of learning lists, and resources to help me and you learn what we need to build great things. But none of these are the best coding language to learn.

The best coding language to learn—and how to go about doing it.

The absolute best thing to learn is to learn how to think like a programmer—learn how to solve problems mathematically, with clean and concise code. Coding languages evolve, they change, they fall in and out of favor. One community might morph into another. The great web applications of the present might be obsolete in a few decades. What won’t change is the need for people to think logically, and solve problems—and make it an automated and easier process with machines.

You can bank on the fact that going forward, if you practice your problem solving skills, you’ll be able to find your best language, and get the knowledge and money you need to build great ventures.

I’ve been opening up Project Euler, a set of programming math and logic problems, and using the Codecademy workspace in Python to try to create clean code to solve these problems. This was something a Google recruiter mentioned as being a great training step to learning code—and I don’t doubt it. I feel sharper and more confident in my ability not only to code—but to think.

The best language to learn is ultimately the language of logic, math, and problem-solving that is at the core of code. What are your thoughts?

The author

Roger is an entrepreneur who has co-founded a social network entitled ThoughtBasin that looks to connect students looking to make a difference with organizations looking for difference makers. This experience has given him some setbacks, but also some priceless insights. He is deferring admission from the law school of University of Toronto to pursue his dream of creating impact through entrepreneurship, and he is constantly looking to learn and create, and to do more. He contributes to social entrepreneurship projects with his fellow Global Shapers, coordinates a volunteer tutoring site, and on his off time he unwinds by reading, writing, and dancing---sometimes, all at the same time. Follow him on Twitter at

  • Roger Huang

    What do you think is the best coding language to learn?

    • swampwiz0

      If one can do C++, he can do anything.

  • Lee Olsen

    I agree with your core statement 100%. I can learn any language on the fly because I have the core skills of how to break a problem down and solution it.

    • Roger Huang

      Yep, that’s what it’s all about!

  • jamtr

    Javascript is not a great choice as a first language to learn. It’s idiosyncratic and nuanced in ways that can be difficult to understand fully even for seasoned developers. Although I agree it’s a very valuable skill, it would be a very hard way to learn to be a programmer from ground zero. I’d recommend someone learn C# or Java first.

    Also, Java is not a “low level language”. From an abstraction point of view, it’s about even with Javascript. It’s different because it happens to be statically typed and compiled, but syntactically it’s very similar to Javascript, and both are (syntactically) C-like languages.

    • Roger Huang

      I should have clarified that Java is not one of the low-level languages, I view it as somewhere in the middle of the spectrum.

      Agreed with you on Javascript learning, I’d say Python is a pretty handy first language to learn, or C# and Java—Javascript and its frameworks just seem to be where the web is going these days—“the hot language x” some other commenters have mentioned 🙂

  • Mobius

    Visual Basic 6.0 !

    • Roger Huang

      Haha, VBA on Excel can be quite nifty 🙂

      • MagicBishop

        Lol,, I still use VBA just to unit test small algorithms occasionally. I then rewrite or paste back into water language i happen to be using on the job,, be it (C++,C#,,C,Verilog, or VHDL).

  • Andrew Ayers

    I’ve known this to be the case for over 20 years, almost since before I was employed as a software developer. I don’t have much formal education in software development (only a couple of community college courses on C/C++) – the majority of my education in programming has been self-taught.

    Sadly, your core insight is not one that seems to be taught in schools any more; that seems like it ended in the early-mid 1990s, as best as I can tell, with the rise of Microsoft Windows and Visual Studio, along with Sun and Java. Suddenly, for employers, it wasn’t “do you know how to logically solve problems?”, it became “do you know x or y language-du-jour?”.

    I noticed this transition just as I was coming to the same realization about languages; ie – your core statement. Once it clicked, I realized that to stay employed long term, I didn’t need to chase the “hot language of the day” – all I needed to do was to keep my problem solving and communication skills up to snuff, and the rest would fall into place.

    While I’ve had to roll with the ups and downs in the job market like anyone else, I’ve never been unemployed for longer than a couple of months at a time, even during this current economic downturn. I like to credit having this understanding about what employers really want and need – ie, your core statement – and being able to effectively convey that to potential employers as needed, as being the reason why I remain employed.

    • Roger Huang

      Very cool, I’ve just started reaching that insight—glad to see it can serve people well for many years 🙂

    • swampwiz0

      I am an early middle-aged, “obsolete”, “unemployable” American
      programmer. Where does the requirement for knowing every little language and every little API end??

      • jamtr

        So why don’t you learn some of those things that are in demand now? If you are a good programmer with decades of experience it’s really not that hard to learn new things. You just have to want to and make an effort. It’s the nature of our profession.

  • irneb

    Depends from where you come. If you’re only starting on the programming idea, then nearly any language is suitable – as long as you can get to those logic concepts you’ve mentioned (those are the true things you need to learn).

    As for best, that also depends on what you want to accomplish first. There’s nothing worse than starting with something and then having nothing to show for it, or at least not something you’re actually interested in. So starting with JS when you want to do App development, isn’t the best way forward. I’d say pick your domain first (or at least the one you want to focus on first), then choose one of the normal languages used most often in that domain (simply because you’d find much more learning resources for a popular language than some esoteric niche one).

    After that you need to continue with other much different languages to learn the different “ways” of logic thinking. E.g. the C branch of languages (C/C++/Java/C#/JS/etc) as well as the Algol branch (Ada/Pascal/Delphi/Lazarus/etc.) are mainly procedural with some of them adding OO concepts. You’d also need to know how to “think” in Functional Programming terms, not to mention Declarative. And you’d at least need some passing understanding of the low-level non-abstract concepts underlying the machine(s) you’re programming for.

    See my answer to a similar question here:

    • Roger Huang

      Nice, will check that out 🙂

  • DaveH

    Well I agree that the language is mostly irrelevant, it’s the understanding of the
    process you’re trying to achieve that’s important i.e. you must know what you
    want to achieve before starting. Next is programme flow and control which is roughly
    similar in all languages, then error trapping.

    The next most important skill is knowing where to find answers to solve problems,
    and last but not least is (with any language) it takes more than five years of
    constant use to become skilful in the language. Even VB has about fifty ways of
    doing the same thing.

    C# and VB.Net are too convoluted and the internet is full of answers to questions
    that are just plain wrong, or use 100 lines of code when only 3 are required.

    Then there’s the documentation/help that accompanies the product which in some cases
    is appalling (are you listening MS) introducing 5 as yet unknown functions to
    the beginner whilst failing to explain what the function your looking to use
    and how to use it, is missing entirely. The Word object model stands head and
    shoulders above the rest as an example of how not to do something in VBA.

    I was going to suggest VB6 or earlier but think I’ve just ruled this out.

    • Roger Huang

      Clear documentation is so important.

  • Dude, it’s a programming language. We’re programmers. We program. “Coding” makes us sound like plumbers or IEEE standards people or pharmaceutical representatives or something.

    • Roger Huang

      Haha, maybe. That is something to keep in mind, I do like being selective about the words I choose.

      • It’s a funny thing: it seems almost as though there’s a concerted war on the term “programming” over recent years – it seems that the newer crop of programmers seem to like the term “coding” but for the life of me I can’t see why… it’s as though a racing driver suddenly wants to call himself a “steerer” or something…

  • Guest

    I am an early middle-aged, “obsolete”, “unemployable” American programmer. Where does the requirement for knowing every little language and every little API end?

    • irneb

      I guess it ends at the same spot where obsolescence ends. If you don’t grow you stand still and everything around you passes you by.

      I’m also middle-aged, though probably rather “late” ;). I started with Basic & Lisp in the 80s, went through CL, Pascal, C++, Java, Delphi, PHP, JS, ASP, VB (A & 6), VB.Net, C#, F#, Python, Ada, Haskell, etc. At some point you find new languages / APIs / domains / etc. are trivial to assimilate – they’re all much of a muchness. At which point, anything anyone can throw at you is of no consequence. Which then means you can “get” the idea much quicker than anyone or anygroup else can create some new thing for you to learn.

      E.g. when I needed to do something using some esoteric visual language called Dynamo, it took me a day to get to a point where I was writing idiomatic “code” and the following day I was extending it using another language I had never used before (Python) because the available tools was causing slowdowns in what I was trying to accomplish.

      What I’ve found truly expands your horizons is going through the process of creating your own language. Even a throw-away one just to learn the concepts involved. This I’ve done a handful of times before. And that brings me to the most probable main thing a prospective programmer NEEDS: the passion to want to program. If you find it a schlep then programming is not for you.

  • Well said: The language of programming isn’t a particular implementation of syntax and semantics; the language of programming is expressing designs and solutions for solving problems; programming is also not just a means of telling a machine how to solve said problem, it’s a communication to the future for how such problems can be solved, to express that to others seeking similar knowledge as well as our future selves.