When dealing with burnout, you should identify what specific stressers exist for you in relation to programming, and then work to cut those stressers out from the process. I’m afraid that from person to person, programming burnout can come from different sources, so we’ll need more information first. For instance, is it specific aspects of the job / management? Is it the codebase itself, or a specific project you’re working on?
If you do anything over and over, you'll get sick of it. A well-balanced life is important. Start exploring other things in life that you find interesting; there is plenty to keep you occupied.
This is very important, but it's more of a protection than a cure.
Once you have burnout, the only fix is to avoid whatever it is that's burning you out. Hopefully it won't require a total career change / hiatus, although for some people it does get to that point.
However, it does get tricky when your other hobbies also require you be on the computer as your job does (e.g., cryptocurrency trading, programming side projects, or editing images, making/editing videos, video games, etc.).
So, recently I've taken up gardening (got a nice piece of land) and brewing beer.
Also, going to the gym every other day or go out running. The exercise helps keep your mind and body at bay.
What's burning you out? Too many hours? Bad coworkers? Bad management structure? A general anhedonic feeling towards work? Is it a feeling stemming from work and leaking into your life or is it a feeling stemming from your life and leaking into your work?
Dont fall prey to Kanban. Just because you completed a story doesnt mean you should immediately pick the next one. Add estimates in days and if you complete in advance, use the rest of the time to relax or learn something else at your pace. Also, work from home more when you need rest.
A bunch of people are suggesting "work from home". Which sounds great but at the same time impossible. I don't think I could convince my employer to let me. I'm sure I'm not alone.
It's possible at some companies by default. And even if you think it isn't, it may be possible at your employer too, if you ask.
Replacing existing employees is expensive. You understand the code, the business, the processes, the knowledge network (who knows what), etc.. Hiring someone straight off the street to replace you, even if they on paper have same technical skills, is a huge cost.
Thus, given a rational manager, if you are willing to quit your job over this you have a lot of leverage.
You can make your negotiating position even stronger by:
1. Living below your means, so you have lots of savings in the bank.
2. Getting a job offer you're willing to accept that does have this benefit, then going to your employer and asking them to counter it.
3. Pointing out the ways this will benefit your employer.
Thanks for the info and the links :) the blog post sounds like my dream haha. I've only been at my current job for a few months, so I won't ask yet, but I'm going to try this.
though it can be very productive, it certainly comes with it's own set of downsides;
- working from home, you'll never get "home from work". in the end, at least in my case, it caused me to work outside working working hours more often as my home became my office.
- the occasional brainstorm with your colleauges becomes a chore resulting in skipping those and writing worse code / having more debate over code reviews. even though there are quite a few video conferencing applications around, brainstorm sessions tend to be more effective / productive while having a walk / a coffee / etc together (my $0.02).
so yeah, when your work environment is the cause of burning you out, working from home is a short term solution, finding a better environment the long term one if you'd ask me
Thanks, I can definitely see that happening. I don't want to work remotely excusively, just a day at home per week would be cool with me and balance out the negatives you mention.
Change jobs then. I've been doing this for over four years and if an in office company offered double what I'm getting now I'd still say no. That's how much it's worth it to me.
You should never reach that stage where you feel like you are burned out. Then you are doing it wrong.
Slow down. Let things take time. Learn to say things took longer than planned. People who are not devs will not understand why you need rest sometimes.
Oh man. Yes, this is a solution to lack of growth. And a great idea for those who want it. But a solution to burnout? Speaking from personal experience and the evidence around me, starting a business seems much more likely to lead to burnout than to cure it.
Start by identifying the root cause of the burnout. I feel like programming itself shouldn't burn you out. It's usually other parts of coding for work that lead to burnout. I've interviewed thousands of developers over the years for books, research, jobs, and if I had to choose a single culprit I'd say the most common cause of programmer burnout is a really terrible codebase that viscerally painful to maintain.
Tangled, nasty, poorly maintained code is not an easy problem to fix. The first step is getting everyone on the team -- and especially the boss -- to recognize the real problem, and accept that fixing it will save more time than it costs.
I would like to add it's not only working in a horrific code base it's working in a horrific code base and getting a lot of push back on fixing it.
Telling PM's week after week that the backend will eventually keel over if we don't take some time to clean it up and being told there is no time to do refactoring or maintenance only time for features is very aggravating. Additionally watching outage after outage occur because of this and still being told "we need more feature work there is no time for refactoring" drove me up the wall.
A well timed HN thread on burnout has saved my butt more than once, so I'd never say its a bad idea to have people ask the question again. Also new answers are great to read.
Have a network, as in family, friends, partner. Also, make them your priority over work. And as other have pointed out, do something else on your free time, and protect your free time.
You have to vary your routine, workout in the morning but in different ways on different days, play with your kids, visit friends for coffee, talk to your spouse, play a sport or put together a robot. Pick activities that are not in front of a screen so when you do burn the midnight oil or push yourself to finish those deadlines, it doesn't feel like your life is just in front of a command line.
Have you ever read the label on those "natural herbal remedies" and thought, "it cures headaches after two to three days... that's about how long it takes for a headache to go away by itself."
I'd apply that same skepticism to pop-psychological advice.
It's also possible you're not actually burned out, but that this is a natural part of the ebb and flow of your emotional state. This isn't to say "just power through," but if you're a bit sick of it, you may find you naturally recover.
Actually, sometimes, when I tired writing code, I will just go hangout with my friends, have some little chat or something.
Other hobbies also helps, like photography, cooking or just staring at sky, watch the cloud floating by. If you have a small astronomical telescope, then you can even see the stars (Well, plants actually and nebula if you do photography).
The key point is: Don't just write program, have some life. Good life will eventually give you better code in return.
When the option to ditch the keyboard is not available (Ie. always for me), the way I deal with this, is to change what I am working on.
Ie. I may be weeks and weeks in networking code and get it to a reasonable point but then get fed up, and move to 3D graphics code, then on to the caching system and then back to the networking code and so on. None of these sub-systems are complete in 1 sitting, but taking this iterative approach gives me a few things:
- the change brings variety to the mind, which prolongs the burnout.
- every "round" of work, I will learn something, thereby building my knowledge bit by bit. It is good to consume this knowledge bit by bit, giving time for it to be absorbed, which this approach allows for.
- it means that at any one time, I have a good "overall" view of the state of the entire product.
- i notice things that I did not when working on that sub-system the first time. Fresh pair of eyes, almost.
Well, the disadvantage I suppose is that it is probably not the most efficient manner to work, but it keeps me relatively sane. Progress feels slow, but then there are moments where multiple sub-systems come together at the same time, and those are very rewarding.
- if you can't afford, find a part-time low-stress job paying just your bills and try to slow down
- have interesting hobbies meeting people from outside tech purely for fun; if they become stressful in any way disengage without explanation and move away
- do saunas
- eat well, figure out which food makes you feel good long-term
- drink a lot of water
- get fit but don't train up to first symptoms of exhaustion, or you'd make your burnout way worse
- relax as much as you can
I had a friend who was driven to hospital by his bosses and stayed there for >6 months while cutting contact with the outside world completely. You don't want to go that far.
Burnout is some part of your body and/or mind telling you you need to stop what you're doing and find a healthier path.
So, dealing with burnout requires you to identify what it is about your current work/life situation that is causing some part of you to apply the brakes.
For me, it's been many different things, but it has included: both fear of failure and fear of success; working for too long on projects that seem destined to fail; working with people who have values I don't share; resentments about all kinds of things that are mostly outside my control (and therefore pointless).
My methods for identifying these issues have included various emotional awareness/healing techniques that allow us to learn about our own subconscious beliefs and behavioural patterns, and then to take steps to adopt more healthy behaviours by aligning our internal thoughts with our external activities.
Feel free to email me if you want suggestions of specific techniques that have worked for me (email in profile).
Take a month off and out of the house. Leave your computer at home and turn off any notification for anything that causes you anxiety or stress.
If you can't because you are a startup founder and it's not making enough money then you have some hard choices. Either ask for help from people that love you, get day job, or go into debt to get your sanity back.
At the end of your life the $2k that month off in Costa Rica cost you will be a pittance compared to everything else you've earned.
At the end of the month off evaluate your life.
Do you still like programming? If the answer is only "kinda sometimes" figure out what you actually like about it and what you hate about it and shift things around to match those.
Are you out of shape? Start biking to get around or get a running buddy. Try to get 15 minutes of heart pumping exercise every day and work towards at least one day a week with over an hour of heart pumping exercise. Do some strength training too. callisthenics is my jam since its super cheap and effective, but some people need social encouragement and take better to things like water polo.
Do you hate your wife? Fix the relationship. See a therapist. If your wife won't work to fix it leave her. Unfaithfulness isn't just cheating.
How's the diet? Cut the fucking soft drinks to 0 and start eating something flavourful, protein / fiber rich every day. I do savoury omelettes in the morning (fresh thyme, soy sauce, mushrooms, onions and jiggled eggs) but whatever it is make sure you have at least one meal every day that is low in carbs, medium-low in fat and high in fiber and protein.
Get a hobby that doesn't involve a screen or prolonged mental energy. Photography, weaving, carpentry, painting. Start small and set realistic goals.
Quit tabacco. Prolonged use raises latent anxiety.
The key thing though is to not to try to do this all at once. Come up with a plan and implement only one change at a time about 4 to 6 weeks between each change.
- Work on shorter projects with clear goals and a clear end. Finish them and move on.
- Exercise is a priority more important than work. I can be flexible about when, but I never skip. Ever.
- If the source of burnout is never-ending support at your day job, take action. Alert your manager. Or start looking for a better job. Realize that no amount of money or security is worth the entirety of your life, attention, happiness & time.
- Work harder to identify and prioritize what you want. Recognize you can code every waking second and never finish what you want. So make sure you think more carefully about exactly what you want, and start figuring out how to spend your time on only what you want and nothing else.
- Make sure you're learning something new that you want to learn (and not something someone else wants you to learn.)
- Reserve time to socialize. Reserve time to get outside.
- If heading toward management is something that doesn't make you cringe and run, reflect on how you can improve the process that's burning you out. Can parts be delegated? Can you request assistance? Can it be done better? People problems and not software may be the source of your pain. Starting learning how to solve people problems. Read books about it, etc.
48 comments
[ 3.2 ms ] story [ 51.9 ms ] threadIf you do anything over and over, you'll get sick of it. A well-balanced life is important. Start exploring other things in life that you find interesting; there is plenty to keep you occupied.
Once you have burnout, the only fix is to avoid whatever it is that's burning you out. Hopefully it won't require a total career change / hiatus, although for some people it does get to that point.
However, it does get tricky when your other hobbies also require you be on the computer as your job does (e.g., cryptocurrency trading, programming side projects, or editing images, making/editing videos, video games, etc.).
So, recently I've taken up gardening (got a nice piece of land) and brewing beer.
Also, going to the gym every other day or go out running. The exercise helps keep your mind and body at bay.
Focusing on weekly or even daily tasks instead of thinking strategically and having time to learn and experiments drive alienation.
Some creative and unstructured work should be always part of our day.
(I'm talking work, not hobbies during spare time.)
Replacing existing employees is expensive. You understand the code, the business, the processes, the knowledge network (who knows what), etc.. Hiring someone straight off the street to replace you, even if they on paper have same technical skills, is a huge cost.
Thus, given a rational manager, if you are willing to quit your job over this you have a lot of leverage.
You can make your negotiating position even stronger by:
1. Living below your means, so you have lots of savings in the bank.
2. Getting a job offer you're willing to accept that does have this benefit, then going to your employer and asking them to counter it.
3. Pointing out the ways this will benefit your employer.
There's a couple chapters about this in my book, The Programmer's Guide to a Sane Workweek (https://codewithoutrules.com/saneworkweek/), but it's similar negotiating dynamic to part-time job, except much easier to get, so this blog post may also be relevant: https://codewithoutrules.com/2018/01/08/part-time-programmer...
though it can be very productive, it certainly comes with it's own set of downsides; - working from home, you'll never get "home from work". in the end, at least in my case, it caused me to work outside working working hours more often as my home became my office. - the occasional brainstorm with your colleauges becomes a chore resulting in skipping those and writing worse code / having more debate over code reviews. even though there are quite a few video conferencing applications around, brainstorm sessions tend to be more effective / productive while having a walk / a coffee / etc together (my $0.02).
so yeah, when your work environment is the cause of burning you out, working from home is a short term solution, finding a better environment the long term one if you'd ask me
Slow down. Let things take time. Learn to say things took longer than planned. People who are not devs will not understand why you need rest sometimes.
It's working for me better than any other thing I tried in the past. And obviously (?) we didn't even do it for helping me deal with burnout.
I did my best to illustrate that here: https://twitter.com/AndrewStellman/status/896405621494382593
Tangled, nasty, poorly maintained code is not an easy problem to fix. The first step is getting everyone on the team -- and especially the boss -- to recognize the real problem, and accept that fixing it will save more time than it costs.
I see context switches and time constraints as the issues that grind me.
I would like to add it's not only working in a horrific code base it's working in a horrific code base and getting a lot of push back on fixing it.
Telling PM's week after week that the backend will eventually keel over if we don't take some time to clean it up and being told there is no time to do refactoring or maintenance only time for features is very aggravating. Additionally watching outage after outage occur because of this and still being told "we need more feature work there is no time for refactoring" drove me up the wall.
https://hn.algolia.com/?query=burnout&sort=byPopularity&pref...
https://www.youtube.com/watch?v=67Vp7fTgQ3g
... at the minimum - it'll fire you up. His stuff is great for motivation.
2nd step, because long-term burnout (chronic burnout) is real: Exercise + Hobbies + Family
...Make time or you WILL fail everyone in the long run - the literature on this is fairly established if I am not mistaken (sorry no refs).
1 - https://en.wikipedia.org/wiki/Jocko_Willink
I'd apply that same skepticism to pop-psychological advice.
It's also possible you're not actually burned out, but that this is a natural part of the ebb and flow of your emotional state. This isn't to say "just power through," but if you're a bit sick of it, you may find you naturally recover.
Actually, sometimes, when I tired writing code, I will just go hangout with my friends, have some little chat or something.
Other hobbies also helps, like photography, cooking or just staring at sky, watch the cloud floating by. If you have a small astronomical telescope, then you can even see the stars (Well, plants actually and nebula if you do photography).
The key point is: Don't just write program, have some life. Good life will eventually give you better code in return.
Ie. I may be weeks and weeks in networking code and get it to a reasonable point but then get fed up, and move to 3D graphics code, then on to the caching system and then back to the networking code and so on. None of these sub-systems are complete in 1 sitting, but taking this iterative approach gives me a few things:
- the change brings variety to the mind, which prolongs the burnout.
- every "round" of work, I will learn something, thereby building my knowledge bit by bit. It is good to consume this knowledge bit by bit, giving time for it to be absorbed, which this approach allows for.
- it means that at any one time, I have a good "overall" view of the state of the entire product.
- i notice things that I did not when working on that sub-system the first time. Fresh pair of eyes, almost.
Well, the disadvantage I suppose is that it is probably not the most efficient manner to work, but it keeps me relatively sane. Progress feels slow, but then there are moments where multiple sub-systems come together at the same time, and those are very rewarding.
- if you can't afford, find a part-time low-stress job paying just your bills and try to slow down
- have interesting hobbies meeting people from outside tech purely for fun; if they become stressful in any way disengage without explanation and move away
- do saunas
- eat well, figure out which food makes you feel good long-term
- drink a lot of water
- get fit but don't train up to first symptoms of exhaustion, or you'd make your burnout way worse
- relax as much as you can
I had a friend who was driven to hospital by his bosses and stayed there for >6 months while cutting contact with the outside world completely. You don't want to go that far.
So, dealing with burnout requires you to identify what it is about your current work/life situation that is causing some part of you to apply the brakes.
For me, it's been many different things, but it has included: both fear of failure and fear of success; working for too long on projects that seem destined to fail; working with people who have values I don't share; resentments about all kinds of things that are mostly outside my control (and therefore pointless).
My methods for identifying these issues have included various emotional awareness/healing techniques that allow us to learn about our own subconscious beliefs and behavioural patterns, and then to take steps to adopt more healthy behaviours by aligning our internal thoughts with our external activities.
Feel free to email me if you want suggestions of specific techniques that have worked for me (email in profile).
If you can't because you are a startup founder and it's not making enough money then you have some hard choices. Either ask for help from people that love you, get day job, or go into debt to get your sanity back.
At the end of your life the $2k that month off in Costa Rica cost you will be a pittance compared to everything else you've earned.
At the end of the month off evaluate your life.
Do you still like programming? If the answer is only "kinda sometimes" figure out what you actually like about it and what you hate about it and shift things around to match those.
Are you out of shape? Start biking to get around or get a running buddy. Try to get 15 minutes of heart pumping exercise every day and work towards at least one day a week with over an hour of heart pumping exercise. Do some strength training too. callisthenics is my jam since its super cheap and effective, but some people need social encouragement and take better to things like water polo.
Do you hate your wife? Fix the relationship. See a therapist. If your wife won't work to fix it leave her. Unfaithfulness isn't just cheating.
How's the diet? Cut the fucking soft drinks to 0 and start eating something flavourful, protein / fiber rich every day. I do savoury omelettes in the morning (fresh thyme, soy sauce, mushrooms, onions and jiggled eggs) but whatever it is make sure you have at least one meal every day that is low in carbs, medium-low in fat and high in fiber and protein.
Get a hobby that doesn't involve a screen or prolonged mental energy. Photography, weaving, carpentry, painting. Start small and set realistic goals.
Quit tabacco. Prolonged use raises latent anxiety.
The key thing though is to not to try to do this all at once. Come up with a plan and implement only one change at a time about 4 to 6 weeks between each change.
Good luck!
- Work on shorter projects with clear goals and a clear end. Finish them and move on.
- Exercise is a priority more important than work. I can be flexible about when, but I never skip. Ever.
- If the source of burnout is never-ending support at your day job, take action. Alert your manager. Or start looking for a better job. Realize that no amount of money or security is worth the entirety of your life, attention, happiness & time.
- Work harder to identify and prioritize what you want. Recognize you can code every waking second and never finish what you want. So make sure you think more carefully about exactly what you want, and start figuring out how to spend your time on only what you want and nothing else.
- Make sure you're learning something new that you want to learn (and not something someone else wants you to learn.)
- Reserve time to socialize. Reserve time to get outside.
- If heading toward management is something that doesn't make you cringe and run, reflect on how you can improve the process that's burning you out. Can parts be delegated? Can you request assistance? Can it be done better? People problems and not software may be the source of your pain. Starting learning how to solve people problems. Read books about it, etc.