<?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[Refactoring]]></title><description><![CDATA[Join 170,000+ engineers and managers getting practical ideas on engineering leadership, technical strategy and high-performing teams. Free, every week.]]></description><link>https://refactoring.fm</link><image><url>https://substackcdn.com/image/fetch/$s_!CR5A!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png</url><title>Refactoring</title><link>https://refactoring.fm</link></image><generator>Substack</generator><lastBuildDate>Sat, 17 Oct 2026 17:21:28 GMT</lastBuildDate><atom:link href="https://refactoring.fm/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Refactoring ETS]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[refactoring@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[refactoring@substack.com]]></itunes:email><itunes:name><![CDATA[Luca Rossi]]></itunes:name></itunes:owner><itunes:author><![CDATA[Luca Rossi]]></itunes:author><googleplay:owner><![CDATA[refactoring@substack.com]]></googleplay:owner><googleplay:email><![CDATA[refactoring@substack.com]]></googleplay:email><googleplay:author><![CDATA[Luca Rossi]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Your Team is a System ⚙️ — with Francisco Trindade]]></title><description><![CDATA[Watch now (55 mins) | Refactoring Podcast &#8226; Episode 74]]></description><link>https://refactoring.fm/p/your-team-is-a-system-with-francisco</link><guid isPermaLink="false">https://refactoring.fm/p/your-team-is-a-system-with-francisco</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 16 Oct 2026 07:03:10 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/220371356/d60b763d570fb0b933bb291718e53bdf.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-HiiABFAz06c" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;HiiABFAz06c&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/HiiABFAz06c?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="pullquote"><p style="text-align: center;"><em><strong>Listen now:<br><a href="https://www.youtube.com/@refactoringclub">YouTube</a> | <a href="https://podcasts.apple.com/us/podcast/refactoring-podcast/id1719137305">Apple</a> | <a href="https://open.spotify.com/show/7Luds9dmzZDoDC8Q7EMbSw">Spotify</a></strong></em></p></div><blockquote><p><em>Today&#8217;s episode is brought to you by: <strong><a href="https://ntn.so/refactoring">Notion</a></strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://ntn.so/refactoring" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png" width="312" height="108.42" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:278,&quot;width&quot;:800,&quot;resizeWidth&quot;:312,&quot;bytes&quot;:31046,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://ntn.so/refactoring&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/209980935?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><em>Learn more about<strong> Notion&#8217;s Developer Platform </strong>today at<strong> <a href="https://ntn.so/refactoring">https://ntn.so/refactoring</a></strong></em></p></blockquote><div><hr></div><p>Today's guest is <strong><a href="https://www.linkedin.com/in/franciscomt/">Francisco Trindade</a></strong>, VP of Engineering, founder of two companies, and author of &#8220;<a href="https://franciscotrindade.me/leading-effective-software-teams-book/">Leading Effective Software Teams</a>&#8221;, which I just read and loved.<br>So in this chat, you will learn how to think about your team as a system, how to optimize flow in the developer process, and why you should absolutely hire junior engineers. </p><div><hr></div><h2>&#129351; Interview Summary</h2><p>If you are a <strong>&#128274; paid subscriber &#128274;</strong> you will find my own <em>summary</em> of the interview below.</p><p>It&#8217;s the 5-minute, handcrafted takeaways of what we talked about, with timestamps to the relevant video moments, for those who don&#8217;t have time to sit through the 1-hour chat.</p><p>Here is the agenda for today:</p><p><strong>Agenda</strong>:</p><ol><li><p><strong>&#128216; Why a book about teams as systems</strong></p></li><li><p><strong>&#129504; Systems thinking in day-to-day management</strong></p></li><li><p><strong>&#127754; Optimizing flow and measuring what matters</strong></p></li><li><p><strong>&#127919; Autonomy and shaping work for people</strong></p></li><li><p><strong>&#127793; Why junior engineers still matter</strong></p></li></ol><p>&#10240;Let&#8217;s dive in &#128071;</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/your-team-is-a-system-with-francisco">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Design a Good MCP Server 🔌]]></title><description><![CDATA[Taking from successful examples at Notion, Stripe, Block, Sentry, and more!]]></description><link>https://refactoring.fm/p/how-to-design-a-good-mcp-server</link><guid isPermaLink="false">https://refactoring.fm/p/how-to-design-a-good-mcp-server</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Thu, 15 Oct 2026 08:06:06 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e2e3ac1f-658d-4890-ba05-15fcac1955dd_2046x1366.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! Welcome to the </em>&#10024;&#65039;&#65039;&#65039;&#65039;&#65039;&#65039;&#65039;<em> <strong>monthly free essay</strong></em> &#10024;&#65039;&#65039;&#65039;&#65039;&#65039;&#65039;&#65039;<em> from Refactoring.</em></p><p><em>Every week I write an article to 170K+ engineers about how to make good software together. To get access to all our articles, resources, and our <a href="https://refactoring.fm/p/refactoring-community">private community</a>, subscribe to the <a href="http://refactoring.fm/subscribe?">full version</a>.</em></p><div><hr></div><p>More and more products these days show up inside agent hosts like ChatGPT, Claude, Grok Bot, as plugins that the model can use. In many cases, agents also act proactively and recommend plugins that fit their current job.</p><p>This means, as many predicted, that agents are becoming <a href="https://x.com/skirano/status/2105353473118404648">important distribution platforms</a>, with many users discovering new products from inside them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MqjY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MqjY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png 424w, https://substackcdn.com/image/fetch/$s_!MqjY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png 848w, https://substackcdn.com/image/fetch/$s_!MqjY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png 1272w, https://substackcdn.com/image/fetch/$s_!MqjY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MqjY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png" width="436" height="535.3605442176871" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1444,&quot;width&quot;:1176,&quot;resizeWidth&quot;:436,&quot;bytes&quot;:141586,&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://refactoring.fm/i/219986578?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.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_!MqjY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png 424w, https://substackcdn.com/image/fetch/$s_!MqjY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png 848w, https://substackcdn.com/image/fetch/$s_!MqjY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.png 1272w, https://substackcdn.com/image/fetch/$s_!MqjY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b38a572-2e1c-4f8d-a3d6-dea12e18bff7_1176x1444.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p>Such plugins, under the hood, are <strong>powered by MCP servers</strong>, which wrap and expose the tool's functionality.</p><p>On paper, these look easy to build. In practice, less so.</p><p>I bet everyone who has played with agents for a while has found themselves routinely battling with MCPs that are either broken, or incomplete, or don&#8217;t work as intended. I surely have, and I keep seeing <strong>embarrassing stories</strong> popping up on the internet about it.</p><p>Just last week, Figma <a href="https://x.com/badlogicgames/status/2105234146499203255">got backlash</a> for having hardcoded the list of allowed clients in their MCP server, effectively disabling popular tools like Pi and OpenCode. One of the creators of the MCP protocol himself <a href="https://x.com/GayaniFigma/status/2105295629941350454">chimed in</a> to note that this is not how the protocol should work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YKLE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YKLE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png 424w, https://substackcdn.com/image/fetch/$s_!YKLE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png 848w, https://substackcdn.com/image/fetch/$s_!YKLE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png 1272w, https://substackcdn.com/image/fetch/$s_!YKLE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YKLE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png" width="460" height="363.3220338983051" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:932,&quot;width&quot;:1180,&quot;resizeWidth&quot;:460,&quot;bytes&quot;:252735,&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://refactoring.fm/i/219986578?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.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_!YKLE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png 424w, https://substackcdn.com/image/fetch/$s_!YKLE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png 848w, https://substackcdn.com/image/fetch/$s_!YKLE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.png 1272w, https://substackcdn.com/image/fetch/$s_!YKLE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ead9229-bef2-400a-a922-89c6cfb25c3a_1180x932.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p>Why does this happen? I believe many teams just underestimate what it takes to create good MCP servers. They think about them as simple API wrappers, assign the task to an intern, and call it done.</p><p>Last year I wrote <a href="https://refactoring.fm/p/how-to-design-apis-for-an-ai-world">How to Design APIs for an AI World</a>, because it was already clear that APIs needed to be adapted for when the caller was an agent rather than deterministic software. Fast forward to today, a lot has changed about how agents interact with software, so I am writing a sequel that 1) dives deeper, and 2) covers more of the product surface.</p><p>To do this well, I am also looping in <a href="https://www.linkedin.com/in/luigipederzani/?isSelfProfile=false">Luigi Pederzani</a> and the guys at <a href="http://manufact.com/?utm_source=refactoring">Manufact</a>, who I have known for a long time. They are the authors of the open-source framework <a href="https://github.com/mcp-use/mcp-use?utm_source=refactoring">mcp-use</a> and have been working on MCPs from the very early days, so they are the most knowledgeable people I know about this space.</p><p>I will also be pulling real examples from products that are doing this right, like Notion, Block, Stripe, and Sentry, so you&#8217;ll leave this article with practical references that you can take inspiration from. </p><p>So here is the agenda:</p><ul><li><p>&#129513; <strong>Jobs instead of endpoints</strong> &#8212; deciding which tools should exist in the first place.</p></li><li><p>&#129517; <strong>Designing for an agent caller</strong> &#8212; descriptions, improvisation, errors, and UI.</p></li><li><p>&#128260; <strong>The production lifecycle</strong> &#8212; what is different from running a normal backend.</p></li><li><p>&#9878;&#65039; <strong>Self-host vs managed</strong> &#8212; figuring out when each one makes sense.</p></li><li><p>&#9989; <strong>Checklist</strong> &#8212; what to do with your team next week.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><p><em>Disclaimer: I am thankful to <a href="https://manufact.com/?utm_source=refactoring">Manufact</a> for partnering on this and sharing how they see MCP design and production in the wild. I am a fan of what they build and you should check it out.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://manufact.com/?utm_source=refactoring&quot;,&quot;text&quot;:&quot;Learn more about Manufact&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://manufact.com/?utm_source=refactoring"><span>Learn more about Manufact</span></a></p><p><em>As always, I will only write my unbiased opinion on the practices and tools covered, Manufact included.</em></p><div><hr></div><h2>&#129513; Jobs instead of endpoints</h2><p>So, where do you start?</p><p>In my experience, the most common mistake is simply taking the endpoints you already have and turning each of them into a tool. REST (or GraphQL) APIs are usually built around <em>resources</em> and CRUD verbs, which work great for software that knows exactly what it wants, and can express it as atomic operations.</p><p>An agent, instead, is trying to <strong>complete a job</strong> on behalf of a user, like &#8220;file this bug with a reproduction and an assignee&#8221;, or &#8220;summarize the blockers of this sprint&#8221;.</p><p>If jobs <em>depart</em> too much from what single API endpoints do, the model spends tokens (and time) finding the right paths, chains five calls where one would do, and may still fail the workflow the user actually wanted.</p><p>Instead, it&#8217;s useful to work top-down, starting with the end in mind. List the handful of <strong>end-to-end workflows</strong> people actually ask agents to do with your product, and then design one tool, or a tight chain of tools, for each of them.</p><p>This also gives you a rule of thumb for granularity:</p><ul><li><p><strong>Too fine-grained</strong> &#8212; and you pay for multi-hop agent loops (LLM seconds times N) on top of a confused tool choice.</p></li><li><p><strong>Too coarse</strong> &#8212; like one mega-tool with a kitchen-sink schema, and arguments get brittle, recovery gets hard, and auth gets messy.</p></li></ul><p>A good default is tools that finish a job in one or two calls, batching related reads when you can and keeping multi-step flows for the domains that truly need them. When you do need them, make the intermediate state explicit in the responses, so the model can continue without guessing.</p><p>A useful example is Notion, because they shipped both versions.</p><p>In the Notion API, the content of a page is a tree of <em>blocks</em> (paragraphs, headings, to-dos and so on), and their first, open-source MCP server <a href="https://www.notion.com/blog/notions-hosted-mcp-server-an-inside-look">mapped each endpoint 1:1 to a tool</a>, so agents had to work with blocks too. Blocks are a great abstraction for an API: they are granular and composable, and they give apps that render or sync Notion content precise control over every detail.</p><p>An agent, however, usually has a bigger job in mind, like writing up a meeting recap or adding a section to a plan, where the natural unit is the page. Notion&#8217;s own takeaway was that 1:1 mapping &#8220;<em>created suboptimal experiences for AI agents</em>.&#8221;</p><p>So, on their new <a href="https://developers.notion.com/guides/mcp/mcp-supported-tools">hosted server</a>, they eventually changed the abstraction. There is no tool to create, update or delete individual blocks anymore: pages go in and out as Notion-flavored Markdown, and one page-level call replaces a chain of block calls:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oUVq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oUVq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png 424w, https://substackcdn.com/image/fetch/$s_!oUVq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png 848w, https://substackcdn.com/image/fetch/$s_!oUVq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!oUVq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oUVq!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png" width="1200" height="557.967032967033" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:677,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:265333,&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://refactoring.fm/i/219986578?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oUVq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png 424w, https://substackcdn.com/image/fetch/$s_!oUVq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png 848w, https://substackcdn.com/image/fetch/$s_!oUVq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!oUVq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf13648d-0168-4497-8058-e00672ada9c1_2418x1124.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">How the Notion MCP server evolved from mirroring API endpoints to tools reflecting broader jobs.</figcaption></figure></div><p>The work of turning Markdown into nested blocks, or finding the right block to change, moved inside the server.</p><p>Block tells a similar story in their <a href="https://engineering.block.xyz/blog/blocks-playbook-for-designing-mcp-servers">MCP playbook</a>: the first version of their internal Linear MCP had 30+ tools that mirrored the API, and a question like &#8220;what issues is bob@example.com working on&#8221; took four to six calls.</p><div><hr></div><h2>&#129517; Designing for an agent caller</h2><p>Once you know which tools should exist, the next question is how they should behave.</p><p>The thing to keep in mind here is that your caller is different in many ways from the software that typically hits your API. We covered this for APIs in general <a href="https://refactoring.fm/p/how-to-design-apis-for-an-ai-world">last year</a>, and most of those ideas apply to MCP, with possibly even less forgiveness.</p><p>To me, here are the most important ideas to remember:</p><h3>1) Descriptions are runtime</h3><p>Developers read your API docs once and internalize the patterns, while agents re-read tool names and descriptions at every turn, inside a limited context window, and decide what to call based on that alone.</p><p>So, you should 1) name tools the way a user would phrase the request, and 2) use the description for the stuff that actually drives behavior: constraints, preconditions, and when <em>not</em> to use the tool. I would also put description edits through review and some testing, because changing a sentence there can change what the model does as much as changing code.</p><p>Sentry&#8217;s MCP server does this well, for example, in its <a href="https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-core/src/tools/catalog/search-errors.ts">search_errors tool</a>:</p><div class="callout-block" data-callout="true"><p><code>Search Sentry error events: exceptions and crashes with stack traces. Use for error counts, statistics, trends, and individual error events.</code></p><p></p><p><code>NOT for log messages, including error/warning logs (use search_logs), requests or latency (use search_traces), or grouped issue lists (use search_issues).</code></p></div><p>The model learns what the tool is for, and what to use instead.</p><h3>2) The caller improvises</h3><p>Agents may invent argument shapes, call tools out of order, retry in odd ways and forget that setup has already happened, and the host will often retry on their behalf.</p><p>So the principles we discussed for AI-facing APIs are your defense here, which in practice means strict schemas where it matters, safe defaults, and idempotent writes on anything risky. For high-stakes actions, you can refuse with a clear message and offer a human-in-the-loop path when the domain needs it.</p><p>Stripe does this well for APIs: every POST accepts an <a href="https://docs.stripe.com/api/idempotent_requests">Idempotency-Key</a>, and a retry with the same key returns the first response instead of creating a second object. On MCP tools, you can do the same with an idempotency key argument, and declare how each tool behaves with the protocol&#8217;s <a href="https://modelcontextprotocol.io/specification/draft/schema#toolannotations">tool annotations</a>:</p><div class="callout-block" data-callout="true"><p><code>annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false }</code></p></div><p>Clients can use these hints to decide when to ask for confirmation, as Block&#8217;s Goose <a href="https://engineering.block.xyz/blog/blocks-playbook-for-designing-mcp-servers">does</a>.</p><h3>3) Errors should teach the next attempt</h3><p>A key difference between agents and deterministic software is that the former can (and will try to) recover from errors by itself. So you should help with it.</p><p>This means a bare <code>{&#8220;code&#8221;: 400}</code>  is fine for deterministic software, where a developer will eventually read the logs and fix the call, while an agent benefits from errors that are more descriptive and tell it what to do next, like the expected format, an example, or a different tool to use instead.</p><p>Block&#8217;s playbook shows a good one from Goose, for files over 400KB:</p><div class="callout-block" data-callout="true"><p><code>File &#8216;{}&#8217; is too large ({:.2}KB). Maximum size is 400KB to prevent memory issues. If needed, use shell commands like &#8216;head&#8217;, &#8216;tail&#8217;, or &#8216;sed -n&#8217; to read a subset of the file.</code></p></div><p>It says what went wrong, why, and what to try instead.</p><p>It also pays to log which errors agents hit most, because many of them will point to the tool's surface and hint at what you can improve. Half of your failures might be &#8220;invalid priority&#8221; because the schema says <code>high</code> and the server expects <code>P1</code>.</p><h3>4) The job can come with its own UI</h3><p>Lately, MCP servers can do more than expose tools.</p><p>With <a href="https://modelcontextprotocol.io/extensions/apps/overview">MCP Apps</a>, a tool can point to an HTML resource that the host renders in a sandbox, so your product can show its own interface right inside the conversation.</p><p>This matters for jobs where the user wants to see and touch the result. In a design tool, for example, the user may open a project, select a screen, ask the AI to change it, and see the result in the same canvas. Doing that through text alone would mean describing objects back and forth, while here the app can tell the agent exactly what the user selected.</p><p>ChatGPT goes a step further with MCP Extensions, which turn an MCP server into a plugin with specific entry points: a launcher in the sidebar, a tab inside a conversation, and handlers that open files with a given extension in your own viewer. These are host-specific, and some of them (like file entry points) are desktop-only for now. Luigi wrote a <a href="https://manufact.com/blog/openai-mcp-extensions">good walkthrough</a> of this.</p><div><hr></div><h2>&#128260; The production lifecycle</h2><p>The second intuition to update is about what happens after launch. Shipping an MCP server feels like shipping a small backend service, and in many ways it is, but keeping it healthy also involves work that a regular backend doesn&#8217;t have.</p><p>Differences mostly show up in three places:</p><h3>1) Managing hosts</h3><p>Your MCP will be called by ChatGPT, Claude, and a long tail of other clients, each with its own behavior and update cycle, and the same server can produce very different outcomes across them.</p><p>Manufact has an interesting <a href="https://manufact.com/blog/mcp-evals-coding-agents?utm_source=refactoring">testing write-up</a> that walks through an issue-tracker example where Codex manages to work around server bugs and pass, while Claude fails the same suite because of sneaky defects in the tools. If you only test with your favorite client, it is easy to ship bugs like these without ever seeing them, so make golden prompts on a few real hosts part of normal product QA.</p><h3>2) Updating the protocol</h3><p>In about 18 months, MCP has changed a lot: from HTTP+SSE to Streamable HTTP, then tighter OAuth rules, and then the <a href="https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/">2026-07-28 revision</a>, which the maintainers describe as the largest since launch.</p><p>Just in recent changes, sessions and the initialize handshake are gone, every request is self-contained, and auth has been changed substantially.</p><p>Being MCP a client-server protocol, you need to incorporate changes ASAP, because even when your own server code doesn&#8217;t change, the one in the clients will!</p><h3>3) Distributing to directories</h3><p>Distribution through agents comes with its own process, too.</p><p>ChatGPT app review, the Claude Connectors directory, Cursor Marketplace, Muse and Grok custom connectors all want <strong>slightly different assets</strong> and reviewer access. Each platform has its own packaging, review, and update flow, so you should track the requirements for each destination, keep the endpoint stable, and test the experience after every change.</p><p>Put together, this is closer to keeping a mobile app healthy across OS versions and app stores than to maintaining an API behind an SDK you control. None of this is rocket science, but it&#8217;s a significant (and growing) surface to keep track of.</p><div><hr></div><h2>&#9878;&#65039; Self-host or managed?</h2><p>So, all that said, should you run all of this yourself? It depends on how much of the lifecycle above actually applies to you:</p><ul><li><p><strong>Self-hosting</strong> &#8212; is fine when the MCP is internal (e.g. stdio), used by one team or IDE, the blast radius is low, you are okay owning SDK upgrades when the protocol changes, and you are not listed in marketplaces.</p></li><li><p><strong>Managed</strong> &#8212; a hosted platform pays off when you ship a remote MCP as part of your product across many directories (ChatGPT, Claude, Cursor, ...), you want cross-client test suites against real hosts and checks before each submission, and all of that work sits on your critical path without being what makes your product special.</p></li></ul><p>As a quick plug, the second scenario is what the team at <a href="https://manufact.com?utm_source=refactoring">Manufact</a> is building for. Their MCP cloud lets you connect a repo and deploy, test against clients, monitor usage, all with <a href="https://github.com/mcp-use/mcp-use">mcp-use</a> as open-source framework underneath.</p><p>If you are already hosting your server elsewhere, they also run cross-client tests and publishing-readiness checks without moving the deployment. I love their approach and you can learn more about it <a href="https://docs.manufact.com/dashboard/testing?utm_source=refactoring">here</a>.</p><div><hr></div><h2>&#9989; Checklist for next week</h2><p>If you have been thinking about developing (or improving?) your own MCP server, and want something concrete for the team to begin with, here is a quick checklist:</p><ol><li><p><strong>List the most important agent workflows</strong> &#8212; that should exist (say &lt; 7), and delete the endpoint-dump tools that do not serve them.</p></li><li><p><strong>Rewrite tool names and descriptions</strong> &#8212; as if they were prompts, and put description changes through review.</p></li><li><p><strong>Add actionable errors</strong> &#8212; and idempotent writes to the risky tools.</p></li><li><p><strong>Pick three hosts</strong> &#8212; and run a golden-prompt test of the full experience, UI and permissions included.</p></li><li><p><strong>Assign an owner</strong> &#8212; for MCP health, with a re-check after every major MCP, Claude or ChatGPT release.</p></li><li><p><strong>Decide self-host vs managed</strong> &#8212; for deploy, test, monitor and publish, and write down the reason.</p></li></ol><div><hr></div><h2>&#128172; Join our community!</h2><p>Hey, thank you for making it this far! If you liked this piece, consider subscribing to the full version of Refactoring. Paid members get exclusive access to our <a href="https://refactoring.fm/p/refactoring-community">private community</a> of 1500+ tech leaders, where every month we pick one theme and dig into it together.</p><p>In October the theme is <strong>management in the age of AI</strong>, and on <strong>Monday, October 19</strong> we have our next live Mastermind on <a href="https://community.refactoring.club/c/events/rethinking-the-manager-s-role-october-mastermind">rethinking the manager's role</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Get access to the Community&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://refactoring.fm/subscribe?"><span>Get access to the Community</span></a></p><div><hr></div><p>And that&#8217;s it for today! I wish you a great week.</p><p>Sincerely<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Knowledge capturing, human relationships, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition 229]]></description><link>https://refactoring.fm/p/knowledge-capturing-human-relationships</link><guid isPermaLink="false">https://refactoring.fm/p/knowledge-capturing-human-relationships</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 12 Oct 2026 06:02:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!knmA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;2e5b4f91-1b2c-4af5-bd71-4d6c36c56e46&quot;,&quot;duration&quot;:231.94122,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><p><em>Hey, <a href="https://refactoring.fm/about">Luca</a> here! Welcome to a new edition of the </em><strong>&#128161;</strong><em> <strong>Monday Ideas </strong></em><strong>&#128161; </strong><em>&#8212; ideas and readings to start the week on the right foot.</em></p><p><em>I also publish an original essay every Wednesday. Here is the one from last week in case you missed it:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f5a8b58a-4f4c-4f65-8989-8899723eeed8&quot;,&quot;caption&quot;:&quot;Hey there!&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Do You Need Staging in 2026? &#128666;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-10-07T07:54:38.756Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!q-x4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/do-you-need-staging-in-2026&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:218773833,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:38,&quot;comment_count&quot;:3,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h3>Hyperscale Remediation: Autonomously Secure Your Software Estate</h3><p><em>This week&#8217;s newsletter is brought to you by our friends at Blitzy!</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!knmA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!knmA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!knmA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!knmA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!knmA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2187063,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/219391260?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.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_!knmA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!knmA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!knmA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!knmA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bda395-9b52-407c-b109-1c8ee6a347f4_1920x1080.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p>Security teams don&#8217;t need another list of alerts. They need to know which vulnerabilities are reachable, exposed, and safe to fix. Blitzy understands your entire software estate and, through Proactive Insights, surfaces known and previously undiscovered vulnerabilities in the enterprise codebase and remediates them autonomously. It traces each finding through execution paths, identifies dependencies, and validates remediation. Blitzy then turns prioritized risks into batches of tested pull requests for engineers to review.</p><p>The result: less alert noise, faster remediation, and confidence that each fix is safe. Find risk in context and remediate it securely at enterprise scale.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight&quot;,&quot;text&quot;:&quot;Try on your codebase today&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight"><span>Try on your codebase today</span></a></p><div><hr></div><p></p><h2>&#128218; Knowledge capture compounds engineering quality</h2><p>In April, Rob Zuber and I wrapped up our software factory series with an article on compounding. We asked: how do teams actually get better over time, instead of just shipping more?</p><p>I believe <strong>knowledge capture</strong> is one of the few things in engineering that truly compounds.</p><p>Teams usually capture too little of it. They especially lose decisions, forgetting <em>why</em> systems work the way they do.</p><p>There is basically no excuse today for not getting this right, because capturing and processing information is much cheaper than before. Meeting notes, ADRs, product decisions, can all be captured, summarized, updated, and reused by agents.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oCFj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oCFj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 424w, https://substackcdn.com/image/fetch/$s_!oCFj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 848w, https://substackcdn.com/image/fetch/$s_!oCFj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 1272w, https://substackcdn.com/image/fetch/$s_!oCFj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oCFj!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp" width="1200" height="429.3956043956044" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:521,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:43778,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/219391260?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oCFj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 424w, https://substackcdn.com/image/fetch/$s_!oCFj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 848w, https://substackcdn.com/image/fetch/$s_!oCFj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 1272w, https://substackcdn.com/image/fetch/$s_!oCFj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4df95a-1639-4dac-a63e-522783ed86f6_1456x521.webp 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p>So docs become an asset that improves the development loop, instead of a tax. And the more context the team captures, the more coherent decisions the AI can make on the next project.</p><p>This is especially important for building the right thing, as opposed to simply the <em>next</em> thing. A codebase becomes easier to steer when future work can see past decisions.</p><p>Read the full article here &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:195748040,&quot;url&quot;:&quot;https://refactoring.fm/p/the-compounding-software-factory&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;title&quot;:&quot;The Compounding Software Factory &#128200;&quot;,&quot;truncated_body_text&quot;:&quot;Hey there, Luca here!&quot;,&quot;date&quot;:&quot;2026-04-29T07:55:12.038Z&quot;,&quot;like_count&quot;:61,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;handle&quot;:&quot;refactoring&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;profile_set_up_at&quot;:&quot;2021-06-04T06:23:53.965Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-11-15T17:35:42.775Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:247311,&quot;user_id&quot;:6835984,&quot;publication_id&quot;:64099,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:64099,&quot;name&quot;:&quot;Refactoring&quot;,&quot;subdomain&quot;:&quot;refactoring&quot;,&quot;custom_domain&quot;:&quot;refactoring.fm&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Join 170,000+ engineers and managers getting practical ideas on engineering leadership, technical strategy and high-performing teams. Free, every week.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;author_id&quot;:6835984,&quot;primary_user_id&quot;:6835984,&quot;theme_var_background_pop&quot;:&quot;#2096ff&quot;,&quot;created_at&quot;:&quot;2020-07-06T14:20:40.525Z&quot;,&quot;email_from_name&quot;:&quot;&#127744; Refactoring&quot;,&quot;copyright&quot;:&quot;Refactoring ETS&quot;,&quot;founding_plan_name&quot;:&quot;&#127942; Community plan&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79ab7b78-71cf-42d2-a607-3aa18960cb64_2400x572.png&quot;}}],&quot;twitter_screen_name&quot;:&quot;lucaronin&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000,&quot;status&quot;:{&quot;bestsellerTier&quot;:1000,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:1000},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://refactoring.fm/p/the-compounding-software-factory?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=64099"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!CR5A!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png" loading="lazy"><span class="embedded-post-publication-name">Refactoring</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Compounding Software Factory &#128200;</div></div><div class="embedded-post-body">Hey there, Luca here&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">6 months ago &#183; 61 likes &#183; 2 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>&#129309; Good engineering is an exercise in human relationships</h2><p>Two years ago I had Kent Beck on the podcast, and we talked about Extreme Programming and TDD. I rewatched that interview recently to figure out what has changed (and what has not) since then, and a part that stuck with me is when he said <strong>good engineering is an exercise in human relationships</strong>.</p><p>This is easy to miss because you may just treat XP as a bag of techniques: short cycles, tests, pairing, reviews, and so on. But all of these only work if people communicate and give each other feedback.</p><p>This ties in with Kent&#8217;s idea that Agile goes largely <em>against </em>traditional power structures. Waterfall represents a fatal attraction for many teams because it replaces grassroots communication with a plan that gets transmitted down through hierarchy.</p><p>If the human relationships are missing, you can install the practices and still not have the actual engineering.</p><p>You can find the full conversation with Kent here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;be4fc3ae-d066-4f49-8438-764117c25e29&quot;,&quot;caption&quot;:&quot;Today&#8217;s guest is Kent Beck, original signer of the Agile manifesto, creator of Extreme Programming, and all-round programming legend!&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The State of Software Engineering &#128296; &#8212; with Kent Beck&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000},{&quot;id&quot;:24333739,&quot;name&quot;:&quot;Kent Beck&quot;,&quot;bio&quot;:&quot;Programmer, artist, coach coach, singer/guitarist, peripatetic. Learning to be me. Full-time content producer. Mailto:kentlbeck@gmail.com&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F000da410-0ed6-4a25-80b1-6a46e964ae0b_242x242.jpeg&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:100,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://newsletter.kentbeck.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://newsletter.kentbeck.com&quot;,&quot;primaryPublicationName&quot;:&quot;Software Design: Tidy First?&quot;,&quot;primaryPublicationId&quot;:256838}],&quot;post_date&quot;:&quot;2024-02-16T06:35:03.454Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24ce821c-95bc-43cb-86a3-b5e8cb2d798b_2696x1516.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/the-state-of-software-engineering&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;bfc2c106-fb41-47db-bd5c-d902be14d264&quot;,&quot;id&quot;:141689319,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:42,&quot;comment_count&quot;:1,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128218; Weekly Readings</h2><p>Finally, here are the best articles I have read this week:</p><div><hr></div><h4>&#129351; <a href="https://franciscotrindade.me/blog/the-kids-are-alright">The Kids Are Alright</a></h4><h5>6 min &#8226; by Francisco Trindade</h5><p>Francisco takes on the question of whether we should still hire junior engineers, and his answer is a strong yes. If the job of a senior becomes leading a project by orchestrating agents, the job of a junior will be to lead simpler projects in the same way. And if juniors have nothing meaningful to do on your team, that probably says more about your process than about them. I loved this one.</p><div><hr></div><h4>&#129352; <a href="https://avivbenyosef.com/software-factories-are-a-local-maximum/">Software Factories Are a Local Maximum</a></h4><h5>3 min &#8226; by Aviv Ben-Yosef</h5><p>Aviv makes a great point: agents can make us lose the healthy friction that made us think about <em>why</em> we were building something. I have written a lot about software factories myself, and I 100% agree with him.</p><div><hr></div><h4>&#129353; <a href="https://refactoringenglish.com/excerpts/write-an-effective-design-doc/">How to Write an Effective Software Design Doc</a></h4><h5>15 min &#8226; by Michael Lynch</h5><p>Michael wrote design docs at Google and Microsoft, and this is his full playbook on when a doc is worth it, what belongs in it, and what doesn&#8217;t. I feel this is even more relevant today, since a good design doc is pretty much the context you want to give your agents (or have them help you write anyway).</p><div><hr></div><p>And that&#8217;s it for today! If you are finding this newsletter valuable, <strong>subscribe to the full version</strong>!</p><p>1700+ engineers and managers have joined already, and they receive our flagship weekly long-form articles about <strong>how to ship faster</strong> and <strong>work better together</strong>! Learn more about the <a href="http://refactoring.fm/about">benefits of the paid plan here</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Make your team ship faster!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Make your team ship faster!</span></a></p><p>See you next week!<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Do You Need Staging in 2026? 🚚]]></title><description><![CDATA[Revisiting my classic 2022 article, after four years, and AI!]]></description><link>https://refactoring.fm/p/do-you-need-staging-in-2026</link><guid isPermaLink="false">https://refactoring.fm/p/do-you-need-staging-in-2026</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 07 Oct 2026 07:54:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!q-x4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!</p><p>About four years ago I published <a href="https://refactoring.fm/p/do-you-need-staging">Do you really need a Staging environment?</a> &#8212; the first article of mine to really go viral. Front page of Hacker News, more than 2,000 likes on Linkedin, and hundreds of comments across social media.</p><p>Many of such comments were just... angry! In fact, even if the title was framed as a question, I argued that, in most cases, staging environments did more harm than good. And many people didn&#8217;t like that.</p><p>Fast forward to today a lot of things have changed. Teams ship more code, faster, and more often. Does this make staging (and/or equivalent intermediate envs) more or less valuable? I see you saying &#8220;it depends&#8221; &#8212; so it depends on what?</p><p>So today I want to revisit the original thesis, figure out what still holds, vs what needs to change.</p><p>Here is what we will cover:</p><ul><li><p>&#11013;&#65039; <strong>What I argued in 2022</strong> &#8212; a short callback to refresh our memory.</p></li><li><p>&#9989; <strong>What still holds</strong> &#8212; parity, batching, and when shared staging still pays off.</p></li><li><p>&#129302; <strong>What AI changes</strong> &#8212; more throughput, worse env lies, safety net in prod.</p></li><li><p>&#128737;&#65039; <strong>Guardrails for dev</strong> &#8212; guides, gates, and guards upstream of merge.</p></li><li><p>&#128674; <strong>Ephemeral preview envs</strong> &#8212; review on isolated, prod-shaped envs.</p></li><li><p>&#128300; <strong>Observability and controls</strong> &#8212; recover fast when something slips.</p></li><li><p>&#127919; <strong>Final checklist</strong> &#8212; what &#8220;good&#8221; looks like now, without the sermon.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><p><em>Disclaimer: I am thankful to</em> <em><a href="https://upsun.com/upsun.com/?utm_source=refactoring-club&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=202610_GRWTH_AWARE_Do-you-need-staging-in-2026_BLOG_RFCTG">Upsun</a></em> <em>for partnering on this piece and for pushing me to revisit this topic properly in 2026. I am a fan of what they build around Git-native environments, and you should check them out.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://upsun.com/?utm_source=refactoring-club&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=202610_GRWTH_AWARE_Do_you_need_staging_in_2026_BLOG_RFCTG&quot;,&quot;text&quot;:&quot;Learn more about Upsun&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://upsun.com/?utm_source=refactoring-club&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=202610_GRWTH_AWARE_Do_you_need_staging_in_2026_BLOG_RFCTG"><span>Learn more about Upsun</span></a></p><p><em>However, as always I will only write my honest opinion on the practices and tools covered, Upsun included.</em></p><div><hr></div><h2>&#11013;&#65039; What I argued in 2022 (briefly)</h2><p>The original piece tried to get clear about when a shared staging / pre-prod environment helps, vs when it mostly adds cost and delay.</p><p>The two problems I saw (and still see) the most often are:</p><ol><li><p><strong>Staging is often unreliable</strong> &#8212; because keeping it at parity with prod (i.e. data and infra) is hard and expensive. So most teams cut corners: a fraction of the database, different instance sizes, and just some of the services.</p></li><li><p><strong>It makes releases many times slower</strong> &#8212; an extra release level means waiting for the env, batching several features &#8220;because we are releasing anyway,&#8221; deploys that become morning-only (or only &#8220;at the start of the week&#8221;), and the classic &#8220;<em>whose change broke staging?&#8221;</em> moments.</p></li></ol><p>The way out already existed in 2022: small diffs, strong automated tests, feature flags, canary / progressive delivery, and real investment in observability in production. This way problems in prod are smaller, and you are fast at catching them anyway, even without staging.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q-x4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q-x4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q-x4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q-x4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q-x4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q-x4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg" width="1456" height="974" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115664,&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://refactoring.fm/i/218773833?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.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_!q-x4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q-x4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q-x4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q-x4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aff5793-1350-4009-b5a1-192529ad0f15_1686x1128.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 original pic from 2022 &#8212; still pretty much true!</figcaption></figure></div><p>On top of this, bonus points if you setup two of my favorite things:</p><ul><li><p><strong>Preview links for QA</strong> &#8212; envs that spawn on the fly for features that need dedicated product review.</p></li><li><p><strong>Remote dev environments</strong> &#8212; that live in the cloud and can inherently be closer to prod than a developer laptop.</p></li></ul><p>This is the gist of what I wrote back then &#8212; if you want the longer version (including when staging still earns its keep), here is the original:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d54cef76-8407-4185-9cb0-493b0eae031e&quot;,&quot;caption&quot;:&quot;Most companies I know use staging or pre-production environments to test recent changes before they are released to real users.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Do you really need a Staging environment? &#128674;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2022-05-19T05:35:39.638Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fde9e275a-7d23-46d6-b628-01322a4b881d_1686x1128.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/do-you-need-staging&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:55432182,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:55,&quot;comment_count&quot;:7,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#9989; What still holds</h2>
      <p>
          <a href="https://refactoring.fm/p/do-you-need-staging-in-2026">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[High agency, personal growth, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #228]]></description><link>https://refactoring.fm/p/high-agency-personal-growth-and-weekly</link><guid isPermaLink="false">https://refactoring.fm/p/high-agency-personal-growth-and-weekly</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 05 Oct 2026 10:00:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CR5A!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, <a href="https://refactoring.fm/about">Luca</a> here! Welcome to a new edition of the </em><strong>&#128161;</strong><em> <strong>Monday Ideas </strong></em><strong>&#128161; </strong><em>&#8212; ideas and readings to start the week on the right foot.</em></p><p><em>I also publish an original essay every Wednesday. Here is the one from last week in case you missed it:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b98bd593-b60a-4ddf-b0ad-6cf234172367&quot;,&quot;caption&quot;:&quot;Hey, Luca here! Welcome to a new &#128274; weekly essay &#128274; from Refactoring.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to Run Good Agents in Production &#128678;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-09-30T10:03:51.439Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14c008a1-9712-4759-ab77-8fbe367b4948_1762x1166.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/how-to-run-good-agents-in-production&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:218024608,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:36,&quot;comment_count&quot;:0,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128421;&#65039; <a href="https://www.linkedin.com/events/7508580324667465728/?viewAsMember=true">Coding agents need more than a fast loop</a></h2><p><em>This week&#8217;s newsletter is brought to you by our friends at <a href="https://www.linkedin.com/events/7508580324667465728/?viewAsMember=true">Blitzy</a>!</em></p><p>Coding agents have sped up individual tasks, but they haven&#8217;t solved the coordination, validation, and handoffs that determine how quickly software ships, especially the enterprise one!</p><p>Tomorrow join <a href="https://www.linkedin.com/in/sid-pardeshi">Sid</a>, CTO and co-founder of Blitzy, for a live session on what changes when a system can hold context across an entire codebase&#8212;not just a single file or function.</p><p>He&#8217;ll walk through a real project in Blitzy, covering reverse engineering, tech spec generation, the Agent Action Plan, code generation, and PR Review, including where human review gates the process. There will also be a Q&amp;A at the end &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.linkedin.com/events/7508580324667465728/?viewAsMember=true&quot;,&quot;text&quot;:&quot;Save your seat!&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.linkedin.com/events/7508580324667465728/?viewAsMember=true"><span>Save your seat!</span></a></p><div><hr></div><h2>&#128640; Create high-agency engineers</h2><p>Out of the various interviews / case studies we did last year, one of those that aged better is the one with Greg from Graphite.</p><p>I think it&#8217;s because we talked very little about tech, and more about values and culture. In particular, Graphite is obsessed with building a team where engineers have high agency.</p><p>What does a high-agency engineer look like? For Greg, it&#8217;s someone who owns problems end-to-end, which allows for:</p><ul><li><p><strong>More productivity</strong> &#8212; less back-and-forth, less waiting, less &#8220;that&#8217;s not my job&#8221;.</p></li><li><p><strong>More fulfillment</strong> &#8212; people who have real impact stay engaged, grow faster, and stick around longer.</p></li></ul><p>High agency, though, it&#8217;s not (only) a personal trait &#8212; it needs to be <em>enabled</em> by your team environment. For Greg, at a team level, agency comes from three things:</p><ol><li><p><strong>Purpose</strong> &#8212; a clear vision of where you are going and why it matters.</p></li><li><p><strong>Permission</strong> &#8212; freedom to go after big things, make decisions, and occasionally get things wrong.</p></li><li><p><strong>Simplicity</strong> &#8212; cognitive load low enough that ownership feels like a superpower, not a burden.</p></li></ol><p>To make this happen, for example, Graphite is extremely light on product management: a couple of PMs for 30+ engineers. Engineers need to fill the gaps: talk to stakeholders, prototype, dogfood, and push work forward without waiting to be unblocked.</p><p>To be honest, they also have an <em>unfair</em> advantage: they build a dev tool, so their engineers <em>are</em> their users. Which means product intuition comes for free.</p><p>But for everyone else, the principle holds: get engineers closer to customers. The difference is you have to invest more intentionally about it:</p><ul><li><p><strong>Bring engineers to customers</strong> &#8212; sales calls, user interviews, support escalations. First-hand experience and empathy beats summaries.</p></li><li><p><strong>Make context accessible</strong> &#8212; record calls, share clips, pipe tickets into Slack.</p></li><li><p><strong>Dogfood relentlessly</strong> &#8212; even if the product is not &#8220;for&#8221; engineers, find ways to make them use it.</p></li></ul><p>I wrote a full case study about how Graphite ships &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:180384931,&quot;url&quot;:&quot;https://refactoring.fm/p/how-graphite-ships&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;title&quot;:&quot;How Graphite Ships &#128674;&quot;,&quot;truncated_body_text&quot;:&quot;It&#8217;s a weird time for engineering teams.&quot;,&quot;date&quot;:&quot;2025-12-03T08:02:10.246Z&quot;,&quot;like_count&quot;:19,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;handle&quot;:&quot;refactoring&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;profile_set_up_at&quot;:&quot;2021-06-04T06:23:53.965Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-11-15T17:35:42.775Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:247311,&quot;user_id&quot;:6835984,&quot;publication_id&quot;:64099,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:64099,&quot;name&quot;:&quot;Refactoring&quot;,&quot;subdomain&quot;:&quot;refactoring&quot;,&quot;custom_domain&quot;:&quot;refactoring.fm&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Join 170,000+ engineers and managers getting practical ideas on engineering leadership, technical strategy and high-performing teams. Free, every week.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;author_id&quot;:6835984,&quot;primary_user_id&quot;:6835984,&quot;theme_var_background_pop&quot;:&quot;#2096ff&quot;,&quot;created_at&quot;:&quot;2020-07-06T14:20:40.525Z&quot;,&quot;email_from_name&quot;:&quot;&#127744; Refactoring&quot;,&quot;copyright&quot;:&quot;Refactoring ETS&quot;,&quot;founding_plan_name&quot;:&quot;&#127942; Community plan&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79ab7b78-71cf-42d2-a607-3aa18960cb64_2400x572.png&quot;}}],&quot;twitter_screen_name&quot;:&quot;lucaronin&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000,&quot;status&quot;:{&quot;bestsellerTier&quot;:1000,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:1000},&quot;subscriber&quot;:null}},{&quot;id&quot;:7119536,&quot;name&quot;:&quot;Greg Foster&quot;,&quot;handle&quot;:&quot;gmfoster&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2eb87cb-299b-478a-8378-d1b6de848cf0_709x709.png&quot;,&quot;bio&quot;:&quot;Cofounder of graphite.dev - building the future of code review&quot;,&quot;profile_set_up_at&quot;:&quot;2022-07-28T12:10:27.981Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-06-11T22:49:23.940Z&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;subscriber&quot;:null},&quot;primaryPublicationId&quot;:1019304,&quot;primaryPublicationName&quot;:&quot;Small Diffs - by Greg Foster&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://smalldiffs.gmfoster.com&quot;,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://smalldiffs.gmfoster.com/subscribe?&quot;}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://refactoring.fm/p/how-graphite-ships?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=64099"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!CR5A!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png" loading="lazy"><span class="embedded-post-publication-name">Refactoring</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How Graphite Ships &#128674;</div></div><div class="embedded-post-body">It&#8217;s a weird time for engineering teams&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">10 months ago &#183; 19 likes &#183; Luca Rossi and Greg Foster</div></a></div><div><hr></div><h2>&#129517; Growth trajectory &gt;&gt; AI fluency</h2><p>Greg&#8217;s story made me think about my interview with <strong>Austen McDonald</strong>, former hiring committee chair at Meta, and author of <em>Mastering Behavioral Interviews</em>, where we discussed how AI is reshaping how engineers get assessed.</p><p>Austen recommends evaluating AI skills in <em>both</em> technical and behavioral rounds, but the questions should be different. In behavioral interviews, stories are king. So you may ask something like <em>&#8220;Tell me about a time you used AI and it didn&#8217;t work out.&#8221;</em>, instead of abstract prompts like <em>&#8220;How do you think about AI?&#8221;</em></p><p>But the strongest predictor is not current AI usage at all. It is <strong>growth signal</strong>: is this person staying on top of industry trends, running side projects, adapting when the ground moves? This has always been important, but now more than ever.</p><blockquote><p><em>&#8220;The most important thing about this person is not how they use AI right now, but how they are going to be adapting to using AI as the landscape changes.&#8221;</em></p></blockquote><p>Austen particularly focuses on <strong>ownership</strong>. As AI handles more of the stack, &#8220;full stack&#8221; expands toward more areas of the business: customers, go-to-market. Does the candidate reach for more end-to-end ownership? Are they willing to do so?</p><p>You can find the full conversation with Austen here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d553be7c-1aab-41d1-a170-d2e357f642d4&quot;,&quot;caption&quot;:&quot;Today&#8217;s sponsor is Intent by Augment.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to Master Behavioral Interviews &#127908; &#8212; with Austen McDonald&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-02-20T08:02:15.756Z&quot;,&quot;cover_image&quot;:&quot;https://substack-video.s3.amazonaws.com/video_upload/post/188513236/e843a4d8-46f5-4636-8662-eedc0f84a672/transcoded-03602.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/how-to-master-behavioral-interviews-e75&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;e843a4d8-46f5-4636-8662-eedc0f84a672&quot;,&quot;id&quot;:188513236,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:24,&quot;comment_count&quot;:0,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128218; Weekly Readings</h2><p>Finally, here are the best articles I have read this week:</p><div><hr></div><h4>&#129351; <a href="https://blog.codinghorror.com/if-we-do-not-stop-to-help-each-other-what-do-we-become/">If We Do Not Stop to Help Each Other, What Do We Become?</a></h4><h5>3 min &#8226; by Jeff Atwood</h5><p>Jeff shares a great message from a developer who once got through a dangerous deployment because strangers on Stack Overflow chose to help him. An LLM could have provided the same (or a better?!) answer, but not the feeling that somebody cared. We need that reminder!</p><div><hr></div><h4>&#129352; <a href="https://www.aicelabs.com/articles/dishwasher-mode-for-ai-tasks">Dishwasher Mode for AI Tasks</a></h4><h5>1 min &#8226; by Clemens Adolphs</h5><p>A dishwasher is slower than washing plates by hand, but we don&#8217;t care, because it still frees up our time. Clemens uses the same frame for AI: give it small, annoying tasks off the critical path, then care more about reliable completion than raw speed. I liked this a lot.</p><div><hr></div><h4>&#129353; <a href="https://www.thoughtworks.com/insights/topic/sensible-defaults">The Sensible Defaults Playbook</a></h4><h5>2 min &#8226; by Thoughtworks</h5><p>Thoughtworks shares its collection of good defaults. Their approach is to have defaults remove recurring friction, but without becoming dogma. Start with practices that usually work, adapt them to the context, and review them as the environment changes.</p><div><hr></div><p>And that&#8217;s it for today! If you are finding this newsletter valuable, <strong>subscribe to the full version</strong>!</p><p>1700+ engineers and managers have joined already, and they receive our flagship weekly long-form articles about <strong>how to ship faster</strong> and <strong>work better together</strong>! Learn more about the <a href="http://refactoring.fm/about">benefits of the paid plan here</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Make your team ship faster!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Make your team ship faster!</span></a></p><p>See you next week!<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Refactoring Street Fighter With AI 🕹️ — with Adam Tornhill]]></title><description><![CDATA[Watch now (54 mins) | Refactoring Podcast &#8226; Episode 73]]></description><link>https://refactoring.fm/p/refactoring-street-fighter-with-ai</link><guid isPermaLink="false">https://refactoring.fm/p/refactoring-street-fighter-with-ai</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 02 Oct 2026 07:02:02 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/218141135/6513910531f4a444ba4f8c245e49db8b.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-stJEJ-Ug4tM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;stJEJ-Ug4tM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/stJEJ-Ug4tM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="pullquote"><p style="text-align: center;"><em><strong>Listen now:<br><a href="https://www.youtube.com/@refactoringclub">YouTube</a> | <a href="https://podcasts.apple.com/us/podcast/refactoring-podcast/id1719137305">Apple</a> | <a href="https://open.spotify.com/show/7Luds9dmzZDoDC8Q7EMbSw">Spotify</a></strong></em></p></div><blockquote><p><em>Today&#8217;s episode is brought to you by: <strong><a href="https://ntn.so/refactoring">Notion</a></strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://ntn.so/refactoring" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png" width="312" height="108.42" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:278,&quot;width&quot;:800,&quot;resizeWidth&quot;:312,&quot;bytes&quot;:31046,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://ntn.so/refactoring&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/209980935?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><em>Learn more about<strong> Notion&#8217;s Developer Platform </strong>today at<strong> <a href="https://ntn.so/refactoring">https://ntn.so/refactoring</a></strong></em></p></blockquote><div><hr></div><p>Today's guest is <strong><a href="https://www.linkedin.com/in/adam-tornhill-71759b48/">Adam Tornhill</a></strong>, founder of CodeScene and author of Your Code as a Crime Scene.</p><p>With Adam, we talked about how his team <strong>refactored the whole Street Fighter 3 codebase</strong>, which is more than 300K lines of code, in just a few days and spending a few thousand dollars in tokens, and measured how that led to better and cheaper AI development of new features.</p><p>And then we discussed <strong>how the CodeScene team does agentic development</strong>, what the process looks like, what the bottlenecks are, and what are the crucial parts that Adam believes we still need to do as humans. </p><p>Show notes:</p><ul><li><p><a href="https://codescene.com/blog/case-study-refactoring-at-scale-with-agents">The Street Fighter case study</a></p></li><li><p><a href="https://adamtornhill.substack.com/p/controlling-the-uncertainty-machine">Controlling the uncertainty machine: do you still need to read the code?</a></p></li><li><p><a href="https://codescene.com/blog/making-legacy-code-ai-ready-benchmarks-on-agentic-refactoring">Making legacy code AI-ready</a></p></li></ul><div><hr></div><h2>&#129351; Interview Summary</h2><p>If you are a <strong>&#128274; paid subscriber &#128274;</strong> you will find my own <em>summary</em> of the interview below.</p><p>It&#8217;s the 5-minute, handcrafted takeaways of what we talked about, with timestamps to the relevant video moments, for those who don&#8217;t have time to sit through the 1-hour chat.</p><p>Here is the agenda for today:</p><ol><li><p>&#128377;&#65039; <strong>Refactoring Street Fighter with AI agents</strong></p></li><li><p>&#128214; <strong>The refactoring playbook</strong></p></li><li><p>&#129514; <strong>Testing, docs, and the new fundamentals</strong></p></li><li><p>&#129302; <strong>CodeScene&#8217;s agentic development process</strong></p></li><li><p>&#128302; <strong>Bottlenecks and the future of the developer role</strong></p></li></ol><p>Let&#8217;s dive in &#128071;</p><div><hr></div><h2>1) &#128377;&#65039; Refactoring Street Fighter with AI agents</h2><p>Adam&#8217;s team at CodeScene, in collaboration with researcher Marcus Borg, set out to explore large-scale refactoring using AI agents. They needed a code base that was non-trivial, legacy, and universally understandable, so they picked a decompiled version of Street Fighter 3, a 25-year-old game with 300,000 lines of C code.</p><p>When they first analyzed the code base with CodeScene&#8217;s own metrics, it scored a 5.4 on a 10-point scale, roughly the industry average for enterprise code and very far from what Adam calls &#8220;AI-optimal code&#8221; (9.5 or higher). The team had two goals: uplift the code health as much as possible, and preserve the existing behavior of the game.</p><blockquote><p><em><strong>&#8220;I&#8217;ve never ever seen anything close to this before. A rewrite at that scale would have been a 12-to-18-month project. And now that can be automated for a fraction of the cost at a fraction of the time.&#8221;</strong></em></p></blockquote><p>Street Fighter turned out to be a particularly good target because the game already had a clever test approach: computing the hash of each rendered frame and comparing them. This gave the agents a reliable way to verify that refactoring didn&#8217;t break anything. </p><p>The preparation phase took about two weeks (as a side project), with the team exploring different models and patterns. The actual uplift then took just a few days and cost roughly $4,000 in API tokens. They primarily used Claude Code with Opus, because while GPT models were competent at refactoring, they weren&#8217;t as good at documenting and extending the playbook.</p><div><hr></div><h2>2) &#128214; The refactoring playbook</h2>
      <p>
          <a href="https://refactoring.fm/p/refactoring-street-fighter-with-ai">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Run Good Agents in Production 🚦]]></title><description><![CDATA[The third part of our series about orchestration and governance]]></description><link>https://refactoring.fm/p/how-to-run-good-agents-in-production</link><guid isPermaLink="false">https://refactoring.fm/p/how-to-run-good-agents-in-production</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 30 Sep 2026 10:03:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/14c008a1-9712-4759-ab77-8fbe367b4948_1762x1166.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! Welcome to a new </em>&#128274;<em> <strong>weekly essay</strong></em> &#128274;<em> from Refactoring.</em></p><p><em>Every week I <a href="https://refactoring.fm/s/essays?sort=top">write an article</a> to 170K+ engineers about how to make good software together. To get access to all our articles, resources, and our <a href="https://refactoring.fm/p/refactoring-community">private community</a>, subscribe to the <a href="http://refactoring.fm/subscribe?">full version</a>. </em></p><div><hr></div><p>Lately, I have become more and more interested in how teams are using AI inside real production workflows.</p><p>Sure, your Claude skills are cool, and so is your AGENTS.md, but I want to see how this tech graduates into stuff we run on our servers, reliably, all the time, and creating value.</p><p>This is also not the first time I have written about this:</p><ul><li><p>In May, I published <a href="https://refactoring.fm/p/how-to-orchestrate-ai-workflows">How to Orchestrate AI Workflows</a>, which is a primer for moving from AI loops to more structured orchestration.</p></li><li><p>Earlier this month I published <a href="https://refactoring.fm/p/getting-started-with-ai-governance">Getting Started with AI Governance</a>, to talk about security, control, and how &#8220;<em>if you want the car to go fast, you need brakes!</em>&#8221;</p></li></ul><p>So today I want to go deeper into what it means to <strong>create good AI workflows at scale</strong>, based on conversations I had with the people who are doing this for real. I took a lot from my recent <a href="https://refactoring.fm/p/the-best-ideas-from-ldx3-and-productlab">chat with Jan</a>, from friends I met during recent travels, and especially from <a href="https://fr.linkedin.com/in/ludovic-dehon">Ludovic</a> and the guys at <a href="https://kestra.io/two-zero">Kestra</a>, that I am looping in again after the huge success of the first piece we wrote together!</p><p>Here is the agenda:</p><ul><li><p>&#128065;&#65039; <strong>Observability</strong> &#8212; what to watch on agentic runs, plus a practical checklist.</p></li><li><p>&#128737;&#65039; <strong>Boundaries</strong> &#8212; how keep sensitive data where it lives, and separating workers from orchestration.</p></li><li><p>&#129489;&#8205;&#9992;&#65039; <strong>Human in the loop</strong> &#8212; when to put a gate, and how to resume without replaying an hour of work.</p></li><li><p>&#128268; <strong>How to get started</strong> &#8212; prefer governed flows as tools for the agents you already trust.</p></li><li><p>&#128218; <strong>Resources</strong> &#8212; a few places to go deeper on the practices above.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><p><em>Disclaimer: I am thankful to <a href="https://fandf.co/4Axy8bX">Kestra</a> for partnering on this and providing ideas and insights about the orchestration industry. I am a fan of what they build and you should check it out.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fandf.co/4Axy8bX&quot;,&quot;text&quot;:&quot;Learn more about Kestra&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fandf.co/4Axy8bX"><span>Learn more about Kestra</span></a></p><p><em>However, as always, I will only write my honest opinion on the practices and tools covered, Kestra included.</em></p><div><hr></div><h2>&#128065;&#65039; Observability</h2><p>A surprisingly high number of the teams I spoke with built some AI observability tools in-house.</p><p>To me this feels like when, around 2022, I ran the first surveys about what tools teams used to measure engineering metrics, and about ~50% of respondents had patched something together themselves, e.g. pulling numbers from Github and putting them on Grafana.</p><p>Likewise, today many teams are logging basic info themselves. For every run, this is typically token spend and the final answer of the agent. This is good! You get your hands dirty, learn what you really need, and wrap your head around the idea of measuring this stuff.</p><p>However, just like with engineering metrics, these setups fail as soon as you need to drill down into specific steps of the agent runs. Which, as long as your runs are <em>short</em>, might not be a big deal, but as soon as you have a long (and expensive!) recurring job failing halfway through, you may want more control over what happened and why.</p><p>In my experience, good observability for such workflows means you can reliably get the following information, ideally from the same system:</p><ol><li><p><strong>Intermediate step outputs</strong> &#8212; not only the final blob. Each meaningful step should leave something inspectable: a fetched record, a classification, a draft that was about to be sent.</p></li><li><p><strong>Tokens and cost per run</strong> &#8212; these are the basics everyone measures, and for good reason. This should be ideally broken down per step / model / tool.</p></li><li><p><strong>Tool and MCP calls</strong> &#8212; which servers, which tools, with what inputs and outputs.</p></li><li><p><strong>Who or what triggered the run</strong> &#8212; a human (manual trigger), a schedule, a webhook, or another agent session. Origin and session tags matter when you audit later.</p></li><li><p><strong>State at failure</strong> &#8212; which step failed, what was already committed, what is safe to retry.</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_!MOAM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MOAM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png 424w, https://substackcdn.com/image/fetch/$s_!MOAM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png 848w, https://substackcdn.com/image/fetch/$s_!MOAM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png 1272w, https://substackcdn.com/image/fetch/$s_!MOAM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MOAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png" width="1456" height="903" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:903,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152042,&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://refactoring.fm/i/218024608?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.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_!MOAM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png 424w, https://substackcdn.com/image/fetch/$s_!MOAM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png 848w, https://substackcdn.com/image/fetch/$s_!MOAM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.png 1272w, https://substackcdn.com/image/fetch/$s_!MOAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193a4e4d-4cb5-46cc-a47d-49ff32670af5_1722x1068.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 five main things you want to observe in an AI workflow</figcaption></figure></div><p>If these still feel a bit abstract, here are a few questions you can ask yourself (or your team!) about your setup:</p>
      <p>
          <a href="https://refactoring.fm/p/how-to-run-good-agents-in-production">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Outer loop, gaming tests, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #227]]></description><link>https://refactoring.fm/p/outer-loop-gaming-tests-and-weekly</link><guid isPermaLink="false">https://refactoring.fm/p/outer-loop-gaming-tests-and-weekly</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 28 Sep 2026 08:23:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CR5A!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, <a href="https://refactoring.fm/about">Luca</a> here! Welcome to a new edition of the </em><strong>&#128161;</strong><em> <strong>Monday Ideas </strong></em><strong>&#128161; </strong><em>&#8212; ideas and readings to start the week on the right foot.</em></p><p><em>I also publish an original essay every Wednesday. Here is the one from last week in case you missed it:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;9277a4c4-003c-40bb-860e-fe995b97cd54&quot;,&quot;caption&quot;:&quot;Hey, Luca here! Welcome to a &#128274; weekly essay &#128274; from Refactoring.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Best Ideas from LDX3 and ProductLab &#127942;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-09-23T07:02:44.672Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!vjuo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/the-best-ideas-from-ldx3-and-productlab&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:216741812,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:36,&quot;comment_count&quot;:2,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128218; <a href="https://fandf.co/3TnGYZ1">Master production-grade orchestration, for free</a>!</h2><p><em>This week&#8217;s newsletter is brought to you by our friends at <a href="https://fandf.co/3TnGYZ1">Kestra</a>!</em></p><p>A few months ago we published an article about <a href="https://refactoring.fm/p/how-to-orchestrate-ai-workflows?utm_source=publication-search">how to orchestrate AI workflows</a>, together with the team at Kestra, an awesome open source project used by the teams at Apple, JPMorgan, and more.</p><p>Today I am happy to help them spread the word about the <a href="https://fandf.co/3TnGYZ1">Kestra Academ</a>y, where you can find self-paced courses on infrastructure automation, AI workflows, and standardizing orchestration across your engineering org.</p><p>In the academy, you can learn how to govern complex workflows and start running production pipelines the same week.</p><p>You should check it out! &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fandf.co/3TnGYZ1&quot;,&quot;text&quot;:&quot;Learn how to run orchestration&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fandf.co/3TnGYZ1"><span>Learn how to run orchestration</span></a></p><div><hr></div><h2>&#127937; Faster coding vs faster delivery</h2><p>Most AI coding tools optimize the <strong>inner loop</strong>: you describe a feature, watch the agent write the code, and get something working a few minutes later.</p><p>This is where AI has delivered the most visible improvements, but it is just a small part of how software gets shipped. There is an <strong>outer loop</strong> too: deciding what is worth doing, shaping and reviewing the solution, releasing it, and learning from production.</p><p>If you don&#8217;t improve both, the constraints move elsewhere:</p><ul><li><p><strong>Reviews</strong> &#8212; agents create more PRs than people can reasonably inspect.</p></li><li><p><strong>Shaping product</strong> &#8212; the team can build faster than it can decide what good work looks like.</p></li><li><p><strong>Customer signal</strong> &#8212; shipping the wrong thing faster is still waste.</p></li></ul><p>At a small scale, this is the same <a href="https://refactoring.fm/p/acceleration-whiplash">acceleration whiplash</a> I have experienced with <a href="https://tolaria.md/">Tolaria</a>. Starting work is cheap, but my ability to review it, decide what is good enough, and create the next piece of work does not scale at the same rate.</p><p>So the goal should be end-to-end throughput, which requires a workflow<em> </em>that encompasses both the inner and the outer loop.</p><p>I wrote a full case study about how the guys at TRM are doing this &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;39d4fe82-118c-4a79-9cbb-c0160a7aaa24&quot;,&quot;caption&quot;:&quot;Hey there, Luca here!&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;A Case Study in AI Product Development &#128300;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-07-29T07:31:16.597Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!sCNl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdf5bd1-2bce-4b88-ae47-2e5e43c373b9_1274x1154.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/a-case-study-in-ai-product-development&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:208835589,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:56,&quot;comment_count&quot;:3,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#129514; Agents will game your tests</h2><p>When I spoke with <strong>Anush Elangovan</strong>, VP of AI Software at AMD, he described a funnel where creativity is allowed to run wild at the top, but progressively more human judgment is needed as code moves toward production.</p><p>He also shared an entertaining story about building <a href="https://rocm.blogs.amd.com/software-tools-optimization/spur-gpu-job/README.html">Spur</a>, an AI-native job scheduler. The agents writing the code were so &#8220;smart&#8221; that they found a shortcut: instead of actually running unit tests on hardware, they simulated the hardware and reported success.</p><blockquote><p><em>&#8220;The agents were so smart that they would simulate the hardware and pass the unit test and say &#8216;yes, success.&#8217; We had to say no, no, no &#8212; you never simulate the hardware. You have to actually run the test on hardware before you can promote a PR.&#8221;</em></p></blockquote><p>That forced the team to build a <em>superset</em> of the guardrails they previously had for humans. Test harnesses now need to account for <strong>adversarial agent behavior</strong>. The result, Anush said, is a quality system roughly 10x more comprehensive than what was needed when humans were the only contributors.</p><p>I have found this to be a useful posture: assume agents will optimize for passing the tests, not necessarily respecting their <em>spirit,</em> and design accordingly.</p><p>You can find the full conversation with Anush here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;236e79ed-af40-4e1f-b222-1553547e8c71&quot;,&quot;caption&quot;:&quot;Listen now:&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Speed is the Only Moat &#127950;&#65039; &#8212; with Anush Elangovan&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-07-17T07:00:22.613Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/w2F-u0kJllA&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/speed-is-the-only-moat-with-anush&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;18e4722b-3fa6-492d-a5a0-5383a03f33da&quot;,&quot;id&quot;:206247034,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:24,&quot;comment_count&quot;:0,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128218; Weekly Readings</h2><p>Finally, here are the best articles I have read this week:</p><div><hr></div><h4>&#129351; <a href="https://skamille.medium.com/the-managers-path-in-the-age-of-ai-279cb6611d66">The Manager&#8217;s Path in the Age of AI</a></h4><h5>13 min &#8226; by Camille Fournier</h5><p>Camille asks what still belongs to managers when AI raises individual output and eats the small day-to-day interactions that build trust and rapport across an org. This is the written version of the talk I heard at LDX3. I loved 100% of it and it gave me a lot to think about.</p><div><hr></div><h4>&#129352; <a href="https://theengineeringmanager.substack.com/p/code-yellow-code-red">Code Yellow, Code Red</a></h4><h5>11 min &#8226; by James Stanier</h5><p>James walks through declaring a Code Yellow after months of instability eroded some customer trust. Running it well means clear communication, defined goals, and company-wide support to fix problems, without blame.</p><div><hr></div><h4>&#129353; <a href="https://lethain.com/software-factory-experiment/">Trying the Software Factory Pattern</a></h4><h5>3 min &#8226; by Will Larson</h5><p>Will is trying a &#8220;software factory&#8221; loop: agents audit the project&#8217;s goals and metrics, keep track of state on Linear, work on the non-blocked tasks, and re-check when the description goes stale. This was short and practical, and a good read.</p><div><hr></div><p>And that&#8217;s it for today! If you are finding this newsletter valuable, <strong>subscribe to the full version</strong>!</p><p>1700+ engineers and managers have joined already, and they receive our flagship weekly long-form articles about <strong>how to ship faster</strong> and <strong>work better together</strong>! Learn more about the <a href="http://refactoring.fm/about">benefits of the paid plan here</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Run a better engineering team&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://refactoring.fm/subscribe?"><span>Run a better engineering team</span></a></p><p>See you next week!<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Community wisdom: developer productivity, AI wins, and next events! 💬]]></title><description><![CDATA[Our monthly edition focused on our community updates!]]></description><link>https://refactoring.fm/p/community-wisdom-developer-productivity</link><guid isPermaLink="false">https://refactoring.fm/p/community-wisdom-developer-productivity</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 25 Sep 2026 12:00:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HT18!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there! Following a very successful <a href="https://refactoring.fm/p/community-updates-taking-time-off">first edition</a>, I am publishing a new round of updates from our community, which may now turn into a monthly routine!</p><p>The <strong><a href="https://refactoring.fm/p/refactoring-community">Refactoring Community</a></strong> hosts a ton of great conversations in threads, but, most of all, every month we run two live sessions, hosted by our awesome Community Lead <a href="https://www.seckington.com/">Melinda Seckington</a>, and always joined by yours truly. These sessions are:</p><ul><li><p><strong>Mastermind</strong> &#8212; leaders bring a real problem and we work on it.</p></li><li><p><strong>AI Club</strong> &#8212; people show what they learned about AI that month, including the parts that did not work.</p></li></ul><p>This monthly recap makes sure the good stuff doesn&#8217;t stay confined to Zoom. So here is the agenda for today:</p><ul><li><p>&#129504; <strong>How to think about productivity now</strong> &#8212; what we discussed in the September Mastermind.</p></li><li><p>&#129668; <strong>September AI Club</strong> &#8212; terminal personal OSes, picking the right models, and agents that live in the cloud.</p></li><li><p>&#128197; <strong>What&#8217;s next</strong> &#8212; AI Club on 2 Oct, Mastermind on 19 Oct.</p></li><li><p>&#128172; <strong>How this works</strong> &#8212; and how to join.</p></li></ul><p>Let&#8217;s dive in!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HT18!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HT18!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 424w, https://substackcdn.com/image/fetch/$s_!HT18!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 848w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HT18!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png" width="1456" height="834" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:834,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3096884,&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://refactoring.fm/i/212989588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.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_!HT18!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 424w, https://substackcdn.com/image/fetch/$s_!HT18!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 848w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">A screenshot from our AI Club! &#129668;</figcaption></figure></div><div><hr></div><h2>&#129504; Redefining developer productivity</h2><p>In this month&#8217;s Mastermind, we talked about what &#8220;good&#8221; looks like when most of the volume metrics (PRs, commits, lines of code) feel worse as proxies than they used to. Btw, have they ever been good? Probably not, but they are arguably worse now because of AI.</p><p>One of the biggest points of discussion was the tension between:</p><ul><li><p><strong>Investing in automation</strong> &#8212; making the &#8220;harness&#8221; and overall pipeline better, versus</p></li><li><p><strong>Just shipping things</strong> &#8212; with familiar human-in-the-loop tools, especially under a short deadline.</p></li></ul><p>Why is there a tension? Because with engineers increasingly acting like <strong>engineering managers of agents</strong>, there is often higher leverage in using their time to improve the system, rather than closing the ticket in front of them. But it&#8217;s still tricky to balance the two</p><p>Personally, I have found that, before digging into a task, it&#8217;s worth asking yourself whether this is a <em>system problem</em>, worth fixing for posterity once and for all, or just an immediate, one-off ask.</p><p>My rule of thumb is: as soon as you find yourself <strong>doing something twice</strong>, make sure you don&#8217;t do it three times.</p><p>We also talked about <strong>what to measure instead</strong>. Some people pointed at the team actually delivering on their cycle (or Sprint) goal, while others discussed the amount of features shipped, or cycle time. I think a very good leading signal is simply to directly ask engineers how they feel about work, and where they felt they were wasting time that week. Good conversations always deliver an incredible amount of signal.</p><p>There is also a ton of work that is hard to measure, aka <strong>invisible work</strong>. Things like mentoring, &#8220;insurance&#8221; maintenance, and the informal chats that keep teams moving do not show up well under hard metrics, and they get squeezed when people optimize for numbers. It&#8217;s also unclear how to score that work cleanly. No one had an answer here!</p><p>As always, you will find the full writeup in the <a href="https://community.refactoring.club/c/mastermind">Mastermind</a> space (if you are in the community).</p><div><hr></div><h2>&#129668; September AI Club</h2><p>In this month&#8217;s AI Club, four people shared their AI wins for five minutes each, then we did the quickfire round again. Melinda wrote it up properly <a href="https://community.refactoring.club/c/ai-club/notes-from-the-september-ai-club">here</a>. I liked a few threads in particular:</p><ul><li><p><strong>AI as an accountability partner</strong> &#8212; Kishan has built something like a personal OS that mostly runs from the terminal: daily check-ins that read journals and plans, a weekly retro on what energized / drained him, and a folder structure so ideas (notes, photos, voice memos) get filed without conscious sorting. He also shifts models by task (heavier for planning, lighter for execution) and periodically audits the core memory file itself, because instructions written in one place do not always get pulled into the right context.</p></li><li><p><strong>The same prompt, very different outputs</strong> &#8212; Julie ran the same reflection prompt across a chat interface and a coding CLI on the newest model family. The chat version came back quite readable, while CLI version needed a lot of correction. Several people in the room had noticed the same split: this generation of models can be stronger at one-shot coding and weaker at other things, like&#8230; clear writing! So, do not assume &#8220;newer&#8221; means better across the board.</p></li><li><p><strong>Moving the operation to the cloud</strong> &#8212; I shared my own migration of agents off the Mac Mini onto cloud machines (after a power outage and too many agents fighting over one box). Coding stays local on a kanban, while everything upstream moved. I wrote the longer version in <a href="https://refactoring.fm/p/my-agents-are-moving-to-the-cloud">My agents are moving to the cloud</a>.</p></li><li><p><strong>Working solo on something that cannot fail</strong> &#8212; Andrea is deep in a high-stakes embedded / security project, mostly alone after the rest of the team went on leave. He walked us through how he set up two tiers of docs: customer-facing ones, reviewed manually line by line, and internal brainstorming ones, mostly for AI consumption and not reviewed directly. Autonomy helps a lot, but every now and then it does funny things, like fabricating a citation that doesn&#8217;t exist, so he keeps the high-stakes parts of the ops on a tight leash.</p></li></ul><p>All in all, a very practical session. Less about shiny demos, more about how people actually run their week with these tools.</p><div><hr></div><h2>&#128197; What&#8217;s next</h2><p>Both the Mastermind and the AI Club, like all community activities, are for paid members of Refactoring. Here are the next editions &#128071; RSVP on the event page to help us size the room:</p><ul><li><p><strong>AI Club</strong> &#8226; <strong>Fri 2 Oct, 14:00 CEST</strong> &#8212; five-minute shares, questions, and the one-sentence fireside round at the end.</p></li><li><p><strong>Mastermind</strong> &#8226; <strong>Mon 19 Oct, 18:00 CEST</strong> &#8212; third Monday of the month, as usual!</p></li></ul><p>Bring your questions! These sessions work because of the members, not because someone gives a talk.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j6ch!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j6ch!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 424w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 848w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 1272w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j6ch!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png" width="1456" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:889735,&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://refactoring.fm/i/212989588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.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_!j6ch!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 424w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 848w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 1272w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><div><hr></div><h2>&#128172; How this works</h2><p>The <a href="https://community.refactoring.club/">Refactoring Community</a> is a private space for paid subscribers of Refactoring: it hosts async threads, Q&amp;A, and monthly live rooms like these.</p><p>It is home to more than 1500 engineers and managers, and it&#8217;s my favorite place on the internet!</p><p>To join it, subscribe to the full version of Refactoring! </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Join the full Refactoring &#128588;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://refactoring.fm/subscribe?"><span>Join the full Refactoring &#128588;</span></a></p><p>That&#8217;s it for today! See you on the next events!</p><p>I wish you a great weekend &#128075;<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[The Best Ideas from LDX3 and ProductLab 🏆]]></title><description><![CDATA[My personal highlights from attending two big conferences last month]]></description><link>https://refactoring.fm/p/the-best-ideas-from-ldx3-and-productlab</link><guid isPermaLink="false">https://refactoring.fm/p/the-best-ideas-from-ldx3-and-productlab</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 23 Sep 2026 07:02:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vjuo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! Welcome to a </em>&#128274;<em> <strong>weekly essay</strong></em> &#128274;<em> from Refactoring.</em></p><p><em>Every week I <a href="https://refactoring.fm/s/essays?sort=top">write an article</a> to 170K+ engineers about how to make good software together. To get access to all our articles, resources, and our <a href="https://refactoring.fm/p/refactoring-community">private community</a>, subscribe to the full version below: </em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Run better engineering teams&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="http://refactoring.fm/subscribe?"><span>Run better engineering teams</span></a></p><div><hr></div><p>I am back from two weeks of travel, during which I took some time off but also attended two great conferences: <a href="https://leaddev.com/leaddev-new-york/">LDX3</a> in New York, and <a href="https://productlab.app/">ProductLab</a> in Berlin.</p><p>Conferences, for me, are a great way to say hi to friends and to check the pulse on the trends and sentiment in tech. This time made no exception: I learned a lot by attending talks and workshops, and simply by talking with people.</p><p>So this week&#8217;s edition covers my personal highlights from such talks and conversations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vjuo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vjuo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png 424w, https://substackcdn.com/image/fetch/$s_!vjuo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png 848w, https://substackcdn.com/image/fetch/$s_!vjuo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!vjuo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vjuo!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png" width="1200" height="798.6263736263736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:2427015,&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://refactoring.fm/i/216741812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vjuo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png 424w, https://substackcdn.com/image/fetch/$s_!vjuo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png 848w, https://substackcdn.com/image/fetch/$s_!vjuo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!vjuo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bb3db9-9ace-4170-b536-1881a7e6025f_2110x1404.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p>Here is the agenda for today:</p><ul><li><p>&#128666; <strong>Doing migrations right</strong> &#8212; Will Larson on Imprint&#8217;s delivery journey, framed as a set of migrations.</p></li><li><p>&#128483;&#65039; <strong>Guiding people through change</strong> &#8212; Meg Adams&#8217; diagnostic tools for having hard conversations.</p></li><li><p>&#129517; <strong>The Manager&#8217;s Path in the Age of AI</strong> &#8212; Camille Fournier on what still belongs to managers in 2026.</p></li><li><p>&#128202; <strong>DX quarterly numbers</strong> &#8212; Justin Reock&#8217;s latest AI impact data, plus how I think about these metrics.</p></li><li><p>&#127897;&#65039; <strong>How n8n is embracing AI</strong> &#8212; highlights from my conversation with Jan Oberhauser, founder of n8n, in Berlin.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><h2>1) &#128666; Doing migrations right</h2><p>LDX3 opened with a great keynote by <a href="http://lethain.com/">Will Larson</a>, who described the <em>delivery</em> journey of his team at Imprint: from manual gates everywhere, to CI/CD, to agentic workflows.</p><p>Will&#8217;s talk was extremely practical (we need more stories like this), and framed these steps as <strong>migrations</strong>. We know a lot about migrating code, and most of the same logic can be applied to processes and workflows.</p><p>Here are the parts of Will&#8217;s approach that stuck with me:</p><ul><li><p><strong>Understanding people&#8217;s problems</strong> &#8212; there&#8217;s a reason why people do things the current way, even if it looks flawed. To build something better, you need to understand current problems deeply, which is hard!</p></li><li><p><strong>Getting buy-in</strong> &#8212; Will stressed how, even if there was clear top-down input about the direction, the implementation was a collaborative effort where people were involved at all stages. At some point, Will wanted to migrate from Jira to Linear, and started by involving the people who were the biggest Jira fans. He knew that if he could address their concerns, the rest of the team would be easier to migrate to.</p></li><li><p><strong>Draw hard lines</strong> &#8212; inclusion and collaboration matters, but once a direction is taken, resources need to go to supporting that direction. In picking AI coding agents, Will settled on making Claude Code the recommended coding tool: people who wanted to use something else could do it, but would not receive support from the platform team.</p></li><li><p><strong>Sweat the details</strong> &#8212; with any migration there is always a long tail of stuff to be fixed and edges to be smoothed until things truly work for everyone. Keep working on it even when it seems that &#8220;most of the work is done&#8221;.</p></li></ul><div><hr></div><h2>2) &#128483;&#65039; Guiding people through change</h2><p>During LDX3, I attended a workshop by my friend <a href="http://megkadams.com/">Meg Adams</a>, who I also <a href="https://refactoring.fm/p/building-psychologically-safe-teams">interviewed last year</a>, about having good conversations with people and guiding them through change.</p>
      <p>
          <a href="https://refactoring.fm/p/the-best-ideas-from-ldx3-and-productlab">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Growing juniors, native AI products, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #225]]></description><link>https://refactoring.fm/p/growing-juniors-native-ai-products</link><guid isPermaLink="false">https://refactoring.fm/p/growing-juniors-native-ai-products</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 21 Sep 2026 07:02:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O-mJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, <a href="https://refactoring.fm/about">Luca</a> here! Welcome to a new edition of the </em><strong>&#128161;</strong><em> <strong>Monday Ideas </strong></em><strong>&#128161; </strong><em>&#8212; ideas and readings to start the week on the right foot.</em></p><p><em>I also publish an original essay every Wednesday. Here is the one from last week in case you missed it:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b1377770-357e-439b-b4bb-b805d65cc1a7&quot;,&quot;caption&quot;:&quot;Hey there, Luca here!&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Getting started with AI governance &#128274;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-09-16T13:03:30.670Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/getting-started-with-ai-governance&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:215418545,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:27,&quot;comment_count&quot;:0,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h3>&#128296; <a href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=sandbox">Autonomous Software Dev for the Enterprise</a></h3><p><em>This week&#8217;s newsletter is brought to you by our friends at <a href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=sandbox">Blitzy</a>!</em></p><p><span>Blitzy is built for large, </span><strong><span>complex software projects</span></strong><span> that other coding agents cannot handle: large-scale refactors, scaled vulnerability remediation, and undocumented legacy systems.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O-mJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O-mJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png 424w, https://substackcdn.com/image/fetch/$s_!O-mJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png 848w, https://substackcdn.com/image/fetch/$s_!O-mJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!O-mJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O-mJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png" width="462" height="241.78846153846155" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:462,&quot;bytes&quot;:2058069,&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://refactoring.fm/i/215421733?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.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_!O-mJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png 424w, https://substackcdn.com/image/fetch/$s_!O-mJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png 848w, https://substackcdn.com/image/fetch/$s_!O-mJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!O-mJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b65a43-4019-498d-ab8d-aafd90ce76f9_2048x1072.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p><span>Blitzy&#8217;s Sandbox lets engineers evaluate Bitzy on their own software estate, at their own pace. Eligible organizations can connect real applications, </span><strong><span>reverse-engineer up to 1 million lines of code</span></strong><span>, generate up to 25,000 lines of E2E tested code, and surface prioritized security vulnerabilities across their software estate.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=sandbox&quot;,&quot;text&quot;:&quot;Try Blitzy on your codebase&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=sandbox"><span>Try Blitzy on your codebase</span></a></p><div><hr></div><h2>&#127793; Grow juniors with guardrails and judgment</h2><p>One of the most important qualities of junior engineers is that they can turn into senior engineers. But that does not happen automatically.</p><p>There is a dream scenario where juniors grow, become senior, and <strong>help rotate headcount</strong> when seniors leave. But there is also a nightmarish one where juniors are thrown in the trenches, abuse AI in ways they do not understand, nobody checks on them, and the product eventually goes to shit.</p><p>When the growth cycle breaks, it is usually because juniors do not have a tight enough feedback loop: 1) one that keeps the work high quality, and 2) one that helps them learn from doing it.</p><p>To me, the loop looks two-fold:</p><ul><li><p><strong>Invest in an amazing harness</strong> &#8212; create <a href="https://refactoring.fm/p/my-ai-coding-workflow-b09?utm_source=publication-search">guardrails, rules, and gates</a>, and encode everything that can ensure quality automatically. This helps everyone: seniors, AI, and juniors who can learn from the same rules.</p></li><li><p><strong>Pair juniors with seniors</strong> &#8212; let young folks experiment and move fast, but keep seniors close enough to provide judgment and supply systems thinking.</p></li></ul><p>There is no way around the fact that AI makes the junior path harder in some ways, because more judgment is needed earlier. But that is also why freezing junior hiring is such a fragile bet: you optimize for today&#8217;s output, at the expense of starving the pipeline that should produce tomorrow&#8217;s seniors.</p><p>I wrote more about this in the full piece &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;13919b30-a69c-49ef-a661-78e605da4f57&quot;,&quot;caption&quot;:&quot;One of the dominant narratives in software today is that AI is making junior engineers redundant.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Case for Hiring Junior Engineers &#127793;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-08-12T07:19:52.213Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iy_0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe769dbfe-186f-440f-b11a-6c0a37004fbf_1888x1280.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/the-case-for-hiring-junior-engineers&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:210602503,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:53,&quot;comment_count&quot;:1,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128241; Most AI products are still &#8220;m.google.com&#8221;</h2><p>When I spoke with <strong>Charlie Guo</strong>, developer experience engineer at OpenAI, we walked through three eras of AI-assisted development.</p><p>First came models that could autocomplete snippets, which became tools like GitHub Copilot. Then came AI-native IDEs like Cursor, where the model sat inside the editor. Now we are entering a third phase: standalone apps that orchestrate agents, and move beyond the text editor entirely.</p><p>Charlie believes most products are still stuck in the middle of that transition:</p><blockquote><p><em>The m.google.com of AI was (or is): take this product and cram a chat box on the sidebar, and then chat with it on the side while you&#8217;re doing stuff in the app.</em></p></blockquote><p>That&#8217;s similar to when the iPhone arrived: companies took desktop websites and mostly squeezed them into a vertical layout. It took nearly a decade to invent native mobile products: Uber, DoorDash, things that could not really exist on a desktop.</p><p>We are in that same messy middle with AI. A chat sidebar is not necessarily bad, but it&#8217;s just an easy retrofit. Native agent experiences are still being invented.</p><p>You can find the full conversation with Charlie here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;488f1888-cb98-4715-9e56-35bef47c8328&quot;,&quot;caption&quot;:&quot;Listen now:&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Building With Agents Today &#129302; &#8212; with Charlie Guo&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-08-07T07:00:53.190Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/JHAm58YZPIE&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/building-with-agents-today-with-charlie&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;92387196-e8f4-46de-a335-b56e984dc3e1&quot;,&quot;id&quot;:209980935,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:32,&quot;comment_count&quot;:0,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128218; Weekly Readings</h2><p>Finally, here are the best articles I have read this week:</p><div><hr></div><h4>&#129351; <a href="https://rdel.substack.com/p/rdel-160-what-psychological-costs">What psychological costs does AI adoption create for engineers?</a></h4><h5>4 min &#8226; by Lizzie Matusov</h5><p>Lizzie covers a case study from a large Danish software company, one year into an org-wide AI rollout. Regular engineers feel &#8220;accountability anxiety&#8221; and &#8220;craft identity disruption&#8221; as tools take over work, while architects (more augmented than replaced) barely show the same costs. Interesting research, worth looking into.</p><div><hr></div><h4>&#129352; <a href="https://devz.cl/posts/i-spent-my-vacations-de-brainrotting/">De-Brainrot Vacations</a></h4><h5>4 min &#8226; by Daniel V.</h5><p>This piece by Daniel really resonated with me. He noticed that after years of engineering, plus AI and phone dopamine, his thinking got slower and lazier. So he used a countryside vacation to reset his brain by reading hard books and doing math and physics as a hobby. This is peak <a href="https://refactoring.fm/p/mental-marathoners">mental marathoners</a>!</p><div><hr></div><h4>&#129353; <a href="https://www.stephendiehl.com/posts/internet_predatory_cesspit/">The Internet Is Kind of a Predatory Cesspit Now</a></h4><h5>8 min &#8226; by Stephen Diehl</h5><p>Stephen argues that, over the years, &#8220;predation&#8221; moved from the periphery of the internet to its very core, and that a lot of ordinary people have been (often unwillingly) conscripted into it. I have less of a bleak view about this, but I see where Stephen is coming from and I don&#8217;t necessarily disagree. Worth reading!</p><div><hr></div><p>And that&#8217;s it for today! If you are finding this newsletter valuable, <strong>subscribe to the full version</strong>!</p><p>1700+ engineers and managers have joined already, and they receive our flagship weekly long-form articles about <strong>how to ship faster</strong> and <strong>work better together</strong>! Learn more about the <a href="http://refactoring.fm/about">benefits of the paid plan here</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Make your team ship faster!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Make your team ship faster!</span></a></p><p>See you next week!<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Building Tools for Defenders 🛡️ — with Rahul Raina]]></title><description><![CDATA[Watch now (61 mins) | Refactoring Podcast &#8226; Episode 72]]></description><link>https://refactoring.fm/p/building-tools-for-defenders-with</link><guid isPermaLink="false">https://refactoring.fm/p/building-tools-for-defenders-with</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 18 Sep 2026 07:03:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/215788206/058a6f7bf038369cabd6980577b48a58.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-IOHvz58PwyU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IOHvz58PwyU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IOHvz58PwyU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="pullquote"><p style="text-align: center;"><em><strong>Listen now:<br><a href="https://www.youtube.com/@refactoringclub">YouTube</a> | <a href="https://podcasts.apple.com/us/podcast/refactoring-podcast/id1719137305">Apple</a> | <a href="https://open.spotify.com/show/7Luds9dmzZDoDC8Q7EMbSw">Spotify</a></strong></em></p></div><blockquote><p><em>Today&#8217;s episode is brought to you by: <strong><a href="https://ntn.so/refactoring">Notion</a></strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://ntn.so/refactoring" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png" width="312" height="108.42" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:278,&quot;width&quot;:800,&quot;resizeWidth&quot;:312,&quot;bytes&quot;:31046,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://ntn.so/refactoring&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/209980935?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><em>Learn more about<strong> Notion&#8217;s Developer Platform </strong>today at<strong> <a href="https://ntn.so/refactoring">https://ntn.so/refactoring</a></strong></em></p></blockquote><div><hr></div><p><span>Today's guest is </span><strong><a href="https://www.linkedin.com/in/rahulr0609/"><span>Rahul Raina</span></a></strong><span>, co-founder of TRM Labs, which is a YC-backed company that works on solutions and products for security, fighting criminal networks, AI attackers, and more. <br><br>With Rahul, we had a great chat that covered a lot of ground, starting with the tough reality of cyber defense today, and why attackers by default always have the upper hand when AI and technology improves. And then we moved to a deep dive into how the TRM team works and how they rebuild their whole product development workflow for AI, including reshuffling all the technical roles, compressing the developer process steps, and creating dedicated artifacts for human reviews.</span></p><div><hr></div><h2>&#129351; Interview Summary</h2><p>If you are a <strong>&#128274; paid subscriber &#128274;</strong> you will find my own <em>summary</em> of the interview below.</p><p>It&#8217;s the 5-minute, handcrafted takeaways of what we talked about, with timestamps to the relevant video moments, for those who don&#8217;t have time to sit through the 1-hour chat.</p><p>Here is the agenda for today:</p><ol><li><p><strong>&#128737;&#65039; The asymmetry of cyber defense</strong></p></li><li><p><strong>&#128260; Inner loop vs. outer loop</strong></p></li><li><p><strong>&#127959;&#65039; Redesigning the shipping framework</strong></p></li><li><p><strong>&#129514; Building a culture of experimentation</strong></p></li><li><p><strong>&#128269; Human review in an AI-driven workflow</strong></p></li></ol><p>&#10240;Let&#8217;s dive in &#128071;</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/building-tools-for-defenders-with">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Getting started with AI governance 🔒]]></title><description><![CDATA[A primer on how you should think about governing people, agents, tools, and actions.]]></description><link>https://refactoring.fm/p/getting-started-with-ai-governance</link><guid isPermaLink="false">https://refactoring.fm/p/getting-started-with-ai-governance</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 16 Sep 2026 13:03:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CR5A!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Hey there, Luca here!</span></p><p><span>Lately I have been talking with both software engineers </span><em><span>and</span></em><span> security people about this moment in </span><strong><span>AI rollout</span></strong><span>, and it&#8217;s interesting how they feel it from opposite ends.</span></p><p><span>At first glance, there seems to be a real tradeoff between making AI useful, and keeping it safe:</span></p><ul><li><p><span>On one side, the best stories about AI impact always involve </span><strong><span>connecting it to pretty much everything</span></strong><span> you got: tickets, docs, CRM, Slack, telemetry, and more.</span></p></li><li><p><span>On the other side, this creates a </span><strong><span>big surface for threat</span></strong><span> that </span><a href="https://embracethered.com/blog/posts/2026/breaking-claude-code-opus-5-and-automode/"><span>even the latest models are extremely vulnerable to</span></a><span>.</span></p></li></ul><p><span>As of today, most agent setups I see are still completely ungoverned. What can this agent touch (MCP servers, browser, data, ...)? Who connected it? What customer data can actually leave the building?</span></p><p><span>Many teams are conflicted about putting real governance in place because that&#8217;s </span><strong><span>perceived as a </span></strong><em><strong><span>brake</span></strong></em><span>, in a moment in time where you are expected to </span><em><span>accelerate</span></em><span> instead.</span></p><p><span>I have a contrarian take on this, that I want to discuss today.</span></p><p><span>In 2006, Peter Summerlin, a professor in Landscape Architecture in Mississippi, ran </span><a href="https://web.archive.org/web/20060928021844/http://www.asla.org/awards/2006/studentawards/282.html"><span>a simple study</span></a><span> about kids&#8217; behavior in playgrounds:</span></p><blockquote><p><em><span>A simple study was conducted to discover </span><strong><span>the effects of a fence around a playground</span></strong><span> and the consequent impact it would have on preschool children. Teachers were to take their children to a local playground in which there was no fence during their normal recess hour. The kids were to play as normal. The same group was to be taken to a comparable playground in which there was a defined border designated by a fence.</span></em></p><p><em><span>In the first scenario, the children remained huddled around their teacher, fearful of leaving out of her sight. The later scenario exhibited drastically different results, with the children feeling free to explore within the given boundaries.</span></em></p></blockquote><p><span>So, in playgrounds with fences, </span><strong><span>kids actually used </span></strong><em><strong><span>more</span></strong></em><strong><span> space</span></strong><span>.</span></p><p><span>I believe good governance </span><em><span>can</span></em><span> be an accelerant. Like kids, once people know where fences are, people can be empowered to do more </span><em><span>within</span></em><span> them. But that&#8217;s only if governance is </span><em><span>good, </span></em><span>which is a big if!</span></p><p><span>Today I will try to explore what this looks like, in the context of AI. Here is what we will cover:</span></p><ul><li><p><span>&#128737;&#65039; </span><strong><span>Bounded freedom</span></strong><span> &#8212; why governance speeds AI rollout, instead of killing it.</span></p></li><li><p><span>&#129521; </span><strong><span>What you should actually govern</span></strong><span> &#8212; people, agents, data, tools, and actions.</span></p></li><li><p><span>&#128274; </span><strong><span>AI operates on a subset of human trust</span></strong><span> &#8212; the analogy between human and AI governance only goes so far.</span></p></li></ul><p><span>Let&#8217;s dive in!</span></p><div><hr></div><p><em><span>To explore this, today I am also bringing in Becky Brooks from</span></em><span> </span><em><a href="https://mcpmanager.ai/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=sept_article"><span>MCP Manager</span></a>. They work at the forefront of this topic, and have helped<span> me a lot in making my mind up.</span></em></p><p><em><span>I am grateful to have them as a partner on this piece, and you should check out their </span><a href="https://mcpmanager.ai/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=sept_article"><span>MCP gateway</span></a><span>, which companies use to manage how data and tools flow to and from AI.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://mcpmanager.ai/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=sept_article&quot;,&quot;text&quot;:&quot;Learn more about MCP Manager&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://mcpmanager.ai/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=sept_article"><span>Learn more about MCP Manager</span></a></p><p><em><span>In any case, I will only write my unbiased opinion about the practices and tools covered, MCP Manager included.</span></em></p><div><hr></div><h2><span>&#128737;&#65039; Bounded freedom</span></h2><p><span>A lot of ambitious teams that I know </span><em><span>delay</span></em><span> governance and compliance, with the idea of going AI-native first, and cleaning up later. In my experience, this order is backwards.</span></p><p><span>Without clarity, people react in two possible ways:</span></p><ul><li><p><strong><span>They freeze</span></strong><span> &#8212; they are unsure about being punished for this or that, and they just go the safe route, doing with AI much less than they would be able to.</span></p></li><li><p><strong><span>They go underground</span></strong><span> &#8212; I was on a train once, and a guy in the seat in front of me was using his company laptop with one hand, and ChatGPT on his personal phone with the other hand, copy-pasting stuff between the two. You don&#8217;t want that to happen, obviously.</span></p></li></ul><p><span>There is a </span><a href="https://cloudsecurityalliance.org/artifacts/the-state-of-ai-security-and-governance"><span>study by Google Cloud</span></a><span> from late 2025 that confirms this. Teams with clear governance in place get much farther, and faster, on agentic adoption than those without:</span></p><ul><li><p><span>Teams with </span><strong><span>full governance</span></strong><span> &#8594; 46% adoption</span></p></li><li><p><span>Teams with </span><strong><span>partial governance</span></strong><span> &#8594; 25% adoption</span></p></li><li><p><span>Teams with </span><strong><span>&#8220;still in development&#8221;</span></strong><span> governance &#8594; 12% adoption</span></p></li></ul><p><span>Of course, correlation is not causation, but it still makes it hard to look at governance as only a tax.</span></p><p><span>And when you think about it, that&#8217;s already what happens in specific domains, like coding. We talk about </span><em><span>guardrails</span></em><span> for AI coding all the time, and I even published my own approach with </span><a href="https://refactoring.fm/i/200102476/guides-gates-and-guards"><span>guides, gates, and guards</span></a><span>, which is, admittedly, quite strict.</span></p><p><span>Having strict guardrails is what allows me to be </span><strong><span>more liberal</span></strong><span> with the tasks I give to my agents, and what they can ship.</span></p><p><span>So if good governance is guardrails for data, tools, and people, what does this look like? Let&#8217;s try to figure out.</span></p><div><hr></div><h2><span>&#129521; What you should actually govern</span></h2><p><span>Working from first principles, what is it that you should actually govern? To me, it looks like four things:</span></p><ol><li><p><strong><span>People</span></strong><span> &#8212; who may use which AI client or gateway (by role, team, seniority). E.g. engineers get the coding setup, interns do not get production CRM tools, etc.</span></p></li><li><p><strong><span>Agents / clients</span></strong><span> &#8212; which AI surfaces are approved at all. Company Claude yes, personal ChatGPT no, and so on.</span></p></li><li><p><strong><span>Data &amp; tools</span></strong><span> &#8212; what the agent can see (and call). Drive folders, Slack channels, Jira projects, databases, CRM, MCP servers.</span></p></li><li><p><strong><span>Actions</span></strong><span> &#8212; what it may </span><em><span>do</span></em><span> once it is connected. Read, write, delete, open a PR, message a customer.</span></p></li></ol><p><span>It&#8217;s interesting to note that this looks exactly like the same line of reasoning we should apply to people, even without AI. And I would argue that we should start with </span><strong><span>governance for people first</span></strong><span>, and address AI later, because the opposite is impossible.</span></p>
      <p>
          <a href="https://refactoring.fm/p/getting-started-with-ai-governance">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[My agents are moving to the cloud ☁️]]></title><description><![CDATA[How I moved most orchestration to Grok Bot]]></description><link>https://refactoring.fm/p/my-agents-are-moving-to-the-cloud</link><guid isPermaLink="false">https://refactoring.fm/p/my-agents-are-moving-to-the-cloud</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Tue, 08 Sep 2026 07:04:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rtq-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! Welcome to a &#10024; <strong>monthly free essay</strong></em> <em>&#10024; from Refactoring.</em></p><p><em>Every week I <a href="https://refactoring.fm/s/essays?sort=top">write an article</a> to 170K+ engineers about how to make good software together. To get access to all our articles, resources, and our <a href="https://refactoring.fm/p/refactoring-community">private community</a>, subscribe to the full version below: </em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Run better engineering teams&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="http://refactoring.fm/subscribe?"><span>Run better engineering teams</span></a></p><div><hr></div><p>Hey there! Welcome to a new edition of my monthly updates on my AI coding workflow.</p><p>Once a month I publish an article about how I develop <a href="https://tolaria.md/">Tolaria</a>, including an overall recap plus the latest updates, and some useful resources. I only ship these when there is something real to say, so you will not get the same post every month just with a different date on top!</p><p>I consider part of my work (combined between Tolaria &amp; Refactoring) to always try the latest and greatest, so you will only get thoughts that come from real usage and experiments.</p><p>So here is the agenda for today:</p><ul><li><p>&#128260; <strong>Workflow recap</strong> &#8212; for those who missed the previous episodes.</p></li><li><p>&#128167; <strong>Tolaria updates</strong> &#8212; product updates from this month, and what&#8217;s coming next.</p></li><li><p>&#9729;&#65039; <strong>Agents move to the cloud</strong> &#8212; a general trend plus my personal experience of gradually moving away from my Mac Mini (and my laptop).</p></li><li><p>&#129302; <strong>Moving to Grok Bot</strong> &#8212; from a single local orchestrator agent to a panel of five, hosted in the cloud.</p></li><li><p>&#10145;&#65039; <strong>What&#8217;s next</strong> &#8212; what I am excited to improve for next time.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><h2>&#128260; Workflow recap</h2><p>For those who missed the previous episodes, here are some pointers:</p><ul><li><p><a href="https://refactoring.fm/p/how-i-run-the-tolaria-project">Product management</a> &#8212; how I do <em>traffic control</em> between issues, PRs, and product requests, and orchestrate the overall product backlog.</p></li><li><p><a href="https://refactoring.fm/i/200102476/guides-gates-and-guards">AI Coding</a> &#8212; my own approach to scaling coding with agents, via guides, gates, and guards. Mostly remained unchanged from last month.</p></li><li><p><a href="https://refactoring.fm/p/introducing-the-tolaria-alliance">Tools I use</a> &#8212; deeper dive into how I use the tools from the alliance, and others too.</p></li><li><p><a href="https://refactoring.fm/p/summer-ai-coding-updates">Summer AI Coding Updates</a> &#8212; last month&#8217;s edition (forking our editor, custom performance gates, and notes about the latest GPT models).</p></li></ul><p>Also, this series (and the whole development of Tolaria) is made possible by the great tools I use everyday, that also sponsor the project, which are:</p><h4>1) <a href="http://codescene.com/">CodeScene</a> &#128300;</h4><p>It guarantees great code health across the codebase. My coding agent uses their <a href="https://codescene.com/product/code-health-mcp">CodeHealth MCP</a> as a guardrail, enforcing 10/10 health. I have been using it from day one of Tolaria &#8212; very recommended!</p><h4>2) <a href="https://codacy.com/tolaria">Codacy</a> / <a href="http://verity.md/tolaria">Verity</a> &#128274;</h4><p><span>It&#8217;s quality &amp; security as gates: an all-in-one PR reviewer. Codacy also launched </span><a href="http://verity.md/tolaria"><span>Verity</span></a><span> (beta), which helps Claude Code</span><strong> </strong><span>fix quality, security and intent issues on every run, and builds a knowledge base of decisions to make every session smarter than the last. That&#8217;s basically what I have been doing manually with ADRs, so I am excited to see where this is going!</span></p><h4>3) <a href="https://getunblocked.com/">Unblocked</a> &#128209;</h4><p>I use Unblocked as context engine, both for my coding agent to use, and for me to ask questions to. I am also testing their latest <a href="https://getunblocked.com/unblocked-code/">Unblocked Code</a> coding agent as a straightforward way to get small tweaks done.</p><h4>4) <a href="http://circleci.com/">CircleCI</a> &#128295;</h4><p>I use CircleCI to run local validation remotely, via their <a href="https://circleci.com/blog/chunk-sidecars/">chunk sidecars</a>, and I am also migrating the whole remote CI to it. I love their focus on speed and reliability, which is important to me in order for validation not to become too big of a bottleneck for the coding agents.</p><p>Now on to the new stuff, but first... product updates. Because my workflow is only as good as what I ship with it &#128071;</p><div><hr></div><h2>&#128167; Tolaria updates</h2><p>This month for Tolaria is lighter on new features and heavier on two bets that I am still working on. These are the <strong>mobile apps</strong> and a <strong>hosted version</strong> of Tolaria. These are also two of the things people are asking the most for (mobile is #1 far and away), so I&#8217;ll give some updates.</p><h3>1) Mobile</h3><p>By now I have a working iPad prototype already, with the UI rebuilt in React Native. It&#8217;s a universal app, so it also works on Android tablets (at least in the simulator, because I don&#8217;t have one to try it on).</p><p>I started with the tablet first for two reasons: 1) the UI is easier to map almost 1:1, and 2) selfishly, I do a lot of work from my iPad so I need an iPad version of Tolaria.</p><p>What&#8217;s still missing/unfinished are mainly the Git and AI integrations, with Git being particularly tricky (will elaborate on it over the next few weeks!)</p><p>Once the tablet version is ready, though, the smartphone version is quite straightforward. The UI will be simplified a bit, but technically speaking it&#8217;s not a big deal.</p><h3>2) Hosted Tolaria (exploration)</h3><p>I am also thinking about releasing a web version of Tolaria, that is self-hostable but also available with a managed option, so the vault is reachable without the need for a local native app.</p><p>This would be good for many reasons:</p><ol><li><p>Makes sharing files easier, opening up to web sharing a-la Google Docs</p></li><li><p>Obviously makes vaults accessible from anywhere (also reducing the need for mobile native apps)</p></li><li><p>Could turn into a side business model for Tolaria, with the managed version being a paid option.</p></li></ol><p>About the third point: Tolaria is run and developed as a <em>sidekick</em> to our Refactoring business, and we also have good sponsors (thank you &#10084;&#65039;) so I am under zero pressure to profit further from it, but a hosted version 1) could be genuinely useful for some people (they asked for it) and 2) of course it would cost money to run, so it should be paid.</p><p>This is still in exploration stage, so I am happy to hear your thoughts and ideas about it!</p><div><hr></div><h2>&#9729;&#65039; Agents move to the cloud</h2><p>By now, I think we have all seen the half-open laptop meme. As you can see in my previous posts, for a long time, I have run all my product development on my machines, and in particular:</p><ul><li><p>Orchestration via OpenClaw first, and Hermes later.</p></li><li><p>Coding via Codex instances on my Mac Mini, and occasionally on my Macbook.</p></li></ul><p>I believe that as 1) we understand better what agents need, and 2) agents themselves become more capable and can use computers more broadly, we are necessarily going to move away from local environments and increasingly ship these in cloud VMs, at least for agents doing actual work.</p><p>In a way, this is the same thing that happened with regular applications. We are not hosting websites and apps in our basement anymore (at least not the majority of us?!) &#8212; we are using the cloud for that. <a href="https://refactoring.fm/i/59708130/2-treat-your-servers-like-cattle-not-pets">Cattle vs pets</a>, and all that jazz.</p><p>I believe the same will happen with AI agents, because the benefits are just overwhelming. I don&#8217;t think local agents will <em>disappear,</em> because it will always be good to run a good agent on the computer you actually use, but when it comes to deploying many of these boys, there&#8217;s no way we&#8217;ll be doing these on our machines. So <em>most</em> of the agentic work will turn to the cloud.</p><p>For me, this migration had already started slowly, with experiments here and there, but got a decisive acceleration when I tried <strong><a href="https://x.ai/bot">Grok Bot</a></strong> this month.</p><p>Grok Bot has been a revelation because of how well-made, convenient, and useful it is, and I migrated all my agent work (except coding) to it.</p><p>If you are unfamiliar with it, Grok Bot is an agent environment built by the team at Cursor, where you can spin new agents that are automatically hosted in the cloud, on Linux VMs. On their machines, the agents can do anything they want: install stuff, use tools, use their browser, and so on. Mind you, this is nothing inherent new or that you couldn&#8217;t setup yourself, but it&#8217;s just 100x more convenient than setting things up manually with SSH, Tailscale, Termius, containers, and so on.</p><p>So, once you try it, it&#8217;s pretty obvious all agent environments should work this way &#8212; and I bet they will. Because having agents hosted in the cloud makes them replicable, disposable, makes it easy to run many of them concurrently, gives you good mobile access out of the box, and a loong tail of quality of life improvements.</p><p>So here is how Grok Bot changed my agents setup:</p><div><hr></div><h2>&#127867; From Brian to... Brian &amp; Friends</h2><p>If you followed the previous episodes, you know that I have been running just one main agent, as a second version of myself, for all the orchestration work that is not coding. It&#8217;s called Brian, and it&#8217;s my &#8220;Chief of Staff&#8221;.</p><p>Over time, Brian clearly started doing too many things, taking care of: product work for Tolaria, all kinds of work for Refactoring, and various scheduling and traffic control for my own life.</p><p>Grok Bot allowed me to easily spin off Brian&#8217;s work into multiple agents, so that now I have five of them:</p><h3>1) Brian</h3><p>Stays as Chief of Staff.</p><p>He is the default agent I reach out to for anything misc, and is on top of everything that happens that I need to be aware of.</p><p>Every morning he sends me a brief about what I need to take care of during the day, writes me a recap at the end of the day, and occasionally sends stuff my way during the day when something urgent needs my attention.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rtq-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rtq-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png 424w, https://substackcdn.com/image/fetch/$s_!rtq-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png 848w, https://substackcdn.com/image/fetch/$s_!rtq-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png 1272w, https://substackcdn.com/image/fetch/$s_!rtq-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rtq-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png" width="1456" height="1442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1442,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1758398,&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://refactoring.fm/i/214283186?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.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_!rtq-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png 424w, https://substackcdn.com/image/fetch/$s_!rtq-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png 848w, https://substackcdn.com/image/fetch/$s_!rtq-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.png 1272w, https://substackcdn.com/image/fetch/$s_!rtq-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf464d2-e2d8-4b1a-bf20-fba392385760_1868x1850.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Brian sends me daily (ok, 2-3 times per day) reports about things I need to do, fetching from tasks, email, calendar, slack, etc</figcaption></figure></div><p>Now, however, he is also being helped by his friends &#128071;</p><h3>2) Karn</h3><p>Runs product management for Tolaria.</p><p>It has access to all the product signal that comes from PostHog, Sentry, Github, Canny, emails I receive about Tolaria, and people talking about it on social media. Like Brian before it, it does traffic control, triages and dedupes items, specs them, and puts them on the coding kanban board.</p><p>He also sends me a brief every day with the key decisions I need to make about Tolaria, including tasks I need to review &#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EZTc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EZTc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png 424w, https://substackcdn.com/image/fetch/$s_!EZTc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png 848w, https://substackcdn.com/image/fetch/$s_!EZTc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png 1272w, https://substackcdn.com/image/fetch/$s_!EZTc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EZTc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png" width="1456" height="1481" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/143b792c-d766-42b1-8525-db216bf14464_1544x1570.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1481,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:925886,&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://refactoring.fm/i/214283186?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.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_!EZTc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png 424w, https://substackcdn.com/image/fetch/$s_!EZTc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png 848w, https://substackcdn.com/image/fetch/$s_!EZTc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.png 1272w, https://substackcdn.com/image/fetch/$s_!EZTc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143b792c-d766-42b1-8525-db216bf14464_1544x1570.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Daily brief about what I need to do for Tolaria (the bare minimum)</figcaption></figure></div><h3>3) Edith</h3><p>Is my Editor-in-Chief.</p><p>While I insist on writing all actual articles by hand, Edith intervenes at the beginning and at the end of the process, by doing:</p><ul><li><p><strong>Research</strong> &#8212; for any new article, it pulls related ideas from past articles I wrote, interesting new articles I should read, podcast interviews, and more. It is phenomenally helpful in compressing and improving the research work.</p></li><li><p><strong>Feedback</strong> &#8212; after I write a full draft, it gives feedback on everything from basic grammar to inconsistencies in the structure, contradictions, and so on. It is good at <em>challenging</em> what I write so I can reflect more on it.</p></li></ul><p>It is also &#8220;in charge&#8221; of the newsletter publishing calendar, so it makes sure the various drafts are ready at the right time, podcast interviews are lined up, articles done in collaboration with others are shared in advance, and so on.</p><h3>4) Sponsy</h3><p>Helps with Sponsorships.</p><p>At Refactoring, sponsorships are led by Matteo, my closest collaborator, and they involve <em>a ton</em> of operations. Sponsorships deals have a whole lifecycle, like standard sales deals, plus they spawn tasks that are specific to the newsletter work, like:</p><ul><li><p>Collecting the copy to include in the newsletter</p></li><li><p>Sending previews</p></li><li><p>Reporting numbers after ~1 week</p></li><li><p>and more!</p></li></ul><p>Sponsy helps a lot with mapping the status of the various deals, what needs to happen every day.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N_kl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N_kl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png 424w, https://substackcdn.com/image/fetch/$s_!N_kl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png 848w, https://substackcdn.com/image/fetch/$s_!N_kl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png 1272w, https://substackcdn.com/image/fetch/$s_!N_kl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N_kl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png" width="1456" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:865146,&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://refactoring.fm/i/214283186?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.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_!N_kl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png 424w, https://substackcdn.com/image/fetch/$s_!N_kl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png 848w, https://substackcdn.com/image/fetch/$s_!N_kl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.png 1272w, https://substackcdn.com/image/fetch/$s_!N_kl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cffff4a-3fb4-4300-a1a0-d1988ab32605_2272x1320.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Daily report sent by Sponsy on our team slack &#8212; under my name for now because we just patched this together!</figcaption></figure></div><h3>5) Grow</h3><p>Grow is the newest addition to the bot <em>stack</em> (or should I say team?!). It tracks a bunch of metrics for the newsletter health (open rate, growth, click rate, ...) and helps with operations related to the paid ads campaigns we run.</p><p>In particular, it does a lot of work that would otherwise be manual: for example, importing new subscribers from campaigns into Substack, and assigning the correct tags to them so we can create email sequences.</p><p>It also sends daily reports about how campaigns are going, like:</p><blockquote><p><em>Closed week: 163 Substack Meta regs (vs 203 prior, &#8722;40 / &#8722;20%). Received-mail unique 7d open 40.0% (60/150) vs 44.8% prior (&#8722;4.8pp). Morning was 36.1%; afternoon refresh after more people received mail (raw 60/163; 13 not received yet). Paid converts: 2 (vs 3 prior).</em></p></blockquote><div><hr></div><h2>&#128301; What&#8217;s next</h2><p>This setup is about one month old and is by no means perfect, but it just shows how much promise there is in creating fleets of small-scoped agents to scale work.</p><p>To make this viable, though, it needs to be <em>easy</em> to create and steer these guys, which I think is what Grok Bot is uniquely succeeding at.</p><p>When agents are successful at 1) doing their thing, plus 2) reporting to you, you can legitimately do most of your work in a chat environment, or with voice notes, without using the tools yourself. Which is basically what you see in the <a href="https://openai.com/index/gpt-6-astra/?video=1222553704">GPT 6 Astra launch video</a>.</p><p>I think this is a good direction to point ourselves at, as a <em>proxy</em> for good delegation. So, good questions you may ask yourself are:</p><ul><li><p>&#8220;<em>How can I use my computer less?</em>&#8220;</p></li><li><p>&#8220;<em>How can I do more work from my phone, just sending voice instructions?&#8221;</em></p></li></ul><p>In a way, it&#8217;s like when you see pictures of the desk of the President of United States, and there is no computer. How does the guy (ok, the <em>previous</em> guys) get things done? He just talks to people. People come and tell him what needs to happen, what decisions he needs to make, who he needs to speak with, and he does. He doesn&#8217;t need tools.</p><p>This might be an extreme, but I think you see my point.</p><div><hr></div><h2>&#128204; Bottom line</h2><p>And that&#8217;s it for today! Here are the main takeaways:</p><ul><li><p>&#9729;&#65039; <strong>Most agent work goes to the cloud</strong> &#8212; local agents won&#8217;t disappear on the computer you actually use, but deploying the bulk of them on your Mac Mini (or laptop) stops making sense. Same arc as applications in the cloud.</p></li><li><p>&#129302; <strong>Grok Bot made the jump easy</strong> &#8212; cloud Linux VMs, install what you need, with browser included. I moved all non-coding agent work there because it is just much more convenient than the SSH / Tailscale / Termius stack.</p></li><li><p>&#127867; <strong>Team of small agents &gt; One mega agent</strong> &#8212; work feels better now that I have a small fleet of focused agents instead of Brian doing all of the work.</p></li><li><p>&#128301; <strong>Aim at less computer, more chat</strong> &#8212; when agents do the work <em>and</em> report back, more of your day can live in chat or voice notes. So a proxy for good delegation becomes: how can I use my computer less?</p></li></ul><p>I wish you a great week!</p><p>Sincerely &#128075;<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Quality controls, storytelling reps, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #224]]></description><link>https://refactoring.fm/p/quality-controls-storytelling-reps</link><guid isPermaLink="false">https://refactoring.fm/p/quality-controls-storytelling-reps</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 07 Sep 2026 07:03:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8-Pz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, <a href="https://refactoring.fm/about">Luca</a> here! Welcome to a new edition of the </em><strong>&#128161;</strong><em> <strong>Monday Ideas </strong></em><strong>&#128161; </strong><em>&#8212; ideas and readings to start the week on the right foot.</em></p><p><em>I also publish an original essay every Wednesday. Here is the one from last week in case you missed it: </em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3fe012c3-6921-4971-acac-8ab19e9dfcfd&quot;,&quot;caption&quot;:&quot;A couple of weeks ago, I read The People Who Will Thrive in the AI Age, by David Brooks.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Mental marathoners &#127939;&#8205;&#9794;&#65039;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-09-02T07:02:07.437Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81484f9f-ce68-4566-ad4a-91f188dd9863_1840x1224.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/mental-marathoners&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:213559716,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:38,&quot;comment_count&quot;:0,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128274; <a href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight">Autonomously secure your software estate!</a></h2><p><em>This week&#8217;s newsletter is brought to you by our friends at <a href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight">Blitzy</a>!</em></p><p>Security teams don&#8217;t need another list of alerts: they need to know which vulnerabilities are reachable, exposed, and safe to fix!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8-Pz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8-Pz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png 424w, https://substackcdn.com/image/fetch/$s_!8-Pz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png 848w, https://substackcdn.com/image/fetch/$s_!8-Pz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png 1272w, https://substackcdn.com/image/fetch/$s_!8-Pz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8-Pz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9529345,&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://refactoring.fm/i/214013145?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.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_!8-Pz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png 424w, https://substackcdn.com/image/fetch/$s_!8-Pz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png 848w, https://substackcdn.com/image/fetch/$s_!8-Pz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.png 1272w, https://substackcdn.com/image/fetch/$s_!8-Pz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71136923-95dc-4f58-8fed-67e7866affde_6400x3360.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p><a href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight">Blitzy</a> understands your entire software estate and, through <em><a href="https://blitzy.com/blog/hyperscale-remediation-secure-your-software-estate-autonomously?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight">Proactive Insights</a></em>, surfaces known and previously <strong>undiscovered vulnerabilities</strong> in your codebase, and remediates them autonomously. </p><p>It traces each finding through execution paths, identifies dependencies, and validates remediation. Then it turns prioritized risks into batches of tested PRs for engineers to review.</p><p>The result is less alert noise, faster remediation, and confidence that each fix is safe. Find risk in context and remediate it securely at enterprise scale!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight&quot;,&quot;text&quot;:&quot;Try on your codebase today&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blitzy.com/sandbox?utm_medium=paid_media&amp;utm_source=newsletter_refactoring&amp;utm_campaign=proactiveinsight"><span>Try on your codebase today</span></a></p><div><hr></div><h2>&#9876;&#65039; Match quality controls to the risk</h2><p>Next week I will be in New York to attend the <a href="https://leaddev.com/leaddev-new-york">LDX3 conference</a>, which made me think about <a href="https://refactoring.fm/p/my-favorite-ideas-from-ldx3">the best ideas I got</a> from last year&#8217;s edition in London.</p><p>One that particularly resonates with me, especially now that I work on Tolaria, is about <strong>quality controls</strong>.</p><p>The most common approach to software quality is to treat every change the same. Everything goes through the same QA process, regardless of what it touches or what happens if it fails. This is simple to setup, but it tends to push teams toward one of two bad extremes:</p><ul><li><p><strong>Too much control</strong> &#8212; every release becomes slow and painful, even when the change is small and reversible.</p></li><li><p><strong>Too little control</strong> &#8212; the team moves fast until failures pile up and you end up spending most of your time cleaning up.</p></li></ul><p>At LDX3, Christine Pinto argued that the confidence you need before shipping should be proportional to two things: <strong>customer impact</strong> and <strong>technical risk</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_!NRaZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NRaZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png 424w, https://substackcdn.com/image/fetch/$s_!NRaZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png 848w, https://substackcdn.com/image/fetch/$s_!NRaZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!NRaZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NRaZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png" width="1456" height="811" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:811,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:836398,&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://refactoring.fm/i/214013145?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.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_!NRaZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png 424w, https://substackcdn.com/image/fetch/$s_!NRaZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png 848w, https://substackcdn.com/image/fetch/$s_!NRaZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!NRaZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d6330a-232c-4f05-99e1-b2126d99d116_1982x1104.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 useful 2x2 diagram about quality confidence by Christine</figcaption></figure></div><p>A tiny change with a narrow blast radius does not need the same process as one about payments or critical infra. The farther a change moves up and to the right on those two dimensions, the stronger your evidence should be before you release it.</p><p>I also liked Christine&#8217;s framing of quality as a maturity journey:</p><ol><li><p>&#129464; <strong>Crusader</strong> &#8212; one person champions quality and convinces others that it matters.</p></li><li><p>&#129716; <strong>Coach</strong> &#8212; that person teaches the team and turns individual judgment into shared principles.</p></li><li><p>&#127795; <strong>System</strong> &#8212; those principles become processes that no longer depend on a hero.</p></li></ol><p>The goal is to build the right level of confidence for the risk at hand, then make that judgment part of how the team works all the time. I wrote more about this in the full piece &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:167501213,&quot;url&quot;:&quot;https://refactoring.fm/p/my-favorite-ideas-from-ldx3&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;title&quot;:&quot;My Favorite Ideas from LDX3 &#127903;&#65039;&quot;,&quot;truncated_body_text&quot;:&quot;Last month I spent two days in London for the LDX3 conference.&quot;,&quot;date&quot;:&quot;2025-07-16T07:00:49.248Z&quot;,&quot;like_count&quot;:27,&quot;comment_count&quot;:3,&quot;bylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;handle&quot;:&quot;refactoring&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;profile_set_up_at&quot;:&quot;2021-06-04T06:23:53.965Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-11-15T17:35:42.775Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:247311,&quot;user_id&quot;:6835984,&quot;publication_id&quot;:64099,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:64099,&quot;name&quot;:&quot;Refactoring&quot;,&quot;subdomain&quot;:&quot;refactoring&quot;,&quot;custom_domain&quot;:&quot;refactoring.fm&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Join 170,000+ engineers and managers getting practical ideas on engineering leadership, technical strategy and high-performing teams. Free, every week.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;author_id&quot;:6835984,&quot;primary_user_id&quot;:6835984,&quot;theme_var_background_pop&quot;:&quot;#2096ff&quot;,&quot;created_at&quot;:&quot;2020-07-06T14:20:40.525Z&quot;,&quot;email_from_name&quot;:&quot;&#127744; Refactoring&quot;,&quot;copyright&quot;:&quot;Refactoring ETS&quot;,&quot;founding_plan_name&quot;:&quot;&#127942; Community plan&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79ab7b78-71cf-42d2-a607-3aa18960cb64_2400x572.png&quot;}}],&quot;twitter_screen_name&quot;:&quot;lucaronin&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000,&quot;status&quot;:{&quot;bestsellerTier&quot;:1000,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:1000},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://refactoring.fm/p/my-favorite-ideas-from-ldx3?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=64099"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!CR5A!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png" loading="lazy"><span class="embedded-post-publication-name">Refactoring</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">My Favorite Ideas from LDX3 &#127903;&#65039;</div></div><div class="embedded-post-body">Last month I spent two days in London for the LDX3 conference&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 27 likes &#183; 3 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>&#127897;&#65039; Storytelling is built through reps</h2><p>When I spoke with <strong>Stephanie Wong</strong>, Head of Technical Marketing at Google Cloud, she told me that people often ask how she makes explaining complex topics look so natural.</p><p>Her answer is not super glamorous: what people see is the result of <strong>10,000+ hours of practice</strong>.</p><p>Her story is especially useful when it comes to storytelling, because for some reason that&#8217;s often treated like a <strong>personality trait</strong>. Some people supposedly have it, while engineers who struggle to explain their work assume they are simply not storytellers.</p><p>Instead, Stephanie&#8217;s method looks much more like product development:</p><ol><li><p><strong>Understand the audience</strong> &#8212; know what they need and give them something concrete and hands-on.</p></li><li><p><strong>Iterate</strong> &#8212; move through ideation, prototyping, testing, and releasing, like you would do for a product, instead of waiting for the perfect explanation.</p></li><li><p><strong>Stay consistent and authentic</strong> &#8212; always bring your own perspective, then learn from what lands and what does not.</p></li></ol><p>Technical audiences are particularly wary of fluff. Credibility comes from knowing the subject, but relatability also matters, and that comes from making your personal take visible. You need both.</p><p>So, don&#8217;t wait until you feel naturally good at communication: explain one thing, notice where people get confused, rewrite it, and tell the story again. Over time, the rough edges disappear and the result starts to feel effortless.</p><p>Natural is a feeling the audience should have, but on your side, it is reps!</p><p>You can find the full conversation with Stephanie here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a10539e1-0c0a-46b3-a947-397a3c07d40e&quot;,&quot;caption&quot;:&quot;&#128680; If you missed it, check out our upcoming work on engineering metrics and contribute with your own stories!&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Technical Storytelling at Google &#9999;&#65039;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2024-10-18T07:24:59.273Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e9561e5-30f6-4b57-9784-b40fb15463a3_1200x800.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/technical-storytelling-at-google&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;ec33a04b-be67-4415-8971-53402e5ee2ee&quot;,&quot;id&quot;:150343667,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:28,&quot;comment_count&quot;:1,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128218; Weekly Readings</h2><p>Finally, here are the best articles I have read this week:</p><div><hr></div><h4>&#129351; <a href="https://embracethered.com/blog/posts/2026/breaking-claude-code-opus-5-and-automode/">Breaking Claude Code Opus 5 Auto Mode</a></h4><h5>9 min &#8226; by Johann Rehberger</h5><p>A reminder that even the most powerful models are still extremely vulnerable. A website asks Claude Code to summarize some content, nudges it from WebFetch to <code>curl</code>, and then turns the model&#8217;s own Python decoder into an exploit. Food for thought if your agents are touching untrusted content.</p><div><hr></div><h4>&#129352; <a href="https://www.seangoedecke.com/selling-out/">Selling Out</a></h4><h5>15 min &#8226; by Sean Goedecke</h5><p>Sean&#8217;s title is provocative, but the thesis is very important: professionalism is a role, and playing it well doesn&#8217;t have to consume your life. Everyone chooses how much integrity to trade for wealth and career success, and that&#8217;s mostly ok, things are not black or white. A sharp essay about work and personal identity.</p><div><hr></div><h4>&#129353; <a href="https://calv.info/small-models-have-arrived">Small Models Have Arrived</a></h4><h5>3 min &#8226; by Calvin French-Owen</h5><p>We spend so much time looking at the smartest models that it&#8217;s easy to miss how far the cheap, fast ones have progressed. Calvin argues that this is (even more than frontier models) what makes many new products viable, because not every task needs a genius: most business work just needs something responsive, cheap, and that keeps the ball moving.</p><div><hr></div><p>And that&#8217;s it for today! If you are finding this newsletter valuable, <strong>subscribe to the full version</strong>!</p><p>1700+ engineers and managers have joined already, and they receive our flagship weekly long-form articles about <strong>how to ship faster</strong> and <strong>work better together</strong>! Learn more about the <a href="http://refactoring.fm/about">benefits of the paid plan here</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Make your team ship faster!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Make your team ship faster!</span></a></p><p>See you next week!<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Making AI agents work in your team 🤖 — with Dennis Pilarinos]]></title><description><![CDATA[Watch now | Refactoring Podcast &#8226; Episode 71]]></description><link>https://refactoring.fm/p/making-ai-agents-work-in-your-team</link><guid isPermaLink="false">https://refactoring.fm/p/making-ai-agents-work-in-your-team</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 04 Sep 2026 07:01:38 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/213829564/cc59722d314e645afcfea39b2ae6a14f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-tqBQCP3BwPY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;tqBQCP3BwPY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/tqBQCP3BwPY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="pullquote"><p style="text-align: center;"><em><strong>Listen now:<br><a href="https://www.youtube.com/@refactoringclub">YouTube</a> | <a href="https://podcasts.apple.com/us/podcast/refactoring-podcast/id1719137305">Apple</a> | <a href="https://open.spotify.com/show/7Luds9dmzZDoDC8Q7EMbSw">Spotify</a></strong></em></p></div><blockquote><p><em>Today&#8217;s episode is brought to you by: <strong><a href="https://ntn.so/refactoring">Notion</a></strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://ntn.so/refactoring" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png" width="312" height="108.42" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:278,&quot;width&quot;:800,&quot;resizeWidth&quot;:312,&quot;bytes&quot;:31046,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://ntn.so/refactoring&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/209980935?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Jgfe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 424w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 848w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1272w, https://substackcdn.com/image/fetch/$s_!Jgfe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad759a-737a-4bf9-9c08-cf4861d0a9af_800x278.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><em>Learn more about<strong> Notion&#8217;s Developer Platform </strong>today at<strong> <a href="https://ntn.so/refactoring">https://ntn.so/refactoring</a></strong></em></p></blockquote><div><hr></div><p><span>Today's guest is </span><strong><span>Dennis Pilarinos</span></strong><span>, who is the founder and CEO of Unblocked and a long-time developer tools expert, having founded BuddyBuild and having served as a director at Apple, Amazon and Microsoft. <br><br>With Dennis, we talked about the latest trends in software development. We discussed why more tokens are not translating into more productivity, how to guarantee code quality with AI and what's the role of context in making your agents succeed. We also explored how the Unblocked team is doing it, navigating their setup and a few use cases about how their shipping features in production.</span></p><div><hr></div><h2>&#129351; Interview Summary</h2><p>If you are a <strong>&#128274; paid subscriber &#128274;</strong> you will find my own <em>summary</em> of the interview below.</p><p>It&#8217;s the 5-minute, handcrafted takeaways of what we talked about, with timestamps to the relevant video moments, for those who don&#8217;t have time to sit through the 1-hour chat.</p><p>Here is the agenda for today:</p><ol><li><p>&#128293; <strong>More tokens, less progress</strong></p></li><li><p>&#128269; <strong>Code review is the new bottleneck</strong></p></li><li><p>&#129504; <strong>Context is the missing piece</strong></p></li><li><p>&#9881;&#65039; <strong>How Unblocked runs internally</strong></p></li><li><p>&#128640; <strong>What&#8217;s next: remote agents and Unblocked Code</strong></p></li></ol><p>Let&#8217;s dive in &#128071;</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/making-ai-agents-work-in-your-team">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Mental marathoners 🏃‍♂️]]></title><description><![CDATA[How to think about AI in order to become a better version of yourself.]]></description><link>https://refactoring.fm/p/mental-marathoners</link><guid isPermaLink="false">https://refactoring.fm/p/mental-marathoners</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 02 Sep 2026 07:02:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/81484f9f-ce68-4566-ad4a-91f188dd9863_1840x1224.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A couple of weeks ago, I read <a href="%5Bhttps://www.theatlantic.com/ideas/2026/06/ai-open-ai-anthropic/687689/%5D(https://www.theatlantic.com/ideas/2026/06/ai-open-ai-anthropic/687689/)">The People Who Will Thrive in the AI Age</a>, by David Brooks.</p><p>I loved it, celebrated it as the <a href="%5Bhttps://refactoring.fm/i/211041423/the-people-who-will-thrive-in-the-ai-age%5D(https://refactoring.fm/i/211041423/the-people-who-will-thrive-in-the-ai-age)">best piece I read that week</a>, and since then I have kept thinking about various ideas that built up on it, and that I want to share today<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>.</p><p>First of all, let&#8217;s start with the title: what does <em>thrive</em> mean?</p><p>Each of us has (or should find) their own version of success, but a broad one that I particularly like is: <strong>becoming better versions of ourselves</strong>. I like it because a lot of the good things in life are <em>downstream</em> from growing as a person. You become better, and better things eventually come to you. That&#8217;s true in work, relationships, health, and pretty much anywhere.</p><p>Of course, that&#8217;s not the <em>only</em> way good things can come to you. Many come by chance, or luck if you may, but if you want to find an angle that is actually <strong>under your control</strong>, you can hardly go wrong by trying to <em>upgrade</em> <em>yourself</em> over and over.</p><p>And here is the problem with AI: I don&#8217;t feel that as a tool, by default, it helps with that. Pretty much the opposite. If you blindly use AI to the best of its capabilities, chances are you gradually <strong>get </strong><em><strong>worse</strong></em><strong> at several things</strong>.</p><p>So, when I think about my usage of AI, that&#8217;s the angle I try to use. How can I make it so that 1) AI helps me at producing more and better work, while 2) making me better as a professional (and a human being)?</p><p>We&#8217;ll be exploring this today:</p><ul><li><p>&#9878;&#65039; <strong>What AI takes from us</strong> &#8212; for everything tech gives, something else you now have to nurture.</p></li><li><p>&#127939;&#8205;&#9794;&#65039; <strong>Mental marathoners</strong> &#8212; when intelligence is cheap, stretching yourself becomes your edge.</p></li><li><p>&#129521; <strong>What makes us marathoners</strong> &#8212; instead of riding as passengers.</p></li><li><p>&#129517; <strong>How do you know you are on the right track</strong> &#8212; better work, learning, taste, energy.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><h2>&#9878;&#65039; What AI takes from us</h2><p>The fact that AI makes us <em>worse</em> at some things may seem counterintuitive, especially coming from a work tool, but it&#8217;s not really surprising if we look at the broader trajectory of technology.</p><p>In fact, progress is not strictly linear and incremental. For everything that tech has given us, there are also things we now need to intentionally safeguard and nurture, more than we used to in the past, in order not to lose them:</p><ul><li><p>An obvious one is <strong>physical health</strong> &#8212; regular, commercial gyms were not a thing until the 70s, when our lives gradually became more sedentary and all of a sudden fitness became something you had to be <em>intentional</em> about.</p></li><li><p>Another one is <strong>attention span</strong> and our ability to focus &#8212; today, we kinda all agree they are <em>under attack</em>, but we hardly ever thought about them before the social media era.</p></li></ul><p>So what is AI going to take from us?</p><p>This is a tough question, because AI is likely the <em>broadest</em> tech improvement we have seen in our lifetimes. By simplifying it a bit, it delivers two main things: <strong>intelligence</strong> and <strong>knowledge</strong>.</p><p>Knowledge is, obviously, about knowing things, while intelligence in this context is the ability to reason on a problem and apply logic to come up with a solution. Most work (and life) tasks require some combination of knowledge and intelligence to be done.</p><p>Now, we may nitpick about the definition of AGI, but, as of today already, we have to admit AI does a better job than people for probably &gt;90% of such tasks. That&#8217;s the reality, folks. And that&#8217;s because, even in those rare cases where an expert still has an edge (better knowledge), or you can reason through a problem better than a frontier model (better intelligence), AI still most often wins because of how cheaper and faster it does the thing. Even when the work done by AI is just, say, 80% as good as a human expert, it may still win because it&#8217;s 80% faster and cheaper, and that&#8217;s a desirable tradeoff.</p><p>Should we be excited about this, because of the opportunities it brings, or scared, because we feel increasingly disposable? It depends.</p><p>Personally, I believe this is fine as long as we use AI in a way that puts us, as individuals, on a trajectory of <strong>personal growth</strong>, instead of regression.</p><p>Is this even possible? I believe so. Chess and Go are great examples of this: AI surpassed humans long ago, but it also allowed humans to get immensely better by watching AI play, and now both games are more popular than ever.</p><p>But what does it take to get there? Let&#8217;s talk about volition and... marathons &#128071;</p><div><hr></div><h2>&#127939;&#8205;&#9794;&#65039; Mental marathoners</h2><p>In his article, David says that when intelligence is plentiful, <em>volition</em> becomes valuable. In this case, it&#8217;s volition to stretch your own abilities and become a better version of yourself. David calls the people who are willing to go through this: <strong>mental marathoners</strong>.</p><p>I like the marathon picture for this, because marathons do not fit a practical purpose, outside that of <em>stretching</em> what you can achieve as a human. When it comes to health, you can (and it&#8217;s probably easier to) get in great shape <em>without</em> extreme 40km runs, and of course, when it comes to pure utility, a car covers that distance just fine.</p><p>So, just like marathoners run because they <em>feel the need</em> to run and challenge themselves, <em>mental marathoners</em> are supposedly those who feel a <strong>need for cognition</strong>, and are going to use AI to get better and sharper, as opposed to being passive <em>passengers</em> of this tech.</p><p>Now, where David and I disagree is in framing such a need as an innate <em>trait</em> &#8212; you either have this hunger or you don&#8217;t. I don&#8217;t think this is the case, and in general I don&#8217;t find this to be a <em>productive</em> way of looking at things. The productive way, instead, is by asking: what can we do to become <em>hungrier</em> for cognition? Or why don&#8217;t we feel like it right now?</p><p>In other words, assuming we are not <em>either</em> born hungry or not, what can we do to become hungrier? This is an interesting question because it is relevant at all levels:</p>
      <p>
          <a href="https://refactoring.fm/p/mental-marathoners">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Onbarding roulette, “Aha” AI meetings, and weekly readings 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #223]]></description><link>https://refactoring.fm/p/onbarding-roulette-aha-ai-meetings</link><guid isPermaLink="false">https://refactoring.fm/p/onbarding-roulette-aha-ai-meetings</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 31 Aug 2026 07:03:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fkvj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, <a href="https://refactoring.fm/about">Luca</a> here! Welcome to a new edition of the </em><strong>&#128161;</strong><em> <strong>Monday Ideas </strong></em><strong>&#128161; </strong><em>&#8212; ideas and readings to start the week on the right foot.</em></p><div><hr></div><h2>&#127974; <a href="https://www.av.vc/funds/aifirst?utm_medium=email&amp;utm_source=tofu&amp;utm_content=partner-follow-up&amp;utm_campaign=RefactoringAugASend#easyvest">Invest in high-potential startups</a></h2><p><em>This week&#8217;s newsletter is brought to you by <a href="https://www.av.vc/funds/aifirst?utm_medium=email&amp;utm_source=tofu&amp;utm_content=partner-follow-up&amp;utm_campaign=RefactoringAugASend#easyvest">Alumni Ventures</a>!</em></p><p>Our friends at Alumni Ventures are giving Refactoring readers early <a href="https://www.av.vc/funds/aifirst?utm_medium=email&amp;utm_source=tofu&amp;utm_content=partner-follow-up&amp;utm_campaign=RefactoringAugASend#easyvest">access to high-potential startup opportunities</a>, including some of today&#8217;s most exciting AI, deep tech, quantum, and cybersecurity companies, co-invested alongside top VC firms like Andreessen Horowitz and Y Combinator.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fkvj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fkvj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png 424w, https://substackcdn.com/image/fetch/$s_!fkvj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png 848w, https://substackcdn.com/image/fetch/$s_!fkvj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!fkvj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fkvj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140499,&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://refactoring.fm/i/176123729?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.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_!fkvj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png 424w, https://substackcdn.com/image/fetch/$s_!fkvj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png 848w, https://substackcdn.com/image/fetch/$s_!fkvj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!fkvj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ae1312-4817-48dc-86c2-d4cbd42bb543_2600x1300.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p>As a Refactoring reader, you get:</p><ul><li><p>A curated deal flow of high-potential AI<em><strong> </strong></em>startups</p></li><li><p>AV already investing alongside elite lead venture firms in these deals</p></li><li><p>No cost to see deals</p></li><li><p>No obligation to invest</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.av.vc/funds/aifirst?utm_medium=email&amp;utm_source=tofu&amp;utm_content=partner-follow-up&amp;utm_campaign=RefactoringAugASend#easyvest&quot;,&quot;text&quot;:&quot;Check out the current deals&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.av.vc/funds/aifirst?utm_medium=email&amp;utm_source=tofu&amp;utm_content=partner-follow-up&amp;utm_campaign=RefactoringAugASend#easyvest"><span>Check out the current deals</span></a></p><p>Back to this week&#8217;s ideas!</p><div><hr></div><h2>&#127922; Consider the onboarding roulette</h2><p>At Graphite, every day a random employee gets their account deleted.</p><p>So the next time they open the product, they go through the full onboarding flow again: link repos, tune settings, the whole thing. Greg Foster, Graphite&#8217;s CTO, calls it the <strong>onboarding roulette</strong>: basically everyone <em>feels</em> onboarding roughly once a month.</p><p>They do this because onboarding is often a massive product blind spot. You test it once, maybe two years ago, and then never again, while new users keep hitting it every day.</p><p>Instead, when the team has to onboard regularly, rough edges show up fast, and get easily polished.</p><p>Greg said it got love and hate when he first introduced it, but now it&#8217;s mostly love, and the whole onboarding now only takes about three minutes.</p><p>Of course, your mileage may vary: you probably should not delete accounts if you are building a hospital system! But the principle holds: <strong>whatever your users do frequently, your team should do frequently too</strong>.</p><p>Maybe that is:</p><ul><li><p>Signing up with a fresh account once a quarter, or</p></li><li><p>Going through your own support flow when something breaks, or</p></li><li><p>Using your mobile app on a slow connection</p></li></ul><p>The point is to design a process so the team feels <strong>the same friction users feel</strong>, regularly.</p><p>I wrote more about this in the full piece &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:180384931,&quot;url&quot;:&quot;https://refactoring.fm/p/how-graphite-ships&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;title&quot;:&quot;How Graphite Ships &#128674;&quot;,&quot;truncated_body_text&quot;:&quot;It&#8217;s a weird time for engineering teams.&quot;,&quot;date&quot;:&quot;2025-12-03T08:02:10.246Z&quot;,&quot;like_count&quot;:18,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;handle&quot;:&quot;refactoring&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;profile_set_up_at&quot;:&quot;2021-06-04T06:23:53.965Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-11-15T17:35:42.775Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:247311,&quot;user_id&quot;:6835984,&quot;publication_id&quot;:64099,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:64099,&quot;name&quot;:&quot;Refactoring&quot;,&quot;subdomain&quot;:&quot;refactoring&quot;,&quot;custom_domain&quot;:&quot;refactoring.fm&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Join 170,000+ engineers and managers getting practical ideas on engineering leadership, technical strategy and high-performing teams. Free, every week.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;author_id&quot;:6835984,&quot;primary_user_id&quot;:6835984,&quot;theme_var_background_pop&quot;:&quot;#2096ff&quot;,&quot;created_at&quot;:&quot;2020-07-06T14:20:40.525Z&quot;,&quot;email_from_name&quot;:&quot;&#127744; Refactoring&quot;,&quot;copyright&quot;:&quot;Refactoring ETS&quot;,&quot;founding_plan_name&quot;:&quot;&#127942; Community plan&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79ab7b78-71cf-42d2-a607-3aa18960cb64_2400x572.png&quot;}}],&quot;twitter_screen_name&quot;:&quot;lucaronin&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000,&quot;status&quot;:{&quot;bestsellerTier&quot;:1000,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:1000},&quot;subscriber&quot;:null}},{&quot;id&quot;:7119536,&quot;name&quot;:&quot;Greg Foster&quot;,&quot;handle&quot;:&quot;gmfoster&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2eb87cb-299b-478a-8378-d1b6de848cf0_709x709.png&quot;,&quot;bio&quot;:&quot;Cofounder of graphite.dev - building the future of code review&quot;,&quot;profile_set_up_at&quot;:&quot;2022-07-28T12:10:27.981Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-06-11T22:49:23.940Z&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;subscriber&quot;:null},&quot;primaryPublicationId&quot;:1019304,&quot;primaryPublicationName&quot;:&quot;Small Diffs - by Greg Foster&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://smalldiffs.gmfoster.com&quot;,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://smalldiffs.gmfoster.com/subscribe?&quot;}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://refactoring.fm/p/how-graphite-ships?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=64099"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!CR5A!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png" loading="lazy"><span class="embedded-post-publication-name">Refactoring</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How Graphite Ships &#128674;</div></div><div class="embedded-post-body">It&#8217;s a weird time for engineering teams&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">10 months ago &#183; 18 likes &#183; Luca Rossi and Greg Foster</div></a></div><div><hr></div><h2>&#128161; Make everyone share an AI surprise</h2><p>When I spoke with Lara Hogan a couple of months ago, she introduced me to what she calls AI &#8220;Aha&#8221; meetings.</p><p>Every week, or every other week, the whole team shares something they learned about AI. A win, a failure, a surprise, or just something weird. And everybody has to share, managers included: nobody gets to skip.</p><p>In spirit, this is similar to a postmortem, just lighter and more often. People share knowledge, figure out patterns, and learn what works and doesn&#8217;t work.</p><p>Frequency matters because what someone figures out this week about an AI tool can become stale next week. If the team does not have a tight loop, people keep working from last month&#8217;s outdated instincts.</p><p>I loved this idea and we have even implemented our own version in the <a href="https://refactoring.fm/p/refactoring-community">Refactoring Community</a>, called the <strong><a href="https://refactoring.fm/p/introducing-the-ai-club?utm_source=publication-search">AI Club</a></strong>.</p><p>You can find the full conversation with Lara here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3d2d5ff4-7d4e-4003-872d-0897560a0083&quot;,&quot;caption&quot;:&quot;Listen now:&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Understanding Engineers' Needs &#129516; &#8212; with Lara Hogan&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:6835984,&quot;name&quot;:&quot;Luca Rossi&quot;,&quot;bio&quot;:&quot;I write everyday about how to make great software and work well with humans, to 60K+ friends.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6107486-b701-4109-8f21-f450fed6e277_652x690.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:1000}],&quot;post_date&quot;:&quot;2026-06-12T06:58:53.908Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/nYFQ6kyXO2o&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/understanding-engineers-needs-with&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;cc9cd2c3-6fa7-4170-8eba-bd406dd22451&quot;,&quot;id&quot;:200483968,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:19,&quot;comment_count&quot;:0,&quot;publication_id&quot;:64099,&quot;publication_name&quot;:&quot;Refactoring&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!CR5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128218; Weekly Readings</h2><p>Finally, here are the best articles I have read this week:</p><div><hr></div><h4>&#129351; <a href="https://yegge.ai/essays/fences-not-sandboxes/">Fences, not Sandboxes</a></h4><h5>13 min &#8226; by Steve Yegge</h5><p>Steve spent ten weeks running ~50 agents on Fable-class models to ship his game, and... they grew a legal system! This is a very interesting write-up, as always with everything Steve writes.</p><div><hr></div><h4>&#129352; <a href="https://avivbenyosef.com/stealing-blame/">Stealing Blame</a></h4><h5>3 min &#8226; by Aviv Ben-Yosef</h5><p>Do you steal blame? When a project blows up, the easy move is to explain why it wasn&#8217;t your fault. Great leaders, instead, look for their share of blame. That buys you the truth: people talk more when they know someone has their back. Great short piece by Aviv.</p><div><hr></div><h4>&#129353; <a href="https://www.raphaelbauer.com/posts/postgresql-everything/">PostgreSQL for Everything.</a></h4><h5>7 min &#8226; by Raphael Bauer</h5><p>Gentle reminder that we don&#8217;t need fancy tech for most stuff. Postgres can do an awful lot these days, and most people are not aware of it.</p><div><hr></div><p>And that&#8217;s it for today! If you are finding this newsletter valuable, <strong>subscribe to the full version</strong>!</p><p>1700+ engineers and managers have joined already, and they receive our flagship weekly long-form articles about <strong>how to ship faster</strong> and <strong>work better together</strong>! Learn more about the <a href="http://refactoring.fm/about">benefits of the paid plan here</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Make your team ship faster!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Make your team ship faster!</span></a></p><p>See you next week!<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Community updates: taking time off, AI club, and next events 💬]]></title><description><![CDATA[A special edition focused on our community activities!]]></description><link>https://refactoring.fm/p/community-updates-taking-time-off</link><guid isPermaLink="false">https://refactoring.fm/p/community-updates-taking-time-off</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 28 Aug 2026 07:01:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HT18!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!</p><p>Lately, I have been thinking about how little of the <a href="https://refactoring.fm/p/refactoring-community">community</a> actually shows up in the newsletter.</p><p>The community hosts a ton of great conversations in threads, but, most of all, every month we run two live sessions, hosted by our awesome coach-in-residence <a href="https://www.seckington.com/">Melinda Seckington</a>, and always joined by yours truly. These sessions are:</p><ul><li><p><strong>Mastermind</strong> &#8212; leaders bring a real problem and we work on it.</p></li><li><p><strong>AI Club</strong> &#8212; people show what they learned about AI that month, including the parts that did not work.</p></li></ul><p>But a lot of the good stuff stays in Zoom. So, once a month, I want to start sending out a short recap. This should work on multiple levels: 1) it makes you learn useful things, 2) it gives you a feel of whether you should join the community, and 3) it gives you a heads-up of the upcoming events.</p><p>So here is the agenda for today:</p><ul><li><p>&#127965;&#65039; <strong>How to take time off right</strong> &#8212; what we discussed in the August Mastermind.</p></li><li><p>&#129668; <strong>August AI Club</strong> &#8212; verbosity, legacy migrations, and a weirder kind of tired.</p></li><li><p>&#128197; <strong>What&#8217;s next</strong> &#8212; next events on Sep 4th and Sep 21st.</p></li><li><p>&#128172; <strong>How this works</strong> &#8212; and how to join.</p></li></ul><p>Let&#8217;s dive in!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HT18!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HT18!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 424w, https://substackcdn.com/image/fetch/$s_!HT18!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 848w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HT18!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png" width="1456" height="834" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:834,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3096884,&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://refactoring.fm/i/212989588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.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_!HT18!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 424w, https://substackcdn.com/image/fetch/$s_!HT18!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 848w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!HT18!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1487b493-0bd5-4569-99e1-991693da9261_2396x1372.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">A screenshot from our latest AI Club! &#129668;</figcaption></figure></div><div><hr></div><h2>&#127965;&#65039; Taking time off without the team stalling</h2><p>In this month&#8217;s Mastermind, we talked about going on leave without making your inbox or your team fall apart.</p><p>One of the biggest points of discussion was about whether it&#8217;s okay or not to <em>check in</em> while away. Personally, I have found there is no hard-and-fast rule for that. Something you might consider is that checking Slack and <em>replying</em> on Slack are different things. You can glance at it, sure. But the moment you reply, you are telling everyone you are reachable. You are setting an example (for the better or worse) and presenting yourself in a way that is hard to walk back.</p><p>Whatever you choose for yourself, it&#8217;s critical that your ownership of things moves to someone else. Otherwise, if some recurring thing is still waiting on you, it&#8217;s not really time off. Voluntary, optional check-in is different from someone still relying on you to do things.</p><p>At the end of the discussion, I feel like we landed on some kind of model to make this work:</p><div class="callout-block" data-callout="true"><ol><li><p>Mentally walk the one or two weeks you will be gone</p></li><li><p>Write conditional-ish guidance (<em>if X happens, do Y, only call me if Z</em>)</p></li><li><p>Name three things in the handover:</p><ul><li><p><em>Open projects</em> &#8212; and what needs to happen on each</p></li><li><p><em>People</em> &#8212; and who is covering what</p></li><li><p><em>Processes you currently own</em> &#8212; those that need a temporary owner</p></li></ul></li><li><p>Appoint a <em>deputy</em> for the stuff you did not think of. There will always be plenty.</p></li></ol></div><p>The <strong>deputy</strong> is particularly important because it should be the <em>one</em> person who can make the unexpected calls, and ideally the only one who is allowed to escalate to you for emergencies.</p><p>Doing all of this right is incredibly valuable, not just for your peace of mind while away, but because you may come back and figure out that some of the handovers can actually... stay that way. Many people reported it, and I confirm that from my own experience. When people are given the opportunity to <strong>fill bigger shoes</strong>, you might be surprised by how well they fare.</p><p>If you want the full writeup, you can find the community thread <a href="https://community.refactoring.club/c/mastermind/takeaways-from-our-making-holidays-and-time-off-work-for-you-and-your-team-mastermind">here</a> (if you are in the community! If you are not, scroll to the end for instructions).</p><div><hr></div><h2>&#129668; August AI Club</h2><p>In this month&#8217;s AI Club, a few people shared their AI experiences, including both wins and failures. I liked three stories in particular:</p><ul><li><p><strong>Agents that will not shut up</strong> &#8212; two small skills came up for Claude: one that <a href="https://github.com/ayghri/i-have-adhd">leads with the next action</a> and bans the preamble, and one that rewrites into <a href="https://github.com/juliusbrussee/caveman">simplified technical English</a> (the register airplane manuals use). We all agreed that agents can be incredibly verbose, so these skills can definitely help.</p></li><li><p><strong>Treat the codebase as the source of truth</strong> &#8212; someone was migrating a 25-year-old Salesforce app and drowning in meeting notes that constantly would go stale mid-build. They eventually instructed agents to treat the codebase as the single source of truth, and docs, tickets, and transcripts as &#8220;best-effort context&#8221;. We also agreed that, out of all docs, the <em>why</em> behind a decision is the part worth writing down on purpose, because that&#8217;s what agents <em>can&#8217;t</em> likely reconstruct by looking at code. A couple of folks also have agents that update docs as they ship, plus a nightly pass that checks whether yesterday&#8217;s work left the docs behind.</p></li><li><p><strong>Faster leads to a different kind of tired</strong> &#8212; it feels that automating the work is not making people less tired. Quite the opposite. Constantly reviewing what the model hands you back can make you <em>more</em> tired faster, as opposed to doing creative yourself. It&#8217;s also unclear how to do better on this. Some people try to speed themselves up to keep up with the models. Some protect the human part of the thinking. Some intentionally do less.</p></li></ul><p>All in all, a very interesting conversation, where we focused more on the <em>human</em> parts of the process, than the technology of it.</p><p>Full notes are <a href="https://community.refactoring.club/c/ai-club/notes-from-the-august-ai-club">here</a>.</p><div><hr></div><h2>&#128197; What&#8217;s next</h2><p>Both the Mastermind and the AI Club, like all community activities, are for paid members of Refactoring. Here are the next editions &#128071; you can RSVP on the event page to help us size the room and plan accordingly:</p><ul><li><p><strong>&#129668; <a href="https://community.refactoring.club/c/events/ai-club-september-2026">AI Club</a></strong> &#8226; <strong>Fri 4 Sep, 14:00 CEST</strong> &#8212; five-minute shares, questions, and a one-sentence fireside round at the end.</p></li><li><p><strong>&#129504; <a href="https://community.refactoring.club/c/events/september-mastermind-2026">Mastermind</a></strong> &#8226; <strong>Mon 21 Sep, 14:00 CEST</strong> &#8212; this month we&#8217;ll talk about developer productivity and what &#8220;good&#8221; looks like when measuring output is getting less useful.</p></li></ul><p>Bring your questions! These sessions work because of the members, not because someone gives a talk.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j6ch!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j6ch!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 424w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 848w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 1272w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j6ch!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png" width="1456" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:889735,&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://refactoring.fm/i/212989588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.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_!j6ch!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 424w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 848w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.png 1272w, https://substackcdn.com/image/fetch/$s_!j6ch!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00c4bcd8-e085-4515-8fdd-ba188e936f6e_2094x788.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><div><hr></div><h2>&#128172; How this works</h2><p>The <a href="https://community.refactoring.club/">Refactoring Community</a> is a private space for paid subscribers of Refactoring: it hosts async threads, Q&amp;A, and monthly live rooms like these.</p><p>It is home to more than 1500 engineers and managers, and it&#8217;s my favorite place on the internet!</p><p>To join it, subscribe to the full version of Refactoring! </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Join the full Refactoring &#128588;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://refactoring.fm/subscribe?"><span>Join the full Refactoring &#128588;</span></a></p><p>That&#8217;s it for today! See you on the 4th, or the 21st, or both!</p><p>I wish you a great weekend &#128075;<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Giving agents dynamic autonomy 🚥]]></title><description><![CDATA[A practical case study based on the team at Unblocked]]></description><link>https://refactoring.fm/p/giving-agents-dynamic-autonomy</link><guid isPermaLink="false">https://refactoring.fm/p/giving-agents-dynamic-autonomy</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 26 Aug 2026 06:36:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZK5K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, <a href="https://refactoring.fm/about">Luca</a> here! Welcome to a </em>&#128274;<em> <strong>weekly essay</strong> </em>&#128274;<em> from Refactoring.</em></p><p><em>Every week I write an article to 170K+ engineers about how make good software together, and interview a world-class tech leader. I also build and maintain <a href="https://refactoring.fm/p/introducing-tolaria">Tolaria</a> in the open, publishing my workflows and learnings here.</em></p><div><hr></div><p><span>Recently I have started researching and publishing </span><a href="https://refactoring.fm/p/how-trm-rebuilt-product-development-for-ai"><span>more case studies</span></a><span> about how real companies are doing product development with AI. That&#8217;s because I feel that many people are like: &#8220;</span><em><span>enough with the thought leadership</span></em><span>!&#8221; &#8212; and that includes me!</span></p><p><span>This time I am doing a deep dive into the AI workflows of the team at </span><a href="https://getunblocked.com/"><span>Unblocked</span></a><span>, which I have known for a long time. I sat down with </span><a href="https://ca.linkedin.com/in/dennispi"><span>Dennis</span></a><span> and </span><a href="https://www.linkedin.com/in/brandonwaselnuk"><span>Brandon</span></a><span>, who walked me through some of their most interesting processes.</span></p><p><span>The team at Unblocked is especially relevant because they got </span><strong><span>skin in the game</span></strong><span>. They ship a product that turns the team&#8217;s code, docs, tickets, and conversations, into actionable context for agents. So they dogfood all of this every day. That&#8217;s a strong incentive to work as close as possible to the frontier, rather than doing things &#8220;as we have always done&#8221; (cit.)</span></p><p><span>I also love that a lot of what they do is public: they maintain an </span><a href="https://github.com/unblocked/cookbook"><span>open-source cookbook</span></a><span> with several recipes (skills), which you can fork and copy.</span></p><p><span>So here is the agenda for today:</span></p><ul><li><p><span>&#127898;&#65039; </span><strong><span>Dynamic autonomy</span></strong><span> &#8212; scoring runs for risk and confidence, and behaving accordingly.</span></p></li><li><p><span>&#129514; </span><strong><span>Case study #1: vibe check</span></strong><span> &#8212; one skill, two triggers, three exits.</span></p></li><li><p><span>&#128680; </span><strong><span>Case study #2: AI-assisted incidents</span></strong><span> &#8212; humans drive, cleanup can go further</span></p></li><li><p><span>&#128216; </span><strong><span>Creating a cookbook around it</span></strong><span> &#8212; interactive vs headless, and how the score moves</span></p></li><li><p><span>&#128202; </span><strong>Delivery numbers</strong><span> &#8212; what the metrics say so far.</span></p></li></ul><p><span>Let&#8217;s dive in!</span></p><div><hr></div><p><em><span>Disclaimer: I am a fan of what Unblocked is building and I am grateful to have it as a partner on this piece. You should check it out!</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getunblocked.com/&quot;,&quot;text&quot;:&quot;Learn more about Unblocked&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getunblocked.com/"><span>Learn more about Unblocked</span></a></p><p><em><span>However, I will only write my unbiased opinion about the practices and tools covered, Unblocked included.</span></em></p><div><hr></div><h2><span>&#127898;&#65039; Dynamic autonomy</span></h2><p><span>One of the most popular ideas about AI workflows is the so-called </span><strong><span>autonomy slider</span></strong><span> &#8212; that is, for any given process you should design how much leeway to give to the AI, vs how much humans should intervene (and when, and where).</span></p><p><span>Autonomy is, of course, a spectrum. If perfect autonomy looks like a </span><em><span>loop</span></em><span>, we talk about </span><em><span>humans-in-the-loop</span></em><span> to express that some parts are designed for humans to interrupt the AI and do things.</span></p><p><span>One of the most interesting ideas I got from Dennis and Brandon is about making this autonomy slider </span><em><span>dynamic</span></em><span>: a lot of their workflows are designed to have runs </span><strong><span>scored for risk and confidence</span></strong><span>. Such a score </span><em><span>guides</span></em><span> how much autonomy the agent gets at that time, and where a human has to step in.</span></p><p><span>This is a flexible concept that can be applied to many different workflows: shipping code, processing bug reports, intercepting incidents, and more.</span></p><p><span>In fact, most of these include extremely </span><em><strong><span>diverse</span></strong></em><strong><span> situations</span></strong><span>, so it&#8217;s tricky to </span><em><span>hard-code</span></em><span> human gates into the workflows themselves. You constantly risk having either:</span></p><ul><li><p><span>Safe work unnecessarily waiting in queue, or</span></p></li><li><p><span>Risky work getting through when it should have been stopped and inspected first.</span></p></li></ul><p><span>To make an example, let&#8217;s say a bug report spawns from a customer success chat, or from Datadog telemetry. The AI evaluates two questions:</span></p><ul><li><p><span>How confident is the AI about this job being real, and being able to do it?</span></p></li><li><p><span>How risky is this change?</span></p></li></ul><p><span>This leads to a score that drives the next action:</span></p><ul><li><p>&#128308; <strong>High risk, low confidence</strong> &#8212; just write a ticket and hand it to a human.</p></li><li><p><span>&#128993; </span><strong><span>In the middle, roughly 50 to 70%</span></strong><span> &#8212; Slack a person who can answer more questions about the work itself, with the context already attached.</span></p></li><li><p>&#128994; <strong>Low risk, high confidence</strong> &#8212; write the code directly and open a PR.</p></li></ul><p><span>The same idea is used on PRs. A change that is evaluated as low-risk can go through without a human review, while a high-risk one puts a human reviewer in the loop.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZK5K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZK5K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png 424w, https://substackcdn.com/image/fetch/$s_!ZK5K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png 848w, https://substackcdn.com/image/fetch/$s_!ZK5K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png 1272w, https://substackcdn.com/image/fetch/$s_!ZK5K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZK5K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png" width="1456" height="918" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:918,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211774,&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://refactoring.fm/i/212519094?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.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_!ZK5K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png 424w, https://substackcdn.com/image/fetch/$s_!ZK5K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png 848w, https://substackcdn.com/image/fetch/$s_!ZK5K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.png 1272w, https://substackcdn.com/image/fetch/$s_!ZK5K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe659eb28-6a17-4a86-80be-8d8da531a73d_1564x986.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></figure></div><p><span>So, let&#8217;s get more into the details of this.</span></p><div><hr></div><h2><span>&#129514; Case study #1: vibe check</span></h2><p><span>The first process Brandon walked me through was something they call </span><strong><span>vibe check</span></strong><span>.</span></p>
      <p>
          <a href="https://refactoring.fm/p/giving-agents-dynamic-autonomy">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>