I have recently come across a post by Recurse Center's fellow alumnus about his burnout and having to quit jobs in the past two years because of his newborn. I think this is an interesting topic that is not being widely talked about enough. How to cope with one's burnout as a programmer.
Programming is for the most part an obsession to problem solving. One doesn't just jump into writing code because it's a "great career with a decent paycheck". Most of the time, and for most people writing code, it isn't. Programming is an art form not unlike painting. Being a programmer today is like being a Modernist artist in the time of Picasso--it is just circumstantial that today programmers are earning big bucks, but most programmers do not really have a putting-food-on-the-table-first mindset. We are just passionate about writing code, and we are just lucky we're currently in demand.
I also think a burnout is a natural call for us to grow and change. It is our primal instinct to adapt and survive. Whether we have become overweight from unhealthy lifestyle, over stressed by our job or family, or been binging way too much Netflix, we are self-destructing, and our instinct calls out in the form of boredom and burnout to stop us from going further down that destructive path. It's purely self-preservation (I also think Netflix is dangerous because it tricks us into ignoring boredom).
This is why listening and responding to your burnout are really crucial not only as a programmer but also as a person. Programming is driven mainly by passion, and with a burnout it's going to be hard for us to get excited in solving problems, building stuff, and learning continuously. And the more we ignore it, the further we are at risk of killing ourselves.
I, too, am experiencing a mild burnout. I have taken a vacation, but it was no more a cure than just postponement. I've come to realized a few things that have caused most burnouts and what had made them better.
I have been maintaining a pretty flatlined project called RxGo. I began working on it as a serious exercise while learning Go language and also as a project that would become the topic of the upcoming book deal I had. It has become my biggest open source project since, earning a lot of interests from users.
However, when my baby was born, my life has changed. I no longer had the time, energy, and focus to push any more work to the project and work on the book. After a year of missed milestones, my editor and I decided it was best to terminate the contract and let someone else write it. The project has been pretty much inactive, and although there's a few serious contributors interested in stepping up to help maintain the development, I haven't had considered anyone.
I think unfinished businesses really drag us down. It's like running with a weight tied to our ankle. We get exhausted sooner that way.
Anyone with a family (a partner and at least one child) can speak to this. Family is hard work, nothing less than a full-time job on its own. It's a mini organization you have to manage while also maintaining a day job. You are the CEO of this said organization which has all sorts of problems you cannot tune off even when you're at work.
Many are faced with the dilemma to either manage a good family or perform well at work. To make matters worse, it is hard for those without children to understand what we're going through. When that accumulates, it builds up into a feeling of not fitting in a culture and degrades to a burnout.
It's very important to prioritize our own needs and time to maintain sanity. Having a partial schedule you share with your partner is a great start. You'd be surprised that most of the time it's up to us to make family works.
When we have built something or solved a problem with our code, in our mind we have become our own rockstar. At our job, unfortunately, you are inevitably compared to your colleagues. It can be just you doing the comparison, or it can be from your supervisor and/or colleagues ("Oh, you don't know how to do this?", "I thought everyone knows how to expand directory path."). Once a victor, now you've become mediocre. On your company's Slack you would see your colleagues boasting their work while your supervisor and other colleagues praising them--something you haven't got in a while. You begin to burn out.
The best way to tackle this is to talk it out with someone, preferably your supervisor, not your colleague. If your supervisor doesn't "get" it, find another senior who knows your sentiment and isn't likely going to judge you.
Since programming is a passion-based activity, sometime being exposed to uninteresting problems or something you're just not good at can cause burnout. Again, talk it out to your supervisor. Ask her if you could work on a different project or use a different language.
Not being able to accomplish anything repeatedly can cause burnout. Maybe the projects you have been working on, whether at work or on the side, are too ambitious, large, or requiring of domain-specific knowledge you can't possibly pick up on your own. Try dividing a project or problem into smaller, more specific ones. Instead of thinking "I want to learn AI", try "I want to learn perceptrons" or "I want to write a program to detect cats in an image".
Clear, achievable goals are less inspiring than huge idealistic ones, but they can provide small wins--and thus adrenaline rushes--that can catapult you out of the burnout zone.
Sometime, a longer detour leads you back stronger. Try something else you haven't done before in your life. Better, learn and master them like you had done with programming. Things like cooking, brewing beer, wood working, board games, hiking, are all viable.
This cannot be overstated. Being a geek isn't an excuse to gobble junk food, smoke, get drunk, or avoid workout. Remember, a burnout is possibly your inner warning to guide you out of dismay, and there's no way to get to that sooner than getting your health wasted. Discipline actually leads to a happier and more productive life, not self-indulgence.