The Toilet Paper

What makes developers tick (like a time bomb)

Happy workers are productive workers. Limiting unhappiness can be a good way to increase the happiness of your workers.

A worker whose head has turned into a literal bomb with a lit fuse looks very unhappy.
Is that a dead-line on your head or are you just unhappy to see me?

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:

Cause Category Freq.
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.


  1. Developers are a slightly happy population

  2. Nevertheless, unhappiness does exist among developers

  3. Happiness can be increased by limiting causes of unhappiness