A new study lays out the main reasons that lead to unhappy software developers. But why is it so important?
Are you happy as a software developer? If that question sounds weird or out of place, it shouldn’t be. It’s a pressing issue for employers, HR teams and companies in general. A happy developer is often a productive developer, and keeping developers happy should be a top priority for companies who produce software.
A new paper titled “On the Unhappiness of Software Developers” aims to solve that challenge. The researchers behind it wanted to see how to keep developers happy, and how to filter out the main reasons for their “unhappiness” in the workplace.
In the following post, we’ll go over the main takeaways for achieving “happiness” and create a better environment for developers. Join us as we go over its main insights.
[This blog post is included as chapter 4 of our free Guide to Automated Root Cause Analysis. Download the full eBook here.]
— OverOps (@overopshq) June 22, 2017
TL;DR: Developers are pretty happy, but…
A new research wanted to see what are the main causes that could lead to unhappiness among software developers. The researchers were able to isolate over 200 causes of unhappiness and divide them into categories. The result? Somewhat of a guideline that could help make your teams happier.
Why should developers be happy?
A fun and happy work environment is something most companies try to offer. It could be perks like… slides that connect different floors, jam sessions during lunch or even unlimited vacation days. There’s always that little extra something, to keep employees happy.
It’s no surprise that companies spend time, energy and money to make sure developers are happy whenever they’re at work. But why is it so important?
The idea that happy developers are better at their job is not new, and it’s not surprising. If we’re happy, having fun and keep on learning we would be more productive in our work.
It’s not only a theory. In the study “Happy Developers Solve Problems Faster”, the researchers were able to prove this assumption.
The study, conducted by Daniel Graziotin , Xiaofeng Wang and Pekka Abrahamsson, sets out to see how productivity and software quality could improve. It focused on the developers themselves, providing incentives to make them satisfied and happy with their work.
The results showed that the happiest developers were able to solve an analytical problem better than their “unhappy” co-workers. The conclusion also pointed out that keeping developers happy could reduce job burnout, anxiety and remove negative experience in the workplace.
Now that we know the “why”, it’s time to get to the most important part – the “how”.
Why are developers unhappy?
If you’re looking for a clear answer, we have some news for you. According to the current study, “On the Unhappiness of Software Developers“, there are many causes for unhappiness. 219 causes, to be exact. On the bright side, the researchers were able to group them into 2 main categories:
- Developer’s own being (i.e., internal causes) – Focusing on personal state and actions originating from the developers own behaviors
- External causes – How developers are affected by something they have no control of
Yet, these 2 main categories are still too broad for us to understand the exact causes of unhappiness. That’s why the researchers dissected them into 18 subcategories, so it will be easier to pinpoint the cause that might lead to unhappiness. Then, they extracted the top 10 causes of unhappiness among software developers.
Before diving into the causes themselves, this chart shows us that out of the top 10 causes that make developers unhappy, 7 are external.
Among the top causes of unhappiness, we can see issues we’ve all faced: tight deadlines, bad code quality (written by other members of the team), underperforming colleagues, repetitive tasks and so on.
On the bright side, this means that in most cases, we can affect the unhappiness of a developer. It also means that we can be aware of certain issues that might lead to unhappiness, and react. We can help turn that frown upside down.
But there’s also some not-so-happy-news. The chart holds 3 internal causes for unhappiness. The most significant cause that makes developers unhappy is being stuck on a problem. Unfortunately, it’s a common issue that’s hard to avoid.
Another internal cause that appears in the chart, is feeling inadequate with work. This feeling could arise when a developer is unfamiliar with his/her work environment. This could include tools, languages, frameworks, or development methods used by the team.
The last internal reason has nothing to do with work, but it still affects it – personal issues. According to the researchers, in most cases personal issues are family related.
The bottom of the list is a bit surprising if you ask us. Causes such as misuse of software by a customer, being too technical or git conflicts lead to the least amount of unhappiness among developers.
If you’re interested in the full list of 219 causes of unhappiness, you can view it at the following link.
Helping developers stay happy
The number one reason that leads to unhappiness among developers is being stuck on an issue. Unfortunately, it’s one of the most common tasks any developer faces throughout the day. That’s also one of the main reasons that brought us to build OverOps.
We hope it might help you be happier too. If you haven’t yet, please check it out and let us know what you think. It only takes a few minutes.
Since one of the most time consuming tasks developers face is debugging, and being stuck on bug related problems 20-40% of your time on average is no fun at all, we thought there must be a better way to tackle these errors.
When it comes to debugging in production, most of the wasted time is spent on trying to reproduce the variable state that caused the error. Sifting through logs is just plain annoying. Most of the time, they’re super noisy and the information you’re looking for isn’t even there.
With OverOps, you can see the exact variable state behind any exception, logged error or warning, without relying on the information that was actually logged. It lets you see the complete source code and variable state across the entire call stack of the event. Even if it wasn’t printed to the log file.
We’d be happy to show you how it works, click here to schedule some time for us to meet.
How can we deal with unhappiness?
There’s no doubt that the unhappiness of developers is an important issue that should be handled. However, the causes detailed in this research could seem a bit broad, and each developer has a different take on the various causes. That’s why we’ve decided to ask other developers how they feel about this research, and the causes lined up in it.
Eugen Paraschiv, an engineer, architect and the person behind Baeldung found the first cause surprising. While being “stuck on a problem” is familiar to any developer and is a cause for temporary frustration, he wouldn’t label it as being “unhappy”. Baeldung’s opinion is that when the problem is under our control, working on it is generally rewarding, even if it’s sometimes frustrating to be stuck.
Oleg Shelajev, a product engineer and developer advocate at ZeroTurnaround, pointed out that most of the causes lined out in this research have the same base concept: They all relate to being unproductive, or having to sacrifice seemingly achievable quality of the project they work on for some reasons.
This could be the result of bad planning and time pressure, inadequate team skills, already rotting code base, or not being able to use reasonable modern tools that make life easier, etc. In other words, when developers know they can be better but something prevents them from achieving it, they feel unhappy.
Shelajev adds that some of the things that make us unhappy are hard to solve: issues with the management, the team, the planning, making everyone invest in code quality. Still, the fact is that some of them could be solved with the proper tooling: a proper IDE, a debugger you know how to use, an APM solution, a powerful dedicated Jenkins cluster, a crash monitoring solution, sane logs, JRebel, thought through libraries and frameworks or any other combination that works for you.
Peter Cooper, a software developer, podcaster, blogger, author and more believes that the causes for developer unhappiness are not significantly different to those for people doing other types of job. While poor management and poor setting of expectations and requirements seem to be behind most unhappiness, those things will make most jobs hard to tolerate and will lead to unhappiness.
Looking at the numbers
This research is based on a survey that included 2,220 developers, spread across 88 countries, and the most represented nationality was American, with 24% of respondents. The majority of participants were men (94%), with an average of 8.2 years of experience, and people who were born at 1984.
Out of the total participants, 75% are professional software developers. Only 8% are in management roles, such as CEO, CTO and other c-level positions. 10% of participants develop software as a hobby, passion or volunteer without pay.
We can’t say it’s a surprise that happy developers are better developers, and it’s something that needs our attention. This research gives us an idea as to what might make a developer unhappy, so we can try and solve it before it “hits” the team.
That being said, it’s still important for everyone involved to pay attention to every member of the team and be ready to deal with the unhappiness that might come.