Burnout of software engineers: Why and How to prevent?

Oct 03 2021|Written by Slimane Akalië|productivity, career, programming


More hours vs More output

On May 1st, 1926, Henry Ford decided to lower the workweek on Ford factories from 6 days to 5 days and the workday from 9 hours to 8 hours, the goal was to increase the productivity of employees, as an article on History.com states "Though workers’ time on the job had decreased, they were expected to expend more effort while they were there.". Also, Ford doubled the minimum wage from 2.34$ per 9-hours workday (which was the standard at the time) to 5$ per 8-hours workday. This seems crazy until you see the results of such a move. Combine the assembly line with happy employees who have an additional "vacation" day each week and a pay increase, and you get more cars per day and loyal employees.

Of course, Henry Ford wasn't an angel who wanted his employees to feel better and have more rest, he was an aggressive capitalist who valued money over everything else, but he was smart enough to notice how exhausting his personnel while paying them some pennies can hurt his company in the long run, even if it brings some small financial gains on the first few months.

Fast forward to 2017, I was in my third year of college studying software engineering, there were a lot of things going on that my mind couldn't handle effectively, I saw the pain in my face and the faces of my "competitive" classmates. We were fasting in Ramadan, we had a small programming language to build from scratch, a JavaScript project to ship, a PHP e-commerce website to build (without using any framework please), some math exams to pass, and of course two nutritious meals to cook every day (otherwise we will starve the next day). We worked hard for extended periods of time with less sleep and more coffee.

That experience left all of us exhausted mentally and physically, but when I remember those days, I have some mixed feelings, on one hand, there is pride in my "ideal" work ethic maybe because society traits busyness as a badge of honor, and I learned to lean to that point of view unconsciously. On the other hand, there is this feeling of ineffectiveness that I remember growing even when I did more and more. Now after years of studies and some similar experiences in the professional field of software engineering, I know that the second point of view is more realistic when I remove the "telling a good story about myself" criteria from the scene.

The linear output hypothesis

What's different between the two stories is the ROI on time and effort, it seems logical that more is better when it comes to working. You work more, you achieve more. Let's call this hypothesis: The linear output hypothesis.

The linear output hypothesis: the more hours you work on your field of expertise, the more positive return you get on your career and personal life

At first glance, the linear output hypothesis seems logical as Malcolm Gladwell famously stated in his best-seller Outliers: "The idea that excellence at performing a complex task requires a critical minimum level of practice surfaces again and again in studies of expertise. In fact, researchers have settled on what they believe is the magic number for true expertise: ten thousand hours".

Here is what misleading about this hypothesis: it neglects sustainability. Long-distance runners know that putting too much effort too early in a race destroys your ability to compete at the last meters for a win. Your career is not a one-year sprint, it's a thirty-year marathon.

If you tried to get to the ten thousand hours "magic number" by doing 100-hour workweeks for years, you'll likely die of a heart attack or lose your family before you reach "expertise". Now, if you're ambitious, maybe you're thinking about me as someone who wants you to be unproductive and enjoy life or someone who will try to sell you a get-rich-quick course on how to make millions of dollars in passive income. First of all, I won't sell you anything. Second, I'm ambitious like you, and I love doing productive things, but here I'm trying to be like Henry Ford when he lowered the number of working hours each week so that he can get the most out of his employees in the long-term.

Software engineers burnout

Software engineers, in particular, are more prone to believe in the linear output hypothesis, why? because they see the output of their work almost instantly, the more hours you work, the more code you write, the more tickets you move to the "DONE" column, the more features you ship, especially if you like it or you like your teammates, it feels like playing a video game. But probably what a good percentage of software engineers don't see is the silent killer of all of this cool stuff, it's called burnout.

In a study by a UK company that included responses of 260 UK software developers, 83% reported feelings of burnout. Of course, 260 is not a big number but if you're part of the industry, you know it's a real issue.

Now, is it just long working hours or there is something else? I mean Kobe Bryant and MJ trained more than anyone else, Mohammed Salah and Cristiano Ronaldo do the same thing, Elon Musk manages three big companies and works long hours each week.

In each one of these examples, fans and followers have an incomplete story that the media sold them to get more of their attention, why? because nobody wants to hear the details. Everybody wants to hear about Elon Musk's billions of dollars but nobody wants to hear how much time it took him to get there, everybody wants to hear about Kobe's insane work ethic, but nobody wants to hear how much time, money, and energy he put into recovery.

Few people put in the time or mental space to hear the details, that's why most of us are trying to find quick answers to explain excellence, like the linear output hypothesis.

Of course, working hours play a huge role in software engineers' burnout because the tasks you're working on can take more than you expected. Something goes wrong on the weekend, you get stuck with a problem on a Friday and can't fix it by the end of the day (this can ruin your weekend at least mentally), you learn new technologies in your spare time to not fall behind (and now you don't have enough time to recover).

There is also the nature of the software engineer profession itself, the bigger portion of your time is spent dealing with a computer in a focus-intense mode, sitting or standing the whole time. This is not natural for us as humans, but it's like reading, an intellectual exercise for our brain. The problem with intellectual activities starts when these activities dominate other types of activities like social and physical ones, if you read books 24/7, yes you'll develop some wisdom but you'll develop also some physical and mental diseases and no social relationships.

So solving problems using code is great for your brain and bank account, but without balance, it will lead you to burnout faster than other types of work.

Burnout pillars theory

Now we learned that software engineering presents more chances for burnout because of two reasons: long working hours and the cognitive nature of tasks. We can use this to form a theory that can apply to many other jobs like business founders, university researchers, military leaders, and politicians. I call it Burnout pillars theory.

Burnout pillars theory: Any activity that takes a long continuous period of time to accomplish and involves intense cognitive effort, presents higher chances of burnout compared to other activities.

This theory can be beneficial for us to prevent burnout altogether.

Before the burnout: prevent it

The best way to deal with burnout is to not reach it in the first place, using the burnout pillars theory we need to focus on two points to prevent burnout while working as a software engineer: the long working hours and the intense cognitive effort.

1. Long working hours:

Here we should distinguish between two types of problems: a long schedule that is enforced by the job itself and a long schedule that you create (consciously or unconsciously).

If in your job responsibilities, you have to work long hours, then your chances of having burnout will increase with time, when you're young and have no family it seems fine but this won't last. What you can do here is think seriously about switching to another role either on the same company or on another one, to speed up the process, set a deadline when to make the switch, most of the time you won't lose that much money or technical knowledge in this transition.

The second type of long problematic schedule is the one you create yourself either consciously or unconsciously because you believe in the linear output hypothesis. To avoid this trap:

  • Tackle tasks in a sequential mode, multitasking will make you miserable,
  • Start selecting which tasks to work on, being on slack all day and checking email every 5 minutes is not work,
  • Work deeply: Deep work is a great book that has some tactics to work on what matters,
  • Limit back-and-forth messaging: walk to the person, use a phone call or a video one, and use Calendly for meetings,
  • Start the work early and finish early,
  • And lastly, be reasonable about how much you can get done in a normal workday,
"I'm better scientist when I don't work evenings and weekends" - Clara Sousa-Silva

2. Intense cognitive effort:

The cognitive effort needed in a software engineering job can differ massively from a company to another and from a role to another, also the level of seniority matters. But generally, a software engineer deals with cognitively demanding tasks and that's okay, you just need to find some balance:

  • Set a specific ending time for your day and try to stick to it: this will push your brain to achieve more stuff in the time at hand (Parkinson's law),
  • Never bring your work laptop to home, and if you work remotely, try to have two separate computers (one for work and the other for personal stuff),
  • Exercise on a regular basis: don't overthink it, start with 10 minutes run and build on top of it, once you build the habit you won't be able to stop exercising,
  • Read more books: reading is an activity that relaxes our distracted brain, try physical or kindle books,
  • Spend more time in nature: most of us see some repeated version of the world, Bed → Home walls → Car → Computer screen → Phone screen → Car → Home walls → Bed (again). This is against our human nature, we are connected to nature and when you spend your time in a man-made environment, you feel something is missing, its like video games vs reality, the former is entertaining and shiny but the latter is authentic,
  • Socialize more: there is this identity that is linked to programmers of the "genius geek" and it can be detrimental for many engineers, this can make you a worse collaborator and a worse human being. It's like the "solitary scientist" who knows everything and society doesn't understand him but this is far from the truth. Even if you're smart enough to win code jam for 10 years in a row, you still need to collaborate with other people. And as science shows: rich social relationships can boost almost every aspect of our lives (productivity, happiness, longevity..),
  • Learn new stuff that is not related to computers: a music instrument, a new language, a new productivity hack,
  • Stop using social media or Netflix to rest: use old-school tools instead, like walking, reading fiction, spending time with family, cooking, meditating, or journaling,
  • If you're a student: double down on what you care about technically and do the minimum on the other stuff (you will forget it anyway once you pass the exam),

During the burnout: deal with it

It is always easy to talk about some negative thing or write about it, BUT when you're dealing with that thing, it seems like there is a detachment between what you've written, read, or said and what you're experiencing, and that all the advice, tips and hacks are unpractical and useless for your situation.

This is expected because you're not the same person, when you read something like this article probably you're not experiencing burnout, maybe you're drinking a cup of tea on a calm weekend, so the information seems nice and fancy, on the other hand, when you reach burnout you're angry, exhausted, too emotional and you have no tea to drink.

It's just a terrible place to be in, I've been there and what helped me always is TAKING BABY STEPS. Do not try to solve the situation completely, you reach burnout in a gradual way, so you will recover also in a gradual way. Here are some baby steps that you could take to deal with it without losing your mind:

  • Move your body as soon as you wake up: it's very difficult to feel miserable when you workout, yes, you probably feel some physical discomfort, but that physical discomfort converts to a sense of achievement at the end of the session,
  • Take a vacation and do not touch the computer: software engineering is a creative endeavor, you can't do it if you're exhausted, and if you work for a company and your employer didn't approve your vacation, you should start thinking about leaving that company
  • Try to define what led you to this state of mind (this will be helpful to learn from your burnout)
  • Read more non-technical books: by non-technical I mean books that are not related to software, like fiction, biographies, business, and history.
  • Travel to a nice place: changing the place you live in for a while can be helpful also
  • Write down the problems that you have right now and try to solve them one by one, using this tool, you pass from being emotional to being systematic
  • Spend some time alone (without your phone please): people who are close to you will try to help, but most of the time they make the situation worse.

After the burnout: learn from it

Once the burnout is over, your next task is to learn from it using the data you gathered previously, some questions to ask are:

  • What exactly led me to this burnout?
  • What changes should I make to my home, career, or working environment?
  • What helped me exactly overcome this burnout?

Based on the responses to these questions, you must make changes so that burnout won't occur again. Do not be ashamed of leaving software engineering altogether.

Words of wisdom from Warren Buffet

Three years ago, I watched "Becoming Warren Buffet", one of the quotes I heard in that documentary shaped a huge portion of my decisions about where to put my attention and energy. Warren was talking to a crowd of high-school students and he said:

"If I told you, you can choose whatever car you want BUT you won't be able to change this car throughout your whole life, how would you deal with that car? most probably, you will take care of it, you will put the best fuel in it and you will make sure it's always clean. Guess what? you already have that car, it's called your health." - Warren Buffet

Most of the time, we achieve the goals of other people and never ask why we are doing what we are doing. We are all irrational, we care about making someone else lose more than we care about what we win and what price we pay for that win. As Peter Thiel said "Competition is for losers, build a monopoly instead", separating yourself comes from having fun while doing your work, and you can't have fun if you're not healthy either mentally or physically.