Stack Overflow just released the results of their 2020 survey of more than 65,000 developers.


Предыдущая | Следующая

Just like with Stack Overflow's past surveys, I’ve combed through their results and summarized them for you, along with my own personal analysis as a developer and a teacher.

This article will give you a snapshot of what the software development profession looks like in 2020.

Note that in this article, I am only going to focus on the survey results from professional developers – not the students and other people who haven't started working as developers yet.

If you want to learn about people who are just getting into the field of software development, I recommend also looking at freeCodeCamp's most recent New Coder Survey of 31,000 developers.

Also note that I'm waiting for Stack Overflow to make the entire survey response dataset public (they usually do this a few weeks after they release the result summary). Once they do this, I will link to it here, and I may have some additional data visualizations.

For this article, I am sharing Stack Overflow's official data visualizations, along with my own analysis of them and their significance.

First, this article will first cover demographics: age, educational background, and how long people have been coding.

Second, I'll cover the tools developers use most often, and the tools they're the most excited about.

Finally, I'll cover developer salary and job satisfaction.

How old is the average professional software developer?

Most professional developers are in their late 20s or early 30s. But as we'll see, Indian developers (and there are a lot of them) bring the average age down quite a bit.

Developers do tend to be younger, with around 46% of them being in their 20s.

But contrary to popular belief, coding is not just a young person's game. (I've been trying my darnedest to dispel this myth). 1 out of every 20 developers is age 50 or older.

American developers tend to be older than developers in other countries, with an average age of nearly 34 years.

American developers are on average oldest, followed by developers in the UK and Canada. Indian developers are, on average, only 26 years old.

Americans also seem to start coding later in life than other countries, and have on average only coded for about 16 years – meaning most of them didn't start coding until after high school.

Australians have the most years of coding experience, at nearly 17 years on average.

And that extra coding experience makes a big difference when it comes to your career.

Managers and executives tend to have 14 years or more of coding experience.

The number of years of professional coding experience, by job description.

Even for front end developers and full stack developers – the two most common first job titles for new developers – people have on average 8+ years of coding experience.

Keep in mind that many people are perfectly happy in these roles and stay in them for years. So this does not mean that the average developer has 8 years of coding experience when they land their first full stack developer job.

Most professional developers actually started learning to code between 5 and 14 years ago:

Number of years since professional developers first learned to code.

What is the educational background of most professional developers like?

About 75% of developers finished an undergraduate university degree, and many of those people also went on to get a graduate degree, too.

3% of professional developers stopped school after completing a 2-year associates degree, and around 17% of developers haven't earned any university degree at all.

This brings me to two important points:

  1. If you didn't go to college, you're not alone. A lot of professional developers didn't go to college.
  2. But most professional developers did go to college. So maybe think twice before you try to pull a Bill Gates and drop out to launch your own startup.

If you are attending university, you almost certainly want to major in computer science. It is by far the highest paying major in the US, and it's also the most common major among professional developers.

This year, Stack Overflow decided to lump software engineering and computer engineering majors in with computer science. But over the past 8 years, CS has always been by far the most common major.

Statistically speaking, a computer science major is the surest path to a software developer career.

Still, it's exciting to see how many other majors are represented here. 4.4% of developers are coming from the natural sciences, 3.6% from math, around 5% from the liberal and fine arts, and even a good mix of health science majors, too.

What regions are the survey respondents from?

A map of survey respondents. The bigger the circle, the more respondents.

According to Stack Overflow, the regional breakdown of respondents is as follows:

+-------------------+-----------+
|      Region       | Responses |
+-------------------+-----------+
| Europe            |    24,688 |
| North America     |    15,570 |
| Australia         |    16,400 |
| South America     |     3,070 |
| Africa            |     2,709 |
| Australia/Oceania |     1,570 |
+-------------------+-----------+

How many of the respondents were women?

Only 7.7% of respondents who were professional developers identified as women. But on a plus note, this number is up from 7.5% in 2019.

91.7% of the respondents who were professional developers identified as male.

What percentage of developers live with physical or mental differences?

Quite a few developers are visually impaired or completely blind. I know several people in the freeCodeCamp community who write code using screen reader tools. And it seems a lot of people in the Stack Overflow community do, too.

1.1% of respondents were blind or have difficulty seeing.

And around 1 in 5 respondents were living with a mental health or other difference:

Anxiety and mood disorders are common among developers. Also, 2.3% have autism or are on the autism spectrum.

Tools and technologies: the most commonly used programming language is JavaScript

Nearly 70% of professional developers who responded to the 2020 Stack Overflow survey coded in JavaScript.

JavaScript has been the most-used technology since Stack Overflow started doing the annual survey. So this result is pretty unsurprising.

This said, there are some interesting changes. Dart seems to be growing with the introduction of Flutter for mobile app development.

Kotlin has grown pretty quickly as an alternative for Java development.

And Python seems to be as healthy as ever, as we'll see a bit later.

The most loved programming language by developers

Rust has been the most loved programming language by developers for the past 4 years. The high-performance language, which just turned 5 years old this month, is used heavily by the Mozilla Firefox team.

86% of developers have either started experimenting with Rust, or want to use it in the future.

TypeScript – a statically typed version of JavaScript – also has a passionate fanbase, and was the second most loved language.

The programming language Developers want to learn next

Developers who are already working with other programming languages are most interested in learning Python, JavaScript, Go, and TypeScript.

30% of developers haven't used Python yet, but want to, followed by 18.5% of developers who want to get started with JavaScript.

The top database by developer preference

Redis, the in-memory database structure for storing key-value pairs, is the most-loved database. 66.5% of developers have either used it or want to use it on a future project. PostgreSQL – the popular relational database – is a close second.

And in terms of the databases developers most want to learn:

MongoDB is the "Most Wanted" database, with 19% of developers expressing interest in using it on their next project. PostgreSQL is a close second, at 15.6%.

The top platform for developers

Linux is the most-loved platform, with 76.9% of developers either using it or expressing interest in using it in the future.

Linux wins with a healthy 77%.

Docker and Kubernetes – while not operating systems – are also popular platforms to build applications on top of. In terms of cloud platforms, AWS was more popular than Azure, which was more popular than Google Cloud Platform and IBM Cloud.

In terms of developers being excited about platforms, Docker was right at the top with 24.5% of developers wanting to use it for a future project. And the interest around AWS was quite high, too:

Nearly a quarter of all developers want to learn Docker.

What operating system do most developers use?

As of 2020, nearly half (46%) of developers still use Windows as their main desktop operating system.

MacOS and Linux are nearly tied for second.

Nearly half of all developers use Windows as their primary desktop/laptop operating system.

A small minority of mavericks out there use BSD. If you want to learn more about that, here's a quick overview of BSD and its benefits.

The top frameworks, libraries, and developer tools

Node.js is again the most widely used non-language, non-operating system, non-database tool.

More than half of respondents use Node.js. About 1/3rd use the Microsoft .NET stack.

Machine learning tools are becoming more widely used this year, too. Quite a few developers are using TensorFlow, Pandas, and PyTorch.

And this may surprise some people, but the most widely used web framework / library in 2020 is still jQuery.

jQuery leads, followed closely by React. Angular isn't too far behind.

There's an absurd number of older websites that still use jQuery, even though many developers would love to rip it out of their sites.

If you are trying to ween your websites off of jQuery, this site shows you how to replicate jQuery functionality using plain vanilla JavaScript.

The other big takeaways from this chart:

How do developers choose their tools?

This was a new question on this year's Stack Overflow survey: how do developers research new tools and decide whether to use them?

The most popular approach: if it has a free trial, just give it a try.

77% of developers will try a tool if it has a free trial. 68% will ask their fellow developers for their opinion of a tool. And only 30% of devs rely on review websites.

This said, most developers don't feel a whole lot of power in determining which tools their team will ultimately use.

57% of developers said they have at least some influence over tool decisions, and 43% of developers said they have little or no influence over the tools their team will ultimately adopt.

I suspect one reason for this may be that large companies often have Chief Information Officers (CIOs) who make enterprise software license purchasing decisions at an institutional level.

This said, the fact that 18% of developers feel they have "a great deal of influence" is heartening. This figure is probably much higher than it would have been 10 years ago.

How developers use different technologies in tandem

One of the coolest parts of this year's Stack Overflow survey is this data visualization, which shows the tools developers most commonly pair with other tools.

Here are the clusters. The size of each circle corresponds to the proportion of survey respondents who use the tool:

This network graph shows the relationships between usage of different tools. You can see several distinct ecosystems emerging.

It should be no surprise that Ruby and Rails tend to get used together, or that .NET developers tend to develop on Windows machines and Azure Cloud.

But there are some interesting observations we can make here, too. The fact that MySQL is more closely associated with PHP, for example, is a reminder that the LAMP stack (Linux, Apache, MySQL, PHP) is still a widely used toolchain.

Contrast this with MongoDB, which seems to be most widely used with JavaScript ecosystem tools.

Angular embraced TypeScript back in 2015, and it is now more commonly associated with TypeScript than it is with JavaScript.

Dart started out as a web development tool at Google. Rather than being incorporated into Angular, it is now more commonly associated with mobile app development, thanks to the surging popularity of the Flutter framework.

In the upper left hand corner, we also get some insight into the tools that DevOps and Site Reliability Engineers use most. We can even see the overlap with the whole data science and machine learning fields.

The conclusions I'm drawing from this chart may be overly broad. I am excited to dig into Stack Overflow's full dataset once they release it, and see whether the data bears out these observations.

How often do developers learn new technologies?

Professional developers pick up new tools often. Nearly ¾ of them seem to learn at least one new technology every year.

35% of developers learn a new technology every few months. That's much faster than in most professions, where Continuing Professional Education may constitute just a few days worth of learning each year.

Working life: what percentage of developers are self-employed?

A vast majority of professional developers work for an employer. Less than 10% of them were self-employed or working as freelancers or contractors when surveyed in February 2020.

Also note that 1 out of every 8 respondents were students, but even some of those students identified as professional developers. These students may have gotten internships or even full-time developer jobs while still finishing school.

83% of professional developers work at an organization.

Most developers work at small or medium-sized businesses (SMBs). Only about 35% of them work at companies with more than 500 employees.

Nearly 2/3rds of developers work at companies with fewer than 500 employees, and only 13.9% work at large companies.

For some perspective, out of the FAANG software companies, Google, Facebook, Amazon, and Apple all have more than 10,000 employees. Netflix had just under 10,000 employees in 2019, and probably has more than that now. Microsoft, which isn't included in FAANG for some reason (maybe it would make the acronym unpronounceable?) also has more than 10,000 employees.

My point is that all of these "name brand" software companies and their peers only employ about 14% of developers. Most developers are working at companies you haven't heard of. Many of them aren't even working at tech companies, but rather at banks, hospitals, and local governments. As of 2020, Pretty much every Fortune 1000 company has software engineers on staff.

Less than half of respondents considered their company's new developer onboarding process to be "good".

But about 65% of them were satisfied with their jobs.

Nearly 1/3rd were "very satisfied."

The main consideration that spurs developers to start looking for new jobs? Money. Not a huge surprise there.

But what is surprising is that  a desire to work with new technologies came in second – above growth and leadership opportunities and work/life balance.

"Trouble with teammates" and "trouble with leadership at my company" were relatively uncommon reasons for people to want to leave. This would seem to suggest that most developers are chasing opportunity rather than fleeing unhappy workplaces.

And when it comes to job satisfaction, "Languages, frameworks, and other technologies I'd be working with" was the main consideration for most developers. But... only for men.

For the 3,694 women who responded to the survey, "office environment and company culture" was the most important consideration. The technologies they'd be working with were a tertiary consideration.

There are some other differences as well. Diversity was a much more important consideration for women.

What is the average developer salary in 2020?

Here's a really cool data visualization from the report. The Y axis is median salary, and the X axis is years of programming experience. Study this for a moment:

If you want to get a high wage earlier in your career, it would seem that DevOps and Site Reliability Engineering are your golden tickets.

But before you rush out to start reading Linux man pages, I would be remiss to not point out: all of the jobs here fall between 7 and 12 years of professional programming experience.

One mistake I often see people make is to prematurely specialize. Your first developer job is unlikely to be as a DevOps engineer. Most likely, it will be as a full stack developer. You'll specialize on-the-job from there, according to the work your bosses assign to you.

But this chart is a helpful guide, because of the sheer volume of responses and the resulting statistical significance. And it may give you some ideas for what types of dev team responsibilities you should ask your boss for.

Also keep in mind that these numbers are global. Here is the difference between salaries globally and salaries here in the US, which has traditionally been the highest-paid developer market in the world.

First, global salaries for different roles, based on 34,279 survey responses (in US dollars):

Management is still the best-paying job description represented here, with SRE coming in second.

Now here are the United States wages for different roles, based on 8,006 responses:

Management and SRE are still the highest paid jobs in the US.

US developers earn a $60,000 premium over their non-US counterparts across the board.

One thing you'll note from looking at these charts: back end developers in the US seem to average about $8,000 more than full stack developers do, but full stack developers make slightly more outside the US.

I'm not certain why this is, but I speculate this is because the US software industry is older than in most other countries. Thus it has a higher degree of job specialization. Since full stack development is a superset of back end development, many of today's full stack developers will specialize on the job and become tomorrow's back end developers.

Those are all my highlights from Stack Overflow's 2020 Developer Survey

Thanks for reading. If you have time, you can read through the full survey results.

In the past, Stack Overflow has made their survey data sets public, so when that happens people will discover a lot more insights.