Burnout in Software Development
We often spend our time complaining about how screwed up software development is and how other programmers didn’t know what they were doing and how managers piss us off.
I want to share with you how I think many of us lose hope as software developers and why there is hope out there for you. You might have to be open to some things that most people don’t want to tell you because they just want to go along for the ride of being just as pissed off and frustrated as you are.
I want to help you have a sustainable career in software development where you don’t get burned out, you don’t let other people who don’t understand software development push you around and you can just make sure you have a long and healthy career.
‼ Causes of Burnout
1️⃣ Forced to Cut Corners
We’re asked to do low quality work and rush best practices just to make sure we hit original deadlines and when we get close to that deadline we inevitably realize that it’s gonna take us longer than we thought. If you’re anybody who’s been programming or doing software development whether you’re a designer or UX or any discipline related to software development you know that estimates in software development are highly improbable to hit.
It’s not that people aren’t good at estimating it’s just the reliability of estimates is bad and if you work at a company that doesn’t understand that and you get to a situation where you realize the work is gonna take longer most companies that don’t have a healthy tech culture they’re gonna pressure you to hit that deadline. Then usually what we have to do is a compromise on what we know is right for the code, we have to write low-quality code, hack things, shortcut or maybe skip unit testing, not follow a good set of design patterns just to rush to it and hit that deadline and I think when you’ve done that enough times it’s so frustrating you can completely lose hope in your job.
2️⃣ Cognitive Overload
Our job is already so hard to keep track in our head, different functions, languages, classes, design patterns, the structure of our architecture, code management, best practices and all the moving pieces and dependencies with the business and then we’ll have people who aren’t programmers at our company that ask us to attend endless meetings, use three different time-tracking software, follow all these processes that are on top of this complexity that we’re already dealing with and I think when we’re just overloaded with too much information that we have to understand it’s really easy to lash out and get pissed off at other people and I certainly have many times and I think that can cause us to lose hope.
3️⃣ Low Perception of Value
When other people because our work is somewhat opaque to them they don’t understand how complex the work we do is there’s a low perception of value so it’s a common thing I mean there are memes all over the internet about this where when a user or somebody who’s even a project manager or a product manager or a software company you know looks at let’s say the user interface of an application your company’s building or they look at the API for some machine learning software you’re building they just see the surface and they know there’s code back there but they don’t know how much code is back there they have no idea how complicated it is like you and I know and I think what that tends to do is it creates this perception from the other person that the work that you’re doing behind the scenes isn’t as hard as we know it is.
We do this same thing to non-technical people, we look at them and think to sell the software or to run the company or to manage a project or a product that’s not nearly as hard as my job is and when we have this disconnect where the non-technical people and the people who are technical or programmers when we don’t respect each other because we just look at basically how much we think the work is difficult based on our limited understanding of it.
4️⃣ High-Income Forces Seeking Deeper Goals
This is probably going to be unpopular but you need to hear it as many software developers myself included we make a lot more money than many other professions very early in our career. If you start making a lot of money and all of a sudden many of your financial dreams are fulfilled you get to drive the car that you want, you get to live in the apartment or the house that you want, you know you can get married, you can take trips, you buy all these gadgets, you’re able to buy nice new clothes and guitars and things like that very early. I think as programmers we reach that level in life where we have most of our needs met and so we then realize you know what I can keep making more and more money, I can keep getting promoted and it’s not going to fulfil me and we’re suddenly challenged with why am I here what’s my purpose what am I supposed to be offering in the world? is all I’m here for just to write code and make money and purchase things?
I think when we fall into consumerism and when we make a lot of money and just use that acquisition of money and acquisition of material things to drive us, we can feel empty inside quickly. So if you’re losing hope because you’re making a lot of money know that it’s great to make a lot of money but there may be more to your career into your life than just money and that’s something that’s gonna be challenging for you as a software developer.
5️⃣ Learned Helplessness
You’ve might have heard of this concept called learned helplessness. There was an experiment done years ago where there was a ladder in a cage and a whole bunch of monkeys in it and a banana at the top of the ladder. Every time the monkeys rather climbed up the ladder and they tried to get to the banana they would spray the monkey with water. So the monkeys learned when they tried to go up the ladder and try to get that banana, they were gonna get sprayed. Eventually, when somebody went to start to climb the ladder to get the banana the other monkeys would grab that monkey and pull it down and not allow it to even try to get the banana because they had learned they were helpless and don’t have a chance of getting the banana as they we’re just gonna get sprayed hard with water and knocked off the ladder.
The interesting thing about this experiment is you could then take one of the monkeys that don’t bother climbing the ladder anymore out of the cage and put a brand new monkey in there and he would very quickly learn without even trying to climb the ladder to pull other monkeys down because he saw other monkeys do it and I think this is what happens to us as software developers. I see sometimes fresh grads right out of college they come into a software company and they start to pick up the attitude and the negative sort of like misery loves company attitude and they just behave the same way as other veterans in software development behave because that’s just what they see. When we get around a group of people that are miserable and they’re all self-identifying as programmers we feel like to fit in, it’s easier for us to just act the same way.
✅ What to do About it?
1️⃣ Say NO with Grace
First thing I think that’s important is to learn to push back against people who give you unreasonable requests. You will always have someone whether it’s a manager or a tech lead or anybody that’s going to ask you to do some development that you know is gonna cause a problem. The common excuse they give you is I don’t care you need to get it done by this date no matter what even if that means you need to change the code quality. You cannot allow people to do that, you need to have the will and the courage to say look I know this is gonna create a problem for the product and gonna be a disaster if you want to continue to do this I’m not going to be the one to help you do that. If you get threatened with being fired you can just go okay well let me think about it and then go to HR and resign if you have to. I think many of us we let ourselves be bullied into situations and let the code or the quality of our deliverables be compromised because we don’t dare to just stand up to people that don’t know what the hell they’re talking about and we are worried we’re gonna lose our job.
You know there are so many open programming jobs out there you don’t need to worry about that even if you quit and you have to explain to another employer the situation don’t you think it would be better if you’re in an interview and you can be honest with that company you’re interviewing at. You may say that the company was asking me to compromise the quality of the product in a way that was gonna cause the company to have financial problems and I didn’t agree with it, so I decided to walk away. So, whatever you can do to learn to just stand up for yourself and you don’t have to be a jerk about it but just don’t be pushed into compromising the quality of your work.
2️⃣ Communicate Uncertainty
Everybody is addicted to certainty everybody wants to think they can predict everything that’s why we go out and we get insurance to think well I’ll just pay some money and then if any disaster happens to me, they’ll cover it well. Every time I write code or every time I work, something comes up and I couldn’t predict it and then I get worried like oh my god they’re not gonna think I don’t know what I’m doing because all the sudden now I have something about the work that happened that I couldn’t predict. As I’ve gotten older have gotten much better at just telling people I can’t agree to commit to that yet or I don’t know enough about that to be able to tell you that we’re gonna be able to hit that deadline and if people say things like well you need to come up with a number anyway it doesn’t matter if we don’t have the requirements. Sorry no that’s not how software development works you’re not developing the software I am this is my career and I care about the output of this if you’re asking me to compromise that because you want to have certainty. You want me to agree to something so you can walk away from this meeting and feel good that I’ve committed to you on how long something’s going to take.
You don’t have to be a jerk about it but you need to be firm, you need to let people know you can’t force me to agree to an amount of work in a deadline that I don’t have enough information on and I think when I’ve been able to talk to other people and set this expectation with them in a kind way, in a way to help them understand look I’m telling you this not to be a jerk I’m telling you this because I want you to look good I don’t want you to go commit to your boss and then have to look bad because you told them it was gonna take a certain amount of time and it took way longer.
I think if you can get to a point where you’re able to push back anytime somebody tries to get you to agree to certainty and just be more honest and open with people when you’re like I don’t know how long that’s going to take. I don’t know how complicated that is or you haven’t given me enough requirements. I’m sorry I need more help with that you’re not gonna get pushed into a situation where you work overtime you lose hope and get frustrated.
3️⃣ Ask for Help Earlier
I think as we develop skills in software development, we kind of get a big head we get really smart around a set of frameworks or technologies and we get experienced. It doesn’t matter how long we’ve been doing it you might have experienced this yourself too we hit these brick walls where we realize oh there’s a part of this project that’s more complicated but maybe I’m an architect or I’m a lead or I’m a director or you know some big title at a company and you kind of get this feeling like I’m not supposed to ask for help there’s something wrong with me asking for help. I think that’s just developing software it doesn’t matter what discipline you’re in you need to get comfortable with asking for help because if you don’t, all you’re doing is putting yourself into a dangerous situation where you haven’t let whoever you’re committing that work to know that you’re actually in trouble.
This is hard as I can take it a lot of times to heart like a blow to my ego like you know what if I tell them I need help and they think there’s something wrong with me and they’re not gonna think I’m as smart. That’s not true, you need to if you’re gonna continue to have hope in your projects and not fall into despair over the frustration of it just be able to ask for help without worrying about other people and what they think about you
4️⃣ Develop Empathy
Develop empathy for other people and by this, I just really mean stop looking at other people around you like they have to work the same way you do like they have to talk like you do like they have to care about the same things or think that the same programming patterns that you do. I think when we release people of the obligation to behave exactly like us we respect them we treat them as individuals and they’re gonna treat us the same way.
I’ve been in this situation many times where there’s this feeling where everybody has to act like they’re gonna get the work done at the same speed. They’re gonna use the same coding patterns, they need to write the requirements the same way, they need to track their time the same way. It just causes us to feel like a robot but people aren’t like that we’re much more complicated than a computer. The more you can just let go of that false belief that I’ve had many times in my career that everybody else is the problem if they aren’t the same and recognize that everybody’s different I think it’s gonna help you have hope without having just an unfair set of expectations that’s never gonna get mad for you. You’re just going to continue to get let down all the time if that’s how you expect people to be.
5️⃣ Surround Yourself with Positive Developers
If you want to find software developers or programmers out there who want to post memes making fun of the system or at each other or make fun of other people’s work. You’ve got a multitude of people out there that will be happy to join you along and you can just be another voice that’s part of that but if you want to be happy and you don’t want to lose hope and you want to not spend the rest of your career pissed off about your job and where it’s going you have to refuse that.
You have to care about yourself more than just being accepted by a large group of people. So, if you are in a place where you’re losing hope I encourage you to go try to find more positive people, try to find people that maybe have been through a really hard time in their career and they’ve been frustrated but now they don’t have to be a victim to this negativity, don’t have to be a victim to the fact that everybody else wants to just moan. Surround yourself with people that can build you up and lift you and help you have some hope again.