<?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[At the Terminal Prompt]]></title><description><![CDATA[Notes about building software, engineering management, and leadership. By João Alves]]></description><link>https://newsletter.terminalprompt.com</link><image><url>https://substackcdn.com/image/fetch/$s_!CeRq!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3530cc-82ba-4dd2-9264-1c548c741813_1280x1280.png</url><title>At the Terminal Prompt</title><link>https://newsletter.terminalprompt.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Apr 2026 07:25:25 GMT</lastBuildDate><atom:link href="https://newsletter.terminalprompt.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[João Alves]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[joaoqalves@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[joaoqalves@substack.com]]></itunes:email><itunes:name><![CDATA[João Alves]]></itunes:name></itunes:owner><itunes:author><![CDATA[João Alves]]></itunes:author><googleplay:owner><![CDATA[joaoqalves@substack.com]]></googleplay:owner><googleplay:email><![CDATA[joaoqalves@substack.com]]></googleplay:email><googleplay:author><![CDATA[João Alves]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Should managers become hands-on again?]]></title><description><![CDATA[Why engineering leaders can&#8217;t afford to stay away from the terminal]]></description><link>https://newsletter.terminalprompt.com/p/should-managers-become-hands-on-again</link><guid isPermaLink="false">https://newsletter.terminalprompt.com/p/should-managers-become-hands-on-again</guid><dc:creator><![CDATA[João Alves]]></dc:creator><pubDate>Wed, 18 Feb 2026 15:56:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Bejb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Technology is undergoing a structural shift, and leadership blind spots at this moment are extremely costly. The role of a CTO or VP of Engineering is to detect inflection points early, understand their real impact beyond the hype, and decide where to place informed bets.</p><blockquote><p><strong>X</strong>: Jo&#227;o, the CTO and senior leaders have a huge cost of opportunity. Is this the best use of their time?</p><p><strong>J</strong>o&#227;o:  Everything has an opportunity cost. What I expect from a CTO or VP of Engineering is the ability to analyze the environment, make informed bets, and evaluate their returns. In the end, no one has the absolute truth.</p></blockquote><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bejb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bejb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png 424w, https://substackcdn.com/image/fetch/$s_!Bejb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png 848w, https://substackcdn.com/image/fetch/$s_!Bejb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png 1272w, https://substackcdn.com/image/fetch/$s_!Bejb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bejb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png" width="598" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:598,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:292101,&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://newsletter.terminalprompt.com/i/188357119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bejb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png 424w, https://substackcdn.com/image/fetch/$s_!Bejb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png 848w, https://substackcdn.com/image/fetch/$s_!Bejb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.png 1272w, https://substackcdn.com/image/fetch/$s_!Bejb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55cd2073-06bf-47c8-9cff-5eb66af7d361_598x960.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">Is it the best use of time of a CEO/CTO to ship code in the AI era? Tobi L&#252;tke, Shopify&#8217;s CEO, thinks YES. <a href="https://x.com/elkelk/status/2023476571315814729">Source</a>.</figcaption></figure></div><p>AI-assisted development is changing the economics of building software. The relevant question is whether enough of what we&#8217;re seeing is true to materially impact productivity, speed, cost structure, and competitive advantage. If even part of it holds, delegating the exploration entirely becomes a strategic risk. So&#8230; what am I seeing in the environment?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.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">Thanks for reading At the Terminal Prompt! Subscribe for free to receive new posts and support my work.</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><h1>People are going back to hands-on</h1><p>Even the ones that, for years, didn&#8217;t ship a product or line of code. Those who try it report &#8220;fantastic&#8221; results. As a senior engineering leader, I&#8217;d ask myself:</p><blockquote><p>Damn! how much of this is actually true? If even half of it is real, what impact would it have on my teams? How could it help the business?</p></blockquote><p>That alone should trigger an investigation. And when I say investigate, I mean two things:</p><ol><li><p><strong>Build things outside</strong>: greenfield (Replit, Lovable, v0&#8230; or Claude Code + OSS). This gives you a picture of what&#8217;s possible without major constraints.</p></li><li><p><strong>Build things inside:</strong> with constraints (environment, data living in cloud accounts, access, security, legacy, etc.). This gives you a picture of what&#8217;s possible in <em>my</em> enterprise.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8ndJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8ndJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 424w, https://substackcdn.com/image/fetch/$s_!8ndJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 848w, https://substackcdn.com/image/fetch/$s_!8ndJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 1272w, https://substackcdn.com/image/fetch/$s_!8ndJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8ndJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png" width="690" height="289" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/deb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:289,&quot;width&quot;:690,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58125,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.terminalprompt.com/i/188357119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8ndJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 424w, https://substackcdn.com/image/fetch/$s_!8ndJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 848w, https://substackcdn.com/image/fetch/$s_!8ndJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 1272w, https://substackcdn.com/image/fetch/$s_!8ndJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeb521bb-149a-47c7-9de7-9ac084f49aaa_690x289.png 1456w" sizes="100vw" loading="lazy"></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">Tobi L&#252;tke, CEO of Shopify, a 150B company, discusses how AI is helping him ship software again. <a href="https://x.com/tobi/status/2009311882553765914">Source</a>.</figcaption></figure></div><p>Both perspectives provide a delta between what is possible and how far you can go. That diff should become a vector for action. <strong>Even if the productivity gain were just 5%, at scale it would be massive</strong>.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/should-managers-become-hands-on-again?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading At the Terminal Prompt! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/should-managers-become-hands-on-again?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/p/should-managers-become-hands-on-again?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h1>To inspire change like this, you have to share</h1><p>What better than sharing that you fixed a bug, noticed DevEx could be improved, and opened a PR? It doesn&#8217;t have to be something ultra-critical in production. It could be an unmet business need that, as CTO, you know is burning. Or a tool for customer support.</p><p>The act of sharing makes people think:</p><blockquote><p>Wow&#8230; this must be important. This must be a game changer. If even my CTO/VP of Engineering &#8212; with a thousand meetings &#8212; is doing this, I&#8217;d better step up</p></blockquote><h1>Leadership at terminal speed</h1><p>Many of the &#8220;AI wow&#8221; reports &#8212; including mine &#8212; are based on people opening terminals and running prompts between meetings. </p><p>It&#8217;s not that you stop doing your job. It&#8217;s that during the time you might have spent reading an article, you&#8217;re feeding prompts and watching things move at a speed you&#8217;ve never seen before. And on top of that, you&#8217;re supposed to know how to parallelize, delegate, and evaluate decisions. The shift is so massive that you can&#8217;t delegate it to a consultancy company.</p><p>It&#8217;s not enough to just have champions inside the company. You have to lead it. It&#8217;s like people working at newspapers in 1997 who didn't use the Internet. But with one aggravating factor: the speed &#8212; precisely because of the Internet &#8212; is 20x faster. The adaptation window is much smaller, and each day you don&#8217;t get inside it, the gap widens.</p><p>Think about a 200-person org: 1 CTO, 4&#8211;6 directors, 40 teams. For change to reach critical mass, it must pass through at least four layers of indirection. At least. By the time it trickles down organically, the window may already be closing.</p><p>Now, thinking about all of the above: what priority do you give this vs 1:1s / coaching vs budget? vs strategy?</p><p>So the real question isn&#8217;t whether managers should become hands-on again, but rather whether they can afford not to.</p><p>&#8212; Jo&#227;o</p>]]></content:encoded></item><item><title><![CDATA[Software in a post-abundance world]]></title><description><![CDATA[Why AI changes teams, labor, and capital at the same time]]></description><link>https://newsletter.terminalprompt.com/p/software-in-a-post-abundance-world</link><guid isPermaLink="false">https://newsletter.terminalprompt.com/p/software-in-a-post-abundance-world</guid><dc:creator><![CDATA[João Alves]]></dc:creator><pubDate>Wed, 28 Jan 2026 17:08:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pfOX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few days ago, I wrote about how AI is making <a href="https://world.hey.com/joaoqalves/when-software-becomes-fast-food-23147c9b">software become </a><em><a href="https://world.hey.com/joaoqalves/when-software-becomes-fast-food-23147c9b">fast food</a></em>. Code is becoming cheap, judgment is becoming the bottleneck, and value is shifting away from writing toward deciding, integrating, and operating. The reactions were interesting as many people seemed to recognize the shift without yet having a clear model for it.</p><p>Shortly after publishing it, I read <a href="https://chrisloy.dev/post/2025/12/30/the-rise-of-industrial-software">another article</a> that addressed the same issue from a different angle. Where my piece leaned more on careers and value concentration, this one stepped back and looked at industrial revolutions, disposable software, and what happens when production scales faster than stewardship.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.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">Thanks for reading At the Terminal Prompt! Subscribe for free to receive new posts and support my work.</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>Both texts start from the same observation. We can now generate far more software, far faster. That part is already visible. The more interesting effects appear later, once that abundance collides with markets, organizations, and incentives that were designed for scarcity.</p><div><hr></div><h1>Why did we have big teams?</h1><p>For most of software&#8217;s history, large teams existed for structural reasons. Translating business complexity into working systems was expensive in terms of cognitive effort. Operating those systems reliably over time incurred additional costs. Dividing the work across people and teams was the only way to manage that load, even if it introduced coordination overhead and organizational drag.</p><p>But technical necessity is only half the story. The last decade has introduced a powerful economic incentive to rapidly expand teams. The <a href="https://www.investopedia.com/articles/investing/031815/what-zero-interestrate-policy-zirp.asp">zero-interest-rate period</a> (ZIRP), combined with abundant venture capital (VC), rewarded speed and scale over efficiency. Hiring became a way to buy time, maintain feature parity with competitors, and signal momentum. Ultimately, hiring also became a way to preempt rivals rather than out-execute them.</p><p>Speaking with <a href="https://x.com/sdepablos">Sergi</a>, I also agree with his take. In many companies, headcount growth was just as much about dividing cognitive load as about keeping up. If your competitor had three teams on a problem, you staffed four. That&#8217;s how roadmaps expanded, and scope creep was everywhere. Sometimes, it is because users demanded it and are driven by the fear of missing out (FOMO).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!84Bl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!84Bl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 424w, https://substackcdn.com/image/fetch/$s_!84Bl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 848w, https://substackcdn.com/image/fetch/$s_!84Bl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 1272w, https://substackcdn.com/image/fetch/$s_!84Bl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!84Bl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png" width="741" height="726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f94875ca-25fb-43bd-af2b-98babbde715f_741x726.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:726,&quot;width&quot;:741,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140318,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.terminalprompt.com/i/186062869?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!84Bl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 424w, https://substackcdn.com/image/fetch/$s_!84Bl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 848w, https://substackcdn.com/image/fetch/$s_!84Bl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 1272w, https://substackcdn.com/image/fetch/$s_!84Bl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff94875ca-25fb-43bd-af2b-98babbde715f_741x726.png 1456w" sizes="100vw" loading="lazy"></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">Sergi de Pablos, Yaba&#8217;s CTO, discusses the impact of AI flows in software teams. <a href="https://x.com/sdepablos/status/2016433459602878665">Source</a>.</figcaption></figure></div><p>Hiring also occurred in bulk, and we observed entire teams added at once. And what happens when you do that? Exactly, talent density drops, and you end up with a myriad of processes to cope with scale. Team organization followed familiar patterns: let&#8217;s do microservices everywhere, layers of managers, and so on. What worked for a few successful companies was widely copied, often without the underlying constraints remaining the same. The result was more bureaucracy, more politics, and steadily decreasing marginal output per new hire.</p><p>None of this was irrational at the time. Capital was cheap,  growth was rewarded, and efficiency could wait. The issue is that when software production becomes cheaper and faster, the justification for large teams weakens. Not all at once, and not everywhere, but enough to matter. <strong>The economic environment no longer rewards carrying excess coordination costs just to keep pace</strong>. Feature parity becomes easier to reach with fewer people, and the old incentives start to flip.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/software-in-a-post-abundance-world?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading At the Terminal Prompt! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/software-in-a-post-abundance-world?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/p/software-in-a-post-abundance-world?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h1>Efficiency, margins, and labor economics</h1><p>Efficiency spreads faster than culture. As more teams adopt similar AI tooling and practices, any initial advantage disappears and becomes the baseline. New competitors form faster. Existing ones reorganize. The supply of &#8220;good enough&#8221; software is growing rapidly, particularly in horizontal products and undifferentiated SaaS offerings.</p><p>This is where the shift stops being technical and starts being economic. Once feature parity becomes cheap, pricing power weakens. Margins begin to erode. Not everywhere and not uniformly, but enough to matter. Companies with strong data moats, network effects, or regulatory constraints still have defenses. Many Web 2.0 incumbents sit here. They have users, data, and distribution that newcomers cannot easily replicate.</p><p>But those advantages mainly buy time. If these companies continue to operate with cost structures, team sizes, and incentive models designed for a world in which software was expensive to produce, they become vulnerable from within. Disruption rarely comes from rebuilding the same product slightly better. It stems from a different operating model: fewer people, tighter feedback loops, less coordination, and greater tolerance for disposable output.</p><p>As margins compress, the effects cascade: we&#8217;ll see smaller teams become the norm, training pipelines shorten, and fewer hiring risks. <strong>If roles become easier to substitute, then compensation follows</strong>. Deep expertise still matters, especially where failure is costly, but the long tail becomes less differentiated. This is not a sudden collapse. It is a gradual pressure that accumulates quarter after quarter.</p><p>At the same time, owning larger domains introduces a different cost that is easy to underestimate. With fewer teams covering broader systems, the blast radius of mistakes increases. Operational risk, security concerns, and regulatory requirements drive organizations toward stronger internal platforms, guardrails, and governance frameworks. Coordination does not disappear, but gets transformed into a more centralized and formalized form.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pfOX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pfOX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pfOX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pfOX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pfOX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pfOX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg" width="1024" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87739,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.terminalprompt.com/i/186062869?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pfOX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pfOX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pfOX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pfOX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ef06bf-aed9-419a-bda2-cc549b680408_1024x559.jpeg 1456w" sizes="100vw" loading="lazy"></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">The interesting part is not any single step, but how they compound once efficiency becomes the baseline. Image generated with Gemini/NanoBanana.</figcaption></figure></div><p>The system ends up leaner in headcount, but heavier in constraints. This is the second-order pattern that keeps repeating: <strong>cheaper software enables nimbler teams &#8594; nimbler teams increase competition &#8594; competition compresses margins &#8594; compressed margins reshape labor economics and organizational design</strong>. None of these steps is dramatic in itself. Together, they change the industry&#8217;s equilibrium.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h1>On disposable software</h1><p>Disposable software is not merely a technical choice but also a financial one. There are growing classes of software where low expectations of longevity make sense. Internal tools, experiments, one-off agents, and workflow automations often exist to be replaced. In those cases, lower production costs change the calculus in a positive way.</p><p>Other systems do not benefit from that treatment. Software that touches money, identity, safety, or compliance accumulates risk over time. Maintenance, ownership, and long-term understanding remain critical, regardless of how cheap the initial code was to produce.</p><p>As output increases, responsibility becomes more diffuse. Dependency chains grow. Maintenance costs remain hidden until they manifest as incidents. Technical debt behaves less like a backlog item and more like an environmental problem, building quietly and affecting everything downstream.</p><div><hr></div><h1>Where the next disruption comes from</h1><p>I think the next disruption won&#8217;t come from software engineers working in isolation or from incumbents slowly layering AI onto existing processes. It will arise from close partnerships between software engineers and subject-matter experts. People who understand the incentives, constraints, and pathologies of an industry and can redesign workflows from first principles.</p><p>Law is a good example. Many law firms still operate on a billable-hours model that rewards inefficiency. Partner structures, risk aversion, and legacy processes make meaningful change from within difficult. A strong engineer, paired with a lawyer who deeply understands how legal work actually occurs, can reimagine the system end-to-end. Not just automate documents, but change how value is delivered, priced, and operated.</p><p>The same pattern applies elsewhere, including accounting, insurance, and healthcare administration. Compliance-heavy industries where software was never the primary bottleneck, but where it also couldn&#8217;t realistically attack the core of the work.</p><p>That constraint is changing. It is not just large language models. It is AI-first systems more broadly: agents, retrieval pipelines, long-running workflows, and systems that can observe, reason, act, and iterate. Together, they enable work across millions of documents, contracts, emails, and records in ways that were previously impractical. They are good at mapping unstructured human input into structured systems, coordinating multi-step processes, and encoding domain logic directly into operational flows.</p><p>In Law, this means navigating case histories, contracts, and precedents at a scale no junior team could. In accounting and insurance, it means translating messy reality into systems of record with far less manual glue and back-and-forth.</p><p>The incentives were broken before. Now the tooling is finally strong enough to expose how broken they are. Cheap code lowers the cost of attacking those incentives. AI-first systems reduce the cost of understanding the domain sufficiently to redesign it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/software-in-a-post-abundance-world?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://newsletter.terminalprompt.com/p/software-in-a-post-abundance-world?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h1>Capital flows leverage</h1><p>As margins compress in pure software, capital reallocates. VCs thrive on asymmetry. When software production becomes cheap and competition intense, volume alone no longer creates outsized returns. What matters is leverage: control over scarce resources, real-world constraints, or deeply embedded workflows.</p><p>This is why investment increasingly concentrates in contexts in which AI reshapes physical or institutional systems rather than merely improving digital ones, across healthcare, manufacturing, logistics, and defense. In these domains, software does not just optimize processes. It changes cost structures, labor models, and regulatory dynamics.</p><p>In parallel, <strong>more capital is flowing into robotics, biotechnology, and other hard-tech domains</strong>, where software amplifies physical capabilities rather than replacing them. These areas absorb complexity rather than abstracting it away, which makes them harder to copy and slower to commoditize.</p><p>Pure software remains important. But its role in producing venture-scale asymmetry narrows. The winners are less likely to be the teams that generate the most code and more likely to be those that combine software, domain expertise, and operating leverage in ways that are difficult to replicate.</p><p>This capital shift reinforces everything upstream. Lower margins in software push salaries down. Lower salaries and cheaper tooling enable more entrants. More entrants increase competition. And the cycle tightens.</p><div><hr></div><h1>Final thoughts</h1><p>What&#8217;s changing is not just how software is built, but what kind of behavior the system rewards.</p><p>For a long time, the industry optimized for growth under conditions of scarcity: scarce engineers, expensive production, and abundant capital. That combination justified large teams, extensive coordination, and substantial inefficiency. It worked because the environment enabled it.</p><p>That environment is fading. When software becomes cheap to produce and easier to replace, some assumptions quietly cease to hold. Team size is no longer a proxy for progress. Headcount stops being a moat. Speed alone stops being enough. Many structures that made sense under ZIRP-era economics start to feel heavy.</p><p>The pressure doesn&#8217;t show up as a single breaking point. It appears as a series of small adjustments: teams become leaner, roles become more dynamic, and hiring gets more cautious. Disposable output becomes normal in some areas, while expectations rise sharply in others. The gap between &#8220;good enough&#8221; and &#8220;critical&#8221; software widens.</p><p>At the same time, leverage shifts. Greater value is placed on who can integrate software with domain knowledge, real-world constraints, and durable operating models, rather than on who can produce the most code. That is where capital, talent, and influence start to cluster.</p><p>None of this means software becomes less important. If anything, it becomes more embedded everywhere. But it does mean the industry looks less like a gold rush and more like an economy.</p><p>The question going forward is not whether AI will accelerate software. That is already happening. The question is which parts of the system adapt their incentives quickly enough, and which ones continue to optimize for a world that no longer exists.</p><p>&#8212; Jo&#227;o</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.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">Thanks for reading At the Terminal Prompt! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[Tech Lead antipatterns]]></title><description><![CDATA[Five ways a Tech Lead loses impact without realizing it]]></description><link>https://newsletter.terminalprompt.com/p/tech-lead-antipatterns</link><guid isPermaLink="false">https://newsletter.terminalprompt.com/p/tech-lead-antipatterns</guid><dc:creator><![CDATA[João Alves]]></dc:creator><pubDate>Tue, 20 Jan 2026 12:58:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GXJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a sentence I have heard far too many times from Tech Leads (TLs). For this article, we will talk about Cristian (a fictional name): </p><blockquote><p>I already raised my concerns. If they chose to ignore them, that&#8217;s on them.</p></blockquote><p>Cristian probably said this in a meeting, wrote it down in a document, and explained it on Slack, with context and arguments. And still, the team, or other Staff Engineers, architects, etc., went in a different direction or did nothing.</p><div><hr></div><p>This article is a translation of the &#8220;<a href="https://enespanol.joaoqalves.net/p/antipatrones-de-un-tech-lead">Antipatrones de un Tech Lead</a>&#8221; &#127466;&#127480; published last week.</p><div><hr></div><p>From the inside, this feels like frustration. From the outside, it often looks like noise. Most TLs do not end up in this situation due to neglect or poor judgment. They get there because they care, they see risks, and they feel responsible for both the system and the team. That is precisely why this situation hurts so much.</p><p>Here is a distinction that is hard to accept: <strong>saying what you think is not exercising technical leadership</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GXJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GXJA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GXJA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GXJA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GXJA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GXJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1423007,&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://newsletter.terminalprompt.com/i/185159266?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GXJA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GXJA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GXJA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GXJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbfc9c92-abd7-4d42-affc-3cbf9b381a32_1024x1024.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">Between being right and moving the team, there is an ocean of difference. Image generated with Gemini 3 / NanoBanana.</figcaption></figure></div><p>Being right, warning about risks, or having sound judgment is not enough. And when a TL feels the needle isn&#8217;t moving, they start compensating. That is where antipatterns appear. Not as obvious failures or bad intentions, but as reasonable responses to real frustration that builds up when good judgment does not move anything.</p><p><strong>Note</strong>: at this point, the plan was to talk about five antipatterns. Then <a href="https://www.linkedin.com/in/fabi%C3%A1n-sell%C3%A9s-rosa-37108b27/">Fabi&#225;n</a>, a Tech Lead and reviewer of the tech lead series, pointed out one more. He was right. So this starts at #0. I want to thank him for reviewing the article.</p><div><hr></div><h1>#0 The one who does not exercise the role</h1><p>Before the visible antipatterns, there is often another, less obvious one. Sometimes there is no friction or visible conflict. The team delivers, meetings happen, and decisions are made. That is precisely why the situation goes unnoticed for far too long.</p><p>The problem is not what happens today, but what does not happen. Nobody is looking at the system as a whole, pushing a clear technical direction, nor turning local decisions into global coherence.</p><p>This often happens when the previous TL leaves, and no one truly fills that space. Or when the most senior engineer inherited the title without redefining the role. Or during rapid growth phases, when the highest producer is promoted because &#8220;they already know the system.&#8221;</p><p>In the daily work, the TL is present but does not provide direction. They do not push principles, do not anticipate risks, and do not articulate technical decisions beyond the immediate. They neither block nor unblock. It is not that they make poor decisions. They simply do not decide.</p><p>The effect is not immediate. Each engineer starts optimizing their own area. Decisions are made locally, and judgment fragments. Then, when a structural problem appears, nobody feels responsible for owning it.</p><p>This is often confused with autonomy, but it is actually a void. The team does not depend on the TL, but it also does not grow around a shared direction. It moves forward, but without accumulating judgment or long-term speed.</p><div><hr></div><h1>#1 Opinions with no ownership</h1><p>There is a very recognizable moment when this antipattern starts. Cristian keeps participating in conversations, pointing out risks and offering judgment.</p><p>Cristian starts to take refuge in a comforting idea: &#8220;<em>I already did my part.</em>&#8221; He shared his opinion, left a record, and warned about the risks. If the decision goes wrong, it will not be due to a lack of warning. That reasoning is understandable, but dangerous.</p><p>From that point on, Cristian stops making decisions and limits himself to issuing diagnoses. His judgment is still good, but it no longer creates movement. He is present in the conversation, but not in the outcome.</p><p>That gap between how Cristian sees himself and how he starts to be perceived often surfaces in uncomfortable conversations. Sometimes in a 1:1:</p><blockquote><p><strong>J</strong>o&#227;o<strong>:</strong> Hey, how do you think the team is doing lately?</p><p><strong>C</strong>ristian<strong>:</strong> Fine. More or less the same as always. I already said what I thought about the latency issue and the new design. If they end up deciding something else&#8230;</p><p><strong>J:</strong> Right. The issue is that, from the outside, it can feel like you have a lot of opinions, but you are not really pushing for anything specific.</p><p><strong>C:</strong> What do you mean I&#8217;m not pushing? I&#8217;ve been warning about the risks for weeks.</p><p><strong>J:</strong> Sure, but warning about risks isn&#8217;t the same as leading a decision. The team leaves those meetings knowing what you don&#8217;t agree with, but not knowing what you would do differently or what you are actually willing to prioritize to change it.</p><p><strong>C:</strong> &#8230; <em>[he looks upset]</em></p><p><strong>J:</strong> I&#8217;m not saying this as a criticism. Your judgment is solid. But right now your opinion isn&#8217;t helping the team make decisions faster. If anything, it leaves them in limbo.</p></blockquote><p>Over time, two things happen:</p><ul><li><p>On one hand, <strong>decisions are made </strong><em><strong>despite</strong></em><strong> Cristian</strong>, not <em>with</em> Cristian. His opinion is heard, but it loses weight. On the other hand, frustration grows because he feels his judgment changes nothing</p></li><li><p>At this point, <strong>the role begins to degrade</strong> without anyone explicitly deciding to do so. By assuming his responsibility ends at giving an opinion, Cristian reduces his impact without realizing it. His judgment stops being a lever and becomes just another comment.</p></li></ul><p>This is usually the first step. When having opinions stops working, the temptation is to compensate in other ways. That is where the rest of the problems start to appear.</p><div><hr></div><p>&#128075; Hi, I am Jo&#227;o. This is the fourth post of a series designed for Tech Leads and Engineering Managers who want to lead with greater clarity and intention.</p><ul><li><p>&#8220;<a href="https://world.hey.com/joaoqalves/traits-of-a-good-tech-lead-b5cac0ae">Traits of a good Tech Lead</a>&#8221;</p></li><li><p>&#8220;<a href="https://world.hey.com/joaoqalves/i-m-a-tech-lead-and-nobody-listens-to-me-what-should-i-do-e16e454d">I&#8217;m a Tech Lead, and nobody listens to me. What should I do?</a>&#8221;</p></li><li><p>&#8220;<a href="https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead">Operational Excellence, the Tech Lead lever</a>&#8221;</p></li><li><p>&#8220;Antipatterns of a Tech Lead&#8221; &#8592; This article</p></li><li><p>To be continued&#8230;</p></li></ul><p>I&#8217;m currently writing &#8220;The Tech Lead Handbook&#8221;, scheduled for release in H1 2026. The ideas in this series will form its core.</p><p><strong>If you join the waitlist, you will receive a 25% launch discount</strong>. More than 100 tech leads and engineering managers already joined!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/forms/d/e/1FAIpQLSdfwzIRNfOd7d1hwFOxaP2xEZVO2aIu0LbRwrVQ6942sqwOyw/viewform&quot;,&quot;text&quot;:&quot;Join the waitlist&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/forms/d/e/1FAIpQLSdfwzIRNfOd7d1hwFOxaP2xEZVO2aIu0LbRwrVQ6942sqwOyw/viewform"><span>Join the waitlist</span></a></p><div><hr></div><h1>#2 The TL as a bottleneck</h1><p>If opinions stop working, the next step seems logical: doing. Cristian no longer limits himself to pointing out problems; he is now getting more involved, reviewing more things, and being part of more decisions. Not because he wants control, but because he wants things to go well.</p><p>At first, it works. Decisions improve, and risks decrease. Incidents go down. The team breathes. It can even look like effective leadership.</p><p>But there is a trap. More and more decisions go through Cristian. More and more context lives in his head. More and more conversations wait for his validation to move forward. Without realizing it, Cristian becomes the point through which everything must pass.</p><p>The team adapts quickly. It learns which decisions can be made independently and which cannot. It learns when it is worth waiting and when it is not. And little by little, it stops deciding at the edges.</p><p>From Cristian&#8217;s perspective, day-to-day work becomes exhausting. He is always busy. There is always something urgent or someone waiting. And still, the underlying feeling is that the system is not speeding up.</p><p>Here is the paradox: the more Cristian tries to unblock the team, the more he slows it down. The signals usually appear late:</p><ul><li><p>Pull requests waiting for review &#8220;when Cristian has time&#8221;</p></li><li><p>Technical decisions were  postponed because &#8220;we need to check with him&#8221;</p></li><li><p>Incidents nobody dares to close without his sign-off</p></li></ul><p><strong>When the TL becomes a bottleneck, the problem stops being technical. It becomes systemic.</strong> The team has externalized decision-making, and the organization has concentrated risk in a single person.</p><p>And the worst: Cristian is becoming indispensable. And that, far from being a strength, is a fragility. The more the team depends on him to decide and move forward, the less time Cristian has for <a href="https://world.hey.com/joaoqalves/lessons-from-two-failed-promotions-and-what-changed-after-zirp-d8de7b30">N+1</a> work. Improving the system, reducing uncertainty, or creating the conditions for others to make better decisions. His calendar fills with urgencies, and the role stops scaling.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.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">Thanks for reading At the Terminal Prompt! Subscribe for free to receive new posts and support my work.</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><div><hr></div><h1>#3 Judgement lives in the TL&#8217;s head</h1><p>One day, someone asks, &#8220;Are we doing things the right way?&#8221; and nobody knows how to answer without looking at Cristian. Review becomes his center of gravity. Pull requests, designs, and implementation details go through him. Not because the team is insecure, but because there is no clear reference for what &#8220;done right&#8221; means without his approval.</p><p>Cristian reviews with good intentions. He wants to maintain quality and avoid mistakes. But feedback starts to vary depending on context, timing, or how tired he is that day. Something acceptable yesterday is questioned today. What is tolerated in one service is debated in another.</p><p>The team learns quickly. There are no explicit rules. You have to wait and see what Cristian says. And here something subtle but very damaging happens: <strong>people stop thinking about the best solution and start thinking about what will pass review</strong>. They take fewer risks, propose fewer alternatives, and ask more than necessary.</p><p>The problem is not that there are standards. It is that they are not written or shared. They live in his head and only surface during review. While Cristian is around, the system works. When he is not, the team hesitates.</p><div><hr></div><p>&#127873; <strong>Does this sound familiar? It is not a coincidence</strong></p><p>Many of these antipatterns appear when judgment is not explicit, and the team does not share a definition of &#8220;what good looks like.&#8221;</p><p>To help move out of this, I have prepared a free alignment toolkit with practical tools already used by other teams:</p><ul><li><p>For <strong>Tech Leads</strong>: a self-assessment traffic light to identify where you are adding value and where you are becoming, unintentionally, a bottleneck.</p></li><li><p>For <strong>Engineering Managers</strong>: an evaluation traffic light to give feedback based on observable behaviors, not gut feelings.</p></li><li><p>For the <strong>team</strong>: an operational principles template to take judgment out of the TL&#8217;s head and stop debating the same decisions every week.</p></li></ul><p><strong>Note</strong>: If you are already subscribed and previously requested the toolkit, you will find it in the same document.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/survey/5757022?token=&quot;,&quot;text&quot;:&quot;Download the EM/TL toolkit&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/survey/5757022?token="><span>Download the EM/TL toolkit</span></a></p><div><hr></div><p><strong>The more time Cristian spends reviewing, the less time he has to do the work that would truly help the team grow.</strong> Clarifying principles, reducing ambiguity, and building a system that works without his constant presence. Review replaces clarity.</p><div><hr></div><h1>#4 The hero</h1><p>Let&#8217;s be clear: Cristian does not wake up one day wanting to be a hero. He simply starts to notice that there are situations where his presence makes a difference.</p><p>He realizes that, in the most complex problems, people usually rely on him. Those delicate decisions wait until he is around. And that is when something goes well, it often passes through his hands.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Warm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Warm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Warm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Warm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Warm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Warm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1640105,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.terminalprompt.com/i/185159266?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Warm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Warm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Warm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Warm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa80ea4f6-ddb9-449c-9a0a-4e429bdf743e_1024x1024.png 1456w" sizes="100vw" loading="lazy"></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">The hero is everywhere, but has a limited impact. Image generated with Gemini 3 / NanoBanana.</figcaption></figure></div><p>That feels good. It is confirmation that his work matters. In a role where impact is not always visible, that feeling carries more weight than it seems.</p><p>Little by little, Cristian starts leaning on it. <strong>His professional identity becomes tied to being present, to being the one who unblocks, to being the one who &#8220;saves&#8221; the situation when things get complicated</strong>. Delegating becomes uncomfortable. Not because he distrusts the team, but because it means disappearing a bit from the center of the action.</p><p>Documenting decisions gets postponed. Giving others space to lead an initiative creates a discomfort that is hard to explain. There is no clear intention to hoard anything. He is simply always there, just in case.</p><p>The system keeps working, but it starts to work around him. Meanwhile, Cristian&#8217;s role stops evolving. The next level requires the opposite. Accepting that many things work without his direct involvement, giving up the spotlight, and measuring impact differently.</p><p>This is the point where growth stalls, because all important work depends on being present. Cristian stays busy, useful, and visible, but with less and less room to redefine his role.</p><p>The problem starts with confusing impact with presence. And when that happens, the TL stops growing.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/tech-lead-antipatterns?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading At the Terminal Prompt! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/tech-lead-antipatterns?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/p/tech-lead-antipatterns?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h1>#5 Winning all the arguments while losing the team</h1><p>This antipattern does not start with conflict or a heated discussion. It starts with a sense of calm. Meetings get shorter, decisions seem to flow, and conversations close quickly. Cristian presents his point of view and, most of the time, nobody challenges it. Everything can even look aligned and efficient.</p><p>Inside the team, however, something has changed. Alternatives are becoming increasingly rare, and uncomfortable questions are rarely raised. Not because they do not exist, but because the conversation&#8217;s outcome feels predictable. The team implicitly learns what is worth debating and what is not. Cristian is not aware of this change. To him, things simply work better than before. The first time he hears it framed this way is in a conversation he did not expect:</p><blockquote><p><strong>J:</strong> There&#8217;s something I&#8217;ve been thinking about for a few weeks and wanted to run by you. The team barely talks anymore, right? Meetings are very quiet.</p><p><strong>C:</strong> And is that a bad thing? Moving fast can be a good sign too.</p><p><strong>J:</strong> Sometimes, yes. The problem is when that calm doesn&#8217;t come from clarity, but from assuming the discussion is already over before it even starts.</p><p><em>[Cristian looks confused]</em></p><p><strong>C:</strong> I don&#8217;t think anyone is holding back.</p><p><strong>J:</strong> It&#8217;s not that they&#8217;re holding back. They know how the conversation is going to end. And when that happens, people stop bringing alternatives.</p><p><strong>C:</strong> &#8230;</p><p><strong>J:</strong> You have strong judgment, and the team respects it. But right now it feels like your point of view carries so much weight that it takes up almost all the space.</p><p><em>[Cristian nods slowly]</em></p><p><strong>J:</strong> When a team stops thinking out loud, something gets lost. And it usually happens without anyone noticing.</p></blockquote><p>The team keeps delivering, and everything appears to work. But it no longer thinks out loud. Responsibility for decisions gets diluted, and engagement becomes more superficial. Execution is good, but questioning is rare.</p><p><strong>Winning all the arguments has a cost. When the TL becomes, even unintentionally, the only voice that matters, the role ceases to fulfill its purpose</strong>. Because technical leadership is not about always being right, but about creating the space for others to develop judgment too.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h1>When the TL takes too much space</h1><p>When rereading these antipatterns, there is a temptation to think of them as &#8220;mistakes.&#8221; They are not. Most of them, <em>au contraire</em>, appear because of involvement, judgment, and a real sense of responsibility when the system and the team seem to be heading toward danger.</p><p>The problem is that when a TL feels their voice does not move anything, they start compensating with behavior. They push opinions harder, get involved in everything, and review more. In short, they become indispensable and, unintentionally, take up so much space that the team stops thinking out loud.</p><p>If there is one thing that connects all these scenarios, it is this: technical leadership is not measured by how many times you were right, but by how much judgment and autonomy the team around you gains.</p><p>And here is the uncomfortable question worth asking from time to time, especially when you catch yourself saying &#8220;I already said it&#8221;: Am I helping the team depend less on me, or am I building a system that only works when I am there?</p><p>&#8212; Jo&#227;o</p><p></p>]]></content:encoded></item><item><title><![CDATA[Operational Excellence, the Tech Lead lever]]></title><description><![CDATA[How KPIs, SLIs, and SLOs turn uncertainty into sustainable delivery]]></description><link>https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead</link><guid isPermaLink="false">https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead</guid><dc:creator><![CDATA[João Alves]]></dc:creator><pubDate>Tue, 13 Jan 2026 14:21:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AGnL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>I like your article, but you do not talk about KPIs, SLOs&#8230;</p></blockquote><p>This was part of Fabi&#225;n&#8217;s feedback on the first article in the Tech Lead (TL) series. And he was right. The uncomfortable question was missing: how do we know if we are doing well?</p><p>If you are a Tech Lead, you will eventually be asked for &#8220;more speed&#8221;. More features. More projects. More impact. And in parallel, you will see more incidents. More alert noise. More uncertainty. More time wasted investigating things that &#8220;should not happen&#8221;.</p><p>You can have good judgment and push for quality standards. But <strong>if you cannot measure the state of the system or its real operating cost, you are flying blind</strong>. And when you&#8217;re blind, everything turns into endless discussions: &#8220;I think it is fine&#8221;, &#8220;this has always been this way&#8221;, etc. For me, that is exactly what operational excellence prevents.</p><p><strong>Operational excellence is the team&#8217;s ability to deliver value sustainably, without degrading user trust</strong>, without burning out the team, and without every incident resetting the counter. It is a discipline, not a project.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.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">Thanks for reading At the Terminal Prompt! Subscribe for free to receive new posts and support my work.</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><h1>Different metrics, different intentions</h1><p>The first step is to separate by intention. If you mix intentions, you end up with pretty dashboards and zero decisions.</p><h2>KPIs</h2><p>Let us start by separating concepts. Key Performance Indicators (KPIs) are not only business metrics. There are business KPIs &#8212; conversion, retention, revenue, adoption &#8212; and internal team KPIs (lead time, deployment frequency, incident volume, cost per request, on-call noise). Both matter. But they answer different questions.</p><ul><li><p>Business KPIs show whether the organization is getting value.</p></li><li><p>Internal KPIs show the operational and human costs associated with that value.</p></li></ul><p>A Tech Lead primarily operates at this second layer. Not because they ignore the business, but because their lever is making the technical system sustainable as the business grows.</p><h2>SLIs or &#8220;how is the system behaving&#8221;?</h2><p>A <strong>Service Level Indicator</strong> (SLI) is an observable measure of how your service behaves. Typical examples:</p><ul><li><p>Availability (successful requests vs. total).</p></li><li><p>Latency (p50, p95, p99).</p></li><li><p>Error rate (by type, endpoint, or cause).</p></li><li><p>Data freshness (queues, batch jobs, replication)</p></li><li><p>Saturation (CPU, memory, connection pools, queues, rate limits).</p></li></ul><p>SLIs describe reality. They do not tell you whether that reality is acceptable.</p><p></p><h2>SLOs or &#8220;what does &#8216;good enough&#8217; look like to users?&#8221;</h2><p>A Service Level Objective (SLO) is an explicit target on an SLI over a time window. For example:</p><blockquote><p><strong>Over 30 days, 99.9% of checkout</strong> flow requests must complete successfully in <strong>under 300 milliseconds</strong>.</p></blockquote><p>SLOs are a form of contract. Not legal. Operational. A statement of &#8220;this is what we guarantee as a team&#8221;. One important point: SLOs are not binary. It is not about &#8220;pass or fail&#8221;. This is where the key concept comes in: error budgets.</p><p>If your SLO is 99.9%, you are explicitly accepting that 0.1% of requests may fail or be slow in that window. That failure is allowed by design, not an accident. As long as consumption of that budget is under control, the system is &#8220;within SLO&#8221;, even if incidents occur. An incident does not automatically mean you are out of budget. </p><h3>A good negotiation tool</h3><p>In my experience, most friction among Tech Leads (TL), Engineering Managers (EM), and Product Managers (PM) stems from the same place: a lack of a shared definition of &#8220;good&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AGnL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AGnL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 424w, https://substackcdn.com/image/fetch/$s_!AGnL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 848w, https://substackcdn.com/image/fetch/$s_!AGnL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 1272w, https://substackcdn.com/image/fetch/$s_!AGnL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AGnL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png" width="657" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png&quot;,&quot;srcNoWatermark&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21387c41-e63b-4fe0-8a14-e8174b5da80c_657x392.png&quot;,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:657,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43994,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.terminalprompt.com/i/184434049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21387c41-e63b-4fe0-8a14-e8174b5da80c_657x392.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AGnL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 424w, https://substackcdn.com/image/fetch/$s_!AGnL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 848w, https://substackcdn.com/image/fetch/$s_!AGnL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 1272w, https://substackcdn.com/image/fetch/$s_!AGnL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cdc3c37-c3c6-419e-8f37-bea1eedd8f71_657x392.png 1456w" sizes="100vw" loading="lazy"></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">Each role has its own definition. For an EM, it is sustained delivery at the team level. For a PM, delivery timing. For a TL, solution sustainability.</figcaption></figure></div><p>All three are valid. The problem is that without a mechanism, the discussion becomes political. SLOs and error budgets are part of that mechanism. If consumption is low, the team has room to take risks, ship changes, and push new features. If the error budget burns quickly, it is a clear signal to stop, stabilize, and pay down debt.</p><p>From a Tech Lead&#8217;s perspective, SLOs and error budgets are among the most powerful levers for negotiating speed, scope, and quality without relying on opinions or hierarchy.</p><p>They do not remove hard conversations, but give them structure instead. </p><h1>It&#8217;s all about reducing uncertainty</h1><p>Here is the key part for a Tech Lead: operational excellence is not &#8220;being an SRE&#8221; or &#8220;living in Grafana&#8221;. It is about designing an operating system for the team that minimizes uncertainty.</p><p>A TL leads operational excellence when they make it possible to:</p><ul><li><p>Detect problems quickly</p></li><li><p>Diagnose with less guesswork</p></li><li><p>Mitigate in a repeatable way</p></li><li><p>Learn for real, not through incident reviews nobody executes</p></li><li><p>Keep the on-call load sustainable</p></li><li><p>Make trade-offs using data</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>&#128075; Hi, I am Jo&#227;o. This is the third post of a series designed for Tech Leads and Engineering Managers who want to lead with greater clarity and intention.</p><ul><li><p>&#8220;<a href="https://world.hey.com/joaoqalves/traits-of-a-good-tech-lead-b5cac0ae">Traits of a good Tech Lead</a>&#8221;</p></li><li><p>&#8220;<a href="https://world.hey.com/joaoqalves/i-m-a-tech-lead-and-nobody-listens-to-me-what-should-i-do-e16e454d">I&#8217;m a Tech Lead, and nobody listens to me. What should I do?</a>&#8221;</p></li><li><p>&#8220;Operational Excellence, the Tech Lead lever&#8221; &#8592; This article</p></li><li><p>To be continued&#8230;</p></li></ul><p>I&#8217;m currently writing &#8220;The Tech Lead Handbook&#8221;, scheduled for release in H1 2026. The ideas in this series will form its core.</p><p><strong>If you join the waitlist, you will receive a 25% launch discount</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/forms/d/e/1FAIpQLSdfwzIRNfOd7d1hwFOxaP2xEZVO2aIu0LbRwrVQ6942sqwOyw/viewform&quot;,&quot;text&quot;:&quot;Join the waitlist&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/forms/d/e/1FAIpQLSdfwzIRNfOd7d1hwFOxaP2xEZVO2aIu0LbRwrVQ6942sqwOyw/viewform"><span>Join the waitlist</span></a></p><div><hr></div><h1>What should they lead? What should they influence?</h1><p>Clarity matters here. Otherwise, the TL tries to cover everything, becoming a bottleneck.</p><h2>The TL should lead</h2><ul><li><p><strong>Definition of SLIs and SLOs</strong> that represent user experience, not vanity metrics</p></li><li><p><strong>Alerting philosophy</strong>: alert on user-visible symptoms, not internal causes</p></li><li><p><strong>Minimum instrumentation</strong>: logs, traces, metrics, and diagnostic standards</p></li><li><p><strong>Incident hygiene</strong>: clear runbooks, contextual alerts, and structured incident reviews</p></li><li><p><strong>Cadence</strong>: regular review of SLOs and resulting actions</p></li></ul><h2>The TL should influence</h2><ul><li><p>Error budget policy and its impact on the roadmap, with PM and EM</p></li><li><p>Prioritization between reliability and new features, with EM and PM</p></li><li><p>Definition of technically measurable KPIs, not &#8220;wishful&#8221; ones, with PM</p></li><li><p>Investment in tooling, with EM and the relevant platform team, if applicable</p></li></ul><h2>The TL should not carry alone</h2><ul><li><p>On-call rotations and guardrails, owned by EM</p></li><li><p>External communication, roadmap decisions, and product narrative, owned by PM</p></li><li><p>Cross-org agreements and political negotiation with other stakeholders, owned by EM or PM, depending on context</p></li></ul><p>The TL participates in everything. But does not own everything.</p><div><hr></div><h1>Different team archetypes, the same role</h1><p>So far, I have talked about KPIs, SLIs, and SLOs in fairly abstract terms. In practice, their design depends heavily on the type of team you are in. More precisely: where is the team&#8217;s center of gravity?</p><p>Pure teams are rare. Most operate somewhere in between. Even with the <em><a href="https://teamtopologies.com/">Team Topologies</a></em> framework, what usually changes is not the team type but its center of gravity. Some teams lean toward building and operating platforms. Others toward delivering direct product value. The framework is the same. The focus changes.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading At the Terminal Prompt! This post is public, so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2>Platform teams</h2><p>In platform teams &#8212; cloud infrastructure, shared components, multi-tenant services &#8212; your primary user is usually another team. That changes how you define &#8220;good&#8221;.</p><p>Let&#8217;s start with SLIs and SLOs. A globally aggregated SLI often hides real problems. You need visibility at the tenant, cluster, or logical partition level.</p><p>Support is also an explicit part of the service. Time to first response or resolution can be a perfectly valid SLO. The same applies to documentation and self-serve capabilities. They reduce tickets, interruptions, and uncertainty. They are part of reliability.</p><p>In this context, the KPIs that give a TL the most leverage are usually <strong>internal and operational</strong>:</p><ul><li><p>Number of active teams or integrations</p></li><li><p>Ticket volume and deflection capacity</p></li><li><p>Unit cost per request, tenant, or key operation</p></li><li><p>Operational noise: recurring incidents, alerts, and on-call load</p></li></ul><p>These KPIs do not directly measure business success. They measure whether the platform scales sustainably as the organization grows.</p><h3>Common antipattern</h3><p>Optimizing stability and cost without a clear signal of adoption or real value for user teams. The system works, but nobody uses it. Operational excellence without impact is also debt.</p><h2>Product teams</h2><p>In product teams &#8212; teams that ship and maintain user-facing features &#8212; the focus shifts to end-user experience.</p><p>Here, SLOs such as availability should not be defined at the service or endpoint level, but at the critical flow level: search, checkout, publish, book. Average latency matters little if the key funnel step is slow or failing. Correctness is also defined at the business level. An HTTP 200 is useless if the result is wrong.</p><p>This does not mean product teams lack internal KPIs. They exist and matter. From a TL perspective, two layers coexist.</p><p>On one side, <strong>internal operational KPIs</strong>:</p><ul><li><p>Incident count and severity</p></li><li><p>Alert noise and on-call load</p></li><li><p>Lead time, deployment frequency, and production failures, for example, <a href="https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance">DORA</a> metrics</p></li><li><p>Operational cost per request or per user</p></li></ul><p>On the other side, <strong>product-adjacent technical signals</strong>:</p><ul><li><p>Crash-free sessions.</p></li><li><p>Performance by device, version, or segment.</p></li><li><p>Functional errors that do not surface as obvious technical failures.</p></li></ul><p>These internal KPIs do not replace business KPIs. But they constrain them. If the system is slow, unstable, or expensive to run, conversion, retention, and experimentation will degrade over time, even if it is not obvious at first.</p><p>Here, role boundaries matter. The PM owns the outcome. The TL ensures the system can pursue it without breaking.</p><h3>Common antipattern</h3><p>Optimizing conversion and experimentation while internal KPIs degrade. At first, everything looks fine. Then velocity collapses, and every change costs twice as much.</p><h2>The common point</h2><p>Regardless of the center of gravity, the Tech Lead&#8217;s job is the same: define what &#8220;good&#8221; means, measure it honestly, and turn those signals into decisions.</p><p>What changes is not the TL role, but where operational excellence has the biggest impact.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h1>A simple system that works</h1><p>Most teams do not fail due to a lack of metrics, but because those do not change any decisions. Not because metrics are missing, but because they do not influence real work. The key is not the tool or the level of sophistication. It is closing the loop: <strong>measure, decide, act</strong>.</p><p>In practice, teams that do this well share a pattern: few well-chosen indicators, explicit objectives, and a regular cadence to turn signals into decisions. This usually means:</p><ul><li><p><strong>A small set of SLIs</strong> that represent real system behavior</p></li><li><p><strong>One or two SLOs</strong> per critical flow</p></li><li><p>Alerts that indicate real <strong>user-facing degradation</strong></p></li><li><p>A clear rule for what to do when that happens</p></li><li><p><strong>Regular reviews</strong> that turn into concrete actions</p></li></ul><div><hr></div><p>&#127873; <strong>Do you want to apply this to your team?</strong></p><p>Throughout the article, I have discussed KPIs, SLIs, and SLOs, and how to use them to make better decisions. But the difference is not understanding the concepts. It is putting them to work day to day. For that, I prepared two practical templates that I use with teams:</p><ul><li><p>Define KPIs, SLIs, and SLOs, and make &#8220;good&#8221; explicit in your context.</p></li><li><p>Monthly review to turn metrics into real decisions, not dashboards.</p></li></ul><p>They are not theoretical frameworks or universal recipes. They are simple artifacts to close the loop: measure, decide, act.</p><p><strong>Subscribe and fill out the form to receive them. Free.</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/survey/5757022?token=&quot;,&quot;text&quot;:&quot;Download SLI, SLO and monthly review guide&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/survey/5757022?token="><span>Download SLI, SLO and monthly review guide</span></a></p><p><strong>Note</strong>: If you already requested access to the EM/TL alignment toolkit, this is not a new download. The KPI, SLI, and SLO templates, along with the monthly review, are part of the same document you already have: the toolkit with the self-assessment semaphore that goes together with the 90-day plan for Tech Leads.</p><div><hr></div><h1>Operational excellence is how you buy velocity</h1><p>Going back to what I learned at mytaxi, something simple stuck with me: <strong>being right is not very useful if you cannot move the team</strong>. And moving the team is not about explaining things better. It is about changing the frame in which decisions are made.</p><p>When you work with well-defined SLIs, SLOs, and KPIs, you stop asking for faith and arguing over gut feelings. You start operating with a system that makes trade-offs visible and decisions easier.</p><p>That is, for me, one of the biggest contributions of a Tech Lead: turning fuzzy conversations into repeatable decisions, and repeatable decisions into sustainable speed.</p><p>Because the goal was never fewer incidents for technical pride. The goal is to deliver value consistently, without burning out the team, and without living with the feeling that any Monday at 9 a.m., everything could blow up.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading At the Terminal Prompt! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/p/operational-excellence-the-tech-lead?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p><p>&#8212; Jo&#227;o</p>]]></content:encoded></item><item><title><![CDATA[AI won't break your company, but pretending nothing changed will]]></title><description><![CDATA[How CTOs should rethink teams, delivery, and leadership in an AI-native world]]></description><link>https://newsletter.terminalprompt.com/p/ai-wont-break-your-company-but-pretending</link><guid isPermaLink="false">https://newsletter.terminalprompt.com/p/ai-wont-break-your-company-but-pretending</guid><dc:creator><![CDATA[João Alves]]></dc:creator><pubDate>Fri, 09 Jan 2026 09:21:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CeRq!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3530cc-82ba-4dd2-9264-1c548c741813_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You are the Chief Technology Officer (CTO) of a company with more than 100 engineers. You have rolled out ChatGPT, Gemini, GitHub Copilot, Claude Code, and whatever else looked reasonable at the time. If you are honest, you do not really know what value this is creating beyond some anecdotal productivity wins. </p><p>What do you do next? This is the question many CTOs will be forced to answer in 2026. The pressure is only increasing, driven by both real technological change and hype. Even if you ignore what you read on X, which is a distorted signal at best, there is one consistent pattern: people who actually use AI agents to build software, not those who just talk about them, tend to be genuinely impressed. Work that used to take quarters can now be compressed into days.</p><p>That shift has second-order effects that most organizations are not prepared for.</p><h1>What changed?</h1><h2>Writing code was never the bottleneck</h2><p>We have known for years that, in large companies, the main bottleneck is not writing code. It is coordination, handovers, and organizational complexity. However, AI changes the shape of that problem.</p><p>If you can compress creation so dramatically, and if maintenance also becomes cheaper, a difficult question follows naturally: <strong>Do you really need the same number of people to achieve the same outcomes?</strong></p><p>A significant part of delivery friction stems from the organization&#8217;s scale, not from the technical challenge. Over the past decade, many companies have optimized for <em>vertical ownership</em>. Teams were structured to take problems end-to-end into production. This worked well until the problems became large enough to require splitting across teams. At that point, gray areas emerged &#8212; am I owning this or is team B? &#8212;, along with coordination overhead.</p><h2>Why org design matters more than tools</h2><p><strong>If a smaller team can cover a larger domain, you reduce handovers and coordination costs</strong>. In greenfield environments, this is already obvious. That is why many new companies are born lean. The harder question is what to do with ten existing teams and a large legacy surface area.</p><p>The first thing to internalize is that adding people does not linearly speed up delivery. The &#8220;<a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month">Mythical man-month</a>&#8221; &#8212; nine women do not give birth to nine babies in one month &#8212; still applies. This observation leads directly to the next step.</p><div><hr></div><h1>What can I do as a CTO?</h1><h2>#1 Shift capacity towards Developer Experience</h2><p>If teams can handle increased scope and LLMs introduce <a href="https://varoa.net/2025/04/07/ai-generated-code.html">new constraints in Continuous Integration (CI), Continuous Deployment (CD), observability, and operations</a>, <strong>there is a clear opportunity to reallocate talent</strong>. Product engineers can be moved toward platform and developer experience work, with the explicit goal of increasing business throughput rather than building &#8220;nice&#8221; infrastructure.</p><p>This only works if it is measured properly. Deployment frequency, release confidence, and incident rates matter. <a href="https://dora.dev/guides/dora-metrics/">DORA metrics</a> are a solid reference point, even if you cannot implement them perfectly on day one.</p><p><strong>These teams must be AI-native. Today, it is possible to build internal platforms far more cheaply than a few years ago,</strong> and standardization is easier when AI reduces the marginal cost of abstraction and automation.</p><div><hr></div><h2>#2 Get out of your ivory tower</h2><p>Less abstract management. Fewer spreadsheets and OKR decks. More direct exposure: use <strong>AI agents yourself and build something real</strong>. Start from scratch with standard tooling and deploy it. Then, try to build something inside your company&#8217;s existing environment. The contrast is usually instructive.</p><p>Look at the gaps. Count how many steps are manual. Identify how many processes exist simply because &#8220;that is how things work here.&#8221; With AI in the loop, none of this should take very long. If you are technically out of practice, that is a problem you should address directly.</p><p>For example, I&#8217;ve built a few products with AI myself &#8212; end to end &#8212; so I grasp the change we&#8217;re living:</p><ul><li><p>&#8220;<a href="https://github.com/abistama/support-hero">Support Hero</a>&#8221; &#8212; moving tickets from Slack to Jira. I wrote about it <a href="https://world.hey.com/joaoqalves/you-can-just-open-source-things-2c1e2b77">here</a>.</p></li><li><p>&#127466;&#127480; &#8220;<a href="https://menudelcole.com/">Men&#250; del Cole</a>&#8221; &#8212; to get the menus of my kids on my phone, daily.</p></li><li><p>&#8220;<a href="https://rotahog.com/">Rotahog</a>&#8221; &#8212; to solve a problem I had as a manager</p></li><li><p>&#127466;&#127480; &#8220;<a href="https://herramient.as/">Herramient.as</a>&#8221; &#8212; to avoid using free tools full of ads for generating QRs and a few chores.</p></li></ul><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/ai-wont-break-your-company-but-pretending?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading At the Terminal Prompt! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/p/ai-wont-break-your-company-but-pretending?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/p/ai-wont-break-your-company-but-pretending?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h2>#3 Establish a baseline</h2><p>You don&#8217;t need perfection. Track delivered versus delayed initiatives per quarter. Track production deployments and incidents. If you have DORA metrics, use them. If you do not, do not turn this into a six-month transformation project. A lean approach is sufficient to start. Light gamification &#8212; LLM token usage, etc. &#8212; can help early on, but it should not become structural.</p><div><hr></div><h2>#4 Identify your <em>champions</em></h2><p>They already exist inside your organization. They are the people aggressively using AI agents and pushing boundaries. Bring them with you. Use them to help other teams adopt new ways of working. The first team will be the hardest. The next ones will move faster. Always tie the effort to business outcomes. <strong>The goal is not to build the most efficient factory possible, but to deliver things users actually value</strong>.</p><div><hr></div><h2>#5 Be visible in the work</h2><p>People need to see you learning and building. This requires time and deliberate communication. <strong>It is acceptable to temporarily reduce the number of one-on-ones and people management</strong>. It is acceptable to ask managers to spend less time on people management and more on execution. This is a strategic choice aimed at shifting culture. <strong>Show what you have built, explain what improved, and clearly state what you expect from teams</strong>. Use data to validate whether the change is working.</p><div><hr></div><h2>#6 Not everyone will adapt</h2><p>Some people will struggle in this new environment. That is normal. Have an honest plan for them. Set expectations. <strong>Avoid defaulting to low-impact training programs that exist mostly to make leadership feel better.</strong> Some people will leave. In other cases, hard decisions will be required. This is part of leadership&#8217;s responsibility.</p><div><hr></div><h2>#7 Comfort is not a strategy</h2><p>If this entire approach feels too uncomfortable, and your instinct is to optimize change management so everyone feels safe and unchanged, that is a signal. The leadership playbook that worked between 2010 and 2022 no longer fits the current pace of change.</p><p>This does not mean acting recklessly. It means accepting that making stability a primary goal is no longer viable. <strong>If you do not raise the bar and change yourself first, the environment will force the change anyway</strong>. Companies that fail to adapt do not provide long-term safety for anyone.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.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">Thanks for reading At the Terminal Prompt! Subscribe for free to receive new posts and support my work.</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><div><hr></div><h2>#8 Transparency</h2><p>Report back to teams on what is working, what is not, and which practices are evolving. Encourage sharing and reuse.</p><p><strong>At the executive level, speak in terms of ROI and outcomes. What do you gain per &#8364;10k invested in AI tooling?</strong> How does that translate into business impact? Where are the constraints that leadership can help remove?</p><div><hr></div><h2>#9 Systems over heroes</h2><p>If success depends on you, a handful of champions, or a specific moment in time, you are building a trend, not an advantage.</p><p>Decide what becomes standard. Which tools are approved? What changes in senior roles? What does &#8220;doing a good job&#8221; mean in 2026 with AI in the loop? <strong>Encode these decisions in hiring, promotions, performance reviews, and organizational design</strong>. If incentives and rules do not change, the organization will drift back to its previous equilibrium, even if that equilibrium is worse.</p><p>AI will not break your company. Continuing to operate as if nothing fundamental has changed will.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h1>No more excuses</h1><p>None of this is primarily a tooling problem. It is a leadership and organizational design problem. <strong>AI simply removes many of the excuses that previously justified slow feedback loops, oversized teams, and fragile delivery pipelines</strong>.</p><p>The companies that benefit will not be the ones with the most tools, but the ones willing to rethink how work gets done, how teams are shaped, and what is expected from senior roles.</p><p>&#8212; Jo&#227;o</p>]]></content:encoded></item><item><title><![CDATA[Goodbye HEY World, hello Substack]]></title><description><![CDATA[Why I moved my writing, what I was missing, and what to expect next]]></description><link>https://newsletter.terminalprompt.com/p/goodbye-hey-world-hello-substack</link><guid isPermaLink="false">https://newsletter.terminalprompt.com/p/goodbye-hey-world-hello-substack</guid><dc:creator><![CDATA[João Alves]]></dc:creator><pubDate>Thu, 08 Jan 2026 15:02:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yg30!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Note:</strong> You are receiving this because you were subscribed to my writing on HEY World. I&#8217;ve moved to Substack and imported the subscriber list, so you don&#8217;t lose access to future posts. You can unsubscribe at any time.</p><div><hr></div><p>I&#8217;ve been writing on <a href="https://world.hey.com/joaoqalves/">HEY World</a> for a while. It&#8217;s a refreshingly simple way to blog: send an email to world [at] hey dot com, and it becomes an article with an RSS feed people can subscribe to, like a newsletter.</p><p>I enjoyed it enough that I recently imported all my HEY posts into my <a href="https://blog.joaoqalves.net/">own domain</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yg30!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yg30!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png 424w, https://substackcdn.com/image/fetch/$s_!yg30!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png 848w, https://substackcdn.com/image/fetch/$s_!yg30!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!yg30!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yg30!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png" width="1221" height="1036" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1036,&quot;width&quot;:1221,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146670,&quot;alt&quot;:&quot;&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://joaoqalves.substack.com/i/183658222?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!yg30!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png 424w, https://substackcdn.com/image/fetch/$s_!yg30!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png 848w, https://substackcdn.com/image/fetch/$s_!yg30!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!yg30!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12f47b9-7750-4eb4-b5a5-5f055424bade_1221x1036.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">I used Cursor to generate some quick stats about my blog on HEY.</figcaption></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.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">Thanks for reading At the Terminal Prompt! Subscribe for free to receive new posts and support my work.</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><h1>Why changing, then?</h1><p>There are a few reasons I want to change the platform I use to publish content. I want:</p><ol><li><p><strong>A better experience for my writing.</strong> I&#8217;m a heavy user of (good?) formatting, and not being able to use different headings or not having captions for images was a pain. This comes first because I write for myself first. To share my learnings and condense them in a written form.</p></li><li><p><strong>A better experience for my readers</strong>. Substack comes with an app, and it&#8217;s pleasing to read posts here. Other big newsletters, like &#8220;<a href="https://newsletter.pragmaticengineer.com/">The Pragmatic Engineer</a>&#8221; and &#8220;<a href="https://www.scarletink.com/">Scarlet Ink</a>,&#8221; use it. </p></li><li><p><strong>My own domain</strong>. Non-negotiable. The web is increasingly a walled garden, but I still want a way out. Currently, because my posts are imported from &#8220;HEY&#8221; into my domain, I need to state that the &#8220;<a href="https://www.semrush.com/blog/canonical-url-guide/">canonical URL</a>&#8221; is the one in &#8220;HEY&#8221;. Not nice for search engines and discoverability.</p></li><li><p><strong>Features like stats, surveys, and monetization</strong>. I need to understand what my audience is &#8212; even if, again, I write for myself &#8212; where they come from, whether a newsletter mentioned my articles, etc. I also want an easy way to distribute free content to my readers. While Substack does not excel at it, I can do it by creating a survey and letting people subscribe. In &#8220;HEY&#8221;, I need to put a link to a Google Form and import the email after. Bad UX for users, more work for me.</p></li></ol><p>Still, this move is not just about tooling. It changes how I write, how often I publish, and how you read and interact with the content.</p><div><hr></div><h1>What can I expect?</h1><p>As you can see from my blog stats, I&#8217;m not the most consistent writer. That is, in part, because I tend to prefer sprints over marathons and because my brain is wired that way. I&#8217;m trying to change that and force myself to push content out there. You can expect:</p><ul><li><p>Articles about software engineering, tech leadership, and engineering management. I&#8217;m currently writing a series for Tech Leads, paired with a <a href="https://blog.joaoqalves.net/book/">book</a>. So far, I&#8217;ve written two pieces in English:</p><ul><li><p><a href="https://world.hey.com/joaoqalves/traits-of-a-good-tech-lead-b5cac0ae">Traits of a good Tech Lead</a></p></li><li><p><a href="https://world.hey.com/joaoqalves/i-m-a-tech-lead-and-nobody-listens-to-me-what-should-i-do-e16e454d">I&#8217;m a Tech Lead, and nobody listens to me. What should I do?</a></p></li><li><p>Coming soon: &#8220;Operational Excellence, the Tech Leads&#8217; lever&#8221;</p></li></ul></li><li><p>Startups and how they operate</p></li><li><p>Processes, culture, and productivity in engineering teams</p></li><li><p>Important trends in the technology industry</p></li></ul><p>I&#8217;m not committing to an exact number of articles yearly. I also write in <a href="https://enespanol.joaoqalves.net/">Spanish</a>, and sometimes the articles will be a translation one way or the other. But I&#8217;m trying to keep original content in both. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.terminalprompt.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.terminalprompt.com/subscribe?"><span>Subscribe now</span></a></p><p>The difference is that this is now the place where everything lives. One domain, one archive, one feed you can rely on. If you&#8217;ve found value in my writing before, you&#8217;ll find it here too.</p><p>&#8212; Jo&#227;o</p>]]></content:encoded></item></channel></rss>