No bugs & problems; you might be doing your job wrong

Things get better with time.

A piece of software can’t be perfect on day one. Bugs will appear, and solving them will make your code better and stronger over time.

We often see bugs and problems as burdens that we need to fix urgently. Could we embrace bugs to our advantage instead of waiting and fearing them? Stoicism, a practical philosophy founded in Athens in the early third century BC, brings us wisdom.

Amor fati

“Don’t hope that events will turn out the way you want, welcome events in whichever way they happen: this is the path to peace.”
— Epictetus (Discourses and Selected Writings)

Amor fati translates, from Latin, to “love one’s fate”. It embodies a way of seeing what happens to you, either wrong or good, necessary for your development. As if failures happen to us on purpose and are put on our paths by divine forces. Indeed, failures and setbacks will teach us lessons to help us progress. As humble Humans, our task is to embrace them and learn from them.

“And convince yourself that everything is the gift of the gods, that things are good and always will be”
— Marcus Aurelius

Instead of waiting for bugs to happen, as a Stoic developer, we can practice misfortune by, for example, simulating network failures or numerous requests to a service. Actively seeking problems will help us learn new things and keep us interested in our work. I once looked into all the possible user error cases we could have on our Web application and devised a plan to create specific error pages with a great design and a friendly message. This action taught me about design, great user experience, and more paid work. A win situation!

Seeking the good in every situation

“There is only one way to happiness and that is to cease worrying about things which are beyond the power or our will.”
— Epictetus

You can’t control what happens, but you can control your response or behaviour. The Stoics lecture us to concentrate on our responses and not ruminate or fear problems.

“It’s not what happens to you, but how you react to it that matters.”
— Epictetus

What are the opportunities for me to grow and learn? Instead of seeing a challenging project as a burden, we can view it as an opportunity to improve our skills. Our goal is to turn adversity or boredom into an advantage.

When starting a new project or fixing a bug, decide on a theme or stance. Examples?

  • While fixing this bug, I want to learn how to use a debugger properly.

  • While developing this new feature, I will take the habit of writing daily notes about my progress.

  • A tedious task? I will try to learn and use functional programming paradigms.

  • The customer wants a new dull feature. Take the opportunity to bundle some long-lasting refactor you want to do.

Loving our fate (Amor Fati) allows us to become more resilient to adversity and better engineers. Seeing obstacles and failures as training for strengthening our skills will push us to grow and look forward to the next challenge with enthusiasm and purpose.


Bugs and problems are not a by-product of our work. They are our work. They are what makes us grow and learn leadership. We can leverage that by seeking and anticipating bugs. Furthermore, we can try bundling things we would love to learn into something we don’t want to deal with, like a boring request or ticket. We can find purpose in tedious or complex tasks by adjusting our perceptions.

This article is part of a series on the Stoic Developer; you might also like reading the following:

Continue the discussion on Twitter →

Keep in touch

Join the 60+ readers who grow their problem solving skills. Receive an email every 2 weeks packed with tips, and guides on computer science.