<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Stoic Coder]]></title><description><![CDATA[Welcome to where Stoic philosophy meets productivity, career growth, and balanced living. ]]></description><link>https://thestoiccoder.michaelclawrence.com</link><image><url>https://substackcdn.com/image/fetch/$s_!yamP!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d31dcfd-84f4-4e2c-943b-54bad701f1de_512x512.png</url><title>The Stoic Coder</title><link>https://thestoiccoder.michaelclawrence.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 15 Apr 2026 15:18:15 GMT</lastBuildDate><atom:link href="https://thestoiccoder.michaelclawrence.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Michael Lawrence]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thestoiccoder@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thestoiccoder@substack.com]]></itunes:email><itunes:name><![CDATA[Michael Lawrence]]></itunes:name></itunes:owner><itunes:author><![CDATA[Michael Lawrence]]></itunes:author><googleplay:owner><![CDATA[thestoiccoder@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thestoiccoder@substack.com]]></googleplay:email><googleplay:author><![CDATA[Michael Lawrence]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stop Letting Fear Disguise Itself As The Smart Choice]]></title><description><![CDATA[Before you stay or leave, run your decision through this &#8212; it'll tell you everything]]></description><link>https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-disguise-itself</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-disguise-itself</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Mon, 13 Apr 2026 11:45:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ihUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ihUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ihUE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!ihUE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!ihUE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!ihUE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ihUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1298951,&quot;alt&quot;:&quot;A Roman philosopher split down the center, one half weathered stone, the other half reflected in a glowing monitor screen, dramatic chiaroscuro lighting,&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/193967284?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A Roman philosopher split down the center, one half weathered stone, the other half reflected in a glowing monitor screen, dramatic chiaroscuro lighting," title="A Roman philosopher split down the center, one half weathered stone, the other half reflected in a glowing monitor screen, dramatic chiaroscuro lighting," srcset="https://substackcdn.com/image/fetch/$s_!ihUE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!ihUE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!ihUE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!ihUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff90c56cf-7960-4ac1-9e2f-b1a5efcfdcb3_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>Every developer hits it eventually. That moment where you&#8217;re staring at your calendar, your codebase, your offer letter. And you genuinely don&#8217;t know which way to go.</p><p>Stay or leave. Startup or enterprise. Double down or walk away.</p><p>Both options feel right <em>and</em> wrong at the same time.</p><p>Several back, I was at a startup. Scrappy, fast, the kind of place where you&#8217;re wearing five hats and shipping things that actually matter. And an opportunity came along to jump ship. More stability. Bigger company. A cleaner title. On paper, it looked like the smart, grown-up move. The <em>safe</em> move.</p><p>So I took it.</p><p>And the comfort I thought I was walking into? It never showed up. The stability wasn&#8217;t stable. The clarity wasn&#8217;t clear. The discomfort found me anyway. It just came wearing a different outfit. I&#8217;d optimized for the wrong thing, and I paid for it.</p><p>That experience cracked something open for me. Because it forced me to ask: if the &#8220;safe&#8221; choice blows up just as badly, what the hell are you actually supposed to use as a compass?</p><p>Turns out, the Stoics had an answer, and it&#8217;s not a pros and cons list.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-disguise-itself?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-disguise-itself?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Problem With How We Make These Decisions</strong></h2><p>Most of us approach career forks like a debugging session. Gather the data. Weigh the variables. Pick the output with the best expected value.</p><p>Salary delta. Growth trajectory. Tech stack quality. Work-life balance score.</p><p>And look, none of that is useless. But it&#8217;s also not enough. Because you can optimize every variable and still end up feeling hollow in the new role by month three. You can turn down the &#8220;risky&#8221; option and still watch your edge dull into nothing over the next two years.</p><p>The Stoics would tell you the spreadsheet is asking the wrong question. The real question isn&#8217;t <em>which path feels safer.</em> it&#8217;s <em>which path makes you better</em>.</p><p>Not better-paid. Not better-titled. Better as a person doing the work you&#8217;re built to do.</p><p>They had a framework for this. Four cardinal virtues: courage, wisdom, justice, and temperance. Not as abstract philosophy, as practical filters for exactly the kind of decision you&#8217;re standing in front of right now.</p><p>Let&#8217;s run your fork through all four.</p><h2><strong>Courage: Is This Fear or Is This Wisdom?</strong></h2><p>Here&#8217;s the first thing you need to be honest about: are you staying because it&#8217;s genuinely the right call, or because you&#8217;re scared to leave?</p><p>These feel different in your chest if you sit with them long enough. Fear has a tightness to it. It whispers. <em>What if you fail? What if the new stack is a disaster? What if you give up the salary and can&#8217;t get it back?</em> Fear is always trying to protect a version of you that doesn&#8217;t exist anymore.</p><p>Courage isn&#8217;t the absence of that voice; it&#8217;s making the call <em>despite</em> it when the call is the right one.</p><p>Courage also means being honest when you&#8217;re chasing excitement for its own sake. Sometimes the bold move is just recklessness wearing ambition&#8217;s clothes. Jumping to a shiny new startup because you&#8217;re bored isn&#8217;t courage. It&#8217;s avoidance with better optics.</p><p>Ask yourself: does this decision require me to grow, or does it just let me escape? Courage grows you. Recklessness just relocates your problems.</p><h2><strong>Wisdom: What Are You Actually Choosing?</strong></h2><p>This is where I got it wrong with my own fork.</p><p>I thought I was choosing stability. What I was actually choosing was the <em>idea</em> of stability. Because I&#8217;d attached a story to the bigger company that had nothing to do with reality. The Stoics call this the trap of <em>preferred indifferents</em>: things like money, title, and comfort that are nice to have but are completely neutral when it comes to your actual character. They can&#8217;t make you better. They can&#8217;t make you worse. They&#8217;re just... things.</p><p>The problem is we treat them like they&#8217;re guarantees. Bigger company = more security. More money = less stress. Better title = more respect. And when reality doesn&#8217;t honor that deal, we&#8217;re blindsided.</p><p>Wisdom means seeing what you&#8217;re actually choosing, not the story you&#8217;ve wrapped around it.</p><p>So ask yourself: in five years, what does this decision look like? Not the salary. Not the title. The version of you that comes out the other side. Is that person sharper or softer? More capable or more comfortable? More themselves or less?</p><p>If you can honestly answer that staying makes you better, stay. If you can honestly answer that leaving makes you better, leave. But make sure you&#8217;re answering the real question. Not the one that makes you feel better right now.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-disguise-itself/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-disguise-itself/comments"><span>Leave a comment</span></a></p><h2><strong>Justice: Who Else Is In This Equation?</strong></h2><p>This one gets skipped a lot. Probably because it&#8217;s uncomfortable.</p><p>Your decision doesn&#8217;t just affect you. It affects your team, your users, your family, the people depending on what you build or lead. And there&#8217;s a version of every career move that&#8217;s just dressed-up selfishness: optimizing purely for yourself while conveniently ignoring the blast radius.</p><p>That doesn&#8217;t mean you owe your employer your entire career. It doesn&#8217;t mean you have to martyr yourself to a role that&#8217;s killing your growth out of some misplaced loyalty. Justice isn&#8217;t self-sacrifice.</p><p>It means being honest about the full picture. If you&#8217;re the only one who knows how the payment processing system actually works and you&#8217;re thinking about walking out mid-sprint with zero handoff, that&#8217;s not bold, that&#8217;s just shitty. If you&#8217;re staying in a role that&#8217;s making you bitter and checked out because you feel guilty leaving, that&#8217;s not noble, it&#8217;s just slow-motion bad for everyone.</p><p>Justice asks: am I being fair? To my team. To my family. To myself. All three. Not just the one that&#8217;s loudest right now.</p><h2><strong>Temperance: Are You Attached or Aligned?</strong></h2><p>Last filter, and arguably the hardest one to apply honestly.</p><p>Temperance is about examining your grip. How tightly are you holding on to what you have &#8212; and why?</p><p>There&#8217;s a difference between staying in a role because you&#8217;re genuinely aligned with the work and the direction, and staying because you can&#8217;t stomach the idea of losing the salary, the title, the status, the daily routine you&#8217;ve built your identity around. One of those is healthy preference. The other is attachment, and the Stoics were pretty clear that attachment is where your judgment goes to die.</p><p>Try this: imagine you leave. The new thing is harder than expected. The stack is a mess. The team is chaotic. You&#8217;re six months in and wondering what you were thinking. Can you handle that? Will you survive it, learn from it, come out the other side with more than you started with?</p><p>If yes &#8212; that&#8217;s the answer you needed. Fear just lost its veto.</p><p>Now flip it. Imagine you stay. Two years pass. You&#8217;re still in the same chair, same problems, same ceiling. What does that feel like? Is that peace or is that resignation?</p><p>Whatever answer comes up first &#8212; trust it. That&#8217;s not anxiety talking; that&#8217;s clarity.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>The Decision Itself</strong></h2><p>Choose the path, then commit completely to <em>walking it well</em>.</p><p>Not to the outcome. You don&#8217;t control the outcome. The startup might fail. The big company might restructure. Your new stack might be a catastrophe in ways nobody saw coming. None of that is yours to control.</p><p>What&#8217;s yours is the quality of the choice and the integrity of how you execute it. Make the decision like it matters, because it does. Then hold your plans loosely, because the world doesn&#8217;t care about your plans.</p><p>And if you&#8217;re still stuck after running all four filters? Ask yourself this:</p><p><em>Which decision requires the better version of me to pull off?</em></p><p>That&#8217;s your answer.</p><p>The fork is uncomfortable by design. It&#8217;s supposed to be. The discomfort is the test. It&#8217;s not about which option is safer. It&#8217;s about whether you live by your values or react to your fears.</p><p>I chose the comfortable-looking path. The comfort never came. But the lesson did.</p><p>Now I want to hear from you:</p><p><strong>Have you ever made the &#8220;safe&#8221; career move and had it blow up anyway? Or are you standing at a fork right now and can&#8217;t figure out which way to go?</strong></p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>First say to yourself what you would be, and then do what you have to do.&#8221; - Epictetus</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Hustle Culture Lied]]></title><description><![CDATA[You Don't Need to Grind Yourself Into Dust to Be a Great Developer]]></description><link>https://thestoiccoder.michaelclawrence.com/p/hustle-culture-lied</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/hustle-culture-lied</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 05 Apr 2026 11:45:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YF1e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YF1e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YF1e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!YF1e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!YF1e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!YF1e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YF1e!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1296910,&quot;alt&quot;:&quot;A Roman philosopher in draped marble-white robes seated calmly at a minimal modern desk,&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/193200150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A Roman philosopher in draped marble-white robes seated calmly at a minimal modern desk," title="A Roman philosopher in draped marble-white robes seated calmly at a minimal modern desk," srcset="https://substackcdn.com/image/fetch/$s_!YF1e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!YF1e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!YF1e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!YF1e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44079da1-f491-4f94-beac-5a042c1a1cbe_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>It&#8217;s 11:47 PM. You&#8217;re not coding. You&#8217;re on LinkedIn, watching someone from your bootcamp cohort announce their Staff Engineer promotion, and something in your chest tightens.</p><p>You tell yourself you&#8217;re just staying informed. But you&#8217;re not. You&#8217;re measuring. And right now, you&#8217;re coming up short.</p><p>I&#8217;ve been there. Doesn&#8217;t matter how many years you&#8217;ve been shipping, the peer promotion gut-punch feels the same at year two as it does at year twenty. Where shipping a feature nobody noticed felt like wasted effort. Where the question wasn&#8217;t &#8220;did I do good work?&#8221; but &#8220;did anyone <em>see</em> me do good work?&#8221;</p><p>That&#8217;s not ambition. That&#8217;s a trap. And the Stoics figured out how to escape it about 2,000 years before hustle culture made it a personality.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/hustle-culture-lied?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/hustle-culture-lied?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Word You&#8217;ve Been Misreading</strong></h2><p>Apatheia. If your brain jumped straight to <em>apathy</em>, you&#8217;re not alone. But you&#8217;re wrong.</p><p>Apatheia doesn&#8217;t mean you stop giving a damn. It doesn&#8217;t mean you coast, phone it in, or stop caring about your craft. It means freedom from <em>destructive</em> passions &#8212; the kind that have you refreshing your GitHub stars at midnight, spiraling when a PR gets torn apart in review, or quietly resenting a teammate&#8217;s promotion.</p><p>The Stoics weren&#8217;t lazy. Marcus Aurelius ran an empire while fighting wars on two fronts and dealing with a plague that killed millions. Seneca was one of the most prolific writers in Roman history. Epictetus built a philosophy school after being a literal slave. These weren&#8217;t people who checked out. They were ferociously committed to their work.</p><p>But here&#8217;s what separated them from the hustle-culture crowd: they didn&#8217;t let outcomes <em>own</em> them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/hustle-culture-lied/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/hustle-culture-lied/comments"><span>Leave a comment</span></a></p><h2><strong>The Flaw in the &#8220;10x Developer&#8221; Myth</strong></h2><p>Hustle culture has a core belief: the more you suffer for your work, the more virtuous you are. Grind harder. Sleep less. Ship faster. If you&#8217;re not burning out, you&#8217;re not trying hard enough.</p><p>The Stoics would have called bullshit on this immediately.</p><p>Frantic energy isn&#8217;t a sign of dedication. It&#8217;s usually a sign of poor judgment. When you&#8217;re chasing validation instead of craft, you make worse decisions. You over-engineer to impress. You under-communicate because slowing down feels like weakness. You build things nobody asked for because the <em>building</em> feeds your ego, not the <em>problem it solves</em>.</p><p>Here&#8217;s the thing about the 10x developer mythology that nobody says out loud: skill is morally neutral. You can be an exceptional engineer and a miserable, destructive human being. You can write the cleanest codebase your team has ever touched and still be the person everyone dreads pairing with.</p><p>The Stoics cared about <em>virtue</em>, not talent. And virtue shows up in how you show up for your teammates, not just your commit history.</p><h2><strong>What Indifference Actually Looks Like (It&#8217;s Not What You Think)</strong></h2><p>Here&#8217;s the distinction that matters: Apatheia is being indifferent to <em>outcomes</em> while being fully committed to <em>effort</em>.</p><p>Write excellent code because it&#8217;s the right thing to do. Not because you need the dopamine hit of a compliment in Slack. Refactor the messy module because future-you and your teammates deserve better. Not because you want credit for it. Help the junior dev debug their auth issue because that&#8217;s what a good engineer does. Not so you can mention it in your performance review.</p><p>In my fintech work, I&#8217;ve shipped payment infrastructure that processed millions in transactions without a single public-facing acknowledgment. No blog post, no conference talk, no LinkedIn announcement. The code worked. Users didn&#8217;t lose money. That&#8217;s the whole point.</p><p>When you detach your self-worth from external validation, something weird happens: <em>the work gets better</em>. Because you&#8217;re not optimizing for appearance. You&#8217;re optimizing for quality.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Marcus Aurelius Had the Same Problem You Do</strong></h2><p>Marcus Aurelius, emperor of Rome and one of the most powerful humans who ever lived, had to <em>remind himself daily</em> not to get caught up in what other people thought of him.</p><p>His journal, which we now call <em>Meditations</em>, is basically a guy talking himself down from the ledge over and over again. Stop caring what they think. Focus on your own work. Do the right thing even when nobody&#8217;s watching.</p><p>If the ruler of an empire needed that daily reminder, you&#8217;re allowed to need it too.</p><p>Other developers&#8217; success has zero bearing on your path. Someone else getting promoted doesn&#8217;t mean you&#8217;re falling behind. Someone shipping a viral side project doesn&#8217;t mean your side project (or your decision not to have one) is wrong. The variables driving their career are different from yours. The variables you can actually <em>control</em> are different from theirs.</p><p>The only scoreboard that matters is whether you&#8217;re growing, doing honest work, and treating the people around you well.</p><h2><strong>Getting Off the Cortisol Treadmill</strong></h2><p>You can still want the senior role. You can still launch the side project. You can still care about growing your skills and getting better. Apatheia isn&#8217;t telling you to stop striving.</p><p>It&#8217;s telling you to stop letting the <em>gap between where you are and where you want to be</em> eat you alive in the meantime.</p><p>The burnout cycle is real, and it doesn&#8217;t make you more dedicated. It makes you less effective. I&#8217;ve watched incredibly talented developers flame out because they treated exhaustion like a badge of honor. They ground themselves into dust chasing a finish line that kept moving, and eventually they stopped caring about code entirely.</p><p>That&#8217;s not the outcome anyone was aiming for.</p><p>Write clean code. Help your teammates. Keep learning. Pursue the roles and opportunities that align with the kind of engineer and person you want to be. And when marketing conditions shift, when someone else gets the promotion, when your PR gets rejected for the third time: let that be information, not an identity crisis.</p><p>The Stoics weren&#8217;t building a philosophy for people who didn&#8217;t care; they were building one for people who cared <em>too much about the wrong things</em>.</p><p>Sounds familiar, right?</p><p><strong>So here&#8217;s what I want to know:</strong></p><p>Where are you on this? Are you genuinely pursuing excellence &#8212; or are you on the cortisol treadmill, grinding because stopping feels like losing? And if you&#8217;ve found a way off it, what actually worked?</p><p>Drop it in the comments. Seriously.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p><em>&#8220;It is not the man who has too little, but the man who craves more, that is poor.&#8221;</em>  - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Your Reaction Is The Bug]]></title><description><![CDATA[Stop Letting Bad Feedback Turn You Into Someone You're Not]]></description><link>https://thestoiccoder.michaelclawrence.com/p/your-reaction-is-the-bug</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/your-reaction-is-the-bug</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 22 Mar 2026 11:45:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DQIm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DQIm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DQIm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!DQIm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!DQIm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!DQIm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DQIm!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1321078,&quot;alt&quot;:&quot;A Roman Stoic philosopher and a modern software developer sitting across from each other at a weathered stone table&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/191705920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A Roman Stoic philosopher and a modern software developer sitting across from each other at a weathered stone table" title="A Roman Stoic philosopher and a modern software developer sitting across from each other at a weathered stone table" srcset="https://substackcdn.com/image/fetch/$s_!DQIm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!DQIm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!DQIm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!DQIm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8050f7c9-12b8-40fc-8945-c7fc35419b2c_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>Between the Slack notification and your angry reply, there is a gap. In that gap lives your entire career trajectory.</p><p>Your PR just got torn apart. Not gently, either. Someone went line by line, questioned your architecture, and did it in a public channel where half the team can see it. Your face goes hot. Your fingers are already moving toward the keyboard. You&#8217;ve got a response locked and loaded, and it starts with &#8220;Well, actually...&#8221;</p><p>Stop. Don&#8217;t send it.</p><p>I&#8217;ve been there. Early in my career, I&#8217;d fire back almost immediately. I was convinced that defending my code was the same thing as defending my competence. Looking back now, I can&#8217;t even remember what half those arguments were about. The thing that felt like a five-alarm crisis on a Tuesday afternoon? Gone from my memory entirely. But the reputation I was building, that part stuck around a lot longer than the debate.</p><p>Here&#8217;s what Epictetus figured out a couple thousand years before Slack existed: events themselves are neutral. It&#8217;s our judgment about them that creates the suffering or the peace. Your PR getting reviewed isn&#8217;t an attack. It&#8217;s a process. The attack is a story your brain invented in about 300 milliseconds flat.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/your-reaction-is-the-bug?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/your-reaction-is-the-bug?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>Your First Reaction Is Almost Always Wrong</strong></h2><p>That defensive surge you feel when someone questions your technical decision in front of the team? That&#8217;s not your professional instincts kicking in. That&#8217;s evolutionary firmware running on code that was written for a very different threat environment. Your nervous system genuinely cannot tell the difference between a critical comment on a pull request and a predator in the bushes. It fires the same way either time.</p><p>The Stoics called this the &#8220;first impression&#8221;, the automatic, unchosen reaction that happens before your brain has had time to actually think. The goal isn&#8217;t to kill that reaction. You can&#8217;t. The goal is to create a gap between the impression and your response, and then actually use that gap.</p><p>Even three seconds is enough to shift from defensive to curious. That sounds insultingly simple, and it is. But simple doesn&#8217;t mean easy. The pause is a trained skill, not a personality trait. And most of us have spent years training the opposite habit.</p><h2><strong>The Story You&#8217;re Telling Yourself</strong></h2><p>When someone pushes back on your technical decision, your brain immediately starts constructing a narrative. It&#8217;s not just processing the feedback; it&#8217;s assigning motive, predicting consequences, and scoring the whole thing against your sense of self-worth. By the time you&#8217;re ready to respond, you&#8217;re not responding to the comment anymore. You&#8217;re responding to the movie your brain made about the comment.</p><p>So before you fire off that reply, ask yourself one question: <em>what else could this mean?</em></p><p>What if they&#8217;re trying to prevent a production bug? What if they caught something you genuinely missed? What if they see the codebase from a different angle? Not a better angle, not a worse one, just different. And that perspective is actually useful to you?</p><p>Maybe you introduced a feature that already exists somewhere else in the codebase and someone&#8217;s pointing it out. That&#8217;s not an insult, that&#8217;s someone doing their job. The difference between receiving that as an attack versus receiving it as information is entirely in your head.</p><p>And entirely in your control.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/your-reaction-is-the-bug/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/your-reaction-is-the-bug/comments"><span>Leave a comment</span></a></p><h2><strong>The Practical Tools</strong></h2><p>The Stoics weren&#8217;t just philosophers. They were incredibly practical. Here are three things that actually work:</p><p><strong>The draft folder rule.</strong> Before you hit send on that &#8220;well actually&#8221; message, save it as a draft and come back in an hour. You&#8217;ll delete 80% of them. The other 20% you&#8217;ll rewrite into something that doesn&#8217;t make you look like an asshole. This works for social media too. Write the response, feel the satisfaction of having written it, then let it sit. Most of the time, it never needs to leave your drafts.</p><p><strong>The three questions.</strong> Before reacting, run the comment through a quick filter: Is my interpretation actually true? Is my response necessary? Is it going to move things forward or just make me feel better for thirty seconds? Most knee-jerk reactions fail at least one of those tests. Usually all three.</p><p><strong>The timeline check.</strong> Will this matter in ten minutes? Ten months? Ten years? I&#8217;ve lost sleep over feedback that I legitimately cannot recall today. That&#8217;s not me being zen about it, that&#8217;s just how it played out. The things that feel like career-ending disasters during a sprint rarely survive contact with next week&#8217;s stand-up.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Emotions Are Data, Not Orders</strong></h2><p>Getting angry about a management decision or a brutal code review tells you something real about your expectations and your values. That&#8217;s useful information. It&#8217;s not a command to act on the anger.</p><p>Stoics feel emotions. They&#8217;re not robots. They just don&#8217;t take orders from them.</p><p>There&#8217;s a time to push back and a time to let it go. Not every technical decision is worth the argument. Sometimes the smarter move is to take the feedback, consider it honestly, and ask whether your approach was actually the right one. Sometimes you&#8217;ll decide it was and you&#8217;ll make that case clearly and calmly. Sometimes you&#8217;ll realize they had a point you missed. Both outcomes are fine. Neither of them requires you to go to war in a Slack thread.</p><h2><strong>The Gap Is the Whole Game</strong></h2><p>Change is the one constant in this field. Priorities shift mid-sprint. Architecture decisions get revisited. Someone&#8217;s going to question your code in a public forum again, probably next week. That&#8217;s not a bug in the system. That&#8217;s the system.</p><p>What separates the developers who grow through that process from the ones who get ground down by it isn&#8217;t talent or experience. It&#8217;s the ability to create that gap. Act between the notification and the reply. Shape your impression into a thoughtful response.</p><p>Your career isn&#8217;t built in the moments when everything goes smoothly. It&#8217;s built in the moments when someone tears your PR apart and you respond like a professional instead of a cornered animal.</p><p>The gap is where that happens.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;It&#8217;s not what happens to you, but how you react to it that matters.&#8221; - Epictetus</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Stop Letting Fear Make Your Career Decisions For You]]></title><description><![CDATA[Navigating Career Choices with Virtue]]></description><link>https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-make-your-career</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-make-your-career</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 15 Mar 2026 11:45:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ev2C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ev2C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ev2C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Ev2C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Ev2C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Ev2C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ev2C!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1708247,&quot;alt&quot;:&quot;A Roman philosopher in weathered marble relief emerging from shadow into light&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/190967569?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A Roman philosopher in weathered marble relief emerging from shadow into light" title="A Roman philosopher in weathered marble relief emerging from shadow into light" srcset="https://substackcdn.com/image/fetch/$s_!Ev2C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Ev2C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Ev2C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Ev2C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbef3414c-688c-4838-902f-8343b43a0ba9_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You own your career. The job is just a rental.</p><p>That distinction sounds simple, but most developers never actually internalize it. Instead, we treat every career decision like it&#8217;s a life sentence: agonizing over spreadsheets, running endless pros-and-cons lists that somehow never resolve, and letting fear and greed drive choices that should be driven by something a hell of a lot more solid.</p><p>The Stoics figured this out a long time ago. The best decisions don&#8217;t come from calculating every possible outcome. They come from asking one question: <em>what does virtue demand of me right now?</em></p><p>I know that sounds abstract. Let me make it concrete.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-make-your-career?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-make-your-career?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Moment the Spreadsheet Fails You</strong></h2><p>A few years back, I was still building Flash applications when the writing was on the wall. Adobe was circling the drain, and every developer I knew was either panicking or pretending nothing was happening. I made a bet on .NET and enterprise. Not because the numbers were perfect, but because it felt like the right long-term play. Was it scary? Absolutely. But staying put felt like a different kind of scary. The slow, comfortable kind that eventually swallows you whole.</p><p>That decision wasn&#8217;t made on a spreadsheet. It was made on instinct that had been sharpened by asking the right questions.</p><p>The Stoics had a framework for this. Four virtues (wisdom, courage, justice, and temperance) that they believed could guide any decision, in any situation. And honestly? They hold up remarkably well when a recruiter is blowing up your LinkedIn with a shiny new offer.</p><h2><strong>Wisdom: Fear vs. Prudence</strong></h2><p>Are you staying because you&#8217;re genuinely building something valuable, or because change terrifies you?</p><p>Those are completely different things, and your brain will lie to you about which one is operating. It&#8217;ll dress up fear as loyalty. It&#8217;ll call avoidance &#8220;being strategic.&#8221; Wisdom is what cuts through that noise.</p><p>Ask yourself: if fear weren&#8217;t a factor at all, what would you do? The answer that surfaces is usually the one you already know. Wisdom isn&#8217;t about eliminating uncertainty, it&#8217;s about making the best call with the information you have, and trusting that you&#8217;ve prepared yourself to handle whatever comes next.</p><p>The unprepared developer panics when layoffs hit. The one who&#8217;s been building their skills, their network, and their reputation? They&#8217;re already thinking about the next move before the severance check clears.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-make-your-career/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-letting-fear-make-your-career/comments"><span>Leave a comment</span></a></p><h2><strong>Courage: Comfortable Isn&#8217;t the Same as Safe</strong></h2><p>Here&#8217;s what courage is <em>not</em>: it&#8217;s not blindly jumping at every shinier opportunity because you&#8217;re bored. Recklessness isn&#8217;t brave. It&#8217;s just <em>impatient</em>.</p><p>Real courage sometimes looks like staying. If you&#8217;re the only senior dev holding a crumbling codebase together and you know the team collapses without you, walking away might be the <em>easy</em> move, not the courageous one. Fixing what&#8217;s broken from the inside, having the hard conversation with leadership, pushing for the changes that actually matter. That can take more guts than handing in your notice.</p><p>But courage also means not letting a stable paycheck become a cage. If money is the <em>only</em> reason you&#8217;re staying, you&#8217;ve already mentally checked out. You&#8217;re just waiting for your body to catch up. External rewards &#8212; salary, title, perks &#8212; can&#8217;t manufacture internal satisfaction. The Stoics were relentless on this point, and they were right.</p><p>Layoffs happen. Pay cuts happen. Companies pivot, get acquired, implode. Nothing is permanent. The courage isn&#8217;t in pretending the floor is solid , it&#8217;s in staying ready to move when it isn&#8217;t.</p><h2><strong>Justice: Don&#8217;t Be a Selfish Jackass on Your Way Out</strong></h2><p>Seneca had a lot to say about using people as stepping stones, and it wasn&#8217;t complimentary.</p><p>If you&#8217;re leaving, how you leave matters. Are you giving your team enough runway to absorb the transition? Are you being honest with the people who trusted you? Burning bridges might feel satisfying for about thirty seconds, but this industry is smaller than you think, and your reputation follows you everywhere.</p><p>Justice in career decisions isn&#8217;t about being a martyr. It&#8217;s not about staying in a toxic situation because you feel guilty leaving. It&#8217;s about making sure that however you move, you move with integrity. Transition with honesty. Don&#8217;t ghost your team. Document what you know. Give your notice with respect, even if the place didn&#8217;t always deserve it.</p><p>What goes around comes around. And I don&#8217;t mean that in some vague karmic sense. I mean it practically: the developer you screw over today might be interviewing you in three years. Act accordingly.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Temperance: Know When Enough Is Enough</strong></h2><p>Not every opportunity that pays more or sounds shinier is actually better. This is the one developers get tripped up by constantly, especially when the market is hot.</p><p>Temperance is the ability to look at a 30% raise and ask: <em>what&#8217;s the actual cost of this?</em> More hours? A worse team? A tech stack you hate? A company culture that&#8217;ll grind you down in six months? Better compensation, a fancier title, a sexier tech stack. Those things are nice to have. They&#8217;re not a decision framework.</p><p>The real questions are: Will you regret working more for making more? Is there an opportunity where you can do something genuinely valuable, even if the money is roughly the same? What changes in your life (your flexibility, your time, your sanity) and is the trade worth it?</p><p>Consider what you actually want your life to look like, not just your bank account. Temperance isn&#8217;t about settling. It&#8217;s about not letting the shiny object override your judgment.</p><h2><strong>Trust the Work You&#8217;ve Already Done</strong></h2><p>The delay isn&#8217;t confusion. It&#8217;s just your emotions catching up to your reasons.</p><p>We all know, deep down, whether something is right. When a decision keeps nagging at you, when something feels off even though the numbers look good. That signal is real. Don&#8217;t ignore it. The Stoics called this the alignment of reason with nature. I call it your gut having done the work your spreadsheet hasn&#8217;t.</p><p>The goal isn&#8217;t to eliminate the uncertainty of career decisions. The goal is to make them from a place of clarity instead of fear. Filter your choices through wisdom, courage, justice, and temperance. This makes the path ahead clearer, rather than letting anxiety and money guide you.</p><p>Your career belongs to you. The job is just where you happen to be standing right now.</p><p>So here&#8217;s what I want to know: when you&#8217;ve faced a major career decision, what actually drove the call? Was it data, or was it something harder to name? Drop it in the comments &#8212; your experience might be exactly what someone else needs to hear right now.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p><em>&#8220;It is not because things are difficult that we do not dare; it is because we do not dare that things are difficult.&#8221;</em> - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[You're Protecting Your Comfort Zone]]></title><description><![CDATA[Stop Hiding Behind Code You Memorized and Start Building Something Real]]></description><link>https://thestoiccoder.michaelclawrence.com/p/youre-protecting-your-comfort-zone</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/youre-protecting-your-comfort-zone</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 08 Mar 2026 11:45:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xvI2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xvI2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xvI2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!xvI2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!xvI2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!xvI2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xvI2!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1304609,&quot;alt&quot;:&quot;A weathered Roman philosopher sitting at a modern developer's desk&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/190226716?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A weathered Roman philosopher sitting at a modern developer's desk" title="A weathered Roman philosopher sitting at a modern developer's desk" srcset="https://substackcdn.com/image/fetch/$s_!xvI2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!xvI2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!xvI2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!xvI2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0163d0-8ddb-4cd4-8fde-ac12e4ee468e_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>It&#8217;s 11pm. Xcode is open. You&#8217;re staring at Swift syntax you&#8217;ve never written in your life, and some voice in the back of your head is telling you to close the laptop and come back when you &#8220;know more.&#8221;</p><p>Instead, you type a prompt.</p><p>That&#8217;s vibe coding. And yeah, traditional developers lose their minds over it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/youre-protecting-your-comfort-zone?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/youre-protecting-your-comfort-zone?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>&#8220;That&#8217;s Not Real Programming&#8221;</strong></h2><p>I get it. I&#8217;ve been writing software for 25 years. I understand the instinct to protect the craft. But let&#8217;s be honest about what&#8217;s really happening when experienced developers dismiss AI-assisted development as &#8220;not real programming&#8221;, they&#8217;re not protecting quality. They&#8217;re protecting identity.</p><p>Stoics would recognize this immediately. Marcus Aurelius didn&#8217;t waste energy fighting things outside his control. He focused on what he could actually influence. AI&#8217;s advancement? Not in your control. Market disruption? Not in your control. Your willingness to learn, adapt, and leverage new tools? That&#8217;s yours. All of it.</p><p>The dichotomy of control isn&#8217;t just a philosophical concept, it&#8217;s a survival skill for developers right now. Clinging to the idea that your value lives in syntax you memorized is like a blacksmith in 1910 insisting that anyone who uses a power tool isn&#8217;t a &#8220;real&#8221; craftsman. Meanwhile, the guy with the power tool is building three times as much.</p><p>Vibe coding (describing what you want and iterating with AI until it exists) isn&#8217;t the end of real software development. It&#8217;s a new tool that reveals something uncomfortable: who&#8217;s been coding for the joy of creation, and who&#8217;s been hiding behind gatekeeping complexity.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/youre-protecting-your-comfort-zone/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/youre-protecting-your-comfort-zone/comments"><span>Leave a comment</span></a></p><h2><strong>My Experiment: Building an iOS App in a Language I Barely Know</strong></h2><p>Here&#8217;s where I put my money where my mouth is.</p><p>I&#8217;ve done iOS development before, mostly in Objective-C. Swift? Not my world. But I had a clear idea for a savings rate dashboard app, something genuinely useful, something I wanted to exist. So instead of waiting until I&#8217;d done six months of Swift tutorials, I started building it. With AI as my co-pilot, breaking down the work into pieces I could actually manage.</p><p>This isn&#8217;t theory. This is me, right now, figuring it out as I go.</p><p>And here&#8217;s what I&#8217;ve learned: the AI doesn&#8217;t care that I&#8217;m rusty on Swift. It handles the boilerplate. It handles syntax I&#8217;d otherwise have to look up a dozen times. What it can&#8217;t do is decide <em>what</em> to build, <em>why</em> it matters, or <em>whether</em> the architecture makes sense for the long haul. That part is still on me. That part will always be on me.</p><p>Not knowing Swift became irrelevant when I could prototype, test assumptions, and ship an MVP in days instead of months. Note: I&#8217;m about a week away from submitting version 1 to the app store.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Aimless Prompt Thrashing Is Not a Strategy</strong></h2><p>Let me be clear about something, because I see this mistake everywhere: you cannot just wing it.</p><p>The idea that you can magically build something by dumping vague prompts into an AI is naive, and it leads to a chaotic mess of half-working code you don&#8217;t understand.</p><p>What actually works is treating AI the way you&#8217;d treat a capable junior developer. You wouldn&#8217;t hand a junior a vague task and disappear. You&#8217;d give them a clear objective, a defined scope, and enough context to succeed. Then you&#8217;d review their work and course-correct.</p><p>Before I type a single prompt on this iOS project, I have a build plan. Clear goals. A tech spec. Tasks broken into pieces small enough that the AI can actually shine on them. That preparation is what separates productive AI-assisted development from burning three hours to produce garbage.</p><p>The AI handles the heavy lifting. I handle the vision and the judgment. That&#8217;s the deal.</p><h2><strong>The Anxiety Tells You Everything</strong></h2><p>If reading about AI replacing developers makes your stomach drop, that anxiety isn&#8217;t about AI. It&#8217;s a signal that you&#8217;ve tied your professional identity to syntax memorization instead of problem-solving ability. And that&#8217;s worth sitting with for a minute.</p><p>Think about what you&#8217;re actually afraid of losing. Is it your ability to solve hard problems? To understand systems, architecture, business logic, user needs? Because AI isn&#8217;t touching any of that. Or is it the ability to write a for-loop faster than a junior dev, or recall the exact method signature without checking docs?</p><p>Because one of those things matters. The other one never really did.</p><p>Software engineering has always been about solving problems, understanding what the business needs and delivering something that works. The language was always just the vehicle. Developers who lose sight of that are the ones who&#8217;ll struggle, not because of AI, but because they were already optimizing for the wrong thing.</p><p>Epictetus had a line that applies here: it&#8217;s not things that disturb us, but our judgments about things. AI isn&#8217;t the threat. The judgment that your value is tied to irreplaceable technical obscurity&#8212;that&#8217;s the threat.</p><h2><strong>The Developers Who Will Thrive</strong></h2><p>They&#8217;re not the ones who know the most languages.</p><p>They&#8217;re the ones who solve valuable problems regardless of the tools available. They adapt. They stay curious. When a new tool shows up, they ask &#8220;how can I use this?&#8221; instead of &#8220;why is this bad?&#8221;</p><p>As a solo developer, I&#8217;m juggling marketing, product development, customer support, and feature building all at once. Leveraging AI to handle some of that load while I stay focused on long-term strategy isn&#8217;t laziness, it&#8217;s leverage. It&#8217;s the same reason senior engineers use frameworks instead of writing everything from scratch. You use the tools that let you build more, faster, without compromising on what actually requires your judgment.</p><p>This savings rate app isn&#8217;t just a side project. It&#8217;s proof that your ideas can become real without waiting for perfect knowledge. It&#8217;s proof that &#8220;I don&#8217;t know Swift well enough&#8221; is a story you&#8217;re telling yourself, not a fact about the world.</p><h2><strong>So Where Does That Leave You?</strong></h2><p>Fighting AI&#8217;s role in development is like resenting gravity. It&#8217;s here. It&#8217;s changing things. The only real question is whether you&#8217;ll adapt with curiosity or resist with fear.</p><p>You can&#8217;t control what AI does to the industry. You can control whether you pick up the tool and figure out how to use it well.</p><p>I&#8217;m still figuring it out. The Swift app isn&#8217;t done (although it is really close). Some days the AI output needs serious rework. Some days it nails exactly what I needed in thirty seconds. That&#8217;s the process. And honestly? I&#8217;m having more fun building than I have in a while, because I&#8217;m back to focusing on the part that actually matters: the problem, not the syntax.</p><p>So here&#8217;s what I want to know from you:</p><p>What&#8217;s the AI fear you&#8217;re still holding onto and what would it take to let it go?</p><p>Drop it in the comments. You might be saying exactly what someone else needs to hear.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;The impediment to action advances action. What stands in the way becomes the way.&#8221; - Marcus Aurelius</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Silent Debt ]]></title><description><![CDATA[Your Brain Is Maxed Out and Your Code Is Paying the Price]]></description><link>https://thestoiccoder.michaelclawrence.com/p/the-silent-debt</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/the-silent-debt</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 01 Mar 2026 12:45:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!o1vq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o1vq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o1vq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!o1vq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!o1vq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!o1vq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o1vq!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1671676,&quot;alt&quot;:&quot;A lone developer slouched at a cluttered desk late at night&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/189498454?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A lone developer slouched at a cluttered desk late at night" title="A lone developer slouched at a cluttered desk late at night" srcset="https://substackcdn.com/image/fetch/$s_!o1vq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!o1vq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!o1vq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!o1vq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7c79fc-380c-40d6-b608-2b049bede2c4_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>We obsess over technical debt. The messy code, the shortcuts, the &#8220;we&#8217;ll fix it later&#8221; promises that quietly compound into a maintenance nightmare. We track it, we argue about it in sprint planning, we write long Confluence pages about it that nobody reads.</p><p>But there&#8217;s another form of debt accumulating in the background, one that doesn&#8217;t show up in code reviews, static analysis tools, or your backlog. One that&#8217;s a hell of a lot more expensive because it doesn&#8217;t just slow down your codebase.</p><p>It slows <em>you</em> down.</p><p>It&#8217;s called cognitive debt, and there&#8217;s a solid chance it&#8217;s already wrecking your output without you even realizing it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/the-silent-debt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/the-silent-debt?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>What Is Cognitive Debt, Exactly?</strong></h2><p>Think of your brain like a bank account. Every context switch, every poorly named variable, every undocumented system you have to reverse-engineer from scratch, every Slack notification you haven&#8217;t dealt with. Those are all withdrawals. And unlike technical debt, you can&#8217;t refactor your way out of this one. You can&#8217;t open a ticket for it. There&#8217;s no sprint dedicated to paying it off.</p><p>Every time you switch between projects, meetings, or mental models, research suggests you pay a swap cost of roughly 15-20 minutes just to get back to full capacity. Let that sink in. Every &#8220;hey, quick question&#8221; Slack message, every context switch between a PR review and the feature you were actually building, that&#8217;s 15-20 minutes of your best thinking, gone.</p><p>And it compounds.</p><h2><strong>The Ways You&#8217;re Racking Up the Bill</strong></h2><p><strong>Bad naming and unclear code</strong> forces you to hold translation layers in your working memory constantly. Instead of just reading the code, you&#8217;re playing mental archaeology.</p><p>&#8220;okay, so x2 is probably the processed transaction amount, and tempFlag is... I think the validation state?&#8221; That overhead adds up across an entire codebase.</p><p><strong>Your notification backlog</strong> is creating background anxiety you&#8217;re probably not even consciously aware of. Those 47 unread GitHub notifications, the Slack threads you&#8217;ve been &#8220;meaning to get to,&#8221; the email you flagged and forgot, they&#8217;re not just sitting there quietly. They&#8217;re fragmenting your attention every time you sit down to do real work.</p><p><strong>Undocumented systems</strong> are the worst offenders. Every system that lives only in someone&#8217;s head, or worse, nobody&#8217;s head, requires you to actively reconstruct it from scratch every single time you touch it. That&#8217;s not a one-time cost. You pay it over and over.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Why It Wrecks Your Estimates</strong></h2><p>Cognitive debt makes you terrible at estimating, and most people have no idea that&#8217;s what&#8217;s happening.</p><p>An example, you&#8217;re deep in a complex feature. You&#8217;ve got the whole system model loaded in your head. The edge cases, the data flow, the three other services it touches. Your manager pops in and asks for an estimate on something completely unrelated.</p><p>What happens?</p><p>You throw out a number just to get back to what you were doing. Of course you do. You can&#8217;t fully context-switch, so you&#8217;re estimating with maybe 40% of your actual capacity applied to the problem. Then two weeks later when you&#8217;re staring that feature in the face, you realize you either sandbagged it or, more painfully, you&#8217;re in over your head on timeline.</p><p>That&#8217;s not a planning failure. That&#8217;s cognitive debt coming due.</p><h2><strong>You Can&#8217;t Code Your Way Out of This One</strong></h2><p>Cognitive debt only clears through genuine rest, reflection, and unstructured time. That&#8217;s it. There&#8217;s no shortcut.</p><p>This is where remote work makes things genuinely harder. When you worked in an office, your commute home was a natural decompression chamber. By the time you walked in your front door, a lot of that mental load had already started to fade. Not fully, but enough.</p><p>Now? The &#8220;office&#8221; is twenty feet from your bedroom. There&#8217;s no physical leaving. The context never fully switches off because the environment never changes. You eat lunch in the same space where you debug production incidents. That&#8217;s a problem.</p><p>One thing that actually helps: treat your workspace like it&#8217;s a different location. Keep work physically contained to a specific room or space. When you close that door, you&#8217;re leaving. Protect that boundary like it&#8217;s a critical system, because it is. It&#8217;s the system that keeps <em>you</em> running.</p><p>Beyond that, it comes down to the basics we all know but consistently underinvest in. Actual breaks. Time that isn&#8217;t secretly &#8220;thinking about work time.&#8221; Sleep. Hobbies that have nothing to do with your job. The stuff that feels indulgent when you&#8217;re behind on a sprint but is actually the only thing that keeps you sustainable long-term.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/the-silent-debt/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/the-silent-debt/comments"><span>Leave a comment</span></a></p><h2><strong>Paying It Down</strong></h2><p>You can&#8217;t eliminate cognitive debt, but you can stop letting it run unchecked.</p><ul><li><p><strong>Name things properly.</strong> Future you (and everyone else on your team) will thank you.</p></li><li><p><strong>Document the weird stuff.</strong> The undocumented edge case that only you know about? Write it down today.</p></li><li><p><strong>Triage your notifications on your schedule</strong>, not theirs. Batch them. Don&#8217;t let them interrupt flow state.</p></li><li><p><strong>Protect context blocks.</strong> Deep work and shallow work shouldn&#8217;t share the same time slot. When you&#8217;re in the zone, be in the zone.</p></li><li><p><strong>Estimate when you&#8217;re fresh.</strong> If someone asks for an estimate while you&#8217;re heads-down in something else, buy yourself time. &#8220;Let me circle back on that in an hour&#8221; is a complete sentence.</p></li></ul><p>And most importantly, take the rest seriously. Not as a reward for finishing your work. As part of the work.</p><p>Your team can track velocity. They can monitor build times and deployment frequency. But nobody&#8217;s tracking how much mental bandwidth you&#8217;re actually operating with on any given Tuesday afternoon.</p><p>That&#8217;s on you to manage.</p><p>You wouldn&#8217;t let technical debt accumulate indefinitely and expect your codebase to stay healthy. Don&#8217;t do it to your brain either.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;Nowhere can man find a quieter or more untroubled retreat than in his own soul.&#8221; &#8212; Marcus Aurelius</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[You're Not Growing, You're Just Staying Busy]]></title><description><![CDATA[Comfort Is Quietly Killing Your Career And You Don't Even Know It]]></description><link>https://thestoiccoder.michaelclawrence.com/p/youre-not-growing-youre-just-staying</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/youre-not-growing-youre-just-staying</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 22 Feb 2026 12:45:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DTS0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DTS0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DTS0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!DTS0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!DTS0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!DTS0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DTS0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1801009,&quot;alt&quot;:&quot;A lone figure in modern clothing stands at the edge of a vast, dimly lit server room that stretches endlessly into darkness, cables and towering racks of blinking machines surrounding them&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/188749193?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A lone figure in modern clothing stands at the edge of a vast, dimly lit server room that stretches endlessly into darkness, cables and towering racks of blinking machines surrounding them" title="A lone figure in modern clothing stands at the edge of a vast, dimly lit server room that stretches endlessly into darkness, cables and towering racks of blinking machines surrounding them" srcset="https://substackcdn.com/image/fetch/$s_!DTS0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!DTS0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!DTS0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!DTS0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35ae9026-44b8-4275-bd38-9d78def8d7c3_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>Comfort is the slowest career killer in software development. It doesn&#8217;t look like failure, that&#8217;s what makes it dangerous. You&#8217;re shipping, you&#8217;re contributing, the work feels manageable. But underneath that feeling of productivity, your actual capabilities are quietly collecting dust. And the gap between what you <em>think</em> you can handle and what you <em>can</em> handle grows a little wider every time you play it safe.</p><p>Most of us spend our careers quietly optimizing for exactly that. We grab the familiar tickets. We stick with the technologies we already know. We find reasons to stay out of the messy legacy system nobody wants to touch. It feels productive. But here&#8217;s what&#8217;s actually happening: you&#8217;re building the <em>illusion</em> of competence while your real capabilities stagnate. And the worst part? You won&#8217;t know it until the moment it matters most.</p><p>Seneca put it plainly: &#8220;It is not that I am brave, but that I know what is not worth fearing.&#8221; Most of the tickets that make us hesitate aren&#8217;t actually dangerous to our careers. They&#8217;re just uncomfortable. There&#8217;s a difference, and learning to tell them apart is where growth actually starts.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/youre-not-growing-youre-just-staying?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/youre-not-growing-youre-just-staying?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>Choosing Hard on Purpose</strong></h2><p>The Stoics had a practice called <em>voluntary hardship</em>, deliberately putting yourself in uncomfortable situations not because you enjoy suffering, but because it reveals things about yourself that comfort never will. This isn&#8217;t masochism. It&#8217;s a diagnostic tool.</p><p>Challenging work shows you your real limits, your actual knowledge gaps, and your emotional triggers more accurately than any self-assessment or performance review ever could. You don&#8217;t discover that you&#8217;re weak in UI work by thinking about it. You discover it by taking the UI ticket, grinding through it, struggling, and coming out the other side with a clear picture of where you actually stand.</p><p>That&#8217;s how you figure out what you&#8217;re made of. Not by reading about it. Not by watching conference talks. By doing the work.</p><p>And the flip side is just as true. You take something that scared you, push through it, and realize you&#8217;re actually pretty good at this. That&#8217;s a discovery you never make from the safe end of the ticket queue.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/youre-not-growing-youre-just-staying/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/youre-not-growing-youre-just-staying/comments"><span>Leave a comment</span></a></p><h2><strong>The Problem with Waiting Until It&#8217;s Forced on You</strong></h2><p>There&#8217;s a big difference between <em>choosing</em> difficulty and having it dropped on you without warning.</p><p>When you voluntarily seek out hard problems, you have agency. You have time to prepare. You&#8217;re building the muscle before the game is on the line. But if you spend years avoiding everything uncomfortable and then suddenly the business is on fire, the system is down, and you&#8217;re the one holding the keyboard, you&#8217;re facing a five-alarm situation with zero reps under your belt.</p><p>That&#8217;s a terrible place to be.</p><p>Stress-testing systems is standard practice in software. You push load on the system <em>before</em> the traffic spike because you need to know where it breaks before it breaks in production. We are no different. Until we&#8217;re actually under pressure, we don&#8217;t know what we&#8217;re capable of. And building that pressure tolerance is something you have to do deliberately, over time, not in a crisis.</p><h2><strong>What the Hard Ticket Actually Costs You (Hint: Less Than You Think)</strong></h2><p>I work on a payment processing system. It&#8217;s not exactly the ticket people are lining up to grab. Complex business rules, serious compliance requirements, zero room for &#8220;oops.&#8221; A lot of people on the team have zero interest in it. But I took it on, and I&#8217;ve been building major functionality in it, functionality that actually matters to the business.</p><p>Here&#8217;s what that cost me: some uncomfortable weeks of ramping up. Some moments of genuine uncertainty. A few late nights tracing through code I didn&#8217;t write.</p><p>Here&#8217;s what it gave me: visibility. Credibility. The kind of hands-on understanding that you simply cannot Google your way to. When you&#8217;re the person willing to go where others won&#8217;t, the organization notices. The contribution becomes more valuable precisely because the barrier to entry is high.</p><p>That&#8217;s the visibility paradox. The problems that scare everyone else are the ones that make your contributions stand out.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Good Stress Is a Thing</strong></h2><p>Most of us are wired to avoid stress wherever possible, and that makes sense on the surface. But there are two kinds of stress, and collapsing them together is a mistake.</p><p>Distress, the kind that grinds you down and burns you out, is worth avoiding. But eustress, the productive pressure of a hard deadline or a challenging problem, is actually where some of your best work happens. Deadlines force hyper-focus. Pressure strips away the noise and forces you to solve the actual problem in front of you rather than the abstract version of it. Some of the cleanest, most elegant solutions I&#8217;ve ever written came out of &#8220;we need this working by end of day&#8221; situations where I had no choice but to think clearly and move fast.</p><p>That kind of pressure builds a tolerance. And once you&#8217;ve shipped something real under real stakes, every future high-pressure situation feels a little more manageable.</p><h2><strong>The Confidence Compounds</strong></h2><p>Here&#8217;s something that doesn&#8217;t get talked about enough: the confidence you build from technical challenges doesn&#8217;t stay in the technical domain. It transfers.</p><p>You white-knuckle your way through a gnarly integration that nobody else wanted to touch, and you ship it. A month later, you&#8217;re in a room negotiating scope with a project manager who&#8217;s pushing back hard. Or you&#8217;re giving a presentation to stakeholders who are skeptical. Or you&#8217;re being asked to lead something for the first time. That reservoir of &#8220;I&#8217;ve done hard things before&#8221; is sitting right there, and it&#8217;s real. You can draw on it.</p><p>Every challenge, whether technical or personal, teaches a simple lesson: it&#8217;s just another problem to solve. You&#8217;ve figured out hard things before. You&#8217;ll figure this out too.</p><h2><strong>Stop Waiting for the Safe Moment</strong></h2><p>The comfort zone doesn&#8217;t protect you. It just makes the eventual collision with difficulty more violent because you&#8217;ve been doing nothing to prepare for it.</p><p>Adversity isn&#8217;t optional. It&#8217;s coming regardless. The only choice you have is whether you meet it with some reps behind you or whether you meet it cold. Avoiding challenges doesn&#8217;t make you comfortable, it makes you brittle. It quietly strips away your tolerance for difficulty until the day when avoidance isn&#8217;t possible and you have nothing left to draw on.</p><p>The developers who build the careers worth having aren&#8217;t the ones who avoided the hard stuff. They&#8217;re the ones who kept picking up the scary ticket, kept pushing into unfamiliar territory, kept stressing their own systems before the system got stressed for them.</p><p>Your resume tells people where you&#8217;ve been. How you handle difficulty tells them where you&#8217;re going.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;The impediment to action advances action. What stands in the way becomes the way.&#8221; - Marcus Aurelius</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Everything You're Learning Right Now Will Be Obsolete]]></title><description><![CDATA[Here's Why That Should Fire You Up]]></description><link>https://thestoiccoder.michaelclawrence.com/p/everything-youre-learning-right-now</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/everything-youre-learning-right-now</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 15 Feb 2026 12:45:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rJ8w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rJ8w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rJ8w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!rJ8w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!rJ8w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!rJ8w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rJ8w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2130281,&quot;alt&quot;:&quot;A Roman marble bust of a Stoic philosopher slowly dissolving into streams of glowing source code and digital particles&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/187966964?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A Roman marble bust of a Stoic philosopher slowly dissolving into streams of glowing source code and digital particles" title="A Roman marble bust of a Stoic philosopher slowly dissolving into streams of glowing source code and digital particles" srcset="https://substackcdn.com/image/fetch/$s_!rJ8w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!rJ8w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!rJ8w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!rJ8w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadabd5a2-164a-4e43-a034-91c20d9be7ac_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>I spent three months building a Flash application back in 2003. I&#8217;m talking late nights, weekends, the whole deal. I was proud of that thing. It was slick, it was responsive, it did exactly what the client needed. I remember showing it off to my team like I&#8217;d just built the Sistine Chapel ceiling out of ActionScript.</p><p>That application doesn&#8217;t exist anymore. Neither does the company that commissioned it. Neither does Flash.</p><p>And you know what? That&#8217;s fine. Better than fine, actually. Because the Stoics figured out something about two thousand years ago that most of us in tech are still struggling to accept: everything ends, and that&#8217;s not a tragedy, it&#8217;s the whole point.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/everything-youre-learning-right-now?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/everything-youre-learning-right-now?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>Memento Mori for Your Codebase</strong></h2><p>The ancient Stoics had this practice called <em>memento mori</em>, &#8220;remember that you will die.&#8221; But it wasn&#8217;t meant to be depressing. Marcus Aurelius used to meditate on his own mortality not to freak himself out, but to sharpen his focus. If your time is limited, you stop wasting it on things that don&#8217;t matter. You show up more fully for the things that do.</p><p>Now apply that to your code.</p><p>Every line you write today will be deleted, rewritten, or abandoned. Every framework you master will eventually fade into irrelevance. Every architectural decision you agonize over will be reversed by someone who thinks they know better. And honestly, they might.</p><p>This isn&#8217;t pessimism. It&#8217;s just the nature of what we do. And once you stop fighting it, something shifts. You stop writing code like you&#8217;re carving it into marble. You start writing it like it&#8217;s meant to solve <em>this</em> problem, for <em>these</em> people, right now. And weirdly enough, that makes you a better developer.</p><p>I can think back across 25 years in this industry, applications I poured myself into, systems I thought were bulletproof. Where are they now? Gone. Rethought. Reimagined. Absorbed into something else entirely. The technology moved on. The business needs changed. And the code I was so precious about? It served its purpose and then it made way for what came next.</p><p>That&#8217;s not failure. That&#8217;s the job.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/everything-youre-learning-right-now/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/everything-youre-learning-right-now/comments"><span>Leave a comment</span></a></p><h2><strong>Stop Building Monuments, Start Solving Problems</strong></h2><p>Here&#8217;s where most of us get tripped up. We get attached. Not just to our code, but to our <em>tools</em>. We wrap our entire identity around being &#8220;a React developer&#8221; or &#8220;a .NET guy&#8221; or whatever framework happens to be hot right now.</p><p>I get it. I&#8217;ve been there. When I made the jump from Flash to .NET development, it felt like starting over from scratch. All that expertise, all those years of learning ActionScript inside and out, suddenly irrelevant. It stung. It felt personal, like the industry was telling me that everything I&#8217;d invested in didn&#8217;t matter.</p><p>But here&#8217;s the thing: it wasn&#8217;t personal. React, Angular, Vue &#8212; they&#8217;ll all get replaced eventually too. Some new hotness will come along and the cycle starts again. If your identity is tied to a specific tool, you&#8217;re setting yourself up to have an existential crisis every few years.</p><p>The Stoics called this <em>apatheia</em>. Not apathy in the way we think of it, but freedom from being jerked around by things outside your control. You don&#8217;t control which frameworks survive. You don&#8217;t control which languages the industry decides to adopt next. What you control is your ability to think clearly, learn quickly, and solve problems regardless of the tools in front of you.</p><p>Data structures. Algorithms. System design. Communication. How to break down a complex problem into manageable pieces. <em>That&#8217;s</em> the stuff that transfers. That&#8217;s what you take with you from job to job, from stack to stack, from one technological era to the next.</p><p>Learning React or .NET or whatever comes next: those are just means to an end. They&#8217;re vehicles, not destinations.</p><h2><strong>The Sh*t That Actually Scares Us</strong></h2><p>The reason impermanence in tech feels so threatening isn&#8217;t because we love our frameworks that much. It&#8217;s because it triggers something deeper, the fear that <em>we</em> might become irrelevant.</p><p>You&#8217;ve felt it. That moment when a junior dev rewrites your &#8220;perfect&#8221; module without even reading your comments. When you&#8217;re in a meeting defending a technology choice and you can see in people&#8217;s eyes that they&#8217;ve already moved on. When you read a job posting and half the required skills didn&#8217;t exist two years ago.</p><p>That anxiety is real. And the knee-jerk reaction is to dig in. To defend the old way. To cling to what you know because at least it&#8217;s familiar. The Stoics had a word for this kind of attachment too. They called it a <em>passion</em>, and not in a good way. It&#8217;s an irrational emotional response that clouds your judgment and keeps you stuck.</p><p>Think about sunk cost for a second. How many times have you watched a team defend an outdated approach not because it was the best solution, but because they&#8217;d already invested so much time in it? &#8220;We can&#8217;t switch now, we&#8217;ve spent six months on this.&#8221; Yeah, and you&#8217;ll spend six more months making it work when the right answer was to let it go three months ago.</p><p>When you accept obsolescence upfront. When you walk into a project knowing that this too shall pass, you don&#8217;t fall into that trap. You make decisions based on what&#8217;s best <em>now</em>, not on what justifies your past choices.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>The AI Elephant in the Room</strong></h2><p>And then there&#8217;s the big one. The thing that&#8217;s accelerating all of this impermanence at a pace none of us were really prepared for.</p><p>AI isn&#8217;t just another tool in the belt. It&#8217;s the impermanence engine. It&#8217;s taking skills that used to be the bread and butter of a developer&#8217;s career and commoditizing them in real time. Boilerplate code? AI handles that. Repetitive tasks? Automated. That thing you spent three years mastering? There&#8217;s a prompt for it now.</p><p>You can either freak out about that or you can see it through the Stoic lens. This is creative destruction happening at scale. The developers who thrive won&#8217;t be the ones who memorize syntax or cling to their ability to write a perfect for-loop. They&#8217;ll be the ones who know how to <em>think</em>. People who grasp the principles behind the code can design solutions. They can also explain complex ideas to others.</p><p>AI doesn&#8217;t replace that. It makes it more valuable.</p><p>So use the tools. Leverage AI for the grunt work. Invest your energy in timeless skills. Focus on critical thinking, problem-solving, system understanding, and the ability to learn new things.</p><h2><strong>The Beginner&#8217;s Advantage</strong></h2><p>When you know that everything becomes obsolete, continuous learning stops feeling like you&#8217;re desperately trying to keep up.</p><p>Instead, it just feels like... being alive.</p><p>Like staying curious. You&#8217;re not behind, you&#8217;re just always at the beginning of something new. And that&#8217;s actually a pretty exciting place to be.</p><p>I&#8217;ve been doing this for 25 years and I&#8217;m still learning. Not because I&#8217;m slow, but because the field demands it. What I knew a decade ago is legacy now. What I&#8217;m learning today will probably be legacy in another five to ten years. And I&#8217;ve made my peace with that.</p><p>You learn early in this career that you&#8217;ll never stop learning. You either embrace that or you burn out fighting it. There&#8217;s no third option.</p><h2><strong>Your Code Dies. Your Growth Doesn&#8217;t.</strong></h2><p>So if nothing lasts, what&#8217;s the point? Why pour yourself into something that&#8217;s just going to be replaced?</p><p>Because it was never about the code lasting forever. It was about what building it <em>did to you</em>. Every problem you solved made you a sharper thinker. Every failed approach taught you something about how systems work. Every late-night debugging session (as much as it sucked in the moment) added something to your toolkit that nobody can take away.</p><p>That Flash application I built in 2003? The code is long gone. But what I learned building it (how to think about user experience, how to optimize performance within constraints, how to communicate with clients who didn&#8217;t speak developer) all of that came with me. It shaped how I approach problems today, twenty years later.</p><p>The Stoics understood that external things are temporary. Your job, your title, your framework of choice: all of it can change tomorrow. But your character, your skills, your ability to adapt and grow. That&#8217;s yours. That&#8217;s what you&#8217;re really building every time you sit down at the keyboard.</p><p>Your code&#8217;s value isn&#8217;t in lasting forever. It&#8217;s in solving today&#8217;s problems and teaching you what you needed to learn to solve tomorrow&#8217;s.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;Loss is nothing else but change, and change is nothing else but Nature&#8217;s delight.&#8221;  - Marcus Aurelius</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[You're Overthinking Every Decision]]></title><description><![CDATA[The Sage Developer Method]]></description><link>https://thestoiccoder.michaelclawrence.com/p/youre-overthinking-every-decision</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/youre-overthinking-every-decision</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 08 Feb 2026 12:45:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wmE0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wmE0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wmE0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!wmE0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!wmE0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!wmE0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wmE0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1936260,&quot;alt&quot;:&quot;A marble bust of a Roman Stoic philosopher positioned on a modern developer's desk, surrounded by multiple glowing monitors displaying code,&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/187230079?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A marble bust of a Roman Stoic philosopher positioned on a modern developer's desk, surrounded by multiple glowing monitors displaying code," title="A marble bust of a Roman Stoic philosopher positioned on a modern developer's desk, surrounded by multiple glowing monitors displaying code," srcset="https://substackcdn.com/image/fetch/$s_!wmE0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!wmE0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!wmE0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!wmE0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ba687ca-d1cd-4d3c-8854-88e85680a41d_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You&#8217;re in a meeting. Three different approaches to solve the same problem are on the table. The junior dev is pushing for the shiny new framework they just learned. Your tech lead wants to refactor the entire module first. The product manager is tapping their fingers because the deadline was yesterday.</p><p>Everyone&#8217;s looking at you.</p><p>You&#8217;re supposed to be the senior developer here. The one with the answers. But you&#8217;re sitting there thinking, &#8220;I have no clue which option is right.&#8221; Analysis paralysis sets in. You&#8217;re afraid of picking wrong and looking incompetent. You&#8217;re exhausted from always having to make these calls. And somewhere in the back of your mind, that imposter syndrome voice is asking, &#8220;Who do you think you are to be making this decision?&#8221;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/youre-overthinking-every-decision?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/youre-overthinking-every-decision?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Sage: A Thought Experiment That Actually Helps</strong></h2><p>Here&#8217;s where ancient philosophy gets surprisingly practical. The Stoics had this thought experiment called the sage: a hypothetical person of perfect wisdom, courage, justice, and self-discipline. They knew damn well no one would ever achieve it. That wasn&#8217;t the point.</p><p>The sage exists as a north star. A reference point to orient yourself when you&#8217;re lost in the weeds of technical decisions, team dynamics, and the daily chaos of software development.</p><p>So instead of freezing up in that meeting, you ask yourself: What would a perfectly virtuous developer do with this codebase? How would they handle this toxic team dynamic? What choice would they make about this technical debt?</p><p>The sage isn&#8217;t about judging yourself for falling short. It&#8217;s a decision-making tool. When you&#8217;re stuck between options and your brain is screaming at you, the sage cuts through the noise. The question isn&#8217;t &#8220;Can I be perfect?&#8221; It&#8217;s &#8220;Am I moving in the right direction?&#8221;</p><p>You&#8217;ll never become the sage developer. But every decision that moves you closer to that ideal makes you better. Let&#8217;s break down what that actually looks like.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/youre-overthinking-every-decision/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/youre-overthinking-every-decision/comments"><span>Leave a comment</span></a></p><h2><strong>Perfect Wisdom: Long-Term Over Short-Term (Even When It Hurts)</strong></h2><p>Perfect wisdom means making technical choices based on long-term sustainability, not short-term convenience or padding your resume with buzzwords.</p><p>We all know we should think about projects from a value perspective. What&#8217;s the thing we can do to make this better? Not just slapping on a Band-Aid, but considering the actual solution. But when you&#8217;re under deadline pressure and your manager is breathing down your neck, the Band-Aid is so damn tempting.</p><p>I dealt with this recently trying to handle atomic operations in a codebase that had database calls scattered everywhere like confetti. My first instinct was to reach for something complex&#8212;maybe a saga-like pattern or custom rollback logic. It felt clever. It felt like what a &#8220;real&#8221; engineer would do.</p><p>But after spending more time actually looking at what was there and simplifying instead of adding, it became clear we could consolidate these calls and do a minimal refactor to support a proper transactional approach. Less code. Less complexity. Better solution.</p><p>The sage developer would have seen that immediately. I took the scenic route through my own ego first.</p><p>Here&#8217;s the thing: sometimes wisdom looks boring. It&#8217;s choosing the unsexy solution that works over the impressive one that might. It&#8217;s writing documentation instead of moving to the next feature. It&#8217;s admitting &#8220;I don&#8217;t know&#8221; instead of bullshitting your way through a design review.</p><p>What would the sage do? Probably the thing you know you should do but don&#8217;t want to because it&#8217;s harder right now.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Perfect Courage: Saying the Hard Thing Out Loud</strong></h2><p>Courage in development isn&#8217;t about heroic all-nighters or single-handedly saving production. That&#8217;s actually often ego disguised as dedication.</p><p>Real courage is pushing back on unrealistic deadlines. It&#8217;s admitting in standup that you messed up and introduced that bug. It&#8217;s asking the &#8220;dumb&#8221; question in the architecture meeting because you genuinely don&#8217;t understand why we&#8217;re going down this path. It&#8217;s calling out a senior dev&#8217;s bad decision when everyone else is nodding along.</p><p>You know that moment when you&#8217;re in code review and you see a glaring issue, but it&#8217;s from someone more senior than you? Your cursor hovers over the comment box. Your heart rate picks up. You think about just approving it. Not your problem, right?</p><p>The sage developer leaves the comment. They do it respectfully, but they do it.</p><p>Or when management asks for an estimate and you know the real answer will piss them off. You can give them what they want to hear, or you can give them the truth. The sage tells the truth, even when it&#8217;s uncomfortable.</p><p>This is where courage and wisdom intersect. The wise choice requires the courage to actually make it, especially when it&#8217;s going to make you unpopular.</p><h2><strong>Perfect Justice: Fairness When No One&#8217;s Watching</strong></h2><p>Justice is about how you treat other developers, especially when there&#8217;s no external benefit to you.</p><p>It&#8217;s conducting fair code reviews regardless of seniority. That junior dev&#8217;s code gets the same thoughtful feedback as the principal engineer&#8217;s. No rubber-stamping because someone has &#8220;senior&#8221; in their title. No nitpicking because someone&#8217;s new.</p><p>It&#8217;s mentoring generously. Not just when your manager is watching or when it helps your promotion packet. When that confused developer asks you a question at 4:45 PM on Friday and you actually want to leave, you still take the time to help.</p><p>It&#8217;s giving credit where it&#8217;s due. When your junior teammate found the solution to that gnarly bug, you don&#8217;t present it as &#8220;we figured it out.&#8221; You say their name. In the email to stakeholders. In the retrospective. You make sure everyone knows.</p><p>Justice is also about not throwing people under the bus. When production breaks, there&#8217;s always pressure to find the guilty party. The sage developer focuses on fixing the system that allowed the mistake, not punishing the person who made it.</p><p>This one&#8217;s hard because it often costs you something. Your time. Your credit. Your chance to look good by making someone else look bad.</p><p>The sage pays that cost anyway.</p><h2><strong>Perfect Temperance: Knowing When Enough Is Enough</strong></h2><p>Temperance is about maintaining a sustainable pace over hero sprints. It&#8217;s choosing appropriate complexity over over-engineering. It&#8217;s knowing when to stop optimizing.</p><p>You know that project where you spent two weeks building an incredibly flexible, abstracted solution for a problem that had one use case? Yeah. The sage wouldn&#8217;t have done that.</p><p>There&#8217;s this trap we fall into where we build for imaginary future requirements. &#8220;Well, what if someday we need to support seventeen different authentication providers?&#8221; What if you just solve the actual problem in front of you first?</p><p>Temperance means recognizing that simplicity beats cleverness. Sometimes you need to carefully consider edge cases. Sometimes you can&#8217;t predict an edge case until it happens. You build for what you know it needs to do right now, rely on best practices, and deliver the best you can.</p><p>It also means knowing when you&#8217;re done. When the code works, the tests pass, and it&#8217;s readable&#8212;stop. That refactor you&#8217;re thinking about can wait. That micro-optimization that might save 2ms? Probably not worth it. Ship it and move on.</p><p>The sage developer doesn&#8217;t confuse perfectionism with quality. They know the difference between good enough and gold-plating.</p><h2><strong>The Gap Is the Point</strong></h2><p>Here&#8217;s what makes the sage useful: you&#8217;ll never close the gap. You&#8217;ll never be perfectly wise, courageous, just, and temperate. There will always be times when you take the easy path, keep your mouth shut when you should speak up, take credit you shouldn&#8217;t, or over-engineer because it&#8217;s fun.</p><p>And that&#8217;s fine. That&#8217;s actually the whole point.</p><p>The gap between you and the ideal isn&#8217;t cause for shame. It&#8217;s a measurement tool showing where growth is needed. When you catch yourself about to make a decision based on ego instead of value, and you course-correct, that&#8217;s growth. Small movements toward the ideal compound over time.</p><p>I still choose convenience over sustainability sometimes. I still chicken out of hard conversations. I still optimize things that don&#8217;t need optimizing because I&#8217;m avoiding the actual hard problem. But I catch myself doing it more often now. The sage is that voice asking, &#8220;Is this really what you want to do here?&#8221;</p><h2><strong>The Reality Check</strong></h2><p>Look, we operate in the real world. There are trade-offs. We deal with deadlines and pressure from management. We work with teammates who have different priorities. We&#8217;re trying to find the simplest path from point A to point B while also not building garbage.</p><p>Sometimes we get caught up in overdoing things or using patterns just for the sake of using them. Sometimes we cut corners we shouldn&#8217;t cut. Sometimes the &#8220;right&#8221; answer isn&#8217;t clear, and any choice is going to have downsides.</p><p>The sage developer framework doesn&#8217;t make these tensions disappear. It gives you a lens to evaluate them. When you&#8217;re stuck between equally shitty options, asking &#8220;What would the sage do?&#8221; often clarifies which option is less shitty and why.</p><p>It won&#8217;t always give you the answer. But it&#8217;ll usually get you unstuck.</p><div><hr></div><p>The next time you&#8217;re facing a technical decision and you feel that familiar paralysis creeping in, try asking: What would the sage developer do?</p><p>Not to beat yourself up for falling short. To clarify the right direction.</p><p>The gap between you and the ideal isn&#8217;t a judgment. It&#8217;s a compass. Use it.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;It is not because things are difficult that we do not dare; it is because we do not dare that they are difficult.&#8221; - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Why Your Best Work Will Never Get Recognized]]></title><description><![CDATA[The Pursuit of Excellence in Coding (When Nobody's Watching)]]></description><link>https://thestoiccoder.michaelclawrence.com/p/why-your-best-work-will-never-get</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/why-your-best-work-will-never-get</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 01 Feb 2026 12:45:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Rk6y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rk6y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rk6y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Rk6y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Rk6y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Rk6y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rk6y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbac6e24-3653-4687-97e6-807b503021e3_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1531876,&quot;alt&quot;:&quot;A marble Roman statue of a philosopher sitting at a modern minimalist desk with a laptop, warm desk lamp illuminating the workspace&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/186439037?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A marble Roman statue of a philosopher sitting at a modern minimalist desk with a laptop, warm desk lamp illuminating the workspace" title="A marble Roman statue of a philosopher sitting at a modern minimalist desk with a laptop, warm desk lamp illuminating the workspace" srcset="https://substackcdn.com/image/fetch/$s_!Rk6y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Rk6y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Rk6y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Rk6y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbac6e24-3653-4687-97e6-807b503021e3_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>It&#8217;s 8 PM on a Friday. Everyone else logged off hours ago. You&#8217;re staring at a payment processing module that works fine, no bugs, no complaints, no tickets. You could close the laptop right now and start your weekend.</p><p>But you don&#8217;t.</p><p>Instead, you&#8217;re refactoring error handling that&#8217;s been bugging you all week. You&#8217;re cleaning up variable names. You&#8217;re adding defensive checks for edge cases that&#8217;ll probably never happen. And here&#8217;s the kicker: there&#8217;s a pretty good chance no one will ever notice this work. Not your manager. Not your teammates. Hell, this entire module might get replaced in the next architectural pivot.</p><p>So why do we do this to ourselves?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/why-your-best-work-will-never-get?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/why-your-best-work-will-never-get?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Recognition That Never Comes</strong></h2><p>Let&#8217;s be real about how this usually plays out. You spend three days building a comprehensive logging system for transaction reconciliation. You document every edge case. You make the error messages actually helpful for whoever gets paged at 2 AM. You write it like someone&#8217;s going to read it, because someone will, eventually.</p><p>Three months later, that logging catches a payment mismatch that would&#8217;ve taken weeks to track down manually. Your manager mentions it in passing: &#8220;Good job finding that bug quickly.&#8221; Nobody asks how you found it so fast. Nobody notices the logging infrastructure that made it possible. They just see that you solved a problem.</p><p>Meanwhile, the developer who ships fast and messy just got promoted. Their code breaks constantly, but they&#8217;re &#8220;high velocity.&#8221; They&#8217;re &#8220;getting shit done.&#8221; And you&#8217;re sitting there wondering if you&#8217;re the only one who actually gives a damn about code quality.</p><p>This is where most of us hit that wall. That moment where we think, &#8220;Why am I even trying?&#8221;</p><h2><strong>The Trap of External Validation</strong></h2><p>Here&#8217;s the thing that took me way too long to figure out: if you&#8217;re writing good code for recognition, you&#8217;re playing a game you can&#8217;t win.</p><p>External validation&#8212;promotions, praise, those little dopamine hits from code review approvals&#8212;they&#8217;re all outside your control. You can write the most elegant solution possible and still get passed over for a promotion. You can refactor a critical system and have it go completely unnoticed. You can do everything right and still have clients be unhappy, projects go over budget, or your carefully crafted code get deleted in the next rewrite.</p><p>The Stoics figured this shit out two thousand years ago. They called it the dichotomy of control: you don&#8217;t control outcomes, you only control your effort and approach. Marcus Aurelius was literally running the Roman Empire, dealing with wars, plagues, and political backstabbing. If anyone had reasons to expect external validation for good work, it was him. But he kept coming back to this same idea: the value is in doing the work with integrity, not in who notices.</p><p>And I&#8217;m not telling you this as some philosophical thought experiment. I&#8217;m telling you this because it&#8217;s the only thing that&#8217;s kept me from burning out over 25 years in this industry.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/why-your-best-work-will-never-get/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/why-your-best-work-will-never-get/comments"><span>Leave a comment</span></a></p><h2><strong>What You&#8217;re Actually Building</strong></h2><p>When you write clean code that no one&#8217;s watching, when you add those defensive checks, when you document the &#8220;why&#8221; and not just the &#8220;what&#8221;, you&#8217;re not building a feature. You&#8217;re building yourself.</p><p>Every shortcut you take, every &#8220;I&#8217;ll fix it later&#8221; that you don&#8217;t fix, every time you ship code you know is questionable, that&#8217;s not just technical debt. That&#8217;s erosion of your own standards. You&#8217;re training yourself to accept mediocrity. You&#8217;re teaching your brain that quality is optional, that it only matters when someone&#8217;s looking.</p><p>And here&#8217;s what that leads to: developers who can&#8217;t tell the difference anymore. Who genuinely don&#8217;t see the problem with nested try-catches seven levels deep. Who think &#8220;it works&#8221; is the same as &#8220;it&#8217;s done right.&#8221; Not because they&#8217;re bad developers, but because they&#8217;ve spent years optimizing for speed over quality, and their internal compass is screwed up.</p><p>The opposite is also true. Every time you do the work right, especially when no one&#8217;s watching, you&#8217;re strengthening that internal standard. You&#8217;re building the kind of developer who can look at code and just know it&#8217;s wrong, even if it passes all the tests. You&#8217;re developing instincts that become your competitive advantage.</p><h2><strong>The Work That No One Sees</strong></h2><p>Some of my best work has been completely invisible. I once rebuilt the error handling in a legacy .NET payment system that had been held together with duct tape and prayers for years. Spent two weeks on it. Made sure every exception was caught at the right level, every error message actually helped diagnose the problem, every failure mode was logged with enough context to figure out what went wrong.</p><p>You know how many times that error handling prevented catastrophic failures? I have no frickin idea. That&#8217;s the point. Good defensive code prevents problems that never happen. No one writes you a thank-you email for the database deadlock that didn&#8217;t occur because you properly implemented transaction isolation. There&#8217;s no Slack message celebrating the race condition that never materialized because you understood thread safety.</p><p>But I sleep better knowing that code is out there. And when shit does hit the fan, because it always does eventually, I know I&#8217;ve given whoever has to debug it the best chance of actually understanding what went wrong.</p><h2><strong>Building Intrinsic Motivation</strong></h2><p>How do you maintain standards in an environment that often doesn&#8217;t reward them?</p><p>You have to find satisfaction in the craft itself. Not in some precious, artisanal bullshit way, but in the basic human satisfaction of doing something well. The same satisfaction you&#8217;d get from cooking a good meal even if you&#8217;re eating alone, or fixing something around the house that no one else will notice.</p><p>Here&#8217;s how I think about it: Every line of code I write is a choice about what kind of developer I want to be. Not what kind of developer I want others to think I am, what I actually want to be when no one&#8217;s looking.</p><p>When I&#8217;m tempted to ship something I know is questionable, I ask myself: Is this the standard I want to live with? Not &#8220;will anyone notice?&#8221; Not &#8220;will this come back to bite me?&#8221; Just: Is this acceptable to me?</p><p>Most of the time, that&#8217;s enough. Not always&#8212;sometimes the deadline is real and the tradeoff is necessary. But even then, I&#8217;m making a conscious choice, not taking a shortcut out of laziness or because I think quality doesn&#8217;t matter.</p><p>This is what the Stoics meant by virtue ethics. Virtue wasn&#8217;t about being a good person so others would praise you. It was about having internal standards that didn&#8217;t depend on external validation. It was about being able to look yourself in the mirror and know you&#8217;re living according to your own principles.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>The Long Game</strong></h2><p>The beautiful thing about intrinsic motivation is that it makes you sustainable. You can&#8217;t burn out from lack of recognition when recognition was never the point. You can&#8217;t be demoralized by office politics when you&#8217;re not playing the political game. You can&#8217;t have your motivation destroyed by a bad manager when your motivation doesn&#8217;t depend on their approval.</p><p>This doesn&#8217;t mean you become some zen master who doesn&#8217;t care about anything. You still get frustrated. You still wish people noticed your good work. You still want the promotion and the raise. But those things become bonuses, not the foundation of your motivation.</p><p>And here&#8217;s the thing nobody tells you: over the long term, this approach actually tends to work out better career-wise too. Because the developers who consistently do good work, who have strong internal standards, who can be trusted to do the right thing even when no one&#8217;s watching&#8212;those developers become valuable. Maybe not immediately, maybe not as flashy as the person who ships fast and breaks things, but over years? That reputation matters.</p><p>But even if it doesn&#8217;t work out that way, even if you end up at a company that truly doesn&#8217;t value quality, you&#8217;ve still built something they can&#8217;t take away from you. You&#8217;ve built your own skills, your own standards, your own sense of what good work looks like. That&#8217;s portable. That stays with you.</p><h2><strong>Conclusion</strong></h2><p>This is hard. It&#8217;s hard to care about code quality when you&#8217;re the only one who seems to give a shit. It&#8217;s hard to maintain standards when the team is cutting corners and shipping faster. It&#8217;s hard to write good code when the entire codebase is a dumpster fire and your contribution feels like pissing on a forest fire.</p><p>The code you write shapes who you become as a developer. Every decision, every shortcut, every moment of &#8220;good enough&#8221;, it all adds up. You&#8217;re either building the kind of developer who can take pride in their work, or you&#8217;re building the kind who&#8217;s just collecting paychecks until retirement.</p><p>Your internal standards are the one thing in this entire industry that you actually control. The recognition, the promotions, the perfect codebase, the appreciative users, it&#8217;s all outside your control. But how you approach the work? That&#8217;s yours.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;Make the best use of what is in your power, and take the rest as it happens.&#8221; - Epictetus</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Care Deeply, Expect Nothing: A Developer's Survival Guide]]></title><description><![CDATA[Embrace the Process, Release the Outcome]]></description><link>https://thestoiccoder.michaelclawrence.com/p/care-deeply-expect-nothing-a-developers</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/care-deeply-expect-nothing-a-developers</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 25 Jan 2026 12:45:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kp7c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kp7c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kp7c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!kp7c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!kp7c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!kp7c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kp7c!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1450053,&quot;alt&quot;:&quot; cinematic photograph of a developer's hands typing elegant code on a glowing terminal screen, the code transforming into flowing water or ethereal smoke &quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/185666126?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt=" cinematic photograph of a developer's hands typing elegant code on a glowing terminal screen, the code transforming into flowing water or ethereal smoke " title=" cinematic photograph of a developer's hands typing elegant code on a glowing terminal screen, the code transforming into flowing water or ethereal smoke " srcset="https://substackcdn.com/image/fetch/$s_!kp7c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!kp7c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!kp7c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!kp7c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d60ce1-0ec4-47ae-a754-02d8b4c79f3a_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You just spent three weeks building the perfect abstraction. Clean interfaces, thoughtful error handling, documentation that doesn&#8217;t suck. You&#8217;re proud of this one. Your tech lead reads it for thirty seconds and says, &#8220;Let&#8217;s just add another if statement to the existing function.&#8221;</p><p>Or maybe it&#8217;s the junior developer you spent six months mentoring, the one you stayed late helping debug their first production issue, the one you vouched for in their performance review. They just accepted an offer at another company.</p><p>Or it&#8217;s Friday afternoon, and leadership just killed the project you&#8217;ve been pouring your soul into for the past year. &#8220;Shifting priorities,&#8221; they say. Your code will never see production.</p><p>This hurts.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/care-deeply-expect-nothing-a-developers?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/care-deeply-expect-nothing-a-developers?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Problem with Caring</strong></h2><p>Here&#8217;s the thing about being good at what you do: you care. You care about writing clean code. You care about doing things right. You care about the craft.</p><p>And that caring makes you vulnerable.</p><p>Because in software development, effort and outcome have this frustrating habit of not lining up. You can write brilliant code that gets rejected. You can build something beautiful that gets shut down for business reasons. You can invest in people who leave. You can do everything right and still watch it all fall apart.</p><p>So what do you do?</p><p>The obvious answer is to protect yourself. Stop caring so much. Phone it in. Write the shitty code they&#8217;re asking for and collect your paycheck. Become the cynical developer who responds to every suggestion with &#8220;whatever, it&#8217;s all getting rewritten anyway.&#8221;</p><p>And you know what? I get it. I&#8217;ve been there. There are days when cynicism feels like the only rational response to the chaos.</p><h2><strong>Why Cynicism Doesn&#8217;t Actually Work</strong></h2><p>But here&#8217;s what happens when you go down that road: you lose the thing that made you good in the first place.</p><p>The cynical developer stops learning because &#8220;what&#8217;s the point?&#8221; They stop mentoring because &#8220;people just leave anyway.&#8221; They stop suggesting improvements because &#8220;no one listens.&#8221; They write code that works today and becomes tomorrow&#8217;s technical debt.</p><p>And worst of all? They&#8217;re miserable. Because humans aren&#8217;t wired to spend forty-plus hours a week doing something they don&#8217;t give a shit about. The armor you built to protect yourself becomes a prison.</p><p>The Stoics saw a different way through this. And it&#8217;s not about caring less, it&#8217;s about caring differently.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/care-deeply-expect-nothing-a-developers/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/care-deeply-expect-nothing-a-developers/comments"><span>Leave a comment</span></a></p><h2><strong>The Dichotomy of Control (or: Stop Fighting Battles You Can&#8217;t Win)</strong></h2><p>Marcus Aurelius spent a lot of time thinking about what was in his control versus what wasn&#8217;t. As emperor of Rome, you&#8217;d think everything would be under his control, right? But even emperors can&#8217;t control whether their policies succeed, whether their generals stay loyal, or whether the barbarians decide to invade.</p><p>What he <em>could</em> control was his own thoughts, actions, and effort.</p><p>Same deal in software development.</p><p>You control:</p><ul><li><p>The quality of code you write</p></li><li><p>The thoroughness of your reviews</p></li><li><p>The clarity of your documentation</p></li><li><p>The patience you show when mentoring</p></li><li><p>The integrity you bring to technical decisions</p></li><li><p>Whether you refactor that mess or add to it</p></li></ul><p>You don&#8217;t control:</p><ul><li><p>Whether your PR gets approved</p></li><li><p>Whether your project gets greenlit</p></li><li><p>Whether your carefully considered architecture gets adopted</p></li><li><p>Whether the people you mentor stick around</p></li><li><p>Whether your code survives the next reorg</p></li><li><p>Whether anyone appreciates the extra effort you put in</p></li></ul><p>Your sphere of control ends at the PR button. After you hit submit, you&#8217;ve done your part. Everything after that? Not yours.</p><h2><strong>What the Reserve Clause Actually Means</strong></h2><p>The Stoics had this concept called the &#8220;reserve clause&#8221;, basically adding &#8220;fate permitting&#8221; to your intentions. Not as a cop-out, but as a mental tool.</p><p>So instead of &#8220;I&#8217;m going to get this architecture approved,&#8221; you think &#8220;I&#8217;ll propose this architecture, fate permitting it gets adopted.&#8221;</p><p>This isn&#8217;t lowering your standards or half-assing your proposal. You still do the research, write the compelling RFC, make the case. You give it your best shot. But you&#8217;ve mentally prepared yourself for any outcome.</p><p>Here&#8217;s what this looks like in practice:</p><p><strong>Without the reserve clause:</strong> You spend a week on an RFC for microservices migration. You&#8217;re convinced it&#8217;s the right move. The architecture review meeting rolls around. They reject it. You&#8217;re furious. You take it personally. You spend the next month bitter and checked out.</p><p><strong>With the reserve clause:</strong> Same RFC, same effort, same conviction. But you go in thinking &#8220;I&#8217;ll make the best case I can, and whatever happens happens.&#8221; They reject it. You&#8217;re disappointed, sure. But you move on. Because you did your part. The decision is out of your hands.</p><p>The difference isn&#8217;t in the outcome, it&#8217;s in how much of your peace of mind you&#8217;ve tied to things you can&#8217;t control.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Impermanence as Freedom</strong></h2><p>Everything we build in tech is temporary. That codebase you&#8217;re maintaining? It&#8217;ll be replaced or rewritten. The framework you just learned? It&#8217;ll be legacy in five years. The project you&#8217;re grinding on? Might get cancelled next quarter.</p><p>This used to depress the hell out of me. Why bust my ass if it&#8217;s all going to be thrown away?</p><p>But here&#8217;s the reframe: impermanence is freedom.</p><p>When you know your code is temporary, you can stop clinging to it desperately. You can stop getting defensive in code reviews because someone dared criticize your precious abstraction. You can actually listen to feedback because your identity isn&#8217;t wrapped up in whether this specific implementation survives.</p><p>You&#8217;re a steward, not an owner. The company can cancel your project like the library can recall a book. That&#8217;s not a tragedy, that&#8217;s just how it works.</p><p>What matters is that you do your best work <em>right now</em>, with what you know <em>right now</em>, for the situation you&#8217;re in <em>right now</em>. Not because it&#8217;s going to last forever, but because that&#8217;s what being good at your craft means.</p><h2><strong>Measuring Yourself by Internal Standards</strong></h2><p>When you tie your self-worth to external outcomes, you&#8217;re fucked. Because outcomes in software development are chaotic. Market conditions change. Leadership changes. Priorities change. Budgets change.</p><p>But you can always measure yourself by internal standards:</p><p>Did I think clearly about this problem? Did I act with integrity in that meeting? Did I give honest feedback in the code review? Did I help that struggling teammate instead of just being annoyed? Did I do my best with what I knew at the time?</p><p>These things are always in your control. And they&#8217;re what actually matter.</p><p>I&#8217;ve written code that got deleted six months later, and I&#8217;m still proud of it because I know it was good work. I&#8217;ve mentored people who left, and I don&#8217;t regret a minute of it because I know I showed up for them. I&#8217;ve had projects cancelled, and I can still look back at the craftsmanship I brought.</p><p>The work has value independent of the outcome. The virtue is its own reward.</p><h2><strong>What This Actually Looks Like</strong></h2><p><strong>The rejected PR:</strong> You spent hours refactoring that god-awful service. Made it testable, removed the global state, cleaned up the error handling. Senior dev rejects it: &#8220;Too risky right now, let&#8217;s just fix the bug.&#8221;</p><p>Old you: Seethes with resentment. Stops suggesting improvements. Becomes the &#8220;I told you so&#8221; person when technical debt inevitably bites the team.</p><p>Stoic you: Disappointed, but you know you did good work. You learned from the refactoring. Maybe you salvage parts of it for future PRs. You continue caring about code quality because that&#8217;s who you are, not because you need approval.</p><p><strong>The cancelled project:</strong> Six months of work. Dead. Leadership pivot.</p><p>Old you: Bitter spiral. &#8220;They never finish anything around here.&#8221; Updates resume, checks out mentally.</p><p>Stoic you: Process the disappointment, then ask: &#8220;What did I learn? How did I grow? Was I a good teammate?&#8221; The skills you built aren&#8217;t wasted. The relationships you strengthened remain. The work had value while you were doing it.</p><p><strong>The junior who leaves:</strong> You invested time, energy, patience. They got better. Now they&#8217;re gone.</p><p>Old you: &#8220;Never again. Not worth it.&#8221;</p><p>Stoic you: You helped someone grow. That&#8217;s good in itself. The fact that they left doesn&#8217;t negate the value of the mentorship. Maybe you stay in touch. Maybe they come back someday. Maybe you never hear from them again. You still did the right thing.</p><h2><strong>The Long Game</strong></h2><p>Software development isn&#8217;t about necessarily completing projects. It&#8217;s about doing your best with what you have at the time. Understanding that what you&#8217;re building today will probably be replaced in five years. Hell, maybe next year.</p><p>But at this moment, at this time, you make it as good as you can make it.</p><p>Not because you&#8217;re guaranteed a return on that investment. Not because management will definitely appreciate it. Not because it&#8217;s going to last forever.</p><p>Because excellence in your craft is how you show up in the world. Because integrity matters more than outcomes. Because you can&#8217;t control what happens to your work, but you can control the work itself.</p><p>Love the work, not the outcome. When your identity is in the craftsmanship rather than the results, you become resilient to the inevitable disappointments of software development.</p><p>You&#8217;ll still care deeply. You&#8217;ll still fight for what you believe is right. You&#8217;ll still feel disappointed when things don&#8217;t work out.</p><p>But you won&#8217;t be destroyed by it.</p><p>Because you&#8217;ve learned to put your effort and excellence into the things you control, and hold everything else with an open hand.</p><p>That&#8217;s not resignation. That&#8217;s freedom.</p><h2><strong>Your Turn</strong></h2><p>I&#8217;m curious about your experience with this:</p><p>What&#8217;s a time you did great work that didn&#8217;t get the outcome you hoped for? How did you handle it?</p><p>Do you struggle more with caring too much or protecting yourself by caring too little?</p><p>What helps you stay committed to quality when the external rewards aren&#8217;t there?</p><p>Drop your thoughts in the comments. Because chances are, your experience is exactly what someone else needs to hear right now.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;Make the best use of what is in your power, and take the rest as it happens.&#8221; - Epictetus</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Uncomfortable Truth]]></title><description><![CDATA[Your Code Reviewer Is Right More Often Than You Think]]></description><link>https://thestoiccoder.michaelclawrence.com/p/the-uncomfortable-truth-26a</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/the-uncomfortable-truth-26a</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 18 Jan 2026 12:45:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uc_3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uc_3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uc_3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!uc_3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!uc_3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!uc_3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uc_3!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1826131,&quot;alt&quot;:&quot;A weathered marble bust of Marcus Aurelius positioned on a modern developer's desk, surrounded by glowing monitors displaying code review comments&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/184899488?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A weathered marble bust of Marcus Aurelius positioned on a modern developer's desk, surrounded by glowing monitors displaying code review comments" title="A weathered marble bust of Marcus Aurelius positioned on a modern developer's desk, surrounded by glowing monitors displaying code review comments" srcset="https://substackcdn.com/image/fetch/$s_!uc_3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!uc_3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!uc_3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!uc_3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cf5ea7-1d3b-4370-9459-bd1210067202_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You just got feedback on a PR and your chest tightens. Your heart rate kicks up a notch. The reviewer&#8217;s tone feels harsh, their suggestions seem to completely miss the point of what you were trying to accomplish, and there&#8217;s this part of you (maybe a big part) that wants to defend every single line you wrote. You want to type out a paragraph-long comment explaining why they&#8217;re wrong, why your approach is actually brilliant, and why they clearly don&#8217;t understand the problem you were solving.</p><p>Been there? Yeah, me too. More times than I&#8217;d like to admit.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/the-uncomfortable-truth-26a?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/the-uncomfortable-truth-26a?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Real Source of the Pain</strong></h2><p>Here&#8217;s the thing the Stoics figured out a couple thousand years ago, and it still holds true when some senior dev is tearing apart your pull request: that discomfort you&#8217;re feeling right now? It&#8217;s not actually coming from the criticism itself. It&#8217;s coming from your judgment that you&#8217;ve been wronged. That your competence is being questioned. That this must mean something about your worth as a developer.</p><p>And that&#8217;s where we screw ourselves over.</p><p>Because the truth is, most code review feedback, even the harshly delivered stuff, contains something useful. But we can&#8217;t see it because we&#8217;re too busy nursing our wounded pride and mentally drafting our defensive response.</p><h2><strong>Mining for Gold in a Pile of Shit</strong></h2><p>What if you could extract every ounce of value from harsh feedback while discarding the emotional poison that comes with it? That&#8217;s the skill we need to develop.</p><p>First thing: you have to learn to separate the messenger from the message. A rude delivery, or even what you <em>perceive</em> as rude delivery, doesn&#8217;t automatically invalidate true insights. I&#8217;ve gotten feedback from people who had the communication skills of a brick, but their technical points were solid. Your job is mining for gold, not judging the miner&#8217;s manners.</p><p>Ask yourself this: is any part of this criticism true? Even 10% true? Because here&#8217;s the thing, even 10% accuracy in criticism is a gift. It&#8217;s information you didn&#8217;t have before. It&#8217;s a chance to improve your code before it hits production. Dismiss nothing until you&#8217;ve honestly examined it against reality.</p><p>I know how easy it is to get caught up in the emotions. To feel like your code&#8217;s being attacked. Like your self-worth is being questioned. I&#8217;ve been there, sitting at my desk, feeling that heat rise in my face, already mentally preparing my rebuttal. But that&#8217;s when you need to pause and ask: is there something here I can actually learn from? Is there a point buried in this feedback that, if I&#8217;m being honest with myself, is actually valid?</p><p>Maybe this person has a point. Maybe there <em>is</em> a better way to structure this. Maybe my first instinct wasn&#8217;t actually the best approach.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/the-uncomfortable-truth-26a/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/the-uncomfortable-truth-26a/comments"><span>Leave a comment</span></a></p><h2><strong>Your Critics Are Your Trainers</strong></h2><p>Here&#8217;s a reframe that&#8217;s helped me: view your critics as personal trainers for your code. They&#8217;re adding resistance that makes you stronger, even when it&#8217;s uncomfortable as hell. You don&#8217;t go to the gym expecting the trainer to tell you you&#8217;re perfect, you go expecting them to push you harder than you&#8217;d push yourself.</p><p>Same thing with code reviews.</p><p>I&#8217;ve learned to practice what I call &#8220;the grateful opposite.&#8221; Instead of getting defensive, I try to thank people for catching bugs, architectural flaws, or blind spots before they become production problems. Because at the end of the day, that&#8217;s what matters, producing the best quality code possible. It&#8217;s not about satisfying our own egos or proving we&#8217;re the smartest person in the room.</p><p>It&#8217;s very easy to get caught up in that. Trust me, I&#8217;ve dealt with ego battles over a long career. But over time you start to understand: I&#8217;m here to do a job. I&#8217;m here to do it well. My job is to produce the best quality product I can deliver, and if anyone can help me do that, even if they&#8217;re kind of an asshole about it, I&#8217;m going to take full advantage of that opportunity.</p><h2><strong>Not All Feedback Is Created Equal</strong></h2><p>Now, let&#8217;s be real for a second. You do need to distinguish between preference and principle. Some feedback is subjective style preferences; tabs versus spaces, this naming convention versus that one. And some reveals actual defects in your reasoning or approach.</p><p>I&#8217;ve had plenty of situations where feedback was just nitpicky bullshit. Someone commenting on variable naming when the real issue is whether the algorithm is efficient. In those cases, I don&#8217;t focus on it too much. But even in those nitpicky comments, I look for whether there&#8217;s something being pointed out that I could do a little better. Is there a better way to execute this, even if the specific suggestion isn&#8217;t quite right?</p><p>Epictetus said it best: if someone criticizes you unjustly, that&#8217;s their problem. But if it&#8217;s justified, thank them for the free education.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>When We Get Too Close to Our Code</strong></h2><p>Here&#8217;s what happens to me all the damn time: I get blinded by my own work. You get into that tunnel vision of coding where you&#8217;re locked in, cranking out line after line, building this thing in your head. And then somebody comes along and points out that maybe you&#8217;re overthinking it. Maybe you&#8217;re writing too much code. Maybe there are things you could better reuse or ways to eliminate code versus actually creating more of it.</p><p>And they&#8217;re right. But it stings because you were so deep in your own solution that you couldn&#8217;t see the simpler path.</p><p>Use criticism as a mirror. When you have a defensive reaction, that reaction reveals where your ego is attached. That&#8217;s big data about yourself that&#8217;s worth examining. Anytime something triggers you, and I mean really triggers you, makes you want to write that defensive comment, you should evaluate why.</p><p>Is it really because this person has it out for you? Or is it because you&#8217;re too emotionally attached to the code you wrote?</p><p>Nine times out of ten, it&#8217;s the latter.</p><h2><strong>The &#8220;Try It First&#8221; Approach</strong></h2><p>Here&#8217;s something I&#8217;ve started doing that&#8217;s been genuinely helpful: implement the suggested approach first, even if you disagree with it. Just try it. Because sometimes your resistance isn&#8217;t actually technical judgment, it&#8217;s pride masquerading as technical judgment.</p><p>I&#8217;ve had situations recently where I look at a suggestion and think, &#8220;I don&#8217;t necessarily 100% agree with this approach.&#8221; But at the same time, it&#8217;s not really worth fighting over either. It&#8217;s very easy to get caught up in this subjective battle, this ego-driven mindset of &#8220;my way is the best way and this person doesn&#8217;t know anything because I&#8217;ve been doing this for 15 years and they&#8217;ve only been doing this for 3 years.&#8221;</p><p>Who the hell cares?</p><p>If their approach makes sense when you really think about it, when you set your ego aside and evaluate it objectively, just make the change. There&#8217;s no sense fighting that battle. There are so many things we should be focused on trying to be better at. There are some things you just need to learn to let go of.</p><h2><strong>The Culture That Feeds Our Defensiveness</strong></h2><p>Let&#8217;s zoom out for a second and talk about why this is so hard for us as developers. We&#8217;re operating in a culture that constantly reinforces ego-driven behavior.</p><p>Tech Twitter is full of hot takes about the &#8220;right&#8221; way to do things. There&#8217;s this mythology around &#8220;10x developers&#8221; who supposedly produce perfect code and never need feedback. We see conference talks from people making everything look effortless. GitHub stars and follower counts become weird proxies for technical competence.</p><p>All of this feeds into an environment where admitting you might be wrong, where accepting that your first approach wasn&#8217;t perfect, feels like weakness. Like you&#8217;re not one of the smart ones.</p><p>But that&#8217;s BS. The smartest developers I know are the ones who actively seek out criticism. Who treat every code review like an opportunity to level up. Who check their ego at the door because they understand that the goal is shipping great software, not proving they&#8217;re right.</p><h2><strong>What This Actually Looks Like in Practice</strong></h2><p>So what does this look like day-to-day? For me, it&#8217;s a constant practice. I still have that initial defensive reaction, I don&#8217;t think that ever fully goes away. But I&#8217;ve learned to recognize it and pause.</p><p>When I get feedback that makes my stomach clench, I take a breath. I read it again, this time looking specifically for what might be valid. I ask myself: &#8220;If my best friend gave me this exact same feedback over coffee, how would I receive it differently?&#8221;</p><p>Sometimes I&#8217;ll even sleep on it. Let the emotional reaction fade a bit before I respond. Because responding while you&#8217;re still in that defensive headspace? That&#8217;s how you write comments you&#8217;ll regret, or dig in on positions that aren&#8217;t actually defensible.</p><p>And when I do find myself getting into a back-and-forth debate in PR comments, I try to remember: this isn&#8217;t a courtroom. Nobody&#8217;s keeping score. The goal isn&#8217;t to win the argument; it&#8217;s to end up with better code than what I started with.</p><h2><strong>The Payoff</strong></h2><p>The more you practice receiving feedback without ego, the better feedback you get. People are more willing to give you honest, detailed reviews when they know you won&#8217;t get defensive. They&#8217;ll point out subtle issues they might have otherwise let slide because they didn&#8217;t want to deal with pushback.</p><p>And that makes you better. Faster. Your code improves more quickly because you&#8217;re not wasting energy on defending your choices. You&#8217;re using that energy to actually evaluate and implement better approaches.</p><p>Plus, and this is huge: it makes code review way less stressful. When you&#8217;re not treating every piece of feedback as an attack on your competence, when you&#8217;re genuinely curious about what you might learn, the whole process becomes less painful. Sometimes even enjoyable.</p><h2><strong>Your Turn</strong></h2><p>I want to hear from you because I know I&#8217;m not alone in struggling with this:</p><p>What&#8217;s your biggest challenge when receiving code review feedback? Is it certain types of criticism, or feedback from specific people, or just the general feeling of being judged?</p><p>Have you ever had feedback that initially pissed you off but later realized was actually spot-on? What made you come around?</p><p>What strategies have helped you separate your ego from your code? Any mental tricks or reframes that work for you?</p><p>Share your thoughts in the comments. Because honestly, we all need to get better at this. The developer who can receive feedback without getting defensive is going to grow faster, ship better code, and probably enjoy their job a hell of a lot more than the one constantly defending their territory.</p><p>At the end of the day, the person most likely to hold you back isn&#8217;t your code reviewer&#8212;it&#8217;s you.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;If anyone can refute me&#8212;show me I&#8217;m making a mistake or looking at things from the wrong perspective&#8212;I&#8217;ll gladly change. It&#8217;s the truth I&#8217;m after, and the truth never harmed anyone.&#8221; - Marcus Aurelius</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Stop Lying to Yourself]]></title><description><![CDATA[Your Brain Is Gaslighting You Into Bad Decisions]]></description><link>https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 11 Jan 2026 12:45:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3tiJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3tiJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3tiJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!3tiJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!3tiJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!3tiJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3tiJ!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:2262779,&quot;alt&quot;:&quot;A Roman emperor in classical toga and laurel crown sitting at a modern developer's desk with glowing dual monitors displaying code&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/183476454?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A Roman emperor in classical toga and laurel crown sitting at a modern developer's desk with glowing dual monitors displaying code" title="A Roman emperor in classical toga and laurel crown sitting at a modern developer's desk with glowing dual monitors displaying code" srcset="https://substackcdn.com/image/fetch/$s_!3tiJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!3tiJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!3tiJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!3tiJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eccd56f-bc93-43c1-b232-08ad2dcd8f3f_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>Remember that time you convinced yourself the new JavaScript framework was the right choice? You wrote up the whole technical justification. You presented it to the team. You spent two weeks setting it up. And then, about three months in, you&#8217;re staring at the documentation at 2 AM, debugging some weird edge case, and you realize the truth: you picked this thing because it looked good on your resume, not because it was right for the project.</p><p>Yeah. We&#8217;ve all been there.</p><p>Here&#8217;s the thing though: deep down, you probably <em>knew</em> it was the wrong choice from the beginning. But you talked yourself into it anyway. You rationalized it. You built a case for it. You convinced yourself and everyone else that this was the smart technical decision.</p><p>But it wasn&#8217;t. It was the decision you <em>wanted</em> to make, dressed up in logic.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Problem With Making Decisions in Our Heads</strong></h2><p>As developers, we make decisions all day long. Which library to use. How to structure this module. Whether to refactor now or ship first. When to push back on a deadline. Whether to take that new job offer. Some of these decisions take five seconds. Others keep us up at night.</p><p>Most of them happen entirely in our heads, influenced by whatever we read on Reddit last night, that one bad experience we had three years ago, or just the general anxiety of &#8220;what if I&#8217;m wrong about this?&#8221;</p><p>The problem is that our brains are really good at lying to us. They&#8217;re excellent at taking what we <em>want</em> to do and reverse-engineering logic that makes it seem like the <em>right</em> thing to do. We&#8217;re basically running compiler optimizations on our decision-making process, and sometimes those optimizations introduce bugs.</p><p>You know what I&#8217;m talking about. You&#8217;ve felt it. That moment where you&#8217;re justifying something to yourself and there&#8217;s this little voice in the back of your head going, &#8220;Really? <em>Really?</em> Is that why you&#8217;re doing this?&#8221; And you just... ignore it. You rationalize a little harder. You find one more reason. You keep moving forward.</p><p>And then months later, you&#8217;re dealing with the consequences of a decision you knew was questionable from the start.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself/comments"><span>Leave a comment</span></a></p><h2><strong>What Marcus Aurelius Knew That We Keep Forgetting</strong></h2><p>Marcus Aurelius was arguably the most powerful person on Earth. Emperor of Rome. Controlled the biggest military force in the known world. And every night, he sat down and wrote to himself.</p><p>Not proclamations. Not decrees. Not things that would be read by historians. Just... thoughts. Questions. Reflections on his day, his decisions, his fears, his motivations.</p><p>Why would someone with that much power spend time writing in a journal that nobody else would read?</p><p>Because thinking on paper made him wiser.</p><p>That&#8217;s it. That&#8217;s the whole secret. When you write down your thinking, you can actually <em>see</em> it. You can examine it. Test it. Question it. You can&#8217;t do that when it&#8217;s just rattling around in your head, mixing with anxiety and ego and whatever you ate for lunch.</p><p>Writing is like running your thoughts through a debugger. It makes them visible. And once they&#8217;re visible, you can spot the bugs.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>How to Actually Do This (Without It Feeling Like Therapy Homework)</strong></h2><p>Look, I get it. &#8220;Philosophical journaling&#8221; sounds like something a life coach would try to sell you in a webinar. It sounds touchy-feely and vaguely pointless.</p><p>But here&#8217;s what it actually is: it&#8217;s debugging your decision-making process before you commit the code.</p><p>When you&#8217;ve got a decision to make, especially a big one, here&#8217;s what you do:</p><p><strong>Write down your gut reaction first.</strong> Before you start rationalizing, before you start researching, just capture that initial instinct. Often your gut knows something your conscious mind hasn&#8217;t articulated yet. I can&#8217;t tell you how many times I&#8217;ve written down that first thought, spent a week talking myself into the opposite, and then ended up right back where I started. Save yourself the detour.</p><p><strong>List what&#8217;s actually in your control versus what isn&#8217;t.</strong> This is straight from the Stoics, and it&#8217;s stupidly powerful. You&#8217;re agonizing over whether the tech lead will approve your approach? That&#8217;s not in your control. What <em>is</em> in your control is how well you document your reasoning and present the alternatives. Focus on the actions you can actually take. Everything else is just mental masturbation.</p><p><strong>Examine your real motivations.</strong> This is the uncomfortable part. Are you choosing that new framework because it&#8217;s genuinely the best fit? Or because you&#8217;re bored with the current stack? Or because you want to pad your resume? Or because you read a blog post that made you feel like you&#8217;re falling behind?</p><p>There&#8217;s no judgment here. I&#8217;ve picked technologies for all of those reasons. But you need to be honest with yourself about <em>why</em> you&#8217;re leaning a certain direction, because that changes everything about how you should evaluate the decision.</p><p><strong>Play devil&#8217;s advocate against yourself.</strong> Force yourself to write the strongest possible case for the opposite choice. Not the strawman version. The <em>actual</em> best argument. This is where you catch your blind spots. This is where you realize, &#8220;Oh shit, I&#8217;m ignoring this pretty significant downside because I don&#8217;t want to deal with it.&#8221;</p><p><strong>Set a review date.</strong> For big decisions, write down when you&#8217;re going to revisit this and see if your reasoning held up. &#8220;I&#8217;ll check this in three months and see if I still think this was the right call.&#8221; This creates accountability to your past self. It&#8217;s like leaving comments in your code, except for your life choices.</p><h2><strong>What You&#8217;ll Actually Discover</strong></h2><p>Here&#8217;s what happens when you start doing this regularly: you begin to see your patterns.</p><p>You&#8217;ll notice you&#8217;re consistently over-optimistic in your time estimates. Or that you avoid having difficult conversations until they become crises. Or that you have a serious case of technology FOMO that makes you want to rewrite everything every six months.</p><p>These patterns are always there. But when they&#8217;re just in your head, they&#8217;re invisible. When you write them down over and over, they become undeniable.</p><p>I started noticing that every time I was excited about a new tool or framework, I had this whole internal narrative about &#8220;learning opportunities&#8221; and &#8220;staying current&#8221; and &#8220;becoming a better developer.&#8221; And you know what? Sometimes that was true. But a lot of times, I just wanted the dopamine hit of something new. I was bored. I wanted to feel smart again.</p><p>Once I saw that pattern written out in black and white, I couldn&#8217;t unsee it. And now when I feel that pull toward the shiny new thing, I know to ask myself, &#8220;Is this actually the right choice, or am I just bored?&#8221;</p><p>That&#8217;s the power of making your thinking visible.</p><h2><strong>The Journal Becomes Your Personal Database</strong></h2><p>After a few months of this, something cool happens: you&#8217;ve got a record of your decision-making process. You can look back and see what you were thinking when you made similar choices in the past.</p><p>Deciding whether to take a new job? Go read what you wrote the last time you switched roles. What were you hoping for? Did you get it? What did you undervalue? What surprised you?</p><p>Choosing between technical approaches? Look at what happened the last three times you made similar calls. What did you miss? What held up? What would you do differently?</p><p>You&#8217;re building a personal decision-making database. And unlike Stack Overflow, it&#8217;s specifically tailored to your biases, your context, your career.</p><p>We spend so much time trying to learn from other people&#8217;s experiences. Blog posts. Conference talks. Twitter threads. And that&#8217;s valuable. But your own experiences? Your own patterns? That&#8217;s data you can actually trust, because you know all the context that&#8217;s missing from the polished retrospective.</p><h2><strong>A Few Prompts to Get You Unstuck</strong></h2><p>Sometimes you sit down to write and you just... don&#8217;t know what to say. Your brain goes blank. Here are some prompts that help me get moving:</p><ul><li><p>What am I actually afraid will happen?</p></li><li><p>What would I tell a friend to do in this situation?</p></li><li><p>What would this look like if it were easy?</p></li><li><p>What am I pretending not to know?</p></li><li><p>If I had to decide right now, what would I choose? (Then ask: why?)</p></li></ul><p>That last one is particularly brutal. Because usually, you <em>do</em> know what you want to do. You&#8217;re just scared of committing to it. Or you&#8217;re hoping someone else will make the decision for you. Or you&#8217;re avoiding the hard conversation that comes after.</p><p>Writing it down makes that avoidance visible.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-lying-to-yourself?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Part Where I Sound Like a Self-Help Book (But Bear With Me)</strong></h2><p>Look, I know this whole thing sounds kind of... earnest. Like something you&#8217;d find in the &#8220;personal development&#8221; section at Barnes &amp; Noble. And I get the resistance to that.</p><p>But here&#8217;s the reality: we&#8217;re making decisions all the time that affect our careers, our sanity, our lives. And most of us are doing it with about as much rigor as we&#8217;d give to choosing what to have for lunch.</p><p>We&#8217;ll spend three hours researching which laptop to buy, but we&#8217;ll take a new job based on a gut feeling and a good interview. We&#8217;ll meticulously review pull requests, but we won&#8217;t examine our own thinking when making decisions that will impact the next six months of our lives.</p><p>That&#8217;s backwards.</p><p>Marcus Aurelius knew this. He was making life-and-death decisions for an empire, and he still took the time to think on paper because he understood something fundamental: your decision-making process is your most important tool. If it&#8217;s buggy, everything else suffers.</p><p>You don&#8217;t have to call it &#8220;philosophical journaling&#8221; if that makes you uncomfortable. Call it debugging your brain. Call it decision docs. Call it whatever you want.</p><p>Just write down your thinking before you commit to the choice. Make it visible. Question it. Test it.</p><p>Your future self will thank you for it.</p><p>Because here&#8217;s what I&#8217;ve learned: the decisions I regret aren&#8217;t usually the ones where I made the wrong choice. They&#8217;re the ones where I made a choice I <em>knew</em> was wrong, but I talked myself into it anyway.</p><p>And the only way to stop doing that is to catch yourself in the act of the rationalization. To see it happening in real-time. To call bullshit on your own internal narrative before it becomes your external reality.</p><p>That&#8217;s what this practice does.</p><p>It won&#8217;t make you perfect. You&#8217;ll still make mistakes. But at least they&#8217;ll be <em>honest</em> mistakes, based on your actual values and actual reasoning, not just whatever story you told yourself to avoid discomfort.</p><p>And that&#8217;s worth thirty minutes with a journal.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;Everything we hear is an opinion, not a fact. Everything we see is a perspective, not the truth.&#8221; &#8212; Marcus Aurelius</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Your Broken Promises Aren't Failures, They're Just Reality]]></title><description><![CDATA[The Mental Shift That Frees You From Deadline Guilt]]></description><link>https://thestoiccoder.michaelclawrence.com/p/your-broken-promises-arent-failures</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/your-broken-promises-arent-failures</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 04 Jan 2026 12:45:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Tv0P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tv0P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tv0P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Tv0P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Tv0P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Tv0P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tv0P!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1878140,&quot;alt&quot;:&quot; developer sitting at a minimalist desk with dual monitors displaying code, one hand on keyboard, the other hand open and relaxed in a gesture of acceptance, behind them a massive classical Roman statue of Marcus Aurelius partially dissolved&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/183384946?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt=" developer sitting at a minimalist desk with dual monitors displaying code, one hand on keyboard, the other hand open and relaxed in a gesture of acceptance, behind them a massive classical Roman statue of Marcus Aurelius partially dissolved" title=" developer sitting at a minimalist desk with dual monitors displaying code, one hand on keyboard, the other hand open and relaxed in a gesture of acceptance, behind them a massive classical Roman statue of Marcus Aurelius partially dissolved" srcset="https://substackcdn.com/image/fetch/$s_!Tv0P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Tv0P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Tv0P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Tv0P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc682c4f2-fcc3-4149-8f29-6899f453570d_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You estimated two days for that feature. Your team lead approved it. You felt pretty good about yourself. You&#8217;ve built this kind of thing before, you know what you&#8217;re doing.</p><p>Then production explodes.</p><p>Suddenly you&#8217;re pulled into firefighting mode. Three hours of debugging turns into three days. The QA environment goes down. The designer decides &#8211; oh, by the way &#8211; the whole flow needs to change. And that &#8220;simple&#8221; API integration? Yeah, the documentation was lying. The endpoints don&#8217;t work how they say they do.</p><p>Now you&#8217;re three sprints behind on something you promised would be done by Friday. And you feel like shit about it.</p><p>Not because you didn&#8217;t try. Not because you slacked off. But because in your head, you made a commitment, and you failed. You&#8217;re a professional who can&#8217;t even estimate their own work properly. What kind of developer are you?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/your-broken-promises-arent-failures?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/your-broken-promises-arent-failures?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Weight of Broken Promises</strong></h2><p>Here&#8217;s the thing that eats at you: it wasn&#8217;t even your fault. The production incident wasn&#8217;t something you could have predicted. The designer changing requirements wasn&#8217;t in your control. The API being broken? That&#8217;s on someone else&#8217;s poor documentation.</p><p>But you still feel guilty. Because somewhere along the way, you internalized this idea that a &#8220;good developer&#8221; should be able to predict the future. That giving an estimate means you&#8217;re making an iron-clad promise. That if you can&#8217;t deliver exactly what you said, exactly when you said it, you&#8217;re somehow letting everyone down.</p><p>We put this pressure on ourselves. Management puts it on us too. There&#8217;s this whole mythology around the 10x developer who can see around corners, who never misses a deadline, who can account for every possible dependency and blocker.</p><p>It&#8217;s bullshit. And it&#8217;s making us miserable.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>What the Stoics Knew About Uncertainty</strong></h2><p>The ancient Stoics had a practice that would&#8217;ve saved us a lot of Sunday night anxiety. When they made any commitment, they silently added a reserve clause: &#8220;fate permitting.&#8221;</p><p>&#8220;I&#8217;ll finish this by Friday... fate permitting.&#8221; &#8220;This feature will take two days... fate permitting.&#8221; &#8220;We&#8217;ll ship this sprint&#8217;s work... fate permitting.&#8221;</p><p>This isn&#8217;t about being pessimistic or making excuses. It&#8217;s about maintaining your sanity in a job where uncertainty is the only constant.</p><p>The reserve clause is mental freedom from the guilt that comes when reality refuses to cooperate with your plans. Because here&#8217;s what every developer knows but somehow forgets when giving estimates: you&#8217;re making a prediction about a future you don&#8217;t control.</p><h2><strong>The Things You Can&#8217;t Control</strong></h2><p>Think about everything that can derail your estimate:</p><p>The production database that decides to corrupt itself at 2 AM on Thursday. The teammate who gets sick right when you need their code review. The VP who swoops in with <em>&#8220;just one small change&#8221;</em> that rewrites half your architecture. The vendor API that goes down. The deployment pipeline that breaks. The security vulnerability that gets discovered and suddenly becomes everyone&#8217;s top priority.</p><p>That &#8220;two day estimate&#8221; you gave? It was based on a world where none of those things happen. And that world doesn&#8217;t exist.</p><p>The Stoics, particularly Marcus Aurelius and Epictetus, were obsessed with this distinction between what you control and what you don&#8217;t.</p><p>You control your effort. You control your focus. You control how thoroughly you communicate blockers.</p><p>You don&#8217;t control dependencies failing. You don&#8217;t control requirements changing mid-sprint. You don&#8217;t control emergencies that pull you away from your work.</p><p>The reserve clause isn&#8217;t an excuse for poor planning. It&#8217;s not permission to sandbag your estimates or half-ass your work. It&#8217;s a realistic acknowledgment that between &#8220;I&#8217;ll start this task&#8221; and &#8220;I&#8217;ll finish this task&#8221; lies a vast ocean of uncertainty.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/your-broken-promises-arent-failures/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/your-broken-promises-arent-failures/comments"><span>Leave a comment</span></a></p><h2><strong>How This Actually Works</strong></h2><p>Let me give you a real example. You&#8217;re planning sprint work, and someone asks how long it&#8217;ll take to build the new payment processing flow.</p><p><strong>Without the reserve clause:</strong> &#8220;Two weeks.&#8221; (Internal pressure: &#8220;I said two weeks, so it HAS to be two weeks, no matter what happens.&#8221;)</p><p><strong>With the reserve clause:</strong> &#8220;Two weeks, assuming nothing prevents it.&#8221; (Internal reality: &#8220;I&#8217;m committing to two weeks of focused effort, but I&#8217;m not a fortune teller.&#8221;)</p><p>See the difference? The second one doesn&#8217;t change your external commitment, you&#8217;re still saying two weeks. But internally, you&#8217;re not setting yourself up for irrational guilt when the QA environment is down for three days, or when the product manager realizes halfway through that they forgot about a critical edge case.</p><p>When those interruptions happen &#8211; and they will &#8211; the reserve clause lets you pivot without the internal narrative of &#8220;I&#8217;m a failure who can&#8217;t keep promises.&#8221; Instead, it&#8217;s just: &#8220;Well, circumstances changed. Let&#8217;s adjust.&#8221;</p><h2><strong>The Paradox of Letting Go</strong></h2><p>Here&#8217;s what&#8217;s weird: releasing that rigid attachment to guaranteed outcomes often improves your results.</p><p>When you&#8217;re not defending an estimate like it&#8217;s your personal honor at stake, you become more flexible. You communicate blockers earlier because you&#8217;re not trying to hide them. You ask for help sooner because you&#8217;re not treating the estimate as a referendum on your competence. You&#8217;re more honest with stakeholders about risks because you&#8217;re not over-promising from ego.</p><p>You stop playing this exhausting game of pretending you have more control than you actually do.</p><p>And stakeholders? They trust you more. Because instead of the developer who says &#8220;two days&#8221; and then goes radio silent when it&#8217;s taking longer, you&#8217;re the developer who says &#8220;two days, barring any surprises&#8221; and then keeps everyone updated when surprises happen.</p><p>You can commit fully to the work while releasing attachment to guaranteed results. The only thing you can actually guarantee is that you will do the work necessary to try to achieve the goal as much as possible. Everything else &#8211; the timeline, the exact outcome, the smooth sailing, that&#8217;s outside your control.</p><h2><strong>Baking in Reality</strong></h2><p>Over time, this mental habit trains you to think differently during planning. You start identifying what&#8217;s actually in your control:</p><p>Your effort. Your focus. Your communication. The quality of your code. The thoroughness of your testing.</p><p>And what&#8217;s not in your control:</p><p>Dependencies on other teams. Third-party services staying up. Requirements staying stable. Emergencies not happening. The exact amount of time something will take once you account for all the unknowns.</p><p>Does this mean you stop giving estimates? No. Does it mean you pad everything to ridiculous levels? Also no.</p><p>It means you give honest estimates based on what you know, while acknowledging, to yourself if not out loud, that there&#8217;s always some outside thing that can happen that is unforeseen. The QA environment going down. The API changing without notice. The production incident that pulls you away.</p><p>That&#8217;s not pessimism. That&#8217;s reality. And acknowledging reality is the first step to not letting it destroy your mental health.</p><h2><strong>The Only Constant</strong></h2><p>As developers, we deal with constant change. We get used to it, eventually. The framework that was hot last year is old news this year. The architecture that made sense six months ago needs refactoring. The requirements that were set in stone last sprint are somehow different now.</p><p>But we still try to plan everything like we&#8217;re building a bridge, where all the variables are known and the materials behave predictably. Software development isn&#8217;t bridge building. It&#8217;s more like trying to build a bridge while the river is flooding, people are changing the blueprint mid-construction, and someone keeps yelling about how the other bank moved.</p><p>The reserve clause &#8211; &#8220;fate permitting&#8221; &#8211; is how you stay sane in that chaos. It&#8217;s how you commit to doing great work without committing to controlling things you can&#8217;t control.</p><div><hr></div><p>Quote of the Day:</p><blockquote><p>&#8220;Do every act of your life as though it were the last act of your life.&#8221; &#8212; Marcus Aurelius</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Stop Apologizing for Doing Your Actual Job]]></title><description><![CDATA[Why Protecting Your Attention Matters]]></description><link>https://thestoiccoder.michaelclawrence.com/p/stop-apologizing-for-doing-your-actual</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/stop-apologizing-for-doing-your-actual</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 28 Dec 2025 12:45:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lfKH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lfKH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lfKH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!lfKH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!lfKH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!lfKH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lfKH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1572922,&quot;alt&quot;:&quot;modern interpretation of ancient Greek agora as a tech workspace,&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/182718360?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="modern interpretation of ancient Greek agora as a tech workspace," title="modern interpretation of ancient Greek agora as a tech workspace," srcset="https://substackcdn.com/image/fetch/$s_!lfKH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!lfKH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!lfKH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!lfKH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eadc8b2-7b03-4251-8e5e-2702cc181d2f_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>It&#8217;s 10 AM. You&#8217;ve been &#8220;working&#8221; for two hours, but your most significant accomplishment is answering twelve Slack messages and attending a standup that could&#8217;ve been an email. The feature you were supposed to ship this week? Still zero commits.</p><p>You know you need to focus. You know context switching is killing your productivity. But there&#8217;s this nagging guilt every time you see those notification badges piling up. What if someone needs you? What if you&#8217;re being a bad team player? What if ignoring that ping makes you look like you don&#8217;t care?</p><p>That guilt is misplaced urgency, and it&#8217;s destroying your ability to do meaningful work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-apologizing-for-doing-your-actual?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-apologizing-for-doing-your-actual?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Real Cost of Scattered Attention</strong></h2><p>Seneca observed that people who are everywhere are really nowhere, constantly busy at accomplishing nothing meaningful. That Slack message mid-deep work, the email that derails your debugging session, the meeting that fragments your afternoon into useless 20-minute chunks&#8212;this isn&#8217;t just productivity loss. It&#8217;s a form of self-violence, scattering your mind until you can&#8217;t recognize your own thoughts.</p><p>Each context switch costs about 15-20 minutes of recovery time. Not the seconds it takes to check Slack, but the cognitive reload required to rebuild your mental model. Think about that. Every ping, every &#8220;quick question,&#8221; every notification you respond to immediately, you&#8217;re not losing seconds, you&#8217;re hemorrhaging 15-20 minutes of focused work.</p><p>You can be busy for 40 years and accomplish less than somebody with focused months. The Stoics understood this: attention is the only currency that matters, and modern work culture has us throwing it away like it&#8217;s unlimited.</p><p>Your brain literally cannot process two complex tasks simultaneously. What we call multitasking is just rapid context switching, and you&#8217;re doing it poorly. What&#8217;s the point of starting two or three different things at the same time if you can&#8217;t finish them? Or worse, if you just do them half-assed?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Why We Keep Doing This to Ourselves</strong></h2><p>The guilt is real. Someone pings you, and you feel that immediate pressure to respond. Not because it&#8217;s actually urgent, but because we&#8217;ve been trained to treat every notification like a fire alarm.</p><p>But here&#8217;s what that really is: other people&#8217;s poor planning becoming your emergency.</p><p>Those interruptions? They&#8217;re rarely as urgent as they feel. Most of the time, they can wait an hour. Or three hours. Or until tomorrow. But we&#8217;ve convinced ourselves that being responsive means being reactive, that being available means being always-on.</p><p>I remember a time before we had the internet, before cell phones, before instant notifications. You could get lost in your work, lost in whatever you were doing, and there was really no way for anybody to get a hold of you. And you know what? The world didn&#8217;t end. People figured it out. They waited.</p><h2><strong>The Stoic Solution: Own Your Time</strong></h2><p>The Stoic practice of protecting your attention starts with recognizing it&#8217;s finite and non-renewable&#8212;more precious than time itself. When it&#8217;s time to work, that&#8217;s the thing you need to focus on.</p><p>That means shutting off Slack notifications. Closing your email client. Setting your status to &#8220;Do Not Disturb&#8221; without apologizing for it.</p><p>These are things I actually do. I&#8217;ll shut off notifications, close distractions, and just focus on whatever the task is. Getting it done. If you really need me, there are ways to get a hold of me, but is it really that necessary? Probably not.</p><p><strong>Set boundaries around deep work:</strong></p><ul><li><p>Do not disturb mode isn&#8217;t rude, it&#8217;s professional</p></li><li><p>Block your calendar for focus time</p></li><li><p>Make communication async-first by default</p></li></ul><p><strong>Batch your communication:</strong></p><ul><li><p>Check Slack three times daily instead of 300 times</p></li><li><p>You can be responsive without being reactive</p></li><li><p>Processing messages in batches is more efficient anyway</p></li></ul><p><strong>Preserve your flow state:</strong></p><ul><li><p>Quality attention on one problem for two hours outperforms fragmented attention on five problems for eight</p></li><li><p>Stoicism values depth over breadth</p></li><li><p>That deep work session where you actually solve the problem? That&#8217;s what you&#8217;re here for</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-apologizing-for-doing-your-actual/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-apologizing-for-doing-your-actual/comments"><span>Leave a comment</span></a></p><h2><strong>What This Looks Like in Practice</strong></h2><p>When I go out in the morning for a run, I leave my phone in my vehicle. It&#8217;s just me out there. First thing in the morning, nobody&#8217;s going to bother you at 6:30 AM anyway, but I keep my phone away so I&#8217;m not distracted by emails or LinkedIn notifications or whatever. I can just focus on the run.</p><p>Same thing with deep work sessions. I&#8217;ll focus on getting tasks done for solid blocks, then spend 15-20 minutes checking and getting caught up on things before going back. Rinse and repeat.</p><p>Just because we&#8217;re always connected doesn&#8217;t mean we always have to stay connected. We can choose to disconnect. There&#8217;s nothing wrong with disconnecting, I actually recommend it.</p><h2><strong>Stop Feeling Guilty</strong></h2><p>Here&#8217;s what you need to internalize: there&#8217;s no sense feeling guilty about protecting your attention. To do your best work, you have to focus. Without focus, you&#8217;re just scattered, and what are you really accomplishing? You&#8217;re being busy for the sake of being busy but not actually accomplishing anything.</p><p>The work you&#8217;re doing is important. Your time matters. If other people need you, they can wait. That&#8217;s not being selfish or a bad teammate, that&#8217;s understanding what your job actually is.</p><p>You weren&#8217;t hired to respond to Slack messages instantly. You were hired to solve problems, write code, ship features. Everything else is just noise trying to convince you it&#8217;s signal.</p><p>So own your time. Set those boundaries. Turn off those notifications. And when that guilt creeps in, remind yourself: the person who suffers most from your scattered attention is you, and the work you&#8217;re supposed to be doing deserves better than your fragmented leftovers.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;People are frugal in guarding their personal property; but as soon as it comes to squandering time, they are most wasteful of the one thing in which it is right to be stingy.&#8221; - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[From Rage to Refactor]]></title><description><![CDATA[The Stoic Coder&#8217;s Guide to Legacy Code Fury]]></description><link>https://thestoiccoder.michaelclawrence.com/p/from-rage-to-refactor</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/from-rage-to-refactor</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 21 Dec 2025 12:45:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ezbH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ezbH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ezbH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!ezbH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!ezbH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!ezbH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ezbH!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:2411961,&quot;alt&quot;:&quot;A marble bust of Marcus Aurelius with glowing eyes, positioned beside a modern laptop showing chaotic tangled code on the screen, &quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/182191178?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A marble bust of Marcus Aurelius with glowing eyes, positioned beside a modern laptop showing chaotic tangled code on the screen, " title="A marble bust of Marcus Aurelius with glowing eyes, positioned beside a modern laptop showing chaotic tangled code on the screen, " srcset="https://substackcdn.com/image/fetch/$s_!ezbH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!ezbH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!ezbH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!ezbH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F078e674d-710b-418a-8dbc-076bb438e8c1_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You open a file, and it&#8217;s 2,000 lines of nested conditions with variables named <em>temp</em>, <em>temp2</em>, <em>the_real_temp</em>. Your blood pressure begins to spike. The original developer is long gone. Your rage changes nothing except your ability to think clearly about fixing the issue.</p><p>But here&#8217;s the thing: not all anger is useless.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/from-rage-to-refactor?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/from-rage-to-refactor?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Two Flavors of Anger</strong></h2><p>The Stoics made a distinction that every developer needs to understand. There&#8217;s destructive fury, and there&#8217;s constructive frustration.</p><p>One paralyzes you. The other refactors.</p><p>Destructive anger assumes malice or incompetence. You look at that spaghetti code and decide someone was either stupid or lazy. Maybe both. You build this whole story in your head about the idiot who wrote this shit and how they clearly didn&#8217;t give a fuck about anyone who&#8217;d have to maintain it.</p><p>That anger feels justified. It also does absolutely nothing to fix the problem.</p><p>Constructive frustration looks at the same code and says, &#8220;Okay, this is problematic.&#8221; No story about the previous developer being an asshole. No moral judgment. Just acknowledgment that this code needs work, and you&#8217;re the one who has to do it. This kind of frustration becomes fuel. It motivates systematic improvement instead of rage-driven rewrites.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/from-rage-to-refactor/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/from-rage-to-refactor/comments"><span>Leave a comment</span></a></p><h2><strong>What Destructive Anger Actually Looks Like</strong></h2><p>I&#8217;ve been that angry developer. Early in my career, I inherited an e-commerce system that looked like it was written by someone having a stroke. My first instinct was to delete everything and start from scratch.</p><p>So I did. I spent three weeks rewriting the entire thing &#8220;the right way.&#8221; Added all these beautiful abstractions. Clean separation of concerns. Design patterns everywhere. I was so proud of myself.</p><p>Two problems: First, I broke shit that was working. Turns out some of that &#8220;terrible&#8221; code was handling edge cases I didn&#8217;t know existed. Second, my &#8220;clean&#8221; rewrite was over-engineered to hell. I&#8217;d created a different kind of mess because I was coding from emotion instead of analysis.</p><p>Rage-driven refactoring looks like this: dramatic gestures instead of pragmatic improvements. You&#8217;re not fixing problems, you&#8217;re proving a point to a developer who isn&#8217;t even there anymore. You&#8217;re writing code to show how much better you are, not to make the system actually better.</p><p>And here&#8217;s the kicker: that ecomm system I rewrote? Someone probably looked at my code a few years later and thought the exact same shit about me.</p><h2><strong>The Pause That Changes Everything</strong></h2><p>Seneca had a technique for this: catch anger in the first moments before it becomes rage. Notice the tightness in your chest when you see bad code, pause, and then choose your response.</p><p>Here&#8217;s what this actually looks like in practice:</p><p>You open that file. Feel that rage building. Your jaw clenches. Your inner monologue starts going off about what kind of person writes code like this. Right there, that&#8217;s the moment. Seneca says catch it before it catches you.</p><p>So you literally stand up. Walk to the break room. Pour some coffee. Not because you want coffee. Because you need three minutes to let your nervous system calm the down. You&#8217;re not avoiding the problem. You&#8217;re preventing yourself from making it worse.</p><p>Then you come back and refactor like a professional instead of an angry teenager.</p><p>The question isn&#8217;t &#8220;Is this code terrible?&#8221; The answer is usually yes. The real question is &#8220;Does my anger help me improve it?&#8221; And the answer to that is almost always no.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>Understanding Why Code Gets This Way</strong></h2><p>Here&#8217;s what I&#8217;ve learned after 25 years: all code degrades over time. Yours, mine, everyone&#8217;s. It&#8217;s entropy, not evil.</p><p>Budget constraints force shortcuts. Deadlines demand compromises. Requirements change mid-sprint. That &#8220;quick fix&#8221; becomes permanent because there&#8217;s never time to go back and do it right. The elegant architecture you planned gets demolished by reality.</p><p>The developer who wrote that nightmare code? They were probably dealing with the same shit you are now. Maybe the product manager kept changing the specs. Maybe they were told to ship it by Friday or the company loses the client. Maybe they were maintaining ten other systems simultaneously and this one got the leftover brain cycles.</p><p>You don&#8217;t know their constraints. You just know what they left you.</p><p>And here&#8217;s the humbling part: the code you&#8217;re writing today, right now, with the best intentions and all your experience: that&#8217;s someone&#8217;s future legacy nightmare. Some developer in 2030 is going to open your files and wonder what the hell you were thinking.</p><p>Because they won&#8217;t know that you were dealing with a sudden API deprecation. Or that the business needed this feature yesterday. Or that you were juggling three projects and fighting production fires at the same time.</p><p>This realization doesn&#8217;t excuse bad code. But it kills the moral outrage that makes you useless.</p><h2><strong>Channeling Frustration Into Improvement</strong></h2><p>Once you&#8217;ve let go of the anger, you&#8217;re left with something more useful: energy. Frustration that says &#8220;this needs to be better&#8221; instead of &#8220;someone messed up.&#8221;</p><p>That energy goes into systematic refactoring. Not dramatic rewrites. Not proving points. Just methodical improvement.</p><p>Write tests first. Document what the current behavior actually is, bugs and all. Then improve incrementally. One function at a time. One responsibility at a time. Make it work, make it right, make it fast&#8212;in that order.</p><p>This is anger transformed into discipline. Into craftsmanship. Into code that&#8217;s actually better instead of just differently broken.</p><h2><strong>The Hard Truth About Your Own Code</strong></h2><p>You know what kills the rage cycle? Genuine humility about your own imperfect work.</p><p>Go back and look at code you wrote a year ago. Hell, six months ago. You&#8217;ll find stuff that makes you cringe. Because you&#8217;ve learned since then. Because you see the problem differently now. Because the requirements changed and your beautiful solution became technical debt.</p><p>The legacy code you&#8217;re cursing today is your own future legacy code tomorrow. The same pressures that created that mess you&#8217;re fixing right now are creating tomorrow&#8217;s mess in what you&#8217;re writing today.</p><p>That&#8217;s not defeatist. That&#8217;s reality. And once you accept it, you can stop taking bad code personally and start treating it as what it actually is: a problem to solve, not a villain to vanquish.</p><h2><strong>From Rage to Refactor</strong></h2><p>Marcus Aurelius said you have power over your mind, not outside events. You can&#8217;t control that some developer three years ago wrote shit code. You can&#8217;t change that you&#8217;re the one stuck fixing it. You can&#8217;t even guarantee that your fixes will be better in the long run.</p><p>But you can control whether you let rage make you stupid. You can choose to pause instead of react. You can acknowledge frustration without letting it drive your decisions.</p><p>The code is what it is. Your job isn&#8217;t to be mad about it. Your job is to make it better.</p><p>That&#8217;s the Stoic move. Transform the anger into action. Let the frustration fuel discipline instead of dramatic rewrites. Fix the problem instead of fighting ghosts.</p><p>Because at the end of the day, the only code you can truly control is the code you&#8217;re writing right now. Make it count.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;The greatest remedy for anger is delay.&#8221; - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Most Developers Quit Because They Never Learn This One Thing]]></title><description><![CDATA[The Daily Practice That Keeps Developers From Burning Out]]></description><link>https://thestoiccoder.michaelclawrence.com/p/most-developers-quit-because-they</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/most-developers-quit-because-they</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 14 Dec 2025 12:45:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nyL6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nyL6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nyL6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!nyL6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!nyL6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!nyL6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nyL6!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1435493,&quot;alt&quot;:&quot;A marble bust of Marcus Aurelius sitting on a modern developer's desk, surrounded by dual monitors displaying code, mechanical keyboard, coffee mug, morning sunlight streaming through window&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/181534599?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A marble bust of Marcus Aurelius sitting on a modern developer's desk, surrounded by dual monitors displaying code, mechanical keyboard, coffee mug, morning sunlight streaming through window" title="A marble bust of Marcus Aurelius sitting on a modern developer's desk, surrounded by dual monitors displaying code, mechanical keyboard, coffee mug, morning sunlight streaming through window" srcset="https://substackcdn.com/image/fetch/$s_!nyL6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!nyL6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!nyL6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!nyL6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97b9618-130f-4900-8b4b-a32b0db3b093_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>Have you ever had one of those days where everything goes to shit and you just want to walk away from your keyboard? Production&#8217;s on fire, stakeholders are breathing down your neck, and that &#8220;quick fix&#8221; you deployed yesterday just created three new bugs. You&#8217;re sitting there thinking, &#8220;Why the hell did I become a developer?&#8221;</p><p>The difference between developers who burn out after five years and those who build sustainable 20-year careers isn&#8217;t talent. It&#8217;s not even luck. It&#8217;s having a system that keeps your head straight when everything around you is chaos.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/most-developers-quit-because-they?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/most-developers-quit-because-they?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Philosophy That Actually Works</strong></h2><p>I used to think Stoicism was just old dead guys saying &#8220;don&#8217;t worry, be happy&#8221; in fancy language. Then I actually started practicing it daily, and I realized it&#8217;s more like having a mental framework for not losing your shit when things go sideways.</p><p>Marcus Aurelius didn&#8217;t write his Meditations for publication. He wrote them as daily reminders to himself because being Emperor of Rome was probably stressful as hell. Every morning, he had to prep his mind the same way we prep our environments before a deploy. Because without that prep, you&#8217;re just reacting to whatever chaos the day throws at you.</p><p>And that&#8217;s where most of us live, in reactive mode. Something breaks, we scramble. Someone criticizes our code, we get defensive. A project gets cancelled, we spiral. We&#8217;re constantly dodging bullets instead of actually controlling anything.</p><h2><strong>The Practice Nobody Wants to Hear About</strong></h2><p>Here&#8217;s what I do, and fair warning: it&#8217;s not sexy. There&#8217;s no productivity hack that&#8217;ll make this effortless. It&#8217;s just consistent, daily work that compounds over time.</p><p><strong>Every morning, before I even look at Slack, I spend five minutes asking myself one question: What can I actually control today?</strong></p><p>Not what I wish I could control. Not what I think should be in my control. What&#8217;s <em>actually</em> within my power.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/most-developers-quit-because-they/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/most-developers-quit-because-they/comments"><span>Leave a comment</span></a></p><p>I can&#8217;t control if the product owner changes requirements mid-sprint. I can&#8217;t control if a dependency breaks with a new update. I can&#8217;t control if my PR sits in review for three days while everyone&#8217;s &#8220;too busy.&#8221;</p><p>But I can control how I respond to all that shit. I can control whether I write clean code or hack together something that&#8217;ll haunt me in six months. I can control if I speak up in stand-up or just keep my head down. I can control whether I focus on deep work or let myself get pulled into every Slack thread.</p><p>This sounds simple. It&#8217;s not. Because your brain will fight you every single morning, trying to convince you that you need to worry about all the other stuff. That you should be anxious about the deploy. That you should be pissed about that feedback in yesterday&#8217;s PR. That you should be stressed about whether the company&#8217;s going in the right direction.</p><p>I still fail at this constantly. I&#8217;ll be three messages deep into a Slack argument about code standards before I catch myself and realize I&#8217;m fighting about something that doesn&#8217;t really matter. But the difference between now and five years ago is that I actually notice when I&#8217;m doing it.</p><p><strong>At the end of each day, I write down three things:</strong></p><ol><li><p>What went well (even if it&#8217;s just &#8220;the build didn&#8217;t break&#8221;)</p></li><li><p>What went wrong and what I can learn from it.</p></li><li><p>What&#8217;s in my control tomorrow?</p></li></ol><p>That&#8217;s it. No fancy journaling prompts. No gratitude exercises that feel forced. Just a quick reality check on my day.</p><p>The wild part is going back and reading entries from months ago. You start to see patterns. Like, I get stressed about the same types of things over and over. I make the same mental mistakes. I waste energy on the same uncontrollable bullshit.</p><p>It took me years to recognize some of these patterns. I can look back at decisions I made 10, 15 years ago&#8212;like sticking with Flash development way too long, or how I handled certain production incidents&#8212;and I cringe. But that&#8217;s the point. I can&#8217;t change those decisions. All I can do is not repeat them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>The Part That Saved My Ass</strong></h2><p><strong>Before any major deploy or release, I spend five minutes imagining everything that could go wrong.</strong></p><p>Not in a doom-spiral anxiety way. More like a disaster recovery drill for my brain. What if the database migration fails? What if there&#8217;s a permissions issue we didn&#8217;t catch? What if traffic spikes and the new endpoint can&#8217;t handle it?</p><p>Then I mentally walk through: Okay, if that happens, here&#8217;s what I&#8217;d do. Here&#8217;s who I&#8217;d notify. Here&#8217;s the rollback plan.</p><p>I had a perfect example of this recently. We pushed a deploy, everything looked great. All tests passed, smoke checks came back clean. I felt good about it.</p><p>Next day? Production issue, the API broke. We had to push a hot fix that night.</p><p>Old me would&#8217;ve panicked. Would&#8217;ve felt like I fucked up, like I should&#8217;ve caught it, like everyone was judging me for breaking production. But because I&#8217;d already mentally prepared for the possibility of things going wrong, I just... handled it. Reset, refocused, figured out the issue, fixed it.</p><p>That&#8217;s what negative visualization does. It&#8217;s not about being pessimistic, it&#8217;s about removing the shock factor when shit inevitably goes wrong. Because it will go wrong. Your code will break. Your estimates will be off. Your assumptions will be wrong. That&#8217;s not failure, that&#8217;s just software development.</p><h2><strong>Why This Is So Hard (And Why That&#8217;s Okay)</strong></h2><p>Look, we live in a world where everything is instant. You want food? DoorDash. Need a ride? Uber&#8217;s there in five minutes. Want to learn something new? Here&#8217;s 47 YouTube tutorials right now.</p><p>But Stoicism? Philosophy? Mental resilience? That takes years.</p><p>You don&#8217;t read Marcus Aurelius once and suddenly have unshakable calm. You don&#8217;t journal for a week and cure your imposter syndrome. This is daily practice that compounds slowly over time, and there&#8217;s no fucking shortcut.</p><p>The philosophy itself is simple. Brutally simple, actually. Focus on what you can control. Let go of what you can&#8217;t. Show up consistently. That&#8217;s like 90% of it.</p><p>What makes it hard is doing it every single day. When you&#8217;re tired. When you&#8217;re frustrated. When you&#8217;re off work and just want to decompress. Every moment becomes a choice: Am I going to react to this, or am I going to respond intentionally? Am I letting anxiety control me, or am I taking ownership?</p><p>I&#8217;m not perfect. I still have days where I&#8217;m completely reactive, where I let small frustrations derail my focus, where I worry about shit I can&#8217;t control. But I have fewer of those days than I used to. And when they happen, I recognize it faster and course-correct.</p><h2><strong>The Bottom Line</strong></h2><p>Ten minutes of daily practice beats reading philosophy for six hours once a month. Make it routine like your morning coffee. Simple practices, done consistently, over years.</p><p>That&#8217;s it. That&#8217;s the whole thing.</p><p>No magic bullet. No life-changing epiphany. Just showing up every day and doing the work of staying aligned with what actually matters and what you can actually control.</p><p>Now I want to hear from you:</p><p><strong>What&#8217;s your biggest struggle with staying focused on what you can control?</strong></p><p><strong>Do you have any daily practices that help you build resilience?</strong></p><p><strong>What&#8217;s a time when you completely lost perspective and how did you get it back?</strong></p><p>Drop your thoughts in the comments. Because chances are, whatever you&#8217;re struggling with, someone else here is too. And sometimes just knowing you&#8217;re not the only one fighting this battle makes it a little easier to keep going.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;We suffer more often in imagination than in reality.&#8221; - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Why Your Production Disaster Isn't the End of the World]]></title><description><![CDATA[Your Broken Deploy Isn't a Career Ender, Your Panic Is]]></description><link>https://thestoiccoder.michaelclawrence.com/p/why-your-production-disaster-isnt</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/why-your-production-disaster-isnt</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 07 Dec 2025 12:45:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bV81!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bV81!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bV81!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!bV81!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!bV81!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!bV81!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bV81!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:2281656,&quot;alt&quot;:&quot;A marble bust of Marcus Aurelius overlooking a modern developer's desk with multiple glowing monitors displaying red error alerts and cascading log messages, &quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/180907631?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A marble bust of Marcus Aurelius overlooking a modern developer's desk with multiple glowing monitors displaying red error alerts and cascading log messages, " title="A marble bust of Marcus Aurelius overlooking a modern developer's desk with multiple glowing monitors displaying red error alerts and cascading log messages, " srcset="https://substackcdn.com/image/fetch/$s_!bV81!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!bV81!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!bV81!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!bV81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb406e76e-59a5-4d6a-9165-c7ed4a69b5fd_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You&#8217;ve just taken down production. Your Slack notifications are exploding. Your heart is doing that thing where it feels like it&#8217;s trying to escape through your ribcage. And somewhere in the back of your panic-soaked brain, a voice is screaming, &#8220;Everyone thinks I&#8217;m an idiot. I&#8217;m getting fired. My career is over.&#8221;</p><p>Let&#8217;s talk about that voice.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/why-your-production-disaster-isnt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/why-your-production-disaster-isnt?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Panic Brain vs. The Problem-Solving Brain</strong></h2><p>Here&#8217;s what happens in those first few seconds after you realize you&#8217;ve screwed up: your brain goes into full catastrophe mode. It&#8217;s not thinking about rollback procedures or database transactions. It&#8217;s writing your termination letter, imagining the disappointed looks from your team, and probably planning your new career as a barista.</p><p>This is where Marcus Aurelius has something useful to tell us about our broken deployment. He called it &#8220;the view from above,&#8221; and it&#8217;s not some woo-woo meditation thing. It&#8217;s a mental zoom-out that strips away the panic and lets you see what actually matters.</p><p>From the vastness of space, your failed deploy is invisible. Not because it doesn&#8217;t matter, but because your catastrophic thinking about it matters even less.</p><p>Think about it this way: Will this outage matter in a month? A year? At your retirement party? Most production incidents fade into forgotten anecdotes. The ones you remember become the war stories you tell over beers. &#8220;Remember that time I accidentally deleted the production database?&#8221; (Please tell me you have backups.)</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/why-your-production-disaster-isnt/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/why-your-production-disaster-isnt/comments"><span>Leave a comment</span></a></p><h2><strong>What&#8217;s Actually Happening vs. What You Think Is Happening</strong></h2><p>The production issue is real. Your anxiety about your reputation? That&#8217;s imagination masquerading as urgency.</p><p>Your panic brain says: &#8220;Everyone thinks I&#8217;m incompetent. I&#8217;m going to get fired. I&#8217;ll never get another job in this industry.&#8221;</p><p>The view from above says: &#8220;Okay, production is down. Who&#8217;s impacted? What&#8217;s the rollback plan? What do we need to do to get this back up?&#8221;</p><p>See the difference? One is spiraling. The other is problem-solving.</p><p>Here&#8217;s the thing most people don&#8217;t talk about: your ego isn&#8217;t the problem. Your users&#8217; inability to check out? That&#8217;s the problem. Separating these two things, actual user harm from your fear of looking incompetent, is the skill that separates developers who thrive under pressure from those who crumble.</p><h2><strong>Building the Muscle Before You Need It</strong></h2><p>You can&#8217;t wait until production is on fire to practice this mental shift. That&#8217;s like trying to learn to swim while you&#8217;re drowning.</p><p>I always look at deployments, no matter how simple the change, with the understanding that something can drastically go wrong. Not because I&#8217;m paranoid, but because I&#8217;m prepared. How do I set up the deployment? What&#8217;s the rollback plan? What&#8217;s the monitoring look like? What&#8217;s the communication plan if things go sideways?</p><p>It&#8217;s about removing the surprise factor so when shit hits the fan, your brain doesn&#8217;t treat it like a five-alarm catastrophe.</p><p>Try this: Pick a current problem or deployment you&#8217;re working on. Now imagine you&#8217;re looking at it from a year from now. How big does it seem? What actually mattered about how you handled it? It probably wasn&#8217;t whether you panicked, it was whether you solved it.</p><p>Do this weekly. Build that muscle memory. Because when the real crisis hits, you want that zoom-out to be automatic, not something you have to remember to do while your hands are shaking.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>What This Actually Looks Like in Practice</strong></h2><p>Let me tell you about how this plays out in real life. I&#8217;ve always looked at troubleshooting as one of those things where you get so locked in that nothing else matters. Once you&#8217;ve zoomed out and gained that perspective, you can zoom back in with clarity instead of dread.</p><p>You approach the problem with what I call &#8220;calm urgency.&#8221; You&#8217;re moving fast, but you&#8217;re not moving in panic. You&#8217;re checking logs, reviewing recent changes, verifying assumptions. Your brain isn&#8217;t wasting cycles on &#8220;what if I get fired&#8221; because you&#8217;ve already dealt with that noise.</p><p>Things break. They will break at the most inopportune times, that&#8217;s kind of how it works. But how you respond matters way more than the fact that something broke.</p><p>Every senior developer you work with has taken down production at least once. The difference between them and the junior who&#8217;s currently freaking out isn&#8217;t that they never make mistakes. It&#8217;s that they&#8217;ve learned to separate the problem from the panic.</p><h2><strong>The Bigger Picture</strong></h2><p>This view from above thing, it&#8217;s not just about production incidents. It&#8217;s about how we approach challenges in general.</p><p>We live in an industry that moves fast, where stakes feel high, where impostor syndrome is practically a job requirement. It&#8217;s easy to catastrophize. It&#8217;s easy to treat every bug like it&#8217;s a referendum on your competence.</p><p>But you&#8217;re not building life-saving medical equipment (unless you are, in which case, maybe panic a little). You&#8217;re solving problems. Some are small. Some are big. All of them are solvable.</p><p>The view from above doesn&#8217;t dismiss your problems. It gives you the space to solve them without drowning in self-inflicted drama.</p><p>So next time production goes down and your heart starts racing, remember: zoom out, see the real stakes, then zoom back in and fix the damn thing. Your future self will thank you.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;It&#8217;s not what happens to you, but how you react to it that matters.&#8221; - Epictetus</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Your Comfort Zone Is Destroying Your Career]]></title><description><![CDATA[The uncomfortable truth about staying relevant in a field that never stops moving]]></description><link>https://thestoiccoder.michaelclawrence.com/p/your-comfort-zone-is-destroying-your</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/your-comfort-zone-is-destroying-your</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 30 Nov 2025 12:45:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I506!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I506!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I506!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!I506!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!I506!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!I506!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I506!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png" width="1200" height="672.5274725274726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1966989,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/180273513?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I506!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!I506!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!I506!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!I506!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c2645-aab5-425b-9f47-3480b601a17d_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You&#8217;ve been writing React for three years. You know the patterns. You&#8217;ve got your component library memorized. Pull requests practically write themselves at this point. You&#8217;re comfortable.</p><p>That comfort? It&#8217;s the problem.</p><p>Here&#8217;s what &#8220;too comfortable&#8221; actually looks like: You haven&#8217;t touched a language outside JavaScript in two years. Your terminal commands are limited to npm install and git push. When someone mentions systems programming or database internals, you zone out because &#8220;that&#8217;s not my job.&#8221; You rely on your IDE and AI assistant for everything, including shit you used to know cold.</p><p>And then one day, your entire lane disappears.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/your-comfort-zone-is-destroying-your?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/your-comfort-zone-is-destroying-your?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Thing Nobody Tells You About Tech Careers</strong></h2><p>I started heavy into Flash development. Made good money. Got really damn good at it. Then I jumped ship before Adobe even got involved, convinced that .NET was the smart long-term play. Microsoft platform. Enterprise dominance. This was supposed to be the safe bet, the career move that would set me up for decades.</p><p>And you know what? It worked. For a while. But here&#8217;s the kicker: even the &#8220;safe&#8221; enterprise tech evolves. .NET today looks nothing like the .NET I bet my career on. The entire paradigm shifted: cloud, containers, cross-platform, open source. If I&#8217;d stayed comfortable with what I knew in those early years, I&#8217;d be just as obsolete as if I&#8217;d stuck with Flash.</p><p>That&#8217;s how technology works. The framework you&#8217;re betting your career on right now? Give it five years. Maybe less. React won&#8217;t last forever. Neither will whatever comes after it. Even the supposedly stable enterprise platforms transform into something unrecognizable.</p><p>The Stoics had a practice called voluntary discomfort, deliberately choosing hardship to build resilience. Seneca slept on a hard floor. Cato walked barefoot in winter. They weren&#8217;t masochists. They were training for the inevitable moment when comfort wouldn&#8217;t be an option.</p><p>For developers, our version isn&#8217;t physical. It&#8217;s that Rust codebase you&#8217;ve been avoiding. That systems programming deep dive that feels too hard. That open-source contribution where you&#8217;ll look like a beginner again. That infrastructure project where you don&#8217;t know what the hell you&#8217;re doing.</p><p>The question isn&#8217;t whether discomfort is coming. It&#8217;s whether you&#8217;ll choose it on your terms or let career stagnation choose it for you.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/your-comfort-zone-is-destroying-your/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/your-comfort-zone-is-destroying-your/comments"><span>Leave a comment</span></a></p><h2><strong>What Controlled Discomfort Actually Looks Like</strong></h2><p>This isn&#8217;t about randomly throwing yourself at every new framework that hits Hacker News. It&#8217;s about strategic discomfort that compounds into real capability.</p><p><strong>Tackle unfamiliar codebases.</strong> Pick a project in a language you don&#8217;t know. Not to become an expert, but to remember what learning feels like. That humiliation of being the worst person in the room again? That&#8217;s where growth lives. It kills the toxic ego that convinces you you&#8217;re too senior to struggle with basic syntax.</p><p>I deal with legacy codebases constantly. Code I didn&#8217;t write, decisions I don&#8217;t understand, patterns that make me want to throw my laptop. It&#8217;s easy to blame whoever came before. But adapting to unfamiliar code, especially code that challenges your assumptions, is one of the most valuable skills you can build.</p><p><strong>Side project the scary stuff.</strong> Better to struggle with Kubernetes on a side project than during a production incident at 2 AM. Even if you think you&#8217;ll never need it, if it sounds interesting or intimidating, try it. I can&#8217;t count how many times some random thing I played with on the side translated into a job requirement or helped me solve a problem I didn&#8217;t see coming.</p><p>You don&#8217;t need to become a DevOps engineer. You need to understand enough to not be helpless when your comfort zone doesn&#8217;t have the answer.</p><p><strong>Context switch deliberately.</strong> Set up a weekly practice: one afternoon working in a language or domain outside your main stack. Doesn&#8217;t matter what. The discomfort of constant context switching is exactly what makes you valuable. Specialists are great until their specialty becomes obsolete. Developers who can move between stacks, pick up new tools without melting down, and contribute even when they&#8217;re not the expert? Those are the people who survive industry shifts.</p><p>I&#8217;ve watched developers get locked into a single mindset, a single field. When the industry moved on, they couldn&#8217;t. Not because they weren&#8217;t smart, but because they&#8217;d lost the ability to be uncomfortable.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>The Payoff Nobody Talks About</strong></h2><p>Small discomforts compound into massive confidence. That intimidating PR you forced yourself to submit in an unfamiliar codebase? It makes the next scary thing less scary. Then the next one. Then suddenly you&#8217;re the person who can jump into anything without panic.</p><p>Here&#8217;s a real example: At my current gig, most developers want absolutely nothing to do with our payments system. It&#8217;s complex, it&#8217;s high-stakes, and screwing it up has real consequences. So when the opportunity came up, I jumped on it. Not because I knew what I was doing, but because nobody else wanted to touch it.</p><p>My goal wasn&#8217;t to become the payments guru overnight. It was to learn as much as possible and provide the value that was needed. And you know what happened? I became the go-to person for something critical that everyone else avoided. That&#8217;s not bragging, that&#8217;s what happens when you&#8217;re willing to be uncomfortable while everyone else runs the other direction.</p><p>Market value flows to the uncomfortable. Companies don&#8217;t pay top dollar for developers who can only work in their exact comfort zone. They pay for people who can handle whatever gets thrown at them.</p><p>Controlled failure is cheaper than real failure. Way cheaper. Every time you struggle with something on a side project, you&#8217;re building muscle memory for when it actually matters.</p><h2><strong>The Alternative Isn&#8217;t Pretty</strong></h2><p>You know what happens to developers who stay comfortable? They get comfortable right into obsolescence. Their skills rust. The industry moves. And when they finally need to learn something new. Not because they want to, but because they have to: they&#8217;ve forgotten how.</p><p>They scramble. They panic. They realize they&#8217;ve been coasting for so long that the basic act of struggling with new concepts feels impossible.</p><p>That&#8217;s the real career killer. Not lack of talent. Not bad luck. Just years of choosing comfort over growth until comfort is all you know.</p><h2><strong>Start Small, Start Monday</strong></h2><p>You don&#8217;t need to overhaul your entire career this week. Pick one thing that makes you uncomfortable. One language you&#8217;ve been avoiding. One type of problem you&#8217;ve been delegating. One codebase that intimidates you.</p><p>Spend two hours with it. Not to master it. Just to remember what it feels like to not know what you&#8217;re doing.</p><p>Then do it again next week. And the week after.</p><p>It&#8217;s on you to take ownership of your career and the decisions you make. Your company won&#8217;t do it. Your manager won&#8217;t do it. If there&#8217;s stagnation in your learning, that&#8217;s on you to fix.</p><p>The good news? Staying uncomfortable means this career never gets old. Even if you&#8217;re stagnant at your current job, you don&#8217;t have to be stagnant in learning and building skills.</p><p>Discomfort today prevents desperation tomorrow. That&#8217;s the deal. Choose your hard now, or have it chosen for you later.</p><p>I know which one I&#8217;d rather deal with.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;Difficulties strengthen the mind, as labor does the body.&#8221; - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Stop Waiting for Perfect]]></title><description><![CDATA[Your Comfort Zone is Killing Your Career]]></description><link>https://thestoiccoder.michaelclawrence.com/p/stop-waiting-for-perfect</link><guid isPermaLink="false">https://thestoiccoder.michaelclawrence.com/p/stop-waiting-for-perfect</guid><dc:creator><![CDATA[Michael Lawrence]]></dc:creator><pubDate>Sun, 23 Nov 2025 12:45:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I_Rl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I_Rl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I_Rl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!I_Rl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!I_Rl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!I_Rl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I_Rl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1294011,&quot;alt&quot;:&quot;A weathered hourglass with sand actively flowing, positioned on a modern developer's desk with a mechanical keyboard and multiple monitors displaying code in the background,&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thestoiccoder.michaelclawrence.com/i/179675623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A weathered hourglass with sand actively flowing, positioned on a modern developer's desk with a mechanical keyboard and multiple monitors displaying code in the background," title="A weathered hourglass with sand actively flowing, positioned on a modern developer's desk with a mechanical keyboard and multiple monitors displaying code in the background," srcset="https://substackcdn.com/image/fetch/$s_!I_Rl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!I_Rl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!I_Rl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!I_Rl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc24516ab-5b39-4417-a6c7-ee7ae25db833_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generated by Midjourney</figcaption></figure></div><p>You know that side project you&#8217;ve been planning for two years? The one where you&#8217;ve got the domain name, a Trello board full of features, and maybe even a half-finished wireframe buried in your files somewhere? Yeah, that one. The React developer portfolio that&#8217;ll showcase your skills. The SaaS idea that could actually work. The blog where you&#8217;ll share everything you&#8217;ve learned.</p><p>It&#8217;s still sitting there, isn&#8217;t it? Right next to &#8220;learn Rust,&#8221; &#8220;contribute to open source,&#8221; and &#8220;finally understand machine learning beyond copying TensorFlow examples.&#8221;</p><p>Here&#8217;s the thing nobody wants to hear: you have maybe 40 productive coding years if you&#8217;re lucky. And you&#8217;ve already used some of them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-waiting-for-perfect?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-waiting-for-perfect?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2><strong>The Math Nobody Wants to Do</strong></h2><p>Let&#8217;s talk about time, because the Stoics were obsessed with it for a good reason. They called it Memento Mori: remember you must die. Sounds dark as hell, but it&#8217;s actually the most liberating concept you can internalize as a developer.</p><p>If you&#8217;re 30, you have fewer working years ahead than behind. At 40, the math gets brutal fast. Not because you&#8217;re washed up but because time is the one resource you can&#8217;t earn back, can&#8217;t refactor, and can&#8217;t optimize with a clever algorithm.</p><p>That career pivot you&#8217;re waiting for? That application to the dream company you&#8217;re putting off? That conference talk you&#8217;ll submit &#8220;next year&#8221;? The clock&#8217;s ticking whether you&#8217;re watching it or not.</p><p>I&#8217;m not saying this to be depressing. I&#8217;m saying it because awareness of death isn&#8217;t depressing, it&#8217;s liberating. It obliterates the illusion that you have infinite time to become who you want to be.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/p/stop-waiting-for-perfect/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/p/stop-waiting-for-perfect/comments"><span>Leave a comment</span></a></p><h2><strong>The &#8220;Someday&#8221; Trap</strong></h2><p>Take Sarah. She&#8217;s been a backend .NET developer for eight years. Good at it, too. But she&#8217;s been talking about pivoting to machine learning since 2021. She&#8217;s got bookmarks saved. She bought three Udemy courses on sale. She even started one, got through the first two sections before &#8220;work got busy.&#8221;</p><p>Every year, she tells herself this is the year. She&#8217;ll carve out the time. She&#8217;ll work through the math. She&#8217;ll build the portfolio projects. And every year, December rolls around and she&#8217;s in the exact same spot, just one year older.</p><p>Someday is a place you&#8217;ll never arrive.</p><p>That&#8217;s the brutal truth. That app idea, that technical blog, that conference talk proposal: they die with you unless you start before you&#8217;re ready.</p><p>Every sprint you&#8217;re not learning, you&#8217;re not just standing still. You&#8217;re falling behind.</p><p>Technology moves whether you do or not. The junior dev who started learning Go two years ago while you were &#8220;waiting for the right time&#8221;? They just got the job you were thinking about applying for.</p><p>Standing still is moving backwards.</p><h2><strong>The Perfect Moment is a Lie</strong></h2><p>You&#8217;re waiting for the perfect moment, right? When work calms down. When you&#8217;ve saved up more. When you feel more confident. When you have fewer responsibilities.</p><p>You&#8217;ll never have more energy, fewer responsibilities, or better circumstances than right now. That&#8217;s just reality.</p><p>It&#8217;s easy to procrastinate. Hell, it&#8217;s the default mode for most of us. We tell ourselves we&#8217;ll start tomorrow, next week, after this project ships, after the holidays, when things settle down. But once we get to that &#8220;next day,&#8221; there&#8217;s more stuff on our plate. Now it becomes even harder to start, even easier to procrastinate.</p><p>Think about it. You put off learning that new framework because you&#8217;re busy with work stuff. Next month rolls around, and now you&#8217;ve got work stuff PLUS that production bug that won&#8217;t die PLUS your manager wants you to mentor the new junior PLUS your spouse is planning a vacation. The responsibilities don&#8217;t decrease, they compound.</p><p>The moment you&#8217;re thinking about making a change, about doing something drastic, about taking that leap? That&#8217;s exactly when you need to do it. Not when it&#8217;s convenient. Not when you&#8217;re ready. Now.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Stoic Coder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://thestoiccoder.michaelclawrence.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Stoic Coder</span></a></p><h2><strong>When Impostor Syndrome Meets Mortality</strong></h2><p>We&#8217;ve all got impostor syndrome. Every developer I know has that voice whispering &#8220;Who are you to apply for that senior role? You barely understand Docker. Real developers don&#8217;t Google basic syntax.&#8221;</p><p>But impostor syndrome loses its power when you hold it up against mortality.</p><p>&#8220;What if I fail?&#8221; becomes trivial compared to &#8220;What if I never try and run out of time?&#8221;</p><p>Do you want to be the developer who plays it safe for 40 years and retires with a resume full of maintenance work on legacy systems? Or do you want to look back and know you actually went for the things that scared you?</p><p>You don&#8217;t want to live with regrets. You don&#8217;t want to be 55, sitting in yet another sprint planning meeting, thinking &#8220;I could have built that startup. I could have learned that specialty. I could have become a tech lead if I&#8217;d just applied.&#8221; The &#8220;what could have been&#8221; is a special kind of torture.</p><h2><strong>Your Job is Not Forever (And That&#8217;s Actually Good)</strong></h2><p>Let&#8217;s talk about that comfortable salary. That job where you know the codebase, the team likes you, and the work is... fine. Not exciting, not challenging, but safe. The benefits are good. The 401k match is decent. Why rock the boat?</p><p>Here&#8217;s why: that comfortable job at your company might not exist in five years.</p><p>I&#8217;m not trying to freak you out, but look around. How many developers do you know who got comfortable, stopped learning, stopped growing, and then got blindsided by a layoff? They thought they&#8217;d coast to retirement at BigCorp, and BigCorp decided to &#8220;restructure&#8221; or &#8220;pivot&#8221; or whatever euphemism they&#8217;re using this quarter.</p><p>Comfort is a trap. It feels great in the moment, like sinking into a warm bath after a long day. But that same warmth that relaxes you can make you soft. And in tech, getting soft is dangerous.</p><p>We have no control over layoffs, over market shifts, over some executive deciding your entire department is getting outsourced. What we DO control is staying sharp. Keeping one foot out the door. Always looking at that five-year plan, hell, even a two-year plan.</p><p>A job is transactional. You&#8217;re trading your time and skills for salary and benefits. That&#8217;s it. It doesn&#8217;t define your worth. It doesn&#8217;t determine your identity. It&#8217;s what you&#8217;re doing now, not who you are.</p><p>The senior developer who spent ten years at the same company, doing the same type of work, never learning anything new? When that job ends, and it will end, they&#8217;re screwed. They&#8217;ve traded their growth years for comfort, and now they&#8217;re competing with developers half their age who have twice their curiosity.</p><p>Don&#8217;t be that person.</p><h2><strong>Five Years Pass Whether You Ship or Not</strong></h2><p>Here&#8217;s a thought experiment: think back five years. What were you working on? What were your goals? What were you planning to learn?</p><p>Now look at where you are today. Did those five years move you closer to who you want to be? Or did they just happen to you while you were busy being comfortable?</p><p>Because the next five years are going to pass whether you ship something or not. You can spend them wishing you&#8217;d started that project, built that skill, made that pivot. Or you can spend them actually doing it.</p><p>Death makes mediocrity unacceptable. When you truly internalize that this is your one life. Not a practice run, not a rough draft. Tolerating work you hate becomes impossible.</p><p>We only get one shot at this. It doesn&#8217;t make any sense to wait until tomorrow, wait until next year, wait until you feel ready.</p><h2><strong>So What Do You Actually Do?</strong></h2><p>If you really want to make a change, here&#8217;s what it takes:</p><p>Look at what you hate about your current situation. Not the surface stuff&#8212;not &#8220;I don&#8217;t like my manager&#8221; or &#8220;meetings suck.&#8221; Dig deeper. What&#8217;s actually keeping you up at night? What&#8217;s making you browse job boards at lunch?</p><p>Then look at what you&#8217;d need to change it. Not everything at once. Not the perfect plan. Just the next step.</p><p>Want to pivot from frontend to backend? Stop buying courses you won&#8217;t finish. Spend this weekend building one API. Just one. Make it terrible. Make it work. Then make another one.</p><p>Want to escape that toxic job? Stop complaining to your coworkers and update your LinkedIn. Like, actually update it. Today. Then apply to three places. Any three. Even if you think you&#8217;re not qualified. Especially if you think you&#8217;re not qualified.</p><p>Want to build that side project? Stop planning and write one function. Then another. Then another. Who cares if the architecture&#8217;s wrong? You can refactor later. You can&#8217;t refactor code that doesn&#8217;t exist.</p><p>The Stoics had this concept right: understanding that our time is finite shouldn&#8217;t paralyze us. It should energize us. Every day you wake up is another chance to move toward who you want to become.</p><p>You have to take those steps. You have to make those reps count. Because we only get one shot at this.</p><p>And once it&#8217;s done, it&#8217;s done.</p><div><hr></div><p><strong>Quote of the Day:</strong></p><blockquote><p>&#8220;It is not that we have a short time to live, but that we waste a lot of it. Life is long enough, and a sufficiently generous amount has been given to us for the highest achievements if it were all well invested.&#8221; - Seneca</p></blockquote><div><hr></div><p>&#128073; If you enjoy reading this post, feel free to share it with friends!</p><p>Or feel free to click the &#10084;&#65039; button on this post so more people can discover it on Substack &#128591;</p><p>You can find me on <a href="https://x.com/michael_c_law">X</a> and <a href="https://www.instagram.com/michael_c_law/">Instagram</a>.</p><p>Also, I just launched a new YouTube channel - <a href="https://www.youtube.com/@CodeAndComposure">Code &amp; Composure</a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thestoiccoder.michaelclawrence.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Stoic Coder is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>