3 Stoic Disciplines to be a Better Developer
Gain Balance and Resilience Through Philosophy
“The tool I’ve found, which has proved to be the most reliable safety net for emotional free fall, is actually the same tool that has helped me to make my best business decisions, but that is secondary. And it is … Stoicism.” — Tim Ferriss
Stoicism is a practical philosophy that helps us live more resilient, tranquil, and fulfilling lives. The essence of Stoicism is that we need to face the hard truths of life. These hard truths include, amongst others, how preciously little we actually control and that we’re destined to die. While uncomfortable at first, these ideas provide desperately needed clarity and allow us to prioritize what’s essential. Engineers can leverage the time-tested Stoic disciplines to be more effective in their roles and live on their terms.
1. The Dichotomy of Control — Internals and Externals
“The chief task in life is simply this: to identify and separate matters so that I can say clearly to myself which are externals not under my control, and which have to do with the choices I actually control. Where then do I look for good and evil? Not to uncontrollable externals, but within myself to the choices that are my own…” — Epictetus
At its core, Stoicism revolves around how little in our lives we can control. The truth is that we spend much of our lives unsuccessfully trying to control externals. These externals include other people’s actions, opinions, beliefs, and world events. The reality is that while you can influence externals to an extent, most of life is outside of your control. Instead of investing our limited time and energy into what we can’t control, we can instead optimize for what we can control — our perceptions and actions. Like most tenants of Stoicism, internalizing what we control is uncomfortable at first. Once we’ve grasped this truth, though, we can leverage it to optimize for what we can control.
Engineers still must leverage externals to accomplish their goals. For a developer, these externals could include teammates, managers, and other individuals in your organization. Focus on the quality of your work instead of obsessively worrying whether others will deliver or what people think of you. You can influence these through your actions and character, but you can’t afford to stress yourself out once the fate of your work leaves your hands. Fuming on a Sunday or tossing and turning at night stressed about a deadline won’t change anything. The deadline does not notice how much you loath it. If anything, the additional mental load and toll on your health make you less effective.
Not worrying about externals does not mean you should be entirely apathetic to them. You should always factor how external events will transpire into your designs. Finding the golden mean of this discipline is essential to your effectiveness and peace of mind. Direct that saved energy into improving yourself and achieving excellence in your craft.
2. Amor Fati — Controlling Your Perceptions
“The impediment to action advances action. What stands in the way becomes the way…” — Marcus Aurelius
The Stoics believed that it is not events that upset us but our perceptions of them. The control over our own perceptions is one of the strongest tools that Stoicism offers developers. We can choose how we interpret events. Thus it’s illogical to become disgruntled and anxious about externals when we know it isn’t productive. Instead, we can turn our problems upside down and view them as opportunities to practice excellence and become better developers.
Instead of seeing a challenging project as a burden, we can view it as a fantastic opportunity to improve our engineering skills. We can view the next live site as an opportunity to practice being composed under pressure. These skills might also include engineering excellence, moving fast, or delivering under constraints. These opportunities will make you a better engineer.
When reflecting on our past, we often cite the difficult challenges that we’ve overcome as making us the people we are today. These include our failures and disappointments. With the benefit of hindsight, we often wouldn’t have wished for things to turn out differently. Who’s to say that the obstacle in front of you now won’t join the pantheon of your previous defining experiences?
Loving our fate (Amor Fati) allows us to become more resilient to the adversity that comes with being an engineer. Seeing obstacles and failures as training for becoming better allows us to practice a growth mindset and look forward to the next challenge while finding meaning in our struggles. After all — how will you know what you’re capable of if you haven’t been tested?
3. Memento Mori — Using Mortality To Work Deeply
“He who fears death will never do anything worthy of a man who is alive.” — Seneca
One of life’s hardest truths is the ultimate external — we’re all dying. By embracing reality, we’re able to use our mortality to make the most out of life. The Stoics often meditated on their mortality as a prime example of an external out of our control. Death comes for all of us regardless of how successful we are. Death also isn’t a far-off event but rather something happening to all of us right now. We’re dying every day. We might not live to old age but rather have our lives cut short. By facing and accepting this reality as an external (and not worth overly worrying about), we can prioritize living in the moment and making the most out of life.
Are you putting off that startup idea, difficult conversation, hobby, etc., for another day? Are you procrastinating? If you’re like many developers, your days are likely filled with shallow work and distractions. It becomes challenging to live like this when you realize just how preciously little life you have left.
Contemplating your mortality (Memento Mori) does not mean that you should act nihilistically or rashly. Instead, you can use this fact as a catalyst to begin cutting out the non-essential activities in your life. Being an effective developer requires discerning the signal from noise in our work. Internalizing that you’ll die and never get a moment of your life back makes it much easier to determine what is essential in life and optimize for it. Would you instead allow yourself to be ruled by your inbox or prioritize working intensely on important problems?
It also becomes harder to become overly stressed about externals when you internalize that you and everyone you work with are dying. Don’t waste your time gossiping, complaining, and spending most of your time on what’s not essential. Don’t work on weekends, make time for self-care, and give the people you love the presence they deserve.
Conclusion
Be warned — philosophy is not a productivity hack that will make you a 10x engineer overnight. As with learning to code, developers will need to put in the work to apply these principles daily. Most developers are satisfied to skim productivity YouTube videos and search for a magical note-taking system. Real growth requires uncomfortable introspection where we evaluate our decisions and what’s important. You’ll stumble from time to time and stray from these principles. Hold fast and continue your journey.
Stoicism offers developers a framework to be happier and more effective. You’ll be able to manage stress better and be more resilient to setbacks. Your actions will be less reactive, and you’ll become increasingly adept at prioritizing what’s essential. You’ll be able to focus on depth while others are immersed in the shallow. Even though this philosophy was conceived over 2,000 years before the advent of software engineering, its tenants are a fantastic supplement to tactical advice around solving important problems and building a career.