Stack Overflow upravo je objavio rezultate svoje ankete za više od 65.000 programera za 2020. godinu.
Baš kao i u prošlim anketama Stack Overflow-a, pročešljao sam njihove rezultate i sažeo ih za vas, zajedno sa svojom osobnom analizom kao programera i učitelja.
Ovaj će vam članak dati kratki prikaz izgleda profesije za razvoj softvera u 2020. godini.
Imajte na umu da ću se u ovom članku usredotočiti samo na rezultate ankete profesionalnih programera, a ne na studente i druge ljude koji još nisu počeli raditi kao programeri.
Ako želite saznati više o ljudima koji tek ulaze u područje razvoja softvera, preporučujem da pogledate i najnovije istraživanje novog kodera tvrtke FreeCodeCamp od 31 000 programera.
Također imajte na umu da čekam da Stack Overflow učini cjelokupni skup podataka odgovora na anketu javnim (to obično čine nekoliko tjedana nakon što objave sažetak rezultata). Jednom kad to učine, povezat ću se ovdje i možda ću imati neke dodatne vizualizacije podataka.
Za ovaj članak dijelim službene vizualizacije podataka Stacka Overflowa, zajedno s vlastitom analizom istih i njihovim značajem.
Prvo će ovaj članak prvo obuhvatiti demografske podatke: dob, obrazovanje i koliko dugo ljudi kodiraju.
Drugo, opisat ću alate koje programeri najčešće koriste i alate oko kojih su najviše oduševljeni.
Na kraju ću pokriti plaću programera i zadovoljstvo poslom.
Koliko je star prosječni profesionalni programer softvera?
Većina profesionalnih programera je u kasnim 20-ima ili ranim 30-ima. Ali kao što ćemo vidjeti, indijski programeri (a ima ih puno) prilično sruše prosječnu dob.
Ali suprotno uvriježenom mišljenju, kodiranje nije samo igra mlade osobe. (Pokušavam najmračnije razbiti ovaj mit). 1 od svakih 20 programera ima 50 ili više godina.
Američki programeri obično su stariji od programera u drugim zemljama, prosječne starosti gotovo 34 godine.
Čini se da i Amerikanci započinju s kodiranjem kasnije u životu od drugih zemalja i u prosjeku kodiraju samo otprilike 16 godina - što znači da većina njih kodiranje započinje tek nakon srednje škole.
I to dodatno iskustvo kodiranja čini veliku razliku kada je u pitanju vaša karijera.
Menadžeri i rukovoditelji obično imaju 14 godina ili više iskustva u programiranju.
Čak i za front end programere i programere punog stoga - dva najčešća naslova prvog posla za nove programere - ljudi imaju prosječno 8 godina iskustva u kodiranju.
Imajte na umu da su mnogi ljudi savršeno sretni u tim ulogama i u njima ostaju godinama. Dakle, to ne znači da prosječni programer ima 8 godina iskustva s kodiranjem kada otkrije svoj prvi posao programera s punim stogom.
Većina profesionalnih programera zapravo je počela učiti kodirati između 5 i 14 godina:
Kakvo je obrazovanje većine profesionalnih programera?
Oko 75% programera završilo je preddiplomsku sveučilišnu diplomu, a mnogi od tih ljudi također su i diplomirali.
3% profesionalnih programera zaustavilo je školu nakon završene dvogodišnje diplome suradnika, a oko 17% programera uopće nije steklo nikakvu fakultetsku diplomu.
To me dovodi do dvije važne točke:
- Ako niste išli na fakultet, niste sami. Mnogi profesionalni programeri nisu išli na fakultet.
- Ali većina profesionalnih programera išla je na fakultet. Stoga možda dvaput razmislite prije nego što pokušate povući Billa Gatesa i odustati od pokretanja vlastitog pokretanja.
Ako pohađate sveučilište, gotovo sigurno želite upisati računalstvo. Daleko je najplaćeniji glavni predmet u SAD-u, a ujedno je i najčešći glavni predmet među profesionalnim programerima.
Ove je godine Stack Overflow odlučio povezati softverski inženjering i računalno inženjerstvo s računalima. No, tijekom posljednjih 8 godina CS je uvijek bio daleko najčešći glavni predmet.
Ipak, uzbudljivo je vidjeti koliko je drugih smjerova ovdje zastupljeno. 4,4% programera dolazi iz prirodnih znanosti, 3,6% iz matematike, oko 5% iz liberalne i likovne umjetnosti, pa čak i dobra kombinacija medicinskih znanosti.
Iz kojih su regija ispitanici u anketi?
Prema Stack Overflowu, regionalna raščlamba ispitanika je sljedeća:
+-------------------+-----------+ | Region | Responses | +-------------------+-----------+ | Europe | 24,688 | | North America | 15,570 | | Asia | 16,400 | | South America | 3,070 | | Africa | 2,709 | | Australia/Oceania | 1,570 | +-------------------+-----------+
Koliko je ispitanika bilo žena?
Samo 7,7% ispitanika koji su bili profesionalni programeri identificirali su se kao žene. No kao plus, ovaj je broj porastao sa 7,5% u 2019. godini.
Koji postotak programera živi s fizičkim ili mentalnim razlikama?
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.
And around 1 in 5 respondents were living with a mental health or other difference:
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.
The programming language Developers want to learn next
The top database by developer preference
And in terms of the databases developers most want to learn:
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.
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:
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.
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.
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.
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.
The other big takeaways from this chart:
- React has been steadily growing.
- Vue.js and Angular aren't going away any time soon. They are still widely used front end frameworks.
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.
This said, most developers don't feel a whole lot of power in determining which tools their team will ultimately use.
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:
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.
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.
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.
Most developers work at small or medium-sized businesses (SMBs). Only about 35% of them work at companies with more than 500 employees.
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.
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.
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):
Now here are the United States wages for different roles, based on 8,006 responses:
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.
What are your thoughts on these survey results? Did I miss any big revelations? If so, be sure to tweet it to me.