What’s the Best Programming Language to Learn 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
- SQL — 49.1%
- Java — 36.3%
- C# — 30.9%
- PHP — 25.9%
- Python — 24.9%
- C++ — 19.4%
- C — 15.5%
The survey also asked what developers loved most:
- Rust — 79.1%
- Swift — 72.1%
- F# — 70.7%
- Scala — 69.4%
- Go — 68.7%
- Clojure — 66.7%
- React — 66.0%
- Haskell — 64.7%
- Python — 62.5%
- C# — 62.0%
and what developers most dreaded:
- Visual Basic — 79.5%
- WordPress — 74.3%
- Matlab — 72.8%
- Sharepoint — 72.1%
- CoffeeScript — 71.0%
- LAMP — 68.7% (Linux, Apache, MySQL, PHP)
- Cordova — 66.9%
- Salesforce — 65.4%
- Perl — 61.3%
- SQL — 60.3%
Perhaps more useful are the technologies developers are interested in learning:
- Android — 15.8%
- Node.js — 14.8%
- AngularJS — 13.4%
- Python — 13.3%
- React — 9.2%
- Swift — 8.7%
- MongoDB — 8.1%
- Arduino / Raspberry Pi — 8.0%
- C++ — 8.0%
Stack Overflow Top Tech
Stack Overflow also collated statistics for questions, answers and votes:
- Java — 14.7%
- Android — 11.5%
- Python — 11.4%
- C# — 11.1%
- PHP — 8.6%
- jQuery — 6.7%
- C++ — 6.6%
- HTML — 6.6%
- iOS — 6.3%
The PYPL Popularity of Programming Languages Index uses data from Google Trends to determine how often language tutorials are searched online:
- Java — 23.1%
- Python — 14.4%
- PHP — 9.7%
- C# — 8.4%
- C — 7.1%
- C++ — 7.0%
- Objective—C — 4.4%
- R — 3.4%
- Swift — 3.0%
TIOBE Index, January 2017
The TIOBE Programming Community Index rates languages using search engine results to provide a ranking percentage:
- Java — 17.3%
- C — 9.3%
- C++ — 6.3%
- C# — 4.0%
- Python — 3.5%
- VisualBasic.NET — 3.0%
- Perl — 2.7%
- Assembly Language — 2.7%
- 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:
- 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:
- whether you’re genuinely interested programming
- what problems you want to solve
- what hardware and systems are available to you
- what time and learning opportunities you have, and
- 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 …
- Build Your First Website: HTML & CSS
- PHP & MySQL Web Development for Beginners (web server-side development)
- Introduction to Ruby (web server-side development)
- Wrapping Your Head Around Python (introduction to Python programming)
- Introduction to Swift (native iOS development).
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.
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!