Everyone knows that, there's no disputing it. Whether you're only beginning your code journey or you've been doing it for years, it affects us all.
But what does it take to deal with it? I don't claim to be any kind of expert on this topic, but I've found this works for me, and I hope that others find it useful!
- Embrace burnout, it's bound to happen
- The best combatant for burnout is confidence
- Keep yourself organised, and plan what you plan to do
I want to make myself totally clear. I am not claiming that I have some magic pill or solution to totally clear burnout out of your life, sadly I haven't worked that one out yet. Burnout is a completely normal aspect of programming, it's nothing to be ashamed of and it's not a sign of weakness or of an inferior programmer.
And with that out of the way, let's get started!
Burnout occurs as a result of individuals placing incredible amounts of stress and pressure on themselves, whether it's an optimistic deadline or piling too many tasks on at the one time. It's our bodies telling us that enough is enough, we have over saturated ourselves with the same activity and are exhausted.
You may've seen children at fancy events where the food just keeps on coming, and they sit there stuffing their faces until they can't any longer. They go green in the face, slump in a corner and can't even think about food until their nausea passes.
We are the proverbial children, mentally gouging ourselves on code and logical problems rather than sugar. We work at out peak for a little, and then quickly fall into a slump and find it hard to get back to what we were doing before. It's important not to force ourselves through the slump, continuing to eat food doesn't help when you're feeling like you're about to throw up.
But what do I mean by embracing burnout?
Don't view it as an obstacle or inconvenience, but rather part of the development journey. Instead of spending so much time and energy mentally pushing it away, listen to what your body is telling you, take a break. It's impossible to be 100% productive 100% of the time, so don't fool yourself into thinking that's what you're doing.
Instead of avoiding it for days, weeks or months, letting it compound and fester in the back of your mind, allow it to pass through and take a mental and physical break.
Having more frequent breaks when your body requires it (note: not burning out) will result in the breaks being shorter, and in turn you will find it easier to get back to what you were doing previously. Your month long burnout from a project will turn into multiple shorter breaks, whether it be for a few hours or a day. You'll find yourself returning to projects with greater ease, resulting in fewer abandoned, half completed code bases left to be forgotten for eternity.
Incorporate these breaks into your workflow and don't feel guilty for taking them. Your body isn't an infinite source of energy and motivation, learn to harness it and then rest when the time is right.
Now it's all well and good to say that you're going to be mindful of taking breaks, but what should you do when you find yourself in a rut where you can't find the motivation to do anything.
Self confidence has a massive role to play in finding the energy to continue to create the things that you enjoy. Discovering and taking part in an activity that results in you feeling more positive about your ability will almost always help lead you back to the programming path.
As an example, when working on larger projects I can get a little bogged down and overwhelmed with the amount of tasks that I have ahead of me. As I become more aware of it, I feel like I'm completing less and less each day, until it feels like I'm going backwards. If I'm learning to utilise a new technology or language, I reach a point where I feel like it's hopeless and that it's way over my head. I long for the rush of starting a new project, wiping the slate clean and pursuing a new idea.
But discarding all your work up until that point isn't the solution. The best thing that I've found for myself is to do a super short term project, with a time limit of less than a day. Plan and organise what you want to get done (see point 3 for more info) ensuring that you don't take on more than you can reasonably complete. Accept the fact that you likely won't be winning any UI/UX awards or implement 100% of the functionality, and then get coding! Use the opportunity to be with a fresh code base and see how much you can get done.
It's important to note, don't go over the time limit! This isn't supposed to be a whole new project that you will work on for the next few months, it is just a once off for a bit of fun! When you find yourself starting to run short of time, tidy what you're doing and wrap it up. Try prioritising the core functionality from the start, so that falling short of your goal doesn't impact the outcome too much.
This is some what counter intuitive to what was said previously. If you don't feel like programming, then don't do. Take a break until you feel better. Alternatively, if you find yourself becoming burnt out in a project but still have the urge to program, this may be something to help get back on your feet! Pick a day where you know you won't have anything else you need to get done, choose an idea the day before and when you wake up in the morning, begin planning out what you'll get done throughout the day.
Worse comes to worse, you'll end up with a minimal (but hopefully completed) project that you can add to your portfolio or even pick up in the future.
I also like to use this opportunity to experiment with technologies that I have been trying to implement in my projects, without the burden and restriction imposed by an existing code base. I can experiment and trial different things without having to pollute and work around a giant code base, and I can approach my original project again with new found confidence and understanding with the technologies that I am implementing.
Regardless of how you get it, self confidence cannot be underrated when you are trying to break out of a slump and get back to enjoyable and productive work. At the end of this post I've added a few more tips that I find to give a little boost when I need it.
With most aspects of life, organisation does little to no harm in exchange for greatly increasing your work ethic, mindset and the quality of your project. This isn't post isn't titled Organisation 101, so I don't intend to go into too much detail about specific methods to keep organised. Each person will find their own way to keep organised, and it's up to you to find that for yourself. There's no perfect organisation method which is perfect for every situation and every person, you've got to hunt around a little and find something that you can make work for yourself.
Despite this, every organisation method will have the same basic advantages when dealing with burnout.
In my own personal experience, I have found that I am much more likely to see a project through to completion when I plan things out before I start. As tempting as it is just to dive right into coding, it always ends with me scratching my head 100s of lines in because I didn't account for something that is integral in my project.
If you take the time to think about what you want to create, what features it should have, how and in what order you should implement them, it will make things much easier in the long run. Having a checklist of features which you slowly work your way down and crossing things off when you complete them is a great way to prove to yourself that there is progress, even if the changes aren't apparent at first.
I like using Notion to keep everything organised, which is like Trello, but with more features and substance built around the boards. There are many different layouts that can be used, but being able to have everything laid out in front of you is a great way to see what's coming, and what you've done. It also makes things so much easier when returning to the project, whether it's the next day or longer. It takes all the guessing and backtracking out of the equation, so you can spend less time working out where you left off and instead jump straight into it.
I've only just touched the surface of the advantages of keeping organised in a project, there is so much more that can be explored that can be used to increase the quality and quantity of your code, but again, that's not the point of this post. My point is that organisation removes a lot of the guesswork and assumptions, which manifests into anxiety and pressure, inhibiting individuals not only within their code, but also in their daily lives, leading to burnout. Taking the time to get organised at the beginning of the project makes things so much easier when you're deep in a project, and you'll find yourself developing in a much more sustainable and healthy manner.
- Make an effort to finish things! Whether you complete it to where you originally intended it to be completed, or you can make a compromise by reducing functionality or complexity. Either way, make an effort to see it out, so you can add it to the list of completed projects. Whether you see it as a beta, or awaiting user feedback or the final product, make sure you experience the sense of relief and euphoria that is associated with completing a project, it's addicting and will spur you to keep on going when the next thing becomes difficult.
- Show your work to people! Be it an unwilling sibling, partner, friend, uncle, dog, bartender, it doesn't matter. Share it with someone, allow yourself to be complimented on your work and for all the time you put into it. Feeling like your work is appreciated, even if they don't use it, really boosts your morale and gives you reason to continue doing what you do!
- Don't fool yourself into thinking that doing programming related tasks is relaxing. I used to be really bad at this. If you're mentally exhausted, don't go and watch your favourite programming channel on YouTube. All you're going to do is stress yourself out more, because you'll find it hard to grasp concepts that you otherwise would understand with no problem if you were rested. If you're going to rest and relax, do it properly. Watch a Netflix, play a game, fly a kite. Take a break!
And that's pretty much it! Thank you if you've made it all the way through, I know that it's been a long read, but it's something that I really wish I had of came to terms with much earlier in my development career.
This is my first post, so feel free to leave any feedback and I'd be more than happy if you feel like reaching out for a chat!