What is the Best Programming Language to Learn in 2014?

Contributing Editor

It’s been a year since I revealed the best languages to learn in 2013. Once again, I’ve examined the data produced by Jobs Tractor who analyzed more than 45,000 developer jobs advertised on Twitter during the past twelve months. The results:

Java 8,731
PHP 8,238
Objective-C 5,859
Java for Android 4,312
SQL 3,553
JavaScript 3,154
Ruby 2,937
C# 2,549
Python 1,587
C++ 1,273
C 685
ActionScript 674
ASP.net 492
Perl 224
Scala 143
Visual Basic 92

technology job advertisements

The main changes since last year…

  • PHP and Java have switched places but both remain in high demand.
  • Java for Android has overtaken SQL and is closing in on Objective-C.
  • JavaScript has overtaken Ruby.
  • Python has risen two places.
  • ActionScript has dropped two places.

Take this survey with a large pinch of salt. Then add pepper, ketchup and numerous other condiments. I’m not convinced Twitter is a reliable source of job-related data and regional differences can skew results.

A recent survey by the online course provider Lynda.com for Mashable produced the following list of languages in order of popularity:

  1. Java
  2. C
  3. C++
  4. C#
  5. Objective-C
  6. PHP
  7. Python
  8. Ruby
  9. JavaScript
  10. SQL

The usual suspects are there but, again, results will be biased by the topics offered and the site’s target audience (primarily newer developers).

Industry analyst RedMonk has taken a different approach and determined language popularity by examining the frequency of projects on GitHub and questions on StackOverflow:

  1. JavaScript
  2. Java
  3. PHP
  4. C#
  5. Python
  6. C++
  7. Ruby
  8. C
  9. Objective-C
  10. CSS

Redmonk Programming Language Rankings

Don’t take this too literally; a language could score higher if it’s more problematic than others. I’m also surprised to find CSS on the list — although due to pre-processors like Sass, LESS and Stylus, CSS tends to be viewed more as a programming language nowadays. That said, if CSS is considered a programming language, where are HTML and SQL?

I Want Advice — Not Statistics!

Let’s make one point crystal-clear:

Never use statistics as the sole basis for learning a language.

Few developers start programming for financial gain. There are far easier ways to make money … become a “digital marketing strategist” or “SEO specialist” and hone those board-level BS monologues. (Apologies to any conscientious “specialists” out there — I’m sure you exist, I’ve just not met you yet.)

Choosing a popular language also pits you against thousands of others. Learning Fortran won’t be trendy but you’ll find lucrative work maintaining decades-old legacy systems no other developer wants to touch. Fortunately, we can make a few general observations that may sway your language-learning objectives.

Technologies Rise and Fall

All languages ascend and descend in popularity and demand but timescales will differ. Consider ActionScript. Flash development is in decline and I suspect a large chunk of ActionScript projects are in maintenance mode. The same can be said for Perl, COBOL and Visual Basic 6, although they’ve enjoyed a longer life.

If you’re particularly risk-averse, you may want to avoid languages with limited platform support such as ActionScript, VB6 and Objective-C. However, while Objective-C is primarily used on Apple-based OSes and APIs, the platform’s ascendancy continues and there’s no shortage of app-development jobs. For now.

Choices for Existing Developers

If you’ve mastered a language or two, the choice is far simpler: pick something that interests you (intellectually or financially). Programming skills are transferable and the learning curve will be shallower when learning a new language compared to when you first started.

There may be some obvious opportunities, for example:

  • ActionScript is based on ECMAScript (which is implemented in browsers as JavaScript); Flash developers will thus have a logical progression to HTML5 technologies.
  • C++, Java, C#, Objective-C and even PHP are conceptually similar, so you may be able to switch between them with relative ease.
  • If you’re developing Windows desktop applications using VisualStudio, your .NET knowledge will be applicable to Microsoft web server platforms.

Despite this, don’t be afraid to learn something new. JavaScript looks similar to Java and other C-like languages but many developers initially struggle with it because it’s fundamentally different. Persevere and you’ll gradually appreciate what JavaScript offers.

Choices for New Developers

Those fortunate enough to have started in the days of 8-bit home computing had few options and learned their craft with something like BASIC before progressing to C or assembly when they felt confident to do so. The dawn of the web was similarly simplistic; you learned HTML and perhaps a server-side language such as Perl. Skills could be gained incrementally as HTML evolved and technologies such as CSS, JavaScript, PHP, ASP and .NET were introduced.

I don’t envy those new to development in 2014; the choice is bewildering. Where do you start?

Tentatively, I suggest JavaScript. The language is available everywhere, growing rapidly and offers virtually unlimited online resources. Learning JavaScript first may also help you avoid some of the confusion experienced by developers coming from other languages. My only hesitation is the hostility of learning it within the browser environment. JavaScript can require additional knowledge of client-server architecture, HTML, CSS and cross-browser quirks — even if you’re primarily creating Node.js server-side code.

Alternatively, you could consider a language such as Ruby or Python which are relatively quick to learn and less encumbered by legacy and environmental issues. However, they offer fewer resources and deviate from C-based syntaxes which may be your ultimate goal.

The best advice I can offer: stop taking advice from articles like this!

Identify a problem and solve it with the software tools you have. Perhaps that’s automating a task using Autohotkey or writing an expenses calculation macro in a spreadsheet. That knowledge will provide the impetus to progress to bigger and better programming tasks.

Question: If you recently started programming, what language did you choose? Did it help or hinder your learning? Would you recommend it to new developers?

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • Etienne

    Is java have both desktop java and web java (jsp)?

    • Craig Buckler

      There’s little distinction in the stats except for mobile (Android). I suspect it’s a mix of desktop and server-side web code, possibly with more emphasis on the latter.

  • Raith

    Google GO not on the radar then? Maybe the compile-to-JavaScript languages are more suitable to newcomers: CoffeeScript, TypeScript, Dart. They offer a saner development (compile safe) experience than vanilla js, and benefit from its huge stage. I’m a seasoned js dev but I’m tempted to go down that route myself.

    • Zombie Prep Network

      I freaking hate CoffeeScript and wish it would die. It saves you a couple of keystrokes, and you are going to debug in JavaScript anyway. Then, if you share code with people who use IDEs with different whitespace settings – good luck. It is not saner development – it’s development for crazy people.

      • Raith

        CoffeeScript is a bit too anti-braces/brackets/parentheses for my personal taste too. And significant whitespace is unforgiving compared to explicit blocks/terminators. But some of its other features bring some nice syntax to the js table. Code is like underwear – no single style suits everyone, and people generally don’t want to inherit someone else’s! Some other languages give me the jitters much worse than well-meaning CoffeeScript :)

      • http://pasteht.ml/ phillips1012

        Debugging is actually really easy with coffeescript on node.js (sometimes there’s a few gotchas however) and on the client side you can use the source maps.

        Everyone has their own opinion about syntax, there’s no right or wrong.

    • Craig Buckler

      Possibly, but I suspect learning JavaScript first would lead to saner development. New developers may be confused by writing in one language and debugging in another.

  • http://www.sitepoint.com/ Dave Slutzkin

    The RedMonk data is interesting. Looks to me as though the languages above and left of the line are older languages in maintenance mode: AppleScript, Delphi, VB, ColdFusion, etc. So it wouldn’t be a great idea to learn those.

    Vice versa, those below and to the right are up and comers: Go, Rust, Dart, Elixir, etc. Learning those could be a good idea – if they happen to get mainstream acceptance. Otherwise it might just be an interesting journey!

    And then the top right corner holds basically everything you’ve already pointed out as being popular. Safest would be to stay in there.

    Great article, thanks Craig.

    • Craig Buckler

      Thanks Dave. That’s an interesting observation. It also seems that something close to the line is a safer bet. But perhaps we’re reading too much into it?…

  • http://www.trivial.ly/ Nic Johnson

    I’m assuming this is based on number of jobs, not on salary. There’s no way a PHP guy is earning the same as a Java guy. There are endless nasty PHP jobs posted on odesk all the time. Are you counting those?

    • Raith

      Craig did state (and I’m not saying he’s right, and I don’t know if he was being sarcastic) that “Few developers start programming for financial gain”. Actually it’s not entirely clear what the criteria for being the “best” language is, as each quoted stat source uses a different metric and maybe reflects a different aspect. I don’t think we want to be comparing salaries on here though. Coding is one of those jobs that’s generally done by people who enjoy it. So maybe the “best” language is the one with the biggest and friendliest community for support. We’re not so mercenary as to do it for the money! :)

      • Craig Buckler

        No sarcasm there: I think most developers start because they’re interested in technology and enjoy the thrill of programming. Those who think it’s a road to riches are unlikely to make the grade and, ironically, won’t receive the money they think they deserve.

        Going back to Nic’s statement, I disagree with the sentiment that some languages pay more than others. Their are well-paid and poorly-paid jobs regardless of the technology.

        Basic supply and demand economics can have an effect. PHP is used by a wider range of projects because of the lower barrier to entry, cheaper hosting, etc. Smaller projects can be written by less-experienced developers who are inevitably paid less than someone with 10 year’s Java experience. However, that Java developer may have more trouble finding a job.

        My point is: don’t fret about it. Good programmers are in demand regardless of their specialisms.

        • http://www.trivial.ly/ Nic Johnson

          I think, when suggesting a language for new developers, it’s worth keeping in mind where the language might take you. If you want a high salary, you probably want to work for government or corporates. That’s C#, Java or SQL. If you want to work in startups, Ruby, Python or JavaScript. If you want to get things out the door quickly, PHP. If you want a wildcard, Go, Erlang, Dart, etc.

          • Craig Buckler

            Possibly, but don’t depend on it. For example, everyone hated JavaScript a decade ago (some still do). I’m currently working on a massive project for a large UK University and they’re using Ruby.

          • Nicholas Johnson

            Ruby is the best language to learn in 2014 :)

          • Craig Buckler

            Possibly, but no one really knows!

          • Nicholas Johnson

            I know :)

  • Mike Cunneen

    Objective C is NOT limited to iOS. It is the primary programming language of the Mac OS X platform.

    • karlfromdxb

      Objective C is the language of Apple Devices, basically.

      • Raith

        My only attempt to program in Objective-C was on the Commodore 64. An endeavour that was cruelly cut short when I got jam on the floppy disc. I’m not arguing with you though, Apple appears to be the last crusader for O-C.

        • karlfromdxb

          The Objective-C you used to program, isn’t the exact same Objective-C Apple OSes is produced in. Apple created a special refactored version of Objective-C which is special to xCode, the official OS X development tool. They’re sorta different, actually.

    • LouisLazaris

      Thanks, guys, I made a correction to fix that statement.

  • Patrick B

    Wow…an article that incorporates ActionScript in a thoughtful, realistic way (even going so far as to mention ECMAScript) without screaming about how evil Flash is and how Steve Jobs was God incarnate – bravo!

    • Craig Buckler

      ActionScript served a useful purpose in the pre-HTML5 days and is likely to be around for some time to come. No language or technology is evil despite marketing claims that it is!

  • http://onsman.com/ ronsman

    Good overview, Craig, and good analysis. As an (ahem) older developer, I’d make the point that devs who can maintain and – especially – translate older languages to newer ones will have plenty of work for quite some time to come. Multilingualists will prosper. And understanding HTML is a definite asset, no matter what language you code in.

    • Craig Buckler

      Totally agree – cheers Ricky. Glad to see you’re still hanging around the place!

  • Efren Castillo

    I’m learning C# right now. Later, on to JavaScript.

  • Zombie Prep Network

    Front-end web languages are in high demand for those highly skilled in them. JavaScript, HTML5, CSS3. And then root yourself in a framework like Angular or Backbone

    • Alanaktion

      I keep wanting a good use case for Angular, but it seems to be geared mostly towards single-page applications and not multi-page sites, which is what I’m usually working with… awesome framework though.

      • adimauro

        It’s actually not true that Angular is just for single page sites. You can either just swap out views with partials, simulating a multi-page site but without full page loads…or just actually create a multi-page site and use all of Angular’s features except the routing.

        I’m working on some new projects right now in Angular that are multi-page sites, although I’m using the swap-out-the-views technique so I can still use the routing.

    • Craig Buckler

      My only hesitation in using a framework is that it can become a crutch; it becomes difficult develop without it. The same is true for libraries such as jQuery; many developers cannot contemplate a non-jQuery existence even though it’s overkill for simpler projects.

      I’d suggest learning the basics first, writing your own simple frameworks, then adopting and learning from others when you need to.

  • Pavel Dvořák

    I started with HTML. Programmers actually argue, if it is the programming language and if it can help everybody to start programming at all. But to start with HTML introduced me into the world of PHP, Dart, CSS and JavaScript as fast as missile (its central-european likening). I quickly started to learn PHP and JavaScript and everything for it deep. Now I use PHP, C (more C-like languages too), Dart, JavaScript (and some other scripting languages too) and Java. I think, that starting with web-writing is the best way. Or another good way to start (more modern possibly) is to develop Android/Apple like apps. Just starting with simple alarm clock for Android is in my opinion as fast as starting with HTML.

    • Alanaktion

      Despite it not actually being a programming language, HTML is a fantastic place to start. It quickly introduces you to other client- and server-side languages for web, which is a huge platform these days. I particularly like PHP, but there’re a lot of great options for the server side of web.

    • Craig Buckler

      If you want to become a web developer, learning HTML and CSS is definitely the best way to start. It won’t teach you programming, but that knowledge is essential when you progress to client and server-side development.

  • Craig Buckler

    I was surprised Java is so high especially in relation to the Microsoft technologies. However, I’m basing that on my experiences in the UK and, since I’m not a Java developer, I don’t tend to notice the opportunities available to those developers.

    I still stand by the basic presumption that a good developer will find a role somewhere regardless of what languages they know.

  • HenriHelvetica

    Away for a few days and I miss a great post/discussion. I’m personally on my crusade to master the Golden 3 as i refer to them (and I believe I read it somewhere): HTML, CSS and JS. As I was telling someone recently during a snow storm, with those three languages, you can make the snow stop. But this is just the front end side of me speaking. JS mastery is in my crosshairs and look fwd to having that locked up. Great post!

    • Fezot

      Though some say HTML and CSS are not programming languages but mark-up languages. For example, with them you can’t do Math, control structures, and so on.

      • HenriHelvetica

        True.

  • Craig Buckler

    No technology is inherently safe. Java has caused browser plug-in issues but, on the server (and probably in Android), it’s as good as anything else.

  • Zac Konopa

    Bump for Go. Lovely language. Bump for C – nothing like learning the nuts and bolts before you start using the fancy stuff.

  • http://heera.it/ Sheikh Heera

    It depends which platform you are going to work on before you make the right choice but actually it comes later, the choice for a platform for a beginner because one doesn’t know what s(he) is capable for. On the other hand, for a beginner, JavaScript is not a right choice in my opinion. Why, this is one hecky kind of language and is different from all the other class based languages and since the present and the future is OOP so a beginner should learn a something in common and it could be c++, Java, c# or something that teaches all the base things of a heavy weight programming language not any scripting language.

  • adimauro

    The best language to learn, is the one you have the most passion for…and you will never know which one that is unless you try lots of them. Don’t limit yourself to just one language just because it’s ‘popular’ and has the most jobs. Play in many languages, there is something to learn from each of them.

  • ceasehope

    I started with Lingo. Most of you are too young to know what that is probably

  • Craig Buckler

    I presume you’re being ironic?!!

    • Bjössi Sveinbjörn Grétarsson

      ;)

  • http://blog.webprog.biz Horváth Norbert

    I gladly read this because javascript is my favourite :)

    But I think javascript shouldn’t be the first to learning. It’s true that js programming after a class-based oop language is strange and maybe hard to learn, but I think the reverse way is not better. Furthermore, I experienced that if a code piece can be logical, it’s almost always valid in js. If you go to another language from js, in most cases you come up against many gramatically limits, and that’s make the way harder.

  • Debashis Dip

    Start with C then Python and JS.
    You never going to regret it