Stoicism is based on four principles: wisdom, courage, temperance and justice. Although the ideas of Diogenes, Epictetus, Marcus Aurelius or Seneca are more than 2000 years old, their teachings not only do not go out of fashion but have nowadays gained an unexpected boom, as shown by the YouTube channel Daily Stoic which has 1.6 million subscribers.

Marcus Aurelius and Seneca lived in a world very different from ours but, despite more than 20 centuries of technological development, human beings continue to have the same yearnings and doubts. The stoic philosophy can not only help us to lead a fuller life but (who would have thought!) to improve performance in the technological projects we are working on.

Stoic ideas are simple and practical, they can be summarized in that only by practicing virtue (ataraxia) is true happiness attained. Marcus Aurelius explained it as follows: “Don’t waste any more time discussing what a good man should be. Be one.”

The Stoics introduced the idea of eudaimonia (happiness) which is not attained by external means: pleasures, riches, absence of pain and so on. Rather, true happiness depends on our thoughts and actions. Wisdom, courage, justice and temperance are the pillars of a virtuous and therefore happy life.

A philosophy cannot be summarized in a few brief pills encapsulating the ideas of some of history’s greatest thinkers. Having said this, we could point out three basic concepts on which Stoicism is based:

  • You won’t be here long (you’re mortal).
  • External events are beyond your control.
  • Challenges, more than an obstacle, are a path.


Stoicism and software


Tradition reminds us that the emperor Marcus Aurelius, when he received a mass bath in Rome after having won a battle, in the chariot, in addition to the emperor, there was a slave who whispered to him: memento mori (remember that you are mortal). In our work, this idea can help us to be able to separate the wheat from the chaff. We do our best to ensure that the project runs as efficiently as possible, while at the same time giving problems and difficulties the attention they deserve, no more, no less.

Epictetus alerted us that what is important is not what happens to us, but how we react to it. Freedom is the only worthy goal in life. It is conquered by dispensing with things that are beyond our control. Regretting aspects that are beyond our control, such as lack of time or resources to complete a project, will not bring us anything. The Stoics went further and spoke of the concept of amor fati (love your destiny), which in simple terms could be summed up in the well-known phrase we cannot change the cards we are dealt, just how we play the hand.




The Stoics learned to accept one of the realities of life: change. This attitude is also beneficial for software development teams, where change is a constant. Change means necessity and work, and allows us to improve and add value, but it also involves significant challenges, problems and a need to break down resistance on an ongoing basis.

Technology is constantly advancing, and requires an iterative approach and continuous learning. The key is to focus on what we can change, and accept what we have no influence over. The objective is to design a flexible, scalable and easy to maintain software, the result of continuous improvement and learning. If the Stoics thought that the universe changes constantly, similarly a quality software has the capacity to evolve to adapt to new circumstances.

What we call software maintainability is nothing more than making stoic systems that can function correctly despite unforeseen circumstances, unplanned changes and, in short, adapting to the uncontrollable rules of nature.


Stoicism and software


On the other hand, the stoic idea of imperfection transferred to software architecture means accepting the good even if it is not perfect. The system meets current needs and, most importantly, improves over time. Innovation is often at odds with perfection.




Colleagues are often the first to judge our work. Marcus Aurelius claimed that if someone proves me wrong, I will change my path instantly. It will depend on our attitude to interpret the comments we receive about our work in a positive way. We are all fallible, criticism should not be taken to heart or lightly. The classics remind us that virtue lies in the middle.

Rather than confrontation, collaboration is the path to success. Healthy rivalry within any team should not jeopardize the common goal: to develop a good product. On the other hand, when judging a colleague’s work, we must bear in mind that what we say could influence his or her behavior and way of working in the future.