There is one more that I would add to the list of burnout-inducing items:
The loss of trust. Organizations change over time and it sometimes happens that they fail to live up to previous standards. This, combined with any visible progress (or even negative progress) is a surefire way to stress people out and make them leave.
Which was the reason why two other team members and me handed in our notice last month after spending years with this unspecified company. The final straw was when the CFO of the company called one of us, who was on medical leave in a hospital at the time, to talk about timesheet-related paperwork. We resigned within a week after that incident.
Thank you, although I hope that the company in question learns from this and improves.
My mindset is that I always prefer to work on gentlemens terms. However that means respect and trust has to go both ways. It’s not something you write on a mug, it has to be actively practiced.
This is a pretty good post. I quit my job last month as I hadn’t been able to do any code for almost two months. I didn’t recognize it as a “burnout” until a few weeks later. I probably should have taken a sick leave in hindsight instead of quit, but ah well.
I wrote some about it on another Lobsters thread a few weeks ago, although I’m not sure if that still reflects my views today as they continue to evolve. I’ll write a detailed weblog post on it eventually, but right now I’m more focused on other stuff, like taking dogs to the park. I’ll probably write a post about dogs first.
I did have fun writing quite a bit of code this week (for the first time in a what feels like forever). Things are generally going well.
But here’s a general observation I’ve been thinking about for a while (that is, a few years); namely that office work is too abstract for our brains to thrive in. We can cope, but that’s not the same as thriving.
Consider mowing the grass. It’s not challenging, innovative, or really “fun” in the direct sense of the word; but it is rewarding. The effort-reward feedback loop is almost instant. A lot of traditional labour is similarly boring but has instant or very short effort-reward feedback loops. Take a look at this expert clog maker; he makes an entire product in what, a day? Probably less? It’s a very experience than office work.
This feedback is made even better by actually seeing your customers. As knowledge workers we hardly ever see any customer; we just write software and hope some number somewhere goes up. Seeing a real customer being happy with your labour is incredibly rewarding and motivating. I used to work as a repair tech in a computer shop, and the job had a lot of shitty sides, but one of the good sides was the ability to directly help people. Having a real person in front of you thanking you for your work is great. It’s been over 10 years, but I still miss that.
I also think the lack of a sense of “community” contributes here as well. No local “village community”, religious community, or other sense of belonging makes this even worse. You’re no longer working towards a common goal, you’re just a lonely speck (I have much more to say on individualism and its effects, but I’ll save that for another day).
The other day I had an idea for a product. I did some basic market research, jotted down some ideas, and made a basic prototype. I showed it to a test audience (N=1, my girlfriend) and she thought it was great (okay, she may be biased, but it’s a start).
I enthusiastic worked on this for most of Sunday, and continued Monday morning by fleshing out the quick mocked up prototype a bit, and I realized I had to make a user management system (login, registration, forgot passwords, etc.) Dear God, not again! and almost instantly lost motivation. I’ve lost count on how many user management systems I’ve written over the years. It’s neither hard nor mundane. It sits in the dangerous place where you need to do something tedious, carefully. I think of software development sits in that category. What makes it even worse is that I’m not even sure if it will be of any use, since this is a product idea that may never gain traction.
Perhaps this is the real reason for Rails and the like; not because of laziness, but because doing the same kind of stuff over and over again is too demotivating. I primarily use Go these days which has a very “anti-framework” mentality. I can see the logic in it, and in a way I find myself agreeing with stories such as The resource leak bug of our civilization , but on the other hand doing the same stuff over-and-over again is not how I want to spend my life.
Many people see me as a “real programmer geek”, or whatnot. I have more Stack Overflow points and GitHub projects/contributions than most and am generally full of ideas. But I don’t really like programming. I just like building stuff. I can cope with the price of building stuff with software, but when too much negative stuff happens my brain seems to fizzle out and give up. The distance between “normal functioning” and “breakdown” seems relatively small; at least, it is for me.
How can we do better? I’m not sure. I think a major rethinking of both software development practices as well as Western societal norms are needed to really fix it, and that ain’t happenin’ any time soon.
I think the part about the feedback is an astute observation. Two philosophical things before I say something practical
There is a verse in the gita that says: “You have a right to perform your prescribed duties, but you are not entitled to the fruits of your actions. Never consider yourself to be the cause of the results of your activities, nor be attached to inaction.”
Manual work is somehow fundamentally different from mental/organizational work and seems to touch something very basic in our minds. Do you pace when you think? I do. I think our evolution dictates that the only reason for thinking is action, so there is a tight connection between thinking and acting. And if we don’t act on what we think, we become depressed. Note that in your example you were satisfied by the act of mowing and not worried about if anyone admired your lawn. The work was it’s own reward.
Now on to practicality - I find that getting feedback from users directly about a product is rewarding. It can be painful because the feedback is often negative. Fewer people comment positively about a product they are happily using and more people comment about things they find wrong. But in general the sense that there is some action - some one using the product and gaining some use out of it - is pretty motivating for me personally.
There is also the aesthetic pleasure - derived like that from mowing the lawn - of creating code that is pleasant to read and does its job and does it well. I think some of the burnout might come from overdoing it - so not getting enough other things to do, and rest and so on, and some from having to do it badly because of time pressure and negative feedback without any positive feedback.
Great post. Especially “But I don’t really like programming. I just like building stuff.” resonates with me. This is exactly how I feel, and I don’t feel I can express this without receiving negative attention. In Europe, developers aren’t as well paid as in the US, and many employers list having ‘pizza nights’ as a benefit. To me, it signals that I’m expected to work overtime, and the company doesn’t want to invest in me (as in, if they have a pizza nights, employers usually 1. don’t allow you to have paid trainings, 2. expect you to lead pizza nights yourself 3. won’t buy you any food that’s better than greasy junkfood).
I generally agree with your statement, but I think this lack of reward feeling has more to do about our trade that about office work. One can design a building, a train or a plane in an office and feel tremendously rewarded once the product is finished.
Because we delve into the virtual world of computer programs, we have nothing to show for our efforts. The product of our work is not tangible and, worse, only shows value among people within our trade. Although I tremendously enjoy what I do, I cannot help but feeling worthless from times to times, wondering what exactly my legacy is going to be.
This is why the past several years I have been trying to diversify myself with some other, more tangible skills. I opted for motorcycle mechanics and, interestingly, often take more pride in my small mechanical achievements than my larger, more impactful professional achievements. And the reason is absurdly simple: I can sit on them; I can show them off; I can parade on them; and I know where they physically are.
Maybe people looking for such appreciation should do a mix of what impresses peers in the know and user-visible work that outsiders would appreciate? I think better marketing of what you build showing its benefits can have that effect, too. They say, “I don’t know how it works but I like the results.” They have to see your name attached to it, though, front-and-center to avoid it being made by some abstract or legal entity.
Nobody seems to have responded to the part where you thought you needed to write your own user management system so I figured I’d do it: don’t; just use OpenID or OAuth or something along those lines; even just giving users the ability to authenticate via Google, Facebook, etc. would address the problem sufficiently to focus on the other stuff you actually enjoy.
Yeah, that’s a good suggestion. I might do that for the first version/MVP.
I think there’s a bit of a friction between “good elegant implementation” and “easy to create” in this area; in general, I don’t particularly like Facebook logins and such, so I want to offer people the ability to login via regular ol’ email login.
Perhaps a good third-party authentication solution exists?
That’s nice, for several reasons, but there are a lot of users who understandably hate it. It’s kind of slow, it doesn’t integrate with 1Password and its clones, and it fundamentally requires you to collect user email addresses.
I don’t understand why you think it’s slow; it takes at most a few seconds the first time and should be a no-op on subsequent uses.
It doesn’t need to integrate with 1Password because it’s not a password!
Yes, it requires you to collect email addresses, which seems better than collecting passwords.
One of the benefits of 1Password (or anything like it) is that it shows me all of the sites I have accounts with. Even if a site didn’t use passwords per se I would still make a 1Password entry for it just so I would remember later that I’d made an account there.
*shrug* I mostly just like having a list of the accounts I’ve registered for. But it’s also helpful to keep track of which username and email address I used for a particular service, since I use one-off email addresses and I’d probably forget exactly which address I used if I didn’t write it down somewhere.
So I ended up implementing this suggestion, but to be honest I found it doesn’t really work all that well, and eventually deprecated it in favour of more standard password auth.
Thanks. I looked at it, but it’s too JavaScript-heavy for my liking. The dashboard doen’t load in Firefox for some reason (blank page); perhaps a problem in my Firefox, but it doesn’t inspire a lot of confidence. I personally consider accessibility pretty important so I’m not confident this is a good fit. Right now the app is usable in Lynx if you really want to (well, as “usable” as anything gets in Lynx).
I eventually went with @adsouza’s suggestion, which I implemented in about 140 lines of Go code and one simple HTML template. I might make a weblog post or library out of it. Thanks!
How can we do better? I’m not sure. I think a major rethinking of both software development practices as well as Western societal norms are needed to really fix it, and that ain’t happenin’ any time soon.
I don’t think major changes are necessary. Software engineers and knowledge workers in general need to get organized and stop drinking whatever kool-aid the silicon valley visionaries, thought leaders, and the likes of Facebook, Amazon, Google, etc. have been selling. Just establishing basic standards of professionalism and ethics can go a long way towards fixing many of the issues that lead to burnout.
I’m very much in favor of professionalizing our occupation, myself. I’d like “software engineering” to be a real engineering discipline, like civil or mechanical or even electrical engineers have, with all that entails. But I do think that it would constitute a major change from where we’re at now. I hope and expect to see this kind of change, but gradually.
We absolutely imperatively need to fix our tools and fix the general state of programming itself before we “professionalise” which usually means codifying and legislating existing best practices. Because our “best” practices are awful.
I think that professionalizing is going to be such a long process that we need to be talking about it now—and besides, there’s so much churn in tooling and practices in our industry that waiting for anything to be “fixed” is going to be waiting for Godot. (A nascent professionalization movement might even put some weight behind an effort to figure out what “fixing” our tools and practices might look like.)
While I don’t disagree with that, I also think the problems are more fundamental and deeper than that. Or maybe not; I’m not really sure to be honest.
I can only talk from my experience as a software developer, as that’s the only experience I have. But I think I would suffer from the same kinds of problems if I’d work in, say, marketing, or other sectors.
That’s true. Programming as a profession attracts certain kinds of people and maybe those people are just more prone to this kind of stuff. But even with that I still think some kind of collectivized professionalism would go a long way to fixing many of the problems that the solo genius mythos has created.
Amen on the count of academia. Something they definitely do not tell incoming students is that (based on my experiences) 1/3 will drop out of their PhD programs one way or another. Speaking as a member of that 1/3.
Thank you for not glorifying burnout. It is a dangerous state to be in and often uncharted territory for individuals. It is recoverable but it can be difficult. Many articles really understate the gravity of it and (un)-intentionally depict their authors as beating it. My experience is that you don’t really conquer burnout, it kills you a little and then you change and try to watch out for it next time. You always carry the scars of it. That’s ok.
The author’s advice to ignore most of the celebrity tech industry (essentially Hacker News) is dead-on. It’s not reality, and it’s not information that improves your life one bit. It is just endless navel-gazing at people/institutions who’ve already made it for the people who feel the need to kowtow to them.
I did a talk on this recently. To sum it up, I found that burnout tends to be the end result of chronic stress. The factors you mentioned in you article all tend to contribute to a baseline level of stress that can’t be easily resolved. Stress also tends to compound on itself, decreasing sleep, increasing stress, decreasing your ability to cope with stress, causing anxiety and depression, and ultimately leading to burnout.
Number one thing to mitigate stress is sleep, schedule 8.5 hours of sleep a day to account for falling asleep. Practicing good sleep hygiene and exercise can also help in this regard. Other things that can help is adjusting how you cope to stress. CBT exercises and meditation can help with this. Changing you environment and creating work place support systems can be highly beneficial, but can be difficult to do. General minimization of stressors can also help. A big one for me is all eliminating technology feeds such as facebook, reddit, even HN that can create lots of unnecessary stress. Lastly, take some vacations, especially in nature.
Sleep is definitely important. Recently, I’ve been stressed at work so I’ve been staying up later to have more time outside of work. This results in less sleep, which results in more stress. Lather, rinse, repeat.
+1 on vacations in nature. Recently went snowboarding and had a wonderful time. It’s basically impossible to use a phone while on the mountain: no signal, actively skiing, crowded chair lifts, clumsy gloves, etc. By the end of the second day, I was positively giddy.
Gradual refactoring of a codebase, where each individual step is trivial but there’s just so many of them—and this is why big-bang rewrites often happen, because that’s just less terrible than trying to mop up a floor with a muddy mop.
I wonder how many people are like me, but I adore slow gradual refactorings consisting of trivial steps that together form a completely unpredictable emergent results which make the code look completely different and from-another-universe better!
Unfortunately this sort of work stops being useful pretty soon. Right after code turns from ugly to palatable, nobody wants to pay for it to become really good.
I do this too. For every 2 PR’s related to an issue, I end up with another small refactor (1-10 lines) that I noticed along the way. It’s great because PR’s that small are often pretty trivial to write and test. It feels a bit like tidying up.
I appreciate this post, the factors described are a good checklist to run your current situation against from time to time.
Having had burnout myself, a lot of this rang way too true, especially the “Never feeling like you make a difference, always having enough hope to think you might next time” bit. I shared it with some formerly-afflicted friends, and no matter the industry, the conditions seem to always roughly hold true.
I think I will be periodically re-reading this to make sure I don’t stumble into that again.
Great writeup. Having survived two episodes of burnout, that should be in the mandatory training for many workers.
If your company works on an ASAP culture, you should quit ASAP. :)
I have no words to describe how much relatable and strong this whole blog post has been for me.
I always read your posts, and they are interesting, but nothing got into me as hard as this.
It helped. It made me feel better. FWIW, it allowed me to accept the fact that I’m not as crazy or as out-of-my-mind for having things that are so seemingly “small” or “meaningless” to people around me (be it friends in the tech sector or be it friends from the outside). It’s so calming and assuring that I’m OK, and can work things out instead of just getting sunk deeper and deeper and losing hope in the loop.
For a long time, I was unable to open a notepad and code anything… not even in my house, but at work. This whole week I haven’t been able to do anything rather than changing the shape of a button from a circle to a different elliptic one. What a joyride. I lost what was a passion, a hobby and a destination for me along the years, to the thing that gave me the worst connotations and which I wanted to distant myself from.
I hope things get better. They will, but I need to make sure I don’t let this happen too many more times before it’s irreversible.
Also, your reading is ridiculously interesting and inviting. Absolutely brilliant. You should make these more often (and that’s a demand that has to be delivered on time)
Wow what a fantastic write-up. This is one of the best I’ve seen on this topic - in particular because it actually tries to gather concrete sign posts, indicators, root causes, and symptoms, and that’s DEFINITELY an improvement on the state of the art of discourse on this topic as I see it.
I wrote a much more wing-bag-y response to this, but realize it comes down to one key idea:
Willpower and self discipline are reservoirs, like a hit point gauge in a video game/RPG. Reward (which can come in many forms) refills that reservoir. Burnout, IMO, in its base case, is when you empty the reservoir and just keep pushing, running on fumes. Ultimately, you blow a gasket. How hard / severe the damage is depends on how hard you’re pushing and how long you keep it up.
For instance, I recently experienced a case of mild burn-out when I was trying to improve my coding and problem solving skills by night (which I find immensely rewarding) while keeping up my very intense but also very rewarding and only sometimes uninteresting (usually FASCINATING) day job.
is someone aware about similar discussions for systems engineers? I can translate the points to my field of work but I wonder if systems engineers reflect in the same way about how they get stuff done.
This is a post I’d started writing on a brief vacation stint, and came back to and finished tonight.
I hope it helps people, and I’m sorry if it doesn’t improve the discourse on the subject. :(
There is one more that I would add to the list of burnout-inducing items:
The loss of trust. Organizations change over time and it sometimes happens that they fail to live up to previous standards. This, combined with any visible progress (or even negative progress) is a surefire way to stress people out and make them leave.
Which was the reason why two other team members and me handed in our notice last month after spending years with this unspecified company. The final straw was when the CFO of the company called one of us, who was on medical leave in a hospital at the time, to talk about timesheet-related paperwork. We resigned within a week after that incident.
Congratulations on your departure! Show the bastards they can’t get away with that behavior, and make it hurt.
Thank you, although I hope that the company in question learns from this and improves.
My mindset is that I always prefer to work on gentlemens terms. However that means respect and trust has to go both ways. It’s not something you write on a mug, it has to be actively practiced.
Funny that you say that: I just received a mug with my company’s slogan yesterday!
Masterpiece. Bookmarking my favorite write-up on the subject. Bravo!
It helps.
Thanks for sharing.
It’s an awesome post. I wish I could write like that.
This is a pretty good post. I quit my job last month as I hadn’t been able to do any code for almost two months. I didn’t recognize it as a “burnout” until a few weeks later. I probably should have taken a sick leave in hindsight instead of quit, but ah well.
I wrote some about it on another Lobsters thread a few weeks ago, although I’m not sure if that still reflects my views today as they continue to evolve. I’ll write a detailed weblog post on it eventually, but right now I’m more focused on other stuff, like taking dogs to the park. I’ll probably write a post about dogs first.
I did have fun writing quite a bit of code this week (for the first time in a what feels like forever). Things are generally going well.
But here’s a general observation I’ve been thinking about for a while (that is, a few years); namely that office work is too abstract for our brains to thrive in. We can cope, but that’s not the same as thriving.
Consider mowing the grass. It’s not challenging, innovative, or really “fun” in the direct sense of the word; but it is rewarding. The effort-reward feedback loop is almost instant. A lot of traditional labour is similarly boring but has instant or very short effort-reward feedback loops. Take a look at this expert clog maker; he makes an entire product in what, a day? Probably less? It’s a very experience than office work.
This feedback is made even better by actually seeing your customers. As knowledge workers we hardly ever see any customer; we just write software and hope some number somewhere goes up. Seeing a real customer being happy with your labour is incredibly rewarding and motivating. I used to work as a repair tech in a computer shop, and the job had a lot of shitty sides, but one of the good sides was the ability to directly help people. Having a real person in front of you thanking you for your work is great. It’s been over 10 years, but I still miss that.
I also think the lack of a sense of “community” contributes here as well. No local “village community”, religious community, or other sense of belonging makes this even worse. You’re no longer working towards a common goal, you’re just a lonely speck (I have much more to say on individualism and its effects, but I’ll save that for another day).
The other day I had an idea for a product. I did some basic market research, jotted down some ideas, and made a basic prototype. I showed it to a test audience (N=1, my girlfriend) and she thought it was great (okay, she may be biased, but it’s a start).
I enthusiastic worked on this for most of Sunday, and continued Monday morning by fleshing out the quick mocked up prototype a bit, and I realized I had to make a user management system (login, registration, forgot passwords, etc.) Dear God, not again! and almost instantly lost motivation. I’ve lost count on how many user management systems I’ve written over the years. It’s neither hard nor mundane. It sits in the dangerous place where you need to do something tedious, carefully. I think of software development sits in that category. What makes it even worse is that I’m not even sure if it will be of any use, since this is a product idea that may never gain traction.
Perhaps this is the real reason for Rails and the like; not because of laziness, but because doing the same kind of stuff over and over again is too demotivating. I primarily use Go these days which has a very “anti-framework” mentality. I can see the logic in it, and in a way I find myself agreeing with stories such as The resource leak bug of our civilization , but on the other hand doing the same stuff over-and-over again is not how I want to spend my life.
Many people see me as a “real programmer geek”, or whatnot. I have more Stack Overflow points and GitHub projects/contributions than most and am generally full of ideas. But I don’t really like programming. I just like building stuff. I can cope with the price of building stuff with software, but when too much negative stuff happens my brain seems to fizzle out and give up. The distance between “normal functioning” and “breakdown” seems relatively small; at least, it is for me.
How can we do better? I’m not sure. I think a major rethinking of both software development practices as well as Western societal norms are needed to really fix it, and that ain’t happenin’ any time soon.
I think the part about the feedback is an astute observation. Two philosophical things before I say something practical
Now on to practicality - I find that getting feedback from users directly about a product is rewarding. It can be painful because the feedback is often negative. Fewer people comment positively about a product they are happily using and more people comment about things they find wrong. But in general the sense that there is some action - some one using the product and gaining some use out of it - is pretty motivating for me personally.
There is also the aesthetic pleasure - derived like that from mowing the lawn - of creating code that is pleasant to read and does its job and does it well. I think some of the burnout might come from overdoing it - so not getting enough other things to do, and rest and so on, and some from having to do it badly because of time pressure and negative feedback without any positive feedback.
Great post. Especially “But I don’t really like programming. I just like building stuff.” resonates with me. This is exactly how I feel, and I don’t feel I can express this without receiving negative attention. In Europe, developers aren’t as well paid as in the US, and many employers list having ‘pizza nights’ as a benefit. To me, it signals that I’m expected to work overtime, and the company doesn’t want to invest in me (as in, if they have a pizza nights, employers usually 1. don’t allow you to have paid trainings, 2. expect you to lead pizza nights yourself 3. won’t buy you any food that’s better than greasy junkfood).
I generally agree with your statement, but I think this lack of reward feeling has more to do about our trade that about office work. One can design a building, a train or a plane in an office and feel tremendously rewarded once the product is finished.
Because we delve into the virtual world of computer programs, we have nothing to show for our efforts. The product of our work is not tangible and, worse, only shows value among people within our trade. Although I tremendously enjoy what I do, I cannot help but feeling worthless from times to times, wondering what exactly my legacy is going to be.
This is why the past several years I have been trying to diversify myself with some other, more tangible skills. I opted for motorcycle mechanics and, interestingly, often take more pride in my small mechanical achievements than my larger, more impactful professional achievements. And the reason is absurdly simple: I can sit on them; I can show them off; I can parade on them; and I know where they physically are.
Maybe people looking for such appreciation should do a mix of what impresses peers in the know and user-visible work that outsiders would appreciate? I think better marketing of what you build showing its benefits can have that effect, too. They say, “I don’t know how it works but I like the results.” They have to see your name attached to it, though, front-and-center to avoid it being made by some abstract or legal entity.
Nobody seems to have responded to the part where you thought you needed to write your own user management system so I figured I’d do it: don’t; just use OpenID or OAuth or something along those lines; even just giving users the ability to authenticate via Google, Facebook, etc. would address the problem sufficiently to focus on the other stuff you actually enjoy.
Yeah, that’s a good suggestion. I might do that for the first version/MVP.
I think there’s a bit of a friction between “good elegant implementation” and “easy to create” in this area; in general, I don’t particularly like Facebook logins and such, so I want to offer people the ability to login via regular ol’ email login.
Perhaps a good third-party authentication solution exists?
If you do end up implementing it yourself, don’t even bother with passwords; just use cookies and magic links sent via email.
That’s nice, for several reasons, but there are a lot of users who understandably hate it. It’s kind of slow, it doesn’t integrate with 1Password and its clones, and it fundamentally requires you to collect user email addresses.
I don’t understand why you think it’s slow; it takes at most a few seconds the first time and should be a no-op on subsequent uses. It doesn’t need to integrate with 1Password because it’s not a password! Yes, it requires you to collect email addresses, which seems better than collecting passwords.
One of the benefits of 1Password (or anything like it) is that it shows me all of the sites I have accounts with. Even if a site didn’t use passwords per se I would still make a 1Password entry for it just so I would remember later that I’d made an account there.
To what end?
*shrug* I mostly just like having a list of the accounts I’ve registered for. But it’s also helpful to keep track of which username and email address I used for a particular service, since I use one-off email addresses and I’d probably forget exactly which address I used if I didn’t write it down somewhere.
So I ended up implementing this suggestion, but to be honest I found it doesn’t really work all that well, and eventually deprecated it in favour of more standard password auth.
I wrote up my experiences here, in case you’re interested: https://www.arp242.net/email-auth.html
“One issue I had is people misspelling their email during signup, so they were immediately locked out of their account.”
When I did this a decade ago, I required them to click a link in an email they provided during signup to actually validate it.
I recently learned about userkit.io. If you use it write a review for the rest of us.
Thanks. I looked at it, but it’s too JavaScript-heavy for my liking. The dashboard doen’t load in Firefox for some reason (blank page); perhaps a problem in my Firefox, but it doesn’t inspire a lot of confidence. I personally consider accessibility pretty important so I’m not confident this is a good fit. Right now the app is usable in Lynx if you really want to (well, as “usable” as anything gets in Lynx).
I eventually went with @adsouza’s suggestion, which I implemented in about 140 lines of Go code and one simple HTML template. I might make a weblog post or library out of it. Thanks!
I don’t think major changes are necessary. Software engineers and knowledge workers in general need to get organized and stop drinking whatever kool-aid the silicon valley visionaries, thought leaders, and the likes of Facebook, Amazon, Google, etc. have been selling. Just establishing basic standards of professionalism and ethics can go a long way towards fixing many of the issues that lead to burnout.
I’m very much in favor of professionalizing our occupation, myself. I’d like “software engineering” to be a real engineering discipline, like civil or mechanical or even electrical engineers have, with all that entails. But I do think that it would constitute a major change from where we’re at now. I hope and expect to see this kind of change, but gradually.
We absolutely imperatively need to fix our tools and fix the general state of programming itself before we “professionalise” which usually means codifying and legislating existing best practices. Because our “best” practices are awful.
I think that professionalizing is going to be such a long process that we need to be talking about it now—and besides, there’s so much churn in tooling and practices in our industry that waiting for anything to be “fixed” is going to be waiting for Godot. (A nascent professionalization movement might even put some weight behind an effort to figure out what “fixing” our tools and practices might look like.)
While I don’t disagree with that, I also think the problems are more fundamental and deeper than that. Or maybe not; I’m not really sure to be honest.
I can only talk from my experience as a software developer, as that’s the only experience I have. But I think I would suffer from the same kinds of problems if I’d work in, say, marketing, or other sectors.
That’s true. Programming as a profession attracts certain kinds of people and maybe those people are just more prone to this kind of stuff. But even with that I still think some kind of collectivized professionalism would go a long way to fixing many of the problems that the solo genius mythos has created.
I’ll add another “this hits close to home.” I’ll specifically call out this part:
This sounds scarily similar to a lot of my own experiences in academia. Given that kind of environment, it’s no wonder that one in three PhD students is at risk for a psychiatric disorder.
Amen on the count of academia. Something they definitely do not tell incoming students is that (based on my experiences) 1/3 will drop out of their PhD programs one way or another. Speaking as a member of that 1/3.
Thank you for not glorifying burnout. It is a dangerous state to be in and often uncharted territory for individuals. It is recoverable but it can be difficult. Many articles really understate the gravity of it and (un)-intentionally depict their authors as beating it. My experience is that you don’t really conquer burnout, it kills you a little and then you change and try to watch out for it next time. You always carry the scars of it. That’s ok.
The author’s advice to ignore most of the celebrity tech industry (essentially Hacker News) is dead-on. It’s not reality, and it’s not information that improves your life one bit. It is just endless navel-gazing at people/institutions who’ve already made it for the people who feel the need to kowtow to them.
I did a talk on this recently. To sum it up, I found that burnout tends to be the end result of chronic stress. The factors you mentioned in you article all tend to contribute to a baseline level of stress that can’t be easily resolved. Stress also tends to compound on itself, decreasing sleep, increasing stress, decreasing your ability to cope with stress, causing anxiety and depression, and ultimately leading to burnout.
Number one thing to mitigate stress is sleep, schedule 8.5 hours of sleep a day to account for falling asleep. Practicing good sleep hygiene and exercise can also help in this regard. Other things that can help is adjusting how you cope to stress. CBT exercises and meditation can help with this. Changing you environment and creating work place support systems can be highly beneficial, but can be difficult to do. General minimization of stressors can also help. A big one for me is all eliminating technology feeds such as facebook, reddit, even HN that can create lots of unnecessary stress. Lastly, take some vacations, especially in nature.
Sleep is definitely important. Recently, I’ve been stressed at work so I’ve been staying up later to have more time outside of work. This results in less sleep, which results in more stress. Lather, rinse, repeat.
+1 on vacations in nature. Recently went snowboarding and had a wonderful time. It’s basically impossible to use a phone while on the mountain: no signal, actively skiing, crowded chair lifts, clumsy gloves, etc. By the end of the second day, I was positively giddy.
On gradual refactoring:
I wonder how many people are like me, but I adore slow gradual refactorings consisting of trivial steps that together form a completely unpredictable emergent results which make the code look completely different and from-another-universe better!
Unfortunately this sort of work stops being useful pretty soon. Right after code turns from ugly to palatable, nobody wants to pay for it to become really good.
I do this too. For every 2 PR’s related to an issue, I end up with another small refactor (1-10 lines) that I noticed along the way. It’s great because PR’s that small are often pretty trivial to write and test. It feels a bit like tidying up.
Completely agreed. It’s the only way to actually keep tech debt at a minimum, without waiting for a “good time” to clean everything up.
I appreciate this post, the factors described are a good checklist to run your current situation against from time to time.
Having had burnout myself, a lot of this rang way too true, especially the “Never feeling like you make a difference, always having enough hope to think you might next time” bit. I shared it with some formerly-afflicted friends, and no matter the industry, the conditions seem to always roughly hold true.
I think I will be periodically re-reading this to make sure I don’t stumble into that again.
Reading this made me realize that I probably burnt out at my last job.
Great writeup. Having survived two episodes of burnout, that should be in the mandatory training for many workers. If your company works on an ASAP culture, you should quit ASAP. :)
I have no words to describe how much relatable and strong this whole blog post has been for me. I always read your posts, and they are interesting, but nothing got into me as hard as this. It helped. It made me feel better. FWIW, it allowed me to accept the fact that I’m not as crazy or as out-of-my-mind for having things that are so seemingly “small” or “meaningless” to people around me (be it friends in the tech sector or be it friends from the outside). It’s so calming and assuring that I’m OK, and can work things out instead of just getting sunk deeper and deeper and losing hope in the loop. For a long time, I was unable to open a notepad and code anything… not even in my house, but at work. This whole week I haven’t been able to do anything rather than changing the shape of a button from a circle to a different elliptic one. What a joyride. I lost what was a passion, a hobby and a destination for me along the years, to the thing that gave me the worst connotations and which I wanted to distant myself from. I hope things get better. They will, but I need to make sure I don’t let this happen too many more times before it’s irreversible.
Also, your reading is ridiculously interesting and inviting. Absolutely brilliant. You should make these more often (and that’s a demand that has to be delivered on time)
Great post! This is why I love lobsters.
I’m definitely going through burnout at the moment.
It’s really nice to hear similar stories. Thanks for this.
Wow what a fantastic write-up. This is one of the best I’ve seen on this topic - in particular because it actually tries to gather concrete sign posts, indicators, root causes, and symptoms, and that’s DEFINITELY an improvement on the state of the art of discourse on this topic as I see it.
I wrote a much more wing-bag-y response to this, but realize it comes down to one key idea:
Willpower and self discipline are reservoirs, like a hit point gauge in a video game/RPG. Reward (which can come in many forms) refills that reservoir. Burnout, IMO, in its base case, is when you empty the reservoir and just keep pushing, running on fumes. Ultimately, you blow a gasket. How hard / severe the damage is depends on how hard you’re pushing and how long you keep it up.
For instance, I recently experienced a case of mild burn-out when I was trying to improve my coding and problem solving skills by night (which I find immensely rewarding) while keeping up my very intense but also very rewarding and only sometimes uninteresting (usually FASCINATING) day job.
is someone aware about similar discussions for systems engineers? I can translate the points to my field of work but I wonder if systems engineers reflect in the same way about how they get stuff done.
Hey there @friendlysock the link to this article is broken, which makes me sad since it’s a great write-up :)
OT but shouldn’t @friendlysock’s name be @friendliness sock?
angry : anger :: friendly : friendliness
Maybe friendshipsock so it scans similarly.
[Comment removed by author]