The software industry evolves super-fast.
A tool or framework used today might be obsolete tomorrow. Our intention is to take a snapshot of the current software development trends, track how they evolved in the past and make an educated guess as to what comes in the future.
To better understand these changes and to uncover the biggest challenges and best practices, we started publishing the State of Software Development Report back in 2018.
The report gives you the fresh data you need to benchmark your activities against survey participants. You get insights to further improve your software engineering team and to keep up with the rapidly changing industry. Plus, you get to compare the fresh data to previous years.
This post highlights 20+ interesting stats from the report. The full state of software development 2018, 2019 and 2020 reports contain even more fascinating insights about software development trends.
You can download the full reports for free here:
Note: if you can’t read the charts, download them here.
This blog post covers:
In 2020, the #1 challenge turned out to be capacity ahead of sharing knowledge by a considerable margin. So, keeping up with the demands and managing the backlog is the biggest issue in software development across the board, much like last year.
We also asked everyone what they have done to overcome their challenges.
The most common answer was implementing agile methods and improving on existing practices. SCRUM is the popular choice for improving planning, or any other moving part along the way.
Hiring more developers is another top choice. More people can get more things done, and both recruiting software developers for your own team or outsourcing to contractors is a common occurrence.
My favorite answer for this was “quit my job.” It may seem extreme at first, but if your company doesn’t adapt to the challenges, it’s a perfectly sensible solution for you.
The most popular thing people are doing in 2020 to make sharing knowledge easier is using wikis and documentation.
Pair programming and code reviews are still common ways to share knowledge between developers.
We also checked the difference between the challenges for developers and managers.
Here's what we found:
The top challenge for engineering managers is capacity, followed by hiring talent. It hasn’t changed over the last 3 years, but the current trend seems to be that the top challenges are evening out.
For developers, the main challenge is sharing knowledge, which is the same as last year. In 2018, developers were more concerned about capacity issues, but it took a steady second spot again in 2020.
It comes as no surprise that developers are far less concerned about hiring, but there is a significant disparity in how many of them named time management as a key challenge. Apparently, it’s a more important issue for a software engineer to make the necessary time for heads-down work.
Outsourcing development is a popular way of handling the capacity challenges mentioned above.
The data supports the answers we received above: a significant percentage of companies outsourced development to contractors in the last 12 months.
And most of them were happy with the results: only 17.17% said they were specifically dissatisfied with the work they outsourced.
Remote work isn’t the future anymore; in 2020, it’s very much the latest trend.
It’s allowed at most tech companies in some way by this year.
However, the trends clearly show that more companies plan on implementing remote work, and overall, they’re more open to the idea now than they were just a few years ago.
One of the most exciting parts of the State of Software Development Report is seeing how programming languages climb, rise and fall.
JavaScript is still the #1 programming language - data shows it rules serverless computing as well -, head and shoulders above everything else at 59.08%, but the trends are shifting down the grid.
Java lost some ground (34.96% -> 29.04%), but still holds on to second place.
However, TypeScript made an incredible leap forward (15.83% -> 26.32%) and took third place, while getting very close to second. It’s basically a superset of JavaScript, but as TS gains ground, JS doesn’t seem to be declining at all.
Python and C# are head to head at 23.89% and 23.75% respectively, and both lost a spot to TypeScript.
Among the less widely used programming languages, Swift and Ruby have been losing ground over the last few years.
This is for right now, and we also asked about future plans for programming languages.
Over 35% don't plan on adding any new programming language to the repertoire.
Beyond that, Python is the most considered programming language of 2020, as it has been in the previous years.
TypeScript gained ground on this chart as well; many have started using it since 2019, and more are considering it.
On the other hand, Go lost some interest, but it’s still among the top most considered languages.
Among the smaller languages, Rust is getting more and more consideration, while Scala and Ruby have lost a significant amount of interest since 2019.
Developer teams use a wide variety of tools, which makes it hard to present them on a chart. There are a few industry-leading tools, followed by a plethora of less widespread tools forming a long tail.
If you look at the chart, you will see that the “other” category tends to be higher than anything but the most popular choices. This is a merged category collecting all the longtail tools that were mentioned just a few times by the respondents.
Here are the most popular project management, communication, and SCM tools.
A notable change in communication tools is Microsoft Teams (5.61% -> 16.74%) and Zoom (2.3% -> 13.16%) making a massive step forward. It’s likely a direct result of remote work gaining more popularity.
Hiring developers is a critical challenge for managers; it’s currently the #2 challenge, and it has a solid place near the top every year.
This chapter sheds some light on the hiring practices of tech companies, including hiring criteria, and the most popular methods for attracting and motivating talents.
Over the last few years, the most effective hiring methods haven’t changed. Employee referrals and in-house recruiters are the most popular ways to hire talent.
There is a notable change, however: recruitment agencies and online HR portals are gaining ground and becoming more popular ways of recruiting engineers.
Let’s take a look at the most important requirements against developer candidates.
The top 4 criteria haven’t changed over the last years.
The willingness to learn is still the most essential trait tech companies are looking for. Cultural fit took second place in 2020 with a marginal gain; technical skill evaluation is third, followed by work experience, which seems to have lost some weight this year.
The most interesting trend is seeing that soft skills are becoming a key factor in evaluating engineers. It seems like the archetype of the 10X engineer is slowly being devalued, and soft skills have taken on a bigger role when hiring engineers.
Formal education is still low on the list; great developers are forged on the job, not in class.
Retaining developers while talent is scarce in the industry is another challenge many managers face. Here are the most popular methods to motivate developers in 2020.
The landscape is largely the same as it was in 2019: team spirit and engaging work is in the lead.
Trainings even fell back a bit in popularity, while career path and stock options haven’t moved up for 2020.
This year, we also compared top performers against average performers in this metric, and that slightly changed the picture.
Challenging work takes the lead among top performers, with team spirit sliding back to second place. They put slightly more emphasis on autonomy and significantly more on creating an exciting product.
Let’s look for more differences between top and average performer developer teams. First thing’s first:
As you can tell, the #1 measurement for top performers is working software, and completed tasks only come in second. The difference between top and average performers in this is small but not trivial.
However, top performers put far more emphasis on code readability and test coverage. The results seem conclusive: it’s worth putting more effort into delivering high-quality code.
We took a look at the delivery problems and at the differences in problems between top and average performer developer teams.
Top performers have the most problems with the lack of clearly defined deliverables and with making correct estimations.
For average performers, the biggest delivery problem is unrealistic expectations followed by the same two issues as the top performers have. They’re also more likely to face issues with missing key skills on the team or failing to coordinate with outside teams. Budget is less likely to be a problem for them.
When looking at delivery problems in terms of managers and developers, developers face the lack of clearly defined deliverables and the ever-changing landscape far more often.
Managers mostly face the problems of unrealistic expectations, estimation and requirements prioritization.
This blog post featured just a small slice of all the data we gathered from our survey.
We’re excited to keep publishing this report annually and seeing how the continuously emerging trends shape the industry as a whole over the years.
If you want to see the full report, just follow this link and download it.
Check out the previous Level-up Engineering interviews with our current guests:
At Apex Lab, we're experts in end-to-end digital product development. Our remote-first company operates with a flexible schedule, allowing us to help clients tackle difficult challenges worldwide.
Want us to build your next idea or upgrade your existing product? Our experts cannot wait to work with you. Get in touch with us and let's make this happen. 💡🚀