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
- 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%
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.