Recent research shows that happy workers are more productive. It therefore makes sense for companies to ensure that their (often very expensive) engineers stay happy. This study tries to help us understand how this can be done.
Put very simply, happiness can be increased by maximising positive experiences, minimising negative experiences, or a combination of both. The Scale of Positive and Negative Experience (SPANE) is a survey-based measuring instrument that can be used to measure happiness on a scale from –24 (completely negative) to +24 (completely positive).
A survey was conducted among 1,318 GitHub users. The survey included sections for demographic information and SPANE, and two open-ended questions on the causes of happiness and unhappiness.
The results show that the mean score is about 9. This suggests that software developers are a slightly happy population. This score is in the 65th percentile, which means that happiness levels among developers are also higher than what would be expected in a larger human population.
At the same time, it’s also clear that unhappiness is present among developers. The researchers found 219 causes of unhappiness, which can be grouped into 18 categories and subcategories. The paper only reports on the main categories and top 10 factors.
Unhappiness can emerge from within developers or come from external sources that they have little or no control of, e.g. people whom developers interact with, artifacts in software development, or process-related factors.
The 10 factors that were mentioned most often in survey responses are listed in the table below:
|Being stuck in problem solving||software developer’s own being||186|
|Time pressure||external causes → process||152|
|Bad code quality and coding practice||external causes → artifact and working with artifact → code and coding||107|
|Under-performing colleague||external causes → people → colleague||71|
|Feel inadequate with work||software developer’s own being||63|
|Mundane or repetitive task||external causes → process||60|
|Unexplained broken code||external causes → artifact and working with artifact → code and coding||57|
|Bad decision making||external causes → process||42|
|Imposed limitation on development||external causes → artifact and working with artifact → technical infrastructure||40|
|Personal issues – not work related||software developer’s own being||39|
The paper explains each cause as follows:
Being stuck in problem solving is the most common cause of unhappiness. This makes sense, because software development is ultimately about problem solving; sometimes you simply get stuck.
Feelings of inadequate skills or knowledge is another significant internal cause of unhappiness. Developers may feel unskilled, underqualified, or feel a lack of familiarity with tools, languages, frameworks, or development methods.
Personal issues are also related to a developer’s own being, but not to work. Personal or private issues may affect developers and cause unhappy feelings during work.
The under-performance of colleagues often angers developers, for instance when colleagues do not spend time to keep up with modern development technology and practices.
Bad code quality and coding practices by colleagues tends to cause unhappiness, but the same can happen when a developer encounters old code that they had previously written themselves.
Unexplained broken code is code that doesn’t work like it’s supposed to for reasons that cannot be explained.
Imposed limitations on development by technical infrastructure like tools and programming languages can cause anger, e.g. when a tool is buggy or does not support a particular use case.
Time pressure, often due to unrealistic deadlines makes developers very unhappy.
On the other hand, so do mundane and repetitive tasks that do not challenge developers.
Bad decision making by superiors or peers can result in technical debt, which inevitably leads to frustrations.
It’s impossible for a company to limit all these causes of unhappiness. Some are not the responsibility of the company (e.g. personal issues), while others are simply a part of life as a developer (e.g. being stuck in problem solving). However, companies could consider training psychological grit and teach strategies for coping with negative feelings.
Developers are a slightly happy population
Nevertheless, unhappiness does exist among developers
Happiness can be increased by limiting causes of unhappiness