Life as a software engineer can be an emotional rollercoaster. Each ticket you complete can destroy your confidence and take you into the lows of imposter syndrome; however, minutes later, you could be the opposite, enjoying a dopamine hit and being on top of the world.

In this post, let’s look at what happens to us as we progress through a single ticket. If tickets are small enough, we could put ourselves through this cycle this multiple times a day.

The lifecycle of a ticket

Each ticket we pick up follows a similar process. There are three stages build, test and review; for this blog, I’m going to use the simplified process below:

  1. Write some code
  2. Test your code
  3. Make sure your code goes through the automated checks
  4. Go through a code review
  5. Have a QA test the code
  6. Go for approval from a Product Owner


Every ticket is different, and you may get through the entire process with everything working the first time. On the other 99% of occasions, something goes wrong. In this example, we find a bug, our QA finds a second bug, and we get stuck writing some automated tests. If we map this onto a diagram compared with how we may feel, we get the image below:

Emotional Journey of a Ticket

While completing this ticket, we experienced highs and lows and quickly flipped between positive and negative emotional states. On top of that, each step could have its own high and low cycle. We software engineers must build immunity to this cycle to protect our confidence and mental well-being. We do that by building up resilience.

5 Tips for building resilience

So how can you build resilience? And how do you stop it from destroying your confidence? It’s not easy, it takes practice and even after ten years as a software engineer, it still catches me out. Here are a few tips that I use to deal with this cycle:

  1. Remember, nothing is ever personal; code review comments, bugs raised by QAs, and failed approvals from product owners. None of this is an attack on you, your skills or your ability; it’s people making sure the product you are working on is the best it can be. They are also great learning opportunities.
  2. Celebrate and enjoy the wins. That feeling when you solve a complicated challenge, there isn’t much that will beat it. So remember each one and remember that the next one is only around the corner.
  3. Take breaks, don’t sit and stare at the code. Leave your desk for 15 minutes, chat with a colleague, and do something unrelated to your issue. When you return, you will have more focus and energy and may have even come up with new ideas.
  4. Know when to ask for help. Software Engineers rarely work alone, so use those around you, as they may have already faced the same problem. My general rule is if I need help and am out of ideas, I reach out to peers within 30 minutes.
  5. Have a way to decompress; once work is over, you need an escape, something you enjoy, enabling you to put the work day to bed. For some, that’s a walk straight after work; for home workers, it’s escaping the house; for me, it’s heading to the cinema to watch a film.


You are not alone in feeling drained at the end of the day. It’s perfectly normal, and some days are better than others. Building resilience will help on many occasions, but if it doesn’t, make sure you have an outlet, and if that’s still not helping, chat with someone on your team, as they will have gone through the same thing at some point in their career.

Thanks for reading,
Thomas Billington