What’s the Best Programming Language to Learn in 2017?

By Craig Buckler

Choosing a programming language in 2017

Many of you will reflect on your skill set and career choices as we embark on the new year. There are numerous sources of “best language” statistics, so that’s where we’ll begin …

Stack Overflow Developer Survey

More than 56,000 developers in 173 countries completed the Stack Overflow Developer Survey during 2016. Here are the most-used technologies:

  1. JavaScript — 55.4%
  2. SQL — 49.1%
  3. Java — 36.3%
  4. C# — 30.9%
  5. PHP — 25.9%
  6. Python — 24.9%
  7. C++ — 19.4%
  8. AngularJS — 17.9% (JavaScript framework)
  9. Node.js — 17.2% (server-side JavaScript)
  10. C — 15.5%

The survey also asked what developers loved most:

  1. Rust — 79.1%
  2. Swift — 72.1%
  3. F# — 70.7%
  4. Scala — 69.4%
  5. Go — 68.7%
  6. Clojure — 66.7%
  7. React — 66.0%
  8. Haskell — 64.7%
  9. Python — 62.5%
  10. C# — 62.0%

and what developers most dreaded:

  1. Visual Basic — 79.5%
  2. WordPress — 74.3%
  3. Matlab — 72.8%
  4. Sharepoint — 72.1%
  5. CoffeeScript — 71.0%
  6. LAMP — 68.7% (Linux, Apache, MySQL, PHP)
  7. Cordova — 66.9%
  8. Salesforce — 65.4%
  9. Perl — 61.3%
  10. SQL — 60.3%

Perhaps more useful are the technologies developers are interested in learning:

  1. Android — 15.8%
  2. Node.js — 14.8%
  3. AngularJS — 13.4%
  4. Python — 13.3%
  5. JavaScript — 11.9%
  6. React — 9.2%
  7. Swift — 8.7%
  8. MongoDB — 8.1%
  9. Arduino / Raspberry Pi — 8.0%
  10. C++ — 8.0%

Stack Overflow Top Tech

Stack Overflow also collated statistics for questions, answers and votes:

  1. JavaScript — 16.6%
  2. Java — 14.7%
  3. Android — 11.5%
  4. Python — 11.4%
  5. C# — 11.1%
  6. PHP — 8.6%
  7. jQuery — 6.7%
  8. C++ — 6.6%
  9. HTML — 6.6%
  10. iOS — 6.3%

PYPL Popularity

The PYPL Popularity of Programming Languages Index uses data from Google Trends to determine how often language tutorials are searched online:

  1. Java — 23.1%
  2. Python — 14.4%
  3. PHP — 9.7%
  4. C# — 8.4%
  5. JavaScript — 7.7%
  6. C — 7.1%
  7. C++ — 7.0%
  8. Objective—C — 4.4%
  9. R — 3.4%
  10. Swift — 3.0%

TIOBE Index, January 2017

The TIOBE Programming Community Index rates languages using search engine results to provide a ranking percentage:

  1. Java — 17.3%
  2. C — 9.3%
  3. C++ — 6.3%
  4. C# — 4.0%
  5. Python — 3.5%
  6. VisualBasic.NET — 3.0%
  7. JavaScript — 2.9%
  8. Perl — 2.7%
  9. Assembly Language — 2.7%
  10. PHP — 2.6%

The biggest riser during 2016 was Go, which leapt from nowhere to 2.3% (#13). Java fell 4.19%, but it remains almost double C’s score.

What Do Surveys Tell Us?

Surprisingly little. Results are interesting but often contradictory, and data collection methods are limited:

  • Search engine results can favor older, more problematic or more widespread languages. Few would expect VisualBasic to appear above JavaScript.
  • Online surveys are limited to a specific audience. Stack Overflow is populated by reasonably knowledgeable developers who have encountered problems in popular languages and frameworks.
  • Historical usage patterns do not necessarily indicate future trends. Node.js did not exist a decade ago. In the mid-1990s, Perl or C were the most viable options for server-side development.

For example, all surveys rank Java higher than PHP. Java is often adopted for education and used to develop command line, desktop and native Android applications. Yet WordPress powers 27.3% of the web and is written in PHP. PHP is used on 82.4% of web servers compared to just 2.7% for Java.

PHP was developed for the web and has a more widespread adoption on the platform. There’s nothing wrong with Java but, if you want a web development career, PHP could serve better. Probably. Depending on where you live and work. And the industry you work in. And what you do.

Surveys are flawed, so perhaps we can seek …

Other Developer Opinions

I’ve been writing “best language” articles for several years and they attract numerous comments. Everyone has an opinion, and that’s great. Yet everyone is wrong.

No developer has experience in every language. Some will have good knowledge of several, but no one can offer an unbiased choice. Whatever language a developer chooses and uses daily becomes their preferred option. They will passionately defend that decision because, if they can’t, they’d switch to something else.

Other developers can offer lessons learned from their experiences. That is useful information, but you’re unlikely to have identical aspirations. To flip this on its head, seek opinions from developers who’ve been forced to use a particular language or framework: the majority will hate that technology. Why trust someone else to make a decision for you?

If we can’t rely on surveys or the opinions of others, where does it lead? …

There’s no “Best Language”

If you learn to drive a car, that knowledge can be transferred to driving a bus, a truck or a tractor. Similarly, most computer languages implement input, output, variables, loops, conditions and functions. Learn the basics of any language and learning another becomes considerably easier. It’s mostly a different syntax.

You cannot choose the “wrong” language; all development knowledge is good knowledge. Perhaps picking COBOL for an iOS game isn’t the best choice, but you’d quickly discover it was impractical and learn something about the language which was useful elsewhere.

The hardest part of any learning process is making a start …

Are You Asking the Right Questions?

Those with some programming experience know where they’ve been struggling. The gaps in their knowledge are more obvious:

  • If you’re spending too much time manually manipulating spreadsheet data, invest some effort in learning its macro language.
  • If you’ve been developing a website and are unhappy with the layout, improving your CSS knowledge is an obvious next step.
  • If you’re developing a server application and need to store data, learning SQL or a NoSQL alternative is a logical option.

Those asking “what language should I learn?” are probably new to the software industry. A comparably vague question would be “what clothes should I wear?”. No one can answer until they appreciate your age, gender, size, taste, preferences, country, local weather, customs, decency laws, where it will be worn, etc. It’s impossible to suggest a language without knowing:

  1. whether you’re genuinely interested programming
  2. what problems you want to solve
  3. what hardware and systems are available to you
  4. what time and learning opportunities you have, and
  5. all the variables associated with the factors above.

No one wakes up and decides to embark on a professional development career without any programming experience. If you’re genuinely interested in development, pick a small project, choose a language, dig out some tutorials and get going. A few places to start on SitePoint …

Then Keep Learning

Despite stating that other developer opinions won’t align with your situation, I will offer a morsel of advice to SitePoint’s primary web development audience:

  • If you’re primarily a front-end developer, attempt back-end coding. Try PHP, Node.js, Ruby or whatever piques your interest, then add SQL to your skill set.
  • If you’re primarily a back-end developer, learn HTML, CSS and JavaScript. Browser APIs and data formats such as JSON are also beneficial.

Frameworks don’t count! Learn the basics of the language first. That knowledge will remain invaluable regardless of the ever-changing whims, opinions and tool sets used by the development community.

You may not want to become a full-stack developer but, at the very least, it will help you appreciate the work of others and make a better contribution to your project.

Best of luck. Stop procrastinating. Stop reading articles like this. Just start coding!

  • Mzster Mann

    Very well written article. I recently googled “what’s the best programming language to learn.” I found a tons of different answers on different sites. I decided to start with python. Then I’ll probably move on to java. I am not trying to master either one until I decide if it’s something that I like doing and benefits me.

    • Craig Buckler

      Thanks Mzster. Both Python and Java are good starting options. I suggest you avoid switching languages too early, though. Learn the basics of programming first and it’ll be easier to pick up any language later. Best of luck.

  • Paweł Miczka

    What do you think about server-side JavaScript ( NodeJS + Express / Hapi.js / whatever .. ) for API and / or static pages ?

    • Craig Buckler

      Node.js is excellent and has several libraries which make REST APIs simple. But the same is true for PHP, Ruby, Python and other languages. The primary benefits of Node.js are (a) it’s very popular at the moment and (b) it’s JavaScript so your skills are easier to transfer to browser development.

      If you’re creating a simple site with (mostly) static pages, you could consider a Static Site Generator. It doesn’t matter which language you choose because the rendered result is a set of HTML pages. Jekyll (Ruby) was one of the first and most popular but take a look at https://www.staticgen.com/

      If you need a content site with a little server-side processing, e.g. search, form processing, email sending, etc. you may find PHP easier than Node.js and hosting will be simpler and cheaper.

      Hope that helps! Ultimately, pick something and stick with it for a while.

      • Paweł Miczka

        I’m kinda programming in PHP (for over a year in laravel) and I heard that it’s slower than JS in NodeJS.
        Just wanted to ask cause I’m making simple GET API and I’m looking for best solution.

        • Craig Buckler

          It depends. Node.js can be faster than PHP but that’s often because it doesn’t require a full web server such as Apache and applications are always running rather than launching on every request. That said, for a simple GET API, there’s unlikely to be a noticeable difference. Your data layer will be the biggest bottleneck.

          If it’s a new stand-alone service and you want to try Node.js then go for it. If your application’s already in PHP, adding Node.js components may just increase complexity.

  • Java absolute winner, and that was expected isn’t it? She is treated as basis in dev.

    • P.K. Hunter

      Not sure what parallel report you’re reading, but Java is surely not the ‘absolute winner’. It’s a solid server-side language, but hardly the most coveted one.

    • Craig Buckler

      JavaScript is top in the Stack Overflow surveys. Java is used in a lot of places but less so on the web and Python is competing against it in education. It’s certainly a solid language to start with unless you’re intending to develop browser-based applications.

  • Kyle Prinsloo (SWD)

    Great article! Thanks Craig

  • M S i N Lund

    AngularJS?
    Then jquery is a programming language too.

    • Esteban Gallego

      They’re actually Javascript libraries and not programming languages.

      • Craig Buckler

        More specifically, AngularJS is a framework and jQuery is a library. Both are written in JavaScript to aid web page and JavaScript development.

        Most surveys and statistics include technology which isn’t strictly a language. HTML and CSS are not languages … although both can be written in a programmatic way (e.g. Sass) and are unexpectedly difficult to get right.

  • SomeOne

    Let it be we know the language or not but the recruiters are looking for experience in specific frame work or library that pull down the moral of only focuing at the core.

    • Craig Buckler

      Yes, recruiters often look for specific frameworks such as React or Angular because that’s what the team is using. However, if you know JavaScript, you can pick up any JavaScript framework with ease (or even write your own). Learning a framework first may limit you to that system.

  • Craig Buckler

    I suggest looking at what others use in your field. It is fairly niche so the technologies may not be typical of the IT industry. A statistical manipulation language such as R may be suitable. You may also need some knowledge of data storage and retrieval options such as SQL.

  • Tom

    Nicely balanced article. I like the comparison to driving and to take that further there is no best vehicle but some are more suited to certain tasks than others.

    BTW I learnt the basics of JavaScript about 15 years ago but didn’t start focusing on it seriously until recently – it certainly seems to be one of the most flexible languages for web programming at the moment.

    • Craig Buckler

      Thanks Tom.

      JavaScript is incredibly flexible but programmers from other disciplines can misunderstand it. In my experience, it took around five years to understand concepts such as prototypal inheritance. I was trying to apply C/Java object concepts because the syntax looked similar. That said, I wrote a lot of useful code without fully understanding the language.

      In many ways, JS is a great first language to learn because it’s so flexible and ubiquitous. Documentation is excellent now and novice programmers won’t have the presumptions I did!

  • Ralph Mason

    Python is a popular language for that kind of work.

  • Windowr

    Fantastic!

  • Craig Buckler

    Stick with JavaScript if you’ve tried it already and have a basic understanding of HTML and CSS. Unfortunately, programming does not necessarily fit with “limited time”. You may grasp the concepts quickly but you can only learn by doing.

  • Craig Buckler

    Python’s a great choice and many stick with it forever. You’re right: ultimately, it’ll depend on what you want to do, i.e. front-end browser development requires JavaScript skills. (Admittedly, there are Python to JavaScript compilers but that seems like an extra headache to me!)

  • Craig Buckler

    More powerful than what? Any other language ever devised?
    Is it the only language used for ‘big data’?
    There’s nothing wrong with Python but it’s not more capable than anything else.

  • Shahin Sheikh

    I’m
    going with php for 3+ years and Java (android) for one year ,
    Javascript very few (Jquery and AngularJS); Among these Java interface
    and interface as Callback charmed me most! In Java it is very easy to code refactoring !
    Thanks for a good Article :)

  • The best : Stop Reading -> Start Coding. !

  • Jeff Pagano

    Great article! I’m looking to build multi-tenant online database systems that will be running on everything from mobile phones, to tablets, to desktop computers and laptops. Of course, each customer will use their favorite web browser, so whatever I choose needs to be compatible with everything! How big of an issue is this?

    I also need volume and speed. Each customer could have 10,000 records and need to query them quickly. I anticipate setting up multiple servers in different geographic locations to provide the best service. What language (or combination) would you recommend? Thanks!

    • Craig Buckler

      Thanks Jeff.

      What’s your experience now? This is an ambitious project…

      Presuming you have some development knowledge, you mention “favorite web browser” so the front-end choice is easy: HTML, CSS and JavaScript. You may also consider a framework such as Vue, Angular or React.

      The back-end choice is yours but popular web options include PHP, Node.js (JavaScript again), Ruby, Python, .NET and Java. It sounds like you’ll need a data store so open source relational SQL databases like MySQL, MariaDB and PostgreSQL are good. MongoDB is perhaps the most-used NoSQL database.

      That’s a lot to learn if you’re new to programming. Even those with some development experience in other languages would require several years to get up-to-speed.

      • Jeff Pagano

        Hello Craig. Thanks for taking the time to reply, and I appreciate your candor.

        My situation is I’ve been marketing a custom software package for the past 20 years that was built using FileMaker Pro. FMP is an app builder — not a programming language — but it did the job for the first 10 years when users were accustomed to installing software on their computers.

        In today’s cloud-based market FMP is a horrible development environment. FileMaker Inc. is owned by Apple and they have a VERY arrogant corporate culture, despite being about 10 years behind the current technology. (You can’t create a progress bar, a calendar, or synchronize data — just to name a few heartbreaking shortcomings.)

        The result is I’m losing business to my competitors offering online database systems. But customers that have switched tell me they hate the design and usability, so I’ll get a couple of emails a months from customers telling me, “I love your ease of use and design, but I need a cloud based solution. Do you have any plans to create one?”

        Unfortunate I cannot use FileMaker Server, because it’s too slow and expensive. FileMaker Inc. charges a higher monthly fee for Server technology than my competitors charge per month, so I’d lose money and my product would perform SLOWER than my competitors.

        That’s why I’m asking about real world programming and development tools. As I expected, I’m looking at a long learning curve and development process so I might just have to start marketing my product as the lower cost “alternative” solution.

        • Craig Buckler

          Best of luck, Jeff. It may be best to hire a web developer in the short term to get something built quickly. It’ll give you something to learn from which you can adapt.

  • Serkan Sipahi

    Im a plain javascript developer with over 8 years experience. This year (2017) i started to learn go-lang…

  • Neel Gupta

    Anyone interested in Quantum Programming Language(QPL) or Web Assembly(WAsm) ?

  • Tushar

    there might be also reason the beginners search for java tutorial because they feel difficulty!

  • aamir beigh

    hello sir
    i really dont know anything about computer science like software developer programming etc but i want to become a great programmer what i have to do ???

Get the latest in Front-end, once a week, for free.