George Washington used a stoic play to motivate his soldiers during the harsh winter at Valley Forge.
Thomas Jefferson had the writings of Seneca, a famous stoic writer, on his night stand when he passed away.
Teddy Roosevelt chose two books on stoicism, out of eight total, to bring with him on the exploration of The River of Doubt which nearly took his life.
Since its creation in Ancient Greece, Stoicism has been read and practiced by some of the world’s most accomplished people. Stoicism is a school of philosophy that doesn’t concern itself with complicated theories about the world. It’s a practical philosophy that teaches basic human ethics and simple truths of the world and human behavior.
The teachings of Stoicism can be useful to the world of software development. Understanding the teachings of stoicism can help us be happier at work and write better code. There are two important concepts from stoicism that can make us better software developers. They are thinking negatively and controlling our perceptions.
“We should project our thoughts ahead of us at every turn and have in mind every possible eventuality instead of only the usual course of events.” – Seneca.
In the world of software development, things can go wrong in a instant. A production server can go down or a bug could cause a website to not function. Some of these events are bad luck, but some are preventable. Stoicism has a practice called Thinking Negatively that can help you prevent or be ready for these problems before they occur.
The mental exercise of Thinking Negatively helps you be ready for the future. Stoics would run through their mind all the bad things that could happen for large and small events during their lives. They would imagine all the possible things that could occur at any moment. They would then come up with a plan for those negative events. This would allow them to be less surprised when bad things happened and spend more time focusing on ways to prevent such events from coming into existence.
This concept can easily be applied to software development. It’s important to take a step back and think of all the worst case scenarios before adding a new feature or push some code to the production server. Think hard about everything that could go wrong or how the user could break the app. This will help you put up extra guards against those scenarios and be mentally ready when things eventually don’t go as expected.
Controlling our perceptions
“If you are distressed by anything external, the pain is not due to the thing itself, but to your estimate of it; and this you have the power to revoke at any moment.” – Marcus Aurelius.
The stoics believed in controlling your perceptions of the world. They believed that there are no good or bad events, just our perceptions of these events. We can only control what is right in front of us. We can’t control the future or the past. We can only meet the future with the same logic and willpower that we are using at the present moment. This concept is very useful for software developers on many fronts.
Learning never stops when you are a software developer. There are constantly new frameworks, languages, libraries and best practices coming out every day. This can be overwhelming. If you aren’t careful you can find yourself feeling like you know nothing. However, none of this matters. The only thing that should matter is the task that is right in front of you. Being unfamiliar with the vast amount of information out in the world is neither good or bad. It’s your perceptions of this fact that makes you stressed.
As stated above, things can go terribly wrong in a instant. All of a sudden nothing works and your customers are blowing up your phone. What can you do? The past is unchangeable and the future is not here yet. Your best hope in these situations is to alter your perceptions, accept your new reality, and focus all your attention on the current moment. Focusing on all the what-ifs of the past will not help you at all. It’s not the external event that will cause you pain, it’s how you respond to it.
Stoicism can be applied to many areas of life, including software development. It is a time tested practical philosophy that has helped many people throughout the centuries. If we follow its guidance by practice thinking negatively and controlling our perceptions we will become happier with our jobs and more effective in the workplace.
By Victor Cassone.