<?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>Tue, 18 Aug 2026 08:56:46 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[Knowledge lifecycle, luck surface, and weekly readings 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #221]]></description><link>https://refactoring.fm/p/knowledge-lifecycle-luck-surface</link><guid isPermaLink="false">https://refactoring.fm/p/knowledge-lifecycle-luck-surface</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 17 Aug 2026 07:02:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!w0n9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.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>from <a href="https://refactoring.fm/">Refactoring</a><strong> </strong><em>&#8212; ideas and readings to start the week on the right foot!</em></p><div><hr></div><div class="callout-block" data-callout="true"><h2>&#128202; Is AI <em>really</em> making developers ship faster?</h2><p><em>Today&#8217;s newsletter is brought to you by our friends at <a href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=Refactoring">DX</a>!</em></p><p>Last month, together with <a href="https://www.linkedin.com/in/justinreock">Justin Reock</a>, Deputy CTO at DX, we published a <a href="https://refactoring.fm/p/the-state-of-ai-impact-in-engineering">thorough commentary</a> on the <a href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=Refactoring">Q2 Report</a> on the state of AI impact in engineering.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w0n9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w0n9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 424w, https://substackcdn.com/image/fetch/$s_!w0n9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 848w, https://substackcdn.com/image/fetch/$s_!w0n9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 1272w, https://substackcdn.com/image/fetch/$s_!w0n9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w0n9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png" width="542" height="280.67857142857144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1456,&quot;resizeWidth&quot;:542,&quot;bytes&quot;:462973,&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/211041423?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.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_!w0n9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 424w, https://substackcdn.com/image/fetch/$s_!w0n9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 848w, https://substackcdn.com/image/fetch/$s_!w0n9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 1272w, https://substackcdn.com/image/fetch/$s_!w0n9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c1a5b5-1c7a-4423-94cc-a214de0cac8b_2602x1348.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In case you missed it, it includes a lot of interesting insights. For example:</p><ul><li><p><strong>PR throughout</strong> &#8211; increased 37% year-over-year, but</p></li><li><p><strong>PR size</strong> &#8211; nearly doubled in the same window</p></li></ul><p>So more code is moving through the pipeline, but does that translate into more delivered value? It seems&#8230; not! You can find the full report below &#128071;<br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=Refactoring&quot;,&quot;text&quot;:&quot;Read the report&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=Refactoring"><span>Read the report</span></a></p></div><div><hr></div><blockquote><p><em>Final reminder that <strong>today at 17:00 CET</strong> we are having our <strong>monthly live community mastermind</strong>. You can find more info, including how to join, <a href="https://refactoring.fm/p/join-our-mastermind-next-week">here</a>.</em></p></blockquote><div><hr></div><h2>&#128450;&#65039; Your knowledge needs a lifecycle</h2><p>Since I released <a href="https://tolaria.md/">Tolaria</a> and <a href="http://portent.md/">Portent</a>, a lot of people have asked me about team knowledge bases and how to organize them.</p><p>Most questions I receive are about how to <em>organize</em> content: folders, types, and so on, while very few are about the <em>lifecycle </em>of such content. When is new content created? By whom? When is it updated or moved? When is it finally archived?</p><p>A knowledge base without a proper lifecycle slowly becomes a <strong>junk drawer</strong>.</p><p>Everything is saved with good intentions, but if every item stays equally visible forever, the useful material eventually disappears inside the pile.</p><p>In Portent, and for myself, I use a simple three-step lifecycle: <strong>capture, organize, archive</strong>.</p><h3>1) Capture quickly</h3><p>Save the link, write down the rough thoughts, or simply store the meeting notes.</p><p>This stage should just be fast, even at the expense of being a little messy, because the goal is to make information available before it disappears.</p><h3>2) Organize deliberately</h3><p>Now ask yourself two questions:</p><ul><li><p><em>What is this?</em></p></li><li><p><em>What should it help me do?</em></p></li></ul><p>The first gives the note a <em>type</em>, or simply a destination. The second connects it to projects, responsibilities, topics, or useful pieces of context.</p><p>If a note cannot be attached to anything meaningful, it may not be worth keeping. So capture optimistically, organize pessimistically.</p><h3>3) Archive without deleting</h3><p>Completed projects, stale notes, and obsolete context can still be useful. They just should not <em>compete</em> with their current work every day. Archiving is how you keep them available without leaving them in your way.</p><p>So, the system works because each stage has one job: <em>capture</em> ensures speed, <em>organize</em> creates purpose and meaning, and <em>archive</em> protects attention.</p><p>I wrote more about this in the full piece on Portent &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:198376374,&quot;url&quot;:&quot;https://refactoring.fm/p/introducing-portent&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;Introducing Portent &#9752;&#65039;&quot;,&quot;truncated_body_text&quot;:&quot;Today it&#8217;s almost one month since I released Tolaria, and during this time I have spoken with many people and teams that are trying to use it to create and manage internal knowledge bases.&quot;,&quot;date&quot;:&quot;2026-05-20T07:44:11.683Z&quot;,&quot;like_count&quot;:64,&quot;comment_count&quot;:7,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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/introducing-portent?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">Introducing Portent &#9752;&#65039;</div></div><div class="embedded-post-body">Today it&#8217;s almost one month since I released Tolaria, and during this time I have spoken with many people and teams that are trying to use it to create and manage internal knowledge bases&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 months ago &#183; 64 likes &#183; 7 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>2) &#127808; Increase your luck surface area</h2><p>Most often, we tell career stories as if every good outcome followed from a careful plan. In reality, many opportunities arrive through chance: a person may notice your work, remember something you shared, and reach out at exactly the right time.</p><p>You cannot control luck, but you can increase the surface area where it can find you.</p><p>And to increase such surface, the idea is simple: <strong>1) do more of the work you care about</strong>, and<strong> 2) tell more people about it</strong>.</p><p>Doing the work builds expertise: you make things, solve problems, contribute to projects, and become better at something useful. But good work can only create opportunities if it doesn&#8217;t stay invisible.</p><p>Sharing the work is what creates the most connections: write about what you learned, contribute to a community, publish a small tool. Help people see what you know and what you care about.</p><p>This does not <em>guarantee </em>the lucky break, but it&#8217;s a way to make luck less passive: <strong>more doing &#215; more telling == more luck</strong>.</p><p>My friend Umberto Nicoletti wrote more about this, and his career experiences behind it, in the full essay below &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:180945910,&quot;url&quot;:&quot;https://refactoring.fm/p/lessons-learned-from-25-years-in&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;Lessons learned from 25 years in tech &#128301;&quot;,&quot;truncated_body_text&quot;:&quot;Hey, Luca here! This is a guest article written by my friend Umberto Nicoletti, Director of Product and Engineering at Proemion.&quot;,&quot;date&quot;:&quot;2025-12-10T08:44:55.743Z&quot;,&quot;like_count&quot;:28,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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;:2168459,&quot;name&quot;:&quot;Umberto Nicoletti&quot;,&quot;handle&quot;:&quot;unicolet&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!4NEM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e2b6a4-b1e9-4e0d-a021-7cf7cc5ec4bc_144x144.png&quot;,&quot;bio&quot;:&quot;Weaving humans and tech together for success&quot;,&quot;profile_set_up_at&quot;:&quot;2023-05-11T05:44:35.309Z&quot;,&quot;reader_installed_at&quot;:null,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;subscriber&quot;:null},&quot;primaryPublicationId&quot;:7185982,&quot;primaryPublicationName&quot;:&quot;Umberto Nicoletti&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://umbertonicoletti.substack.com&quot;,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://umbertonicoletti.substack.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/lessons-learned-from-25-years-in?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">Lessons learned from 25 years in tech &#128301;</div></div><div class="embedded-post-body">Hey, Luca here! This is a guest article written by my friend Umberto Nicoletti, Director of Product and Engineering at Proemion&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">8 months ago &#183; 28 likes &#183; Luca Rossi and Umberto Nicoletti</div></a></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://www.theatlantic.com/ideas/2026/06/ai-open-ai-anthropic/687689/?gift=bmvUiu0ra57xGI0zOa4kGmINu--qpr8lFEbQYPTWWTQ&amp;utm_source=copy-link&amp;utm_medium=social&amp;utm_campaign=share">The People Who Will Thrive in the AI Age</a></h4><h5>15 min &#8226; by David Brooks</h5><p>When intelligence is abundant, the advantage shifts to people who still want to think hard. </p><p>David calls them &#8220;mental marathoners&#8221;: people who use AI to stretch their abilities rather than avoid effort. I loved this framing. It also explains why the same tools can make one person sharper and another more passive.</p><div><hr></div><h4>&#129352; <a href="https://lethain.com/middle-management-roles-were-also-a-trap/">Middle management roles are also a trap</a></h4><h5>2 min &#8226; by Will Larson</h5><p>Middle management teaches you to balance pressure and operate organizational process. Will argues that it can also pull you away from some of the skills executives need most: domain expertise and driving execution.</p><p>A good warning for anyone assuming that every step up the management ladder prepares you for the next one. It&#8217;s not always the case.</p><div><hr></div><h4>&#129353; <a href="https://blog.senko.net/code-was-never-the-hard-part-is-an-insult-to-all-programmers">&#8220;Code was never the hard part&#8221; is an insult to all programmers</a></h4><h5>6 min &#8226; by Senko Ra&#353;i&#263;</h5><p>Senko makes a strong case against the &#8220;code was never the hard part&#8221; phrase that you see everywhere these days. I half-agree with him. </p><p>I mean, understanding users, deciding what to build, and translating that into requirements is hard. But writing good code is hard, too. The difficulty level depends a lot on the company you work for: there are companies in which coding is extremely hard, and others where it&#8217;s easier. But I don&#8217;t think this is a useful debate anyway, let&#8217;s just agree coding is hard in general.</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[Join our Mastermind next week! 🧠]]></title><description><![CDATA[Join the August edition of our monthly community gathering]]></description><link>https://refactoring.fm/p/join-our-mastermind-next-week</link><guid isPermaLink="false">https://refactoring.fm/p/join-our-mastermind-next-week</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Thu, 13 Aug 2026 14:26:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PTgQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone!</p><p>Our next <strong>Mastermind</strong> &#129504; is on Monday, <strong>August 17th</strong> at <strong>5:00pm CET.</strong> We&#8217;ll be discussing the topic: <em>making holidays and time off work for you and your team</em>. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PTgQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PTgQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 424w, https://substackcdn.com/image/fetch/$s_!PTgQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 848w, https://substackcdn.com/image/fetch/$s_!PTgQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 1272w, https://substackcdn.com/image/fetch/$s_!PTgQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PTgQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp" width="1456" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66882,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/211015460?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PTgQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 424w, https://substackcdn.com/image/fetch/$s_!PTgQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 848w, https://substackcdn.com/image/fetch/$s_!PTgQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 1272w, https://substackcdn.com/image/fetch/$s_!PTgQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e35ee5-6cb7-43aa-9022-cef56bf35e14_1456x520.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We&#8217;ll be covering questions like:</p><ul><li><p><em>How do you prepare before you go on holiday?</em></p></li><li><p><em>How to protect your downtime while you&#8217;re away?</em></p></li><li><p><em>How to make re-entry feel less like a disaster?</em></p></li><li><p><em>What does good holiday coverage look like across a team?</em></p></li></ul><p>This is an excellent opportunity to learn from the experiences, insights and perspectives of the Refactoring community.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dyeh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dyeh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 424w, https://substackcdn.com/image/fetch/$s_!dyeh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 848w, https://substackcdn.com/image/fetch/$s_!dyeh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 1272w, https://substackcdn.com/image/fetch/$s_!dyeh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dyeh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp" width="1080" height="386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:386,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45494,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/211015460?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dyeh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 424w, https://substackcdn.com/image/fetch/$s_!dyeh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 848w, https://substackcdn.com/image/fetch/$s_!dyeh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 1272w, https://substackcdn.com/image/fetch/$s_!dyeh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd91e041-34a8-4e34-ba4c-337480abc80b_1080x386.webp 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A screenshot from one of the latest Mastermind sessions!</figcaption></figure></div><p>The Mastermind is a <strong>monthly online session</strong> for members of the Refactoring community where people can ask questions and share challenges about the topic, and support one another in finding solutions by sharing our experiences, insights, and perspectives.</p><p>The <a href="https://refactoring.fm/p/refactoring-community">Refactoring Community</a>, including our Monthly masterminds, are exclusive to paid members of Refactoring. Subscribe today to get access &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://refactoring.fm/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NCJp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NCJp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 424w, https://substackcdn.com/image/fetch/$s_!NCJp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 848w, https://substackcdn.com/image/fetch/$s_!NCJp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 1272w, https://substackcdn.com/image/fetch/$s_!NCJp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NCJp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png" width="1456" height="362" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:362,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201794,&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;:false,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/211015460?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.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_!NCJp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 424w, https://substackcdn.com/image/fetch/$s_!NCJp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 848w, https://substackcdn.com/image/fetch/$s_!NCJp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 1272w, https://substackcdn.com/image/fetch/$s_!NCJp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2b1bb0-8f76-4665-9cac-528612a92a86_2374x590.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>You can learn more about the community <a href="https://refactoring.fm/p/refactoring-community">here</a>. </p><p>Thank you!<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[The Case for Hiring Junior Engineers 🌱]]></title><description><![CDATA[Let's flip the narrative that you only need seniors now.]]></description><link>https://refactoring.fm/p/the-case-for-hiring-junior-engineers</link><guid isPermaLink="false">https://refactoring.fm/p/the-case-for-hiring-junior-engineers</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 12 Aug 2026 07:19:52 GMT</pubDate><enclosure url="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" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>One of the dominant narratives in software today is that AI is making junior engineers redundant.</span></p><p><span>It goes like this: since AI can </span><em><span>approximate</span></em><span> well what a junior engineer is able to produce, there is </span><strong><span>no point in hiring anyone who is not senior</span></strong><span>. In fact, senior engineers are the only ones capable of </span><em><span>steering</span></em><span> these tools.</span></p><p><span>From what I can see, this story is real, in the sense that many people believe it. I know many companies who have frozen junior hiring, and others who are explicitly steering towards small, senior-heavy teams.</span></p><p><span>I believe this is a mistake. And I don&#8217;t mean it from an ethical angle (the poor junior engineers!) &#8212; I mean from a practical, business one.</span></p><p><span>It&#8217;s also a mistake I have seen being done many times, well before AI, pretty much based on the same arguments. If anything, AI </span><em><span>supercharged</span></em><span> some of the same fallacies that have been around for decades.</span></p><p><span>Also, I am not alone in this. If you have been following Refactoring, you know the junior engineers topic is a recurring one both in the newsletter and in podcast interviews. Over time, I discussed it with </span><a href="https://refactoring.fm/p/every-engineer-is-a-manager-now-with"><span>Chris Lattner</span></a><span>, </span><a href="https://refactoring.fm/p/in-praise-of-normal-engineers"><span>Charity Majors</span></a><span>, </span><a href="https://refactoring.fm/p/diversity-ai-and-junior-engineers"><span>Meri Williams</span></a><span>, and more.</span></p><p><span>So today I will put everything together and make the definitive case for hiring junior engineers on your team in 2026! Here is the agenda:</span></p><ol><li><p><span>&#127947;&#65039;&#8205;&#9794;&#65039; </span><strong><span>Juniors are required to do more now</span></strong><span> &#8212; let&#8217;s acknowledge where this is all coming from.</span></p></li><li><p><span>&#9878;&#65039; </span><strong><span>Junior vs senior engineers</span></strong><span> &#8212; the difference is messier than you think</span></p></li><li><p><span>&#128301; </span><strong><span>First vs second-order effects</span></strong><span> &#8212; thinking of your team as a system when it comes to process, hiring, and growth.</span></p></li><li><p><span>&#127793; </span><strong><span>How to make it work</span></strong><span> &#8212; because juniors just don&#8217;t turn into seniors automatically.</span></p></li></ol><p><span>Let&#8217;s dive in!</span></p><div><hr></div><h2><span>&#127947;&#65039;&#8205;&#9794;&#65039; Juniors are indeed required to do more now</span></h2><p><span>Let&#8217;s start by acknowledging the obvious: all engineers, not just junior ones, are required to do </span><em><span>more</span></em><span> now.</span></p><p><span>More of what? For junior engineers, the job looks </span><em><span>qualitatively</span></em><span> very different, and requires a lot of things from them *earlier* in their careers than it used to.</span></p><p><span>Think of:</span></p><ul><li><p><strong><span>Code reviews</span></strong><span> &#8212; because of AI, junior engineers need now to review code from the get-go. Which in turn requires more... &#128071;</span></p></li><li><p><strong><span>Critical thinking</span></strong><span> &#8212; engineers need to constantly question the why and how provided by AI.</span></p></li><li><p><strong><span>Systems thinking</span></strong><span> &#8212; people are given bigger pieces of work from the start, which requires them to employ non-obvious design chops.</span></p></li></ul><p><span>This is what many people see and makes them say: &#8220;</span><em><span>yeah, junior engineers are screwed</span></em><span>&#8221;.</span></p><p><span>I don&#8217;t think that&#8217;s the case, because there&#8217;s more to junior engineers than coding &#128071;</span></p><div><hr></div><h2><span>&#9878;&#65039; Junior vs senior engineers</span></h2><p><span>Anyone who has worked for some time in teams with mixed levels of expertise knows that the frontier, or boundaries, between a junior and a senior engineer is not clear-cut. It&#8217;s jagged.</span></p><p><span>Engineers do not grow </span><em><span>linearly</span></em><span>, simply becoming more capable over time. As humans, we also </span><em><span>lose</span></em><span> things over time. In my experience, there are things at which senior engineers are, on average, </span><em><span>worse</span></em><span> than junior engineers.</span></p><p><span>Many senior engineers are, vs junior engineers:</span></p><ul><li><p><span>More resistant to change</span></p></li><li><p><span>More biased towards doing things the &#8220;old way&#8221; (tech choices, processes, you name it)</span></p></li><li><p><span>Less energetic and hard-working</span></p></li><li><p><span>Less willing to do the boring but necessary work that exists in all teams</span></p></li></ul><p><span>Conversely, junior engineers may lack part of what is needed to steer AI towards quality and safety, but are often better at using it as a whole. They have no bias and adapt faster because, simply put, </span><strong><span>they have less to unlearn</span></strong><span>.</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_!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" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iy_0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe769dbfe-186f-440f-b11a-6c0a37004fbf_1888x1280.png 424w, https://substackcdn.com/image/fetch/$s_!iy_0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe769dbfe-186f-440f-b11a-6c0a37004fbf_1888x1280.png 848w, https://substackcdn.com/image/fetch/$s_!iy_0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe769dbfe-186f-440f-b11a-6c0a37004fbf_1888x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!iy_0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe769dbfe-186f-440f-b11a-6c0a37004fbf_1888x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iy_0!,w_1456,c_limit,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" width="1456" height="987" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e769dbfe-186f-440f-b11a-6c0a37004fbf_1888x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:987,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:192751,&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/210602503?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe769dbfe-186f-440f-b11a-6c0a37004fbf_1888x1280.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_!iy_0!,w_424,c_limit,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 424w, https://substackcdn.com/image/fetch/$s_!iy_0!,w_848,c_limit,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 848w, https://substackcdn.com/image/fetch/$s_!iy_0!,w_1272,c_limit,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 1272w, https://substackcdn.com/image/fetch/$s_!iy_0!,w_1456,c_limit,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 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>They have an easier time keeping their intuition up to date about how to use agents, orchestrate them, and create autonomous loops. Are these loops designed for quality and sustainability? Probably not! But, on the contrary, I know many 15-years-of-exp developers who simply </span><em><span>refuse</span></em><span> to build loops at all, because they want to retain control over every single LOC, which is wrong just as well.</span></p><p><span>That&#8217;s all to say that </span><strong><span>the comparison between juniors and seniors is complicated</span></strong><span>, and is wildly dependent on individuals.</span></p><p><span>Furthermore, so far we have only talked about </span><em><span>production</span></em><span> &#8212; the things that engineers actually make. But that&#8217;s only the immediate, first-order output of your team.</span></p><p><span>Team success is also driven by processes, cost, hiring &amp; retention, individuals&#8217; growth, and all kinds of system-level factors that are often neglected in this conversation.</span></p><p><span>What is your team going to look like one year from now? What about two years? How does that change based on the level of seniority mix you design your team for? I know companies that are more or less intentionally refusing to plan for longer than a quarter, because of AI uncertainty and all. But I don&#8217;t think that can be an excuse. As Eisenhower said: &#8220;Plans are useless, but planning is indispensable&#8221;.</span></p><p><span>So let&#8217;s try to loop all of this in &#128071;</span></p><div><hr></div><h2><span>&#128256; Second-order effects of mixing seniority</span></h2><p><span>Out of the various parts of your team life that are &#8220;not coding&#8221;, there are three that are particularly relevant when it comes to seniority levels, and it&#8217;s process, hiring, and growth.</span></p><h3><span>1) Process</span></h3><p><span>In my experience, the teams that are best at designing and enforcing good dev process are those with a healthy mix of seniority. In fact, both extremes are often bad:</span></p><ul><li><p><strong><span>Junior-heavy teams</span></strong><span> &#8212; often would love good process, but don&#8217;t know what it looks like.</span></p></li><li><p><strong><span>Senior-heavy teams</span></strong><span> &#8212; know what good process looks like, but they can bridge gaps with individual experience and knowledge, so have less incentive to make things explicit and robust.</span></p></li></ul><p><span>Mixed, diverse teams have both the senior folks who can </span><em><span>design</span></em><span> process, and the junior ones to benefit.</span></p><p><span>Needless to say, process, guardrails, devex, and all that jazz today is 10x more important than in the past, because that&#8217;s also how you scale AI work (the &#8220;harness&#8221;!).</span></p><h3><span>2) Hiring</span></h3><p><span>Senior engineers are hard to find and hire: you are competing for a limited pool of talent, and the pipeline is long and expensive. No way around it.</span></p><p><span>Conversely, junior engineers come from predictable, controllable hiring channels, like universities, bootcamps, and the likes. They are both cheaper </span><em><span>and</span></em><span> faster to hire.</span></p><h3><span>3) Growth</span></h3><p><span>Junior engineers can grow into the specific mix of duties and skills that your company needs, often compensating for the lack of experience with this special fit that is hard to replicate by hiring a senior. Even worse, a senior engineer who is already invested in a set of technologies and practices may have little interest in steering towards how your team does things.</span></p><p><span>Junior engineers are also easier to keep engaged, growing, and happy for a long time, simply because the bar for work that makes them grow is lower than for a senior. In any company there is a </span><em><span>ceiling</span></em><span> to what an engineer can learn, and senior folks just leave when they stop growing. In a healthy mixed team, senior departures are compensated by juniors who have risen through the ranks, and eventually replaced the former.</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_!VbsU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VbsU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 424w, https://substackcdn.com/image/fetch/$s_!VbsU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 848w, https://substackcdn.com/image/fetch/$s_!VbsU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 1272w, https://substackcdn.com/image/fetch/$s_!VbsU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VbsU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.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;:298468,&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/210602503?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.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_!VbsU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 424w, https://substackcdn.com/image/fetch/$s_!VbsU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 848w, https://substackcdn.com/image/fetch/$s_!VbsU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 1272w, https://substackcdn.com/image/fetch/$s_!VbsU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1450742d-6990-4e5c-95af-ad64e260aeea_1880x940.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2><span>&#127793; How to Make It Work</span></h2><p><span>So, as </span><a href="https://refactoring.fm/p/growing-the-development-forest-with"><span>Martin Fowler put it on the podcast</span></a><span>, one of the most important qualities of junior engineers is to eventually turn into senior engineers. That said, this doesn&#8217;t happen automatically.</span></p><p><span>While there exists, indeed, a dream scenario in which junior engineers grow, become senior, and *rotate* your headcount to compensate other senior departures, in circle-of-life fashion, there is also a nightmarish scenario in which juniors are thrown in the trenches, abuse AI in ways they don&#8217;t understand, nobody checks on them, and the product and tech eventually goes to shit.</span></p><p><span>When this cycle breaks, it&#8217;s because junior engineers </span><strong><span>don&#8217;t have enough feedback loop</span></strong><span> to 1) ensure their work is high quality, and 2) learn and grow from doing it.</span></p><p><span>The way to create this feedback loop, to me, looks like two-fold:</span></p><ul><li><p><strong><span>Invest in an amazing harness</span></strong><span> &#8212; create guardrails, rules, gates, and </span><em><span>encode</span></em><span> everything that can ensure quality </span><em><span>automatically</span></em><span>. This benefits just about everyone: senior engineers, AI, and junior engineers who can learn from those same rules.</span></p></li><li><p><strong><span>Pair juniors with seniors</span></strong><span> &#8212; let young folks experiment and work fast, but pair them with seniors to provide judgment and systems thinking. It&#8217;s still early days for this and everyone needs to find their own formula, but e.g. I loved Rick Clegg&#8217;s talk about </span><a href="https://leaddev.com/hiring/guardrails-not-gates-scaling-juniors-in-the-ai-era"><span>what they do at Wise</span></a><span> about it.</span></p></li></ul><div><hr></div><h2><span>&#128218; Resources</span></h2><p><span>I got plenty of resources about this if you want to deep-dive more:</span></p><ul><li><p><strong><a href="https://leaddev.com/hiring/guardrails-not-gates-scaling-juniors-in-the-ai-era"><span>Scaling Juniors in the AI Era</span></a></strong><span> &#8212; the aforementioned talk by Rick Clegg from Wise about using automate guardrails to let junior engineers ship faster with AI.</span></p></li><li><p><strong><a href="https://frederickvanbrabant.com/blog/2026-07-24-you-dont-hire-juniors-to-do-menial-chores/"><span>You Don&#8217;t Hire Juniors to Do Menial Chores</span></a></strong><span> &#8212; great piece by Frederick Van Brabant about how juniors help innovation: they bring fresh takes to many things, and stress-test your assumptions because they have not yet learned all your bad habits.</span></p></li><li><p><strong><a href="https://refactoring.fm/p/diversity-ai-and-junior-engineers"><span>Diversity, AI, and Junior Engineers</span></a></strong><span> &#8212; my interview with the awesome Meri Williams, where we talked a lot about growing engineers.</span></p></li><li><p><strong><a href="https://refactoring.fm/p/in-praise-of-normal-engineers"><span>In Praise of Normal Engineers</span></a></strong><span> &#8212; the incredible article that Charity Majors wrote for Refactoring, where she argues we should hire the &#8220;right&#8221; people instead of the &#8220;best&#8221; ones, and invest in 10x teams, instead of 10x engineers.</span></p></li></ul><div><hr></div><h2><span>&#128204; Bottom line</span></h2><p><span>And that&#8217;s it for today! Here are the main takeaways:</span></p><ul><li><p><span>&#9878;&#65039; </span><strong><span>The junior vs senior frontier is jagged, not linear</span></strong><span> &#8212; engineers don&#8217;t simply get better at everything over time. Seniors gain experience but often become more resistant to change and harder to keep engaged, while juniors adapt faster, have less to unlearn, and are often better at embracing AI workflows.</span></p></li><li><p><span>&#128260; </span><strong><span>Mixed-seniority teams build the best processes</span></strong><span> &#8212; senior-heavy teams have less incentive to make knowledge explicit and systematic, while junior-heavy teams don&#8217;t know what good looks like. You need both. Also, robust, explicit process is exactly what scales AI work.</span></p></li><li><p><span>&#128176; </span><strong><span>Junior hiring is cheaper, faster, and more sustainable</span></strong><span> &#8212; instead of competing for a scarce pool of senior talent, you can hire juniors from predictable channels and grow them into the specific shape your company needs, creating a circle-of-life rotation that compensates senior departures.</span></p></li><li><p><span>&#128737;&#65039; </span><strong><span>Invest in the harness, not just the horse</span></strong><span> &#8212; the way to make junior engineers thrive is to build amazing guardrails (automated quality gates, rules, standards) and pair them with seniors who provide judgment and systems thinking.</span></p></li><li><p><span>&#128302; </span><strong><span>Refusing to hire juniors is a bet against your own future</span></strong><span> &#8212; if you only hire senior engineers today, you are optimizing for short-term output while starving the pipeline that will sustain your team for years to come.</span></p></li></ul><div><hr></div><p>See you next week!</p><p>Sincerely &#128075;<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Starting vs finishing, product engineering, and weeklin readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #220]]></description><link>https://refactoring.fm/p/starting-vs-finishing-product-engineering</link><guid isPermaLink="false">https://refactoring.fm/p/starting-vs-finishing-product-engineering</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 10 Aug 2026 07:01:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ocX0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.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>&#128214; <a href="https://l.gourl.es/l/9e18f4d4342f986e4367449023b32b27a9aeee54?w=bWF0dGVvQHJlZmFjdG9yaW5nLmNsdWI&amp;u=9913498">42: The AI Builder&#8217;s Stack</a></h2><p><em>This newsletter is brought to you by <a href="https://eltexsoft.com/">Eltex</a>!</em></p><p>The guys at <a href="https://eltexsoft.com/">Eltex</a> run <span>a great engineering studio and just released </span><strong><a href="https://l.gourl.es/l/9e18f4d4342f986e4367449023b32b27a9aeee54?w=bWF0dGVvQHJlZmFjdG9yaW5nLmNsdWI&amp;u=9913498"><span>42: The AI Builder's Stack</span></a></strong><span>, which is the practitioner's guide to the toolchain they run on: Claude Code, MCP, agents, AI IDEs. They covered what worked, what failed, and what the vendors will not tell you.</span><br><br><span>The book includes a companion Claude Code setup that is free and MIT-licensed: 42 subagents, rule packs, and a commit guard that blocks force-pushes and staged secrets. Trimmed versions of every chapter are free to read.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://subethapress.com/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=42-launch&quot;,&quot;text&quot;:&quot;Get the book&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://subethapress.com/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=42-launch"><span>Get the book</span></a></p><blockquote><p><em>&#8220;A hands-on guide that speaks the language of real developers building real systems.&#8221;</em> &#8212; Richard Cave, ex-Apple Engineering Manager.</p></blockquote><div><hr></div><h2>&#127937; Starting is easier and finishing is harder</h2><p>AI makes it incredibly easy to start more work.</p><p>Engineers are opening more branches, touching more PRs, and getting to something that <em>looks</em> close to <em>done</em> much faster than before.</p><p>But shipping is another story.</p><p>In <a href="https://refactoring.fm/p/acceleration-whiplash">the Faros report I covered recently</a>, the most interesting pattern was how <strong>AI made the last mile worse</strong>: teams have a lot more stalled work, more restarts, and often times&#8230; fewer deployments overall!</p><p>This shouldn&#8217;t be surprising if we look at the classic WIP equation:</p><div class="callout-block" data-callout="true"><p><code>Lead Time = Work In Progress / Throughput</code></p></div><p>So if AI increases WIP but throughput stays the same, the system just <strong>accumulates more unfinished work</strong>.</p><p>To avoid getting stuck in this, we should inspect our dev process as a <em>whole,</em> measuring how much more valuable work actually reaches users. Otherwise, we may just be making the queue longer.</p><p>I wrote more about this in the full piece on the <em>acceleration whiplash</em> &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:202940735,&quot;url&quot;:&quot;https://refactoring.fm/p/acceleration-whiplash&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;Acceleration whiplash &#128201;&quot;,&quot;truncated_body_text&quot;:&quot;Hey! Luca here &#8212; welcome to a new edition of Refactoring.&quot;,&quot;date&quot;:&quot;2026-06-24T07:42:12.505Z&quot;,&quot;like_count&quot;:41,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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/acceleration-whiplash?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">Acceleration whiplash &#128201;</div></div><div class="embedded-post-body">Hey! Luca here &#8212; welcome to a new edition of Refactoring&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; 41 likes &#183; Luca Rossi</div></a></div><div><hr></div><h2>&#128314; Product engineering is the ceiling</h2><p>If your team already has good DevEx and good AI workflows, building things gets faster. But that still does not guarantee you will ship a lot more valuable work, because engineers spend only a small slice of their week actually writing code.</p><p>The rest is coordination: meetings, waiting, handoffs, status updates, and all the small negotiations that happen before something reaches users.</p><p>So, to unlock more time (and more gains) we should ask ourselves: can an engineer spend more time coding and less time <em>coordinating</em>? Which pretty squarely translates into: <strong>can one engineer own a larger slice of the product loop? </strong>This is what product engineering is about.</p><p>Not every engineer should and will become a PM and a designer at the same time, but if they can safely own more context, make more local decisions, and move with fewer handoffs, the whole system becomes lighter.</p><p>Also, to make it work, product engineering requires <em>infrastructure</em> available to everyone: product context, design platform, tight feedback loops to intercept mistakes, and in general tooling that makes this broader ownership <strong>easy and safe</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_!ocX0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ocX0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 424w, https://substackcdn.com/image/fetch/$s_!ocX0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 848w, https://substackcdn.com/image/fetch/$s_!ocX0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 1272w, https://substackcdn.com/image/fetch/$s_!ocX0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ocX0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png" width="1456" height="685" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:685,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:408607,&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/210046104?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.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_!ocX0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 424w, https://substackcdn.com/image/fetch/$s_!ocX0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 848w, https://substackcdn.com/image/fetch/$s_!ocX0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 1272w, https://substackcdn.com/image/fetch/$s_!ocX0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F186c4fa6-0d56-46eb-b8b0-52c902fe90a3_1458x686.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We should continuously strive to reduce the <strong>coordination tax</strong> that keeps good work stuck between roles.</p><p>I wrote more about this in the full piece on the new pyramid of software engineering &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:189655863,&quot;url&quot;:&quot;https://refactoring.fm/p/the-new-pyramid-of-software-engineering&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 New Pyramid of Software Engineering &#127956;&#65039;&quot;,&quot;truncated_body_text&quot;:&quot;There are a lot of opinions around these days about the future of software, including of course my own.&quot;,&quot;date&quot;:&quot;2026-03-04T08:01:19.283Z&quot;,&quot;like_count&quot;:55,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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-new-pyramid-of-software-engineering?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 New Pyramid of Software Engineering &#127956;&#65039;</div></div><div class="embedded-post-body">There are a lot of opinions around these days about the future of software, including of course my own&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 55 likes &#183; Luca Rossi</div></a></div><div><hr></div><h2>3) &#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://martinfowler.com/rachels-ramblings/conductor-developer.html">The Conductor Developer</a></h4><h5>4 min &#8226; by Rachel Laycock</h5><p>Rachel is CTO at Thoughtworks and has a good frame for what AI is doing to software development. The developer becomes more like an orchestra conductor, who needs to keep the whole system in their head while many agents play different, specialized parts. This feels directionally right to me, which makes me forgive that the article itself feels a little bit AI-generated :)</p><div><hr></div><h4>&#129352; <a href="https://www.seangoedecke.com/llms-reward-expertise/">LLMs Reward Expertise</a></h4><h5>4 min &#8226; by Sean Goedecke</h5><p>Sean&#8217;s take matches my own experience: when working with AI, the better you know the domain, the better questions you can ask, the harder you can steer the model, the faster you can spot weak answers, and so on. In other words, AI massively rewards expertise.</p><div><hr></div><h4>&#129353; <a href="https://gruhn.me/blog/2026-08-03/">Don&#8217;t Be a Meat Proxy</a></h4><h5>1 min &#8226; by Niklas Gruhn</h5><p>If you use AI in a team, your job is to read, check, compress, and contextualize what AI gives you, before you pass it on to other people. Otherwise, people might as well talk to the model directly.</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 With Agents Today 🤖 — with Charlie Guo]]></title><description><![CDATA[Watch now | Refactoring Podcast &#8226; Episode 69]]></description><link>https://refactoring.fm/p/building-with-agents-today-with-charlie</link><guid isPermaLink="false">https://refactoring.fm/p/building-with-agents-today-with-charlie</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 07 Aug 2026 07:00:53 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209980935/7de1678e94085aec140bf407718f87d4.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-JHAm58YZPIE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;JHAm58YZPIE&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/JHAm58YZPIE?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;:null,&quot;title&quot;:null,&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="" 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/charlierguo/">Charlie</a></strong><a href="https://www.linkedin.com/in/charlierguo/"> </a><strong><a href="https://www.linkedin.com/in/charlierguo/">Guo</a></strong>, developer experience engineer at OpenAI. </p><p>With Charlie, we explore the evolution of AI coding tools, how this is affecting team organization, and the future of AI integration in software development. Charlie shared strategies and tricks to leverage AI effectively, and how this is all transforming the workflows that we all know and love.</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>&#127959;&#65039; Inside the Codex team at OpenAI</strong></p></li><li><p><strong>&#128260; The evolution of AI coding tools</strong></p></li><li><p><strong>&#129513; Sharing AI workflows across teams</strong></p></li><li><p><strong>&#127912; Design, models, and practical AI workflows</strong></p></li><li><p><strong>&#128176; The economics of AI coding</strong></p></li></ol><p>Let&#8217;s dive in &#128071;</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/building-with-agents-today-with-charlie">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Summer AI Coding Updates ☀️]]></title><description><![CDATA[Monthly updates to my AI workflows, Tolaria development, and more!]]></description><link>https://refactoring.fm/p/summer-ai-coding-updates</link><guid isPermaLink="false">https://refactoring.fm/p/summer-ai-coding-updates</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 05 Aug 2026 07:01:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!stRw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<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 <strong>how I develop <a href="http://tolaria.md/">Tolaria</a></strong>, including an overall recap plus the latest updates, and some useful resources.</p><p>I consider part of my work (combined between Tolaria &amp; Refactoring) to always try the latest and greatest, and work at the frontier of what&#8217;s possible, so you will only get thoughts that come from real usage and experiments.</p><p>Also, this is the first month since we launched the <a href="https://refactoring.fm/p/introducing-the-tolaria-alliance">Tolaria Alliance</a>, which has been a huge success so far! This is what allows Tolaria to stay free and open source, and this series (and the whole development of Tolaria) is made possible by the great tools I use everyday, which are:</p><ul><li><p><strong><a href="http://codescene.com/">CodeScene</a> </strong>&#8212; to guarantee great code health across the codebase.</p></li><li><p><strong><a href="https://codacy.com/">Codacy</a> </strong>&#8212; to guarantee code quality and security.</p></li><li><p><strong><a href="https://getunblocked.com/">Unblocked</a> </strong>&#8212; to help agents (and myself) fetch information across the codebase, ADRs, Github issues, and commit history.</p></li><li><p><strong><a href="http://circleci.com/">CircleCI</a> </strong>&#8212; to allow fast and scalable local validation, and remote CI (migrated this month!)</p></li></ul><p>That said, 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; what happened on the product side.</p></li><li><p>&#128256; <strong>Forking open source</strong> &#8212; and the future of it</p></li><li><p><strong>&#128655; Creating custom gates </strong>&#8212; to give agents stricter constraints.</p></li><li><p>&#129302; <strong>On using GPT 5.6</strong> &#8212; and the latest models</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><h2>&#128260; Workflow recap</h2><p>First of all, if you missed the previous editions, 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; a deeper dive into how I use the tools from the alliance, and others, too.</p></li><li><p><a href="https://refactoring.fm/i/193368488/adrs">ADRs, and more</a> &#8212; in the initial workflow article I discussed how I do docs, which has scaled nicely so far.</p></li></ul><p>Now on to the new stuff, but first... product updates. Because what is my workflow worth if you don&#8217;t see what I shipped with it?!</p><div><hr></div><h2><strong>&#128167; </strong>Tolaria updates</h2><p>This month Tolaria has followed a bit of a <a href="https://en.wikipedia.org/wiki/Barbell_strategy">barbell strategy</a>, where the two extremes are:</p><ul><li><p>&#128296; <strong>Basics</strong> &#8212; hardening performance and quality of life features for the editor, which remains the most crucial experience to nail.</p></li><li><p>&#127770; <strong>Moonshots</strong> &#8212; trying (possibly overly) ambitious ideas, and see what sticks.</p></li></ul><p>I will talk more in detail later about performance, because I have thought a lot not only on <em>what</em> to do about it, but also <em>how </em>to create a mini workflow so that it doesn&#8217;t degrade over time.</p><h3>1) Basics &#128296;</h3><p>Basics include small features like block selection and navigation (a-la Notion), and the ability to collapse any heading and list item (a-la Bear). I constantly &#8220;borrow&#8221; features from other editors and note apps I love, but at least I credit them &#128516;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;b244ec52-b78d-45f3-be4e-2a9ca24d72d1&quot;,&quot;duration&quot;:null}"></div><p>Of course, you will also find a long tail of more improvements, like being able to open vaults in separate windows, more MCP tools, more granular controls for AI agents, and just a lot of stuff!</p><h3>2) Moonshots &#127770;</h3><p>Talking of moonshots, you can now create <strong>HTML blocks</strong> inside Tolaria.</p><p>This wouldn&#8217;t be <em>that</em> ambitious, if not for the fact that you can also <strong>reference properties</strong> from any note inside the HTML, and use a simple set of formulas to render lists, format values, and more.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!stRw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!stRw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 424w, https://substackcdn.com/image/fetch/$s_!stRw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 848w, https://substackcdn.com/image/fetch/$s_!stRw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!stRw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!stRw!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg" width="1200" height="579.3956043956044" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:703,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:514012,&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/209650772?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg&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_!stRw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 424w, https://substackcdn.com/image/fetch/$s_!stRw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 848w, https://substackcdn.com/image/fetch/$s_!stRw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!stRw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4c4ff0-fd4f-4386-81cc-6dddc4cf4ef5_4096x1977.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This builds on the same system that <strong>allows spreadsheets to reference note properties</strong>, which was working well, so I said why not?! It plants the seeds for making Tolaria a platform where you can <strong>build mini apps</strong> that take information in real time from your notes.</p><p>It&#8217;s very cool if you ask me, and I am eager to see what you will build with it!</p><p>As I anticipated, though, what I am the proudest of is our performance work, which deserves a separate chapter &#128071;</p><div><hr></div><h2>&#9889; Performance &amp; forking open source</h2>
      <p>
          <a href="https://refactoring.fm/p/summer-ai-coding-updates">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Bugs, feature requests, career stories, and weekly readings 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #219]]></description><link>https://refactoring.fm/p/bugs-feature-requests-career-stories</link><guid isPermaLink="false">https://refactoring.fm/p/bugs-feature-requests-career-stories</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 03 Aug 2026 07:01:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RiQw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg" 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>&#128269; <a href="https://getunblocked.link/nHMOAqW">Can you prove your AI is working?</a></h2><p><em>This newsletter is brought to you by <a href="https://getunblocked.link/nHMOAqW">Unblocked</a>!</em></p><p>AI is firmly in your engineering workflow. But while the token spend shows it, the throughput doesn&#8217;t. Humans are very much still in the loop, and that&#8217;s likely a context problem.</p><p>Our friends at Unblocked will hold a <strong><a href="https://getunblocked.link/nHMOAqW">free webinar on Aug 19</a></strong> to cover:</p><ul><li><p>How to track <em>AI productivity</em></p></li><li><p>How <em>context maturity</em> affects where teams stall</p></li><li><p>What it takes to get <em>real value</em> from your agents</p></li></ul><p>They know what they are doing and I personally use Unblocked everyday for Tolaria! Recommended.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getunblocked.link/nHMOAqW&quot;,&quot;text&quot;:&quot;Join the free webinar&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getunblocked.link/nHMOAqW"><span>Join the free webinar</span></a></p><div><hr></div><h2>&#128678; Separate bugs from feature requests</h2><p>When a product grows, feedback starts arriving from everywhere.</p><p>In my case <a href="https://refactoring.fm/p/how-i-run-the-tolaria-project">with Tolaria</a>, it comes from GitHub issues, support emails, community threads, crash reports, the Canny board, random DMs, and of course, my own ideas.</p><p>It is tempting to put all of this into one giant backlog, but bugs and feature requests create very different kinds of work.</p><ul><li><p>A <strong>bug</strong> mostly needs reproduction, prioritization, and a fix. If it is real, there is usually not much product strategy to debate. The job is to understand what is broken and make it not broken anymore.</p></li><li><p>A <strong>feature request</strong> is different. It needs deduplication, discussion, roadmap judgment, planned / in-progress states, and possibly a place where users can follow what happens next. It also benefits from users voting on actual proposals, so you can use that for broad prioritization.</p></li></ul><p>If you collapse these channels into one, like many teams I know actually do, the system can get noisy very quickly, like:</p><ul><li><p>Users filing feature requests as bugs</p></li><li><p>Bugs appearing in product boards</p></li><li><p>Duplicates multiplying everywhere</p></li><li><p>Engineers spending time routing work manually</p></li></ul><p>About all of this, what works for me is explicit <strong>traffic control</strong>. Route people to the right place when they submit feedback, and then run an intake workflow that moves misplaced items, closes duplicates, and turns valid work into tasks &#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_!RiQw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RiQw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RiQw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RiQw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RiQw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RiQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg" width="1456" height="1286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1286,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:188551,&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/209087902?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.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_!RiQw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RiQw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RiQw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RiQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F222ae843-5887-4586-a31a-dd42103e0e3a_1884x1664.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I wrote more about this in the full piece on how I run Tolaria as a big open source project &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:196524187,&quot;url&quot;:&quot;https://refactoring.fm/p/how-i-run-the-tolaria-project&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 I Run the Tolaria Project&quot;,&quot;truncated_body_text&quot;:&quot;Hey, Luca here! As you probably know by now, two weeks ago I launched Tolaria, a desktop app for Mac, Linux, and Windows, to manage markdown knowledge bases &#8212; for humans and AI.&quot;,&quot;date&quot;:&quot;2026-05-06T07:02:34.808Z&quot;,&quot;like_count&quot;:53,&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;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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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/how-i-run-the-tolaria-project?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 I Run the Tolaria Project</div></div><div class="embedded-post-body">Hey, Luca here! As you probably know by now, two weeks ago I launched Tolaria, a desktop app for Mac, Linux, and Windows, to manage markdown knowledge bases &#8212; for humans and AI&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 months ago &#183; 53 likes &#183; 2 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>&#127908; Prepare the three stories every behavioral interview needs</h2><p>Behavioral interviews can feel vague because there is no clear and immediate feedback. You say something about your career, someone nods, asks for a follow-up, and you leave the call wondering whether the answer was any good.</p><p>In <a href="https://refactoring.fm/p/how-to-master-behavioral-interviews-e75">my conversation with Austen McDonald</a>, former hiring committee chair at Meta, he gave practical advice to reduce this ambiguity: most behavioral interviews eventually orbit around three questions.</p><ol><li><p>&#128587;&#8205;&#9794;&#65039; <strong>Tell me about yourself</strong></p></li><li><p>&#128451;&#65039; <strong>Tell me about a project</strong></p></li><li><p>&#9876;&#65039; <strong>Tell me about a conflict</strong></p></li></ol><p>This does not mean you should memorize three canned answers and recite them everywhere. The point is to understand your own career and adapt the same strong stories to many different questions.</p><ul><li><p>For &#8220;tell me about yourself&#8221;, Austen suggests three parts: who you are, your greatest hits, and why this specific role makes sense as the next step. The goal is that, if the call drops after your intro, the interviewer will already want to talk again.</p></li><li><p>For a project story, you should guide the interviewer toward the best material before time runs out. So you should signpost the important moments upfront (e.g. the architecture choice, the difficult implementation, the launch tradeoff) and then go deeper where the signal is strongest.</p></li><li><p>For conflict, Austen says the most common mistake is skipping the actual resolution. Interviewers do not only want to hear that there was disagreement. They want to understand what you did: did you go directly to the person? Did you use Slack, a meeting, a doc? Did you show empathy for the other side? What changed afterwards?</p></li></ul><p>Good behavioral prep is about taking your real experience and making it legible for your interviewer.</p><p>You can find the full conversation with Austen here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f2358ccf-d6a0-4d30-ac8d-ab2d7163399f&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;:23,&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://annievella.com/posts/the-productivity-experience-paradox/">The Productivity-Experience Paradox</a></h4><h5>11 min &#8226; by Annie Vella</h5><p>A very useful counterweight to the usual AI productivity discourse. Annie shows that engineers can feel more productive while their actual experience gets worse, especially around flow state. An interesting second-order effect leaders should watch before declaring victory.</p><div><hr></div><h4>&#129352; <a href="https://frederickvanbrabant.com/blog/2026-07-24-you-dont-hire-juniors-to-do-menial-chores/">You Don&#8217;t Hire Juniors to Do Menial Chores</a></h4><h5>3 min &#8226; by Frederick Vanbrabant</h5><p>Short and sharp argument against one of the laziest takes of the AI era: that we do not need juniors anymore. Frederick acknowledges the &#8220;succession&#8221; point, but counterbalances it with the innovation one: juniors bring fresh takes on many things, and stress-test your assumptions because they have not yet learned all your bad habits.</p><div><hr></div><h4>&#129353; <a href="https://randsinrepose.com/archives/the-motivation/">The Motivation</a></h4><h5>1 min &#8226; by Michael Lopp</h5><p>Tiny Rands post about why writing matters: because writing is a way of building. I love this framing. In a world where we can generate more words and more code than ever, the most valuable part is still the <em>thinking</em> you force yourself to do before you publish or ship.</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[A Case Study in AI Product Development 🔬]]></title><description><![CDATA[How TRM built a custom internal harness for product and engineering work.]]></description><link>https://refactoring.fm/p/a-case-study-in-ai-product-development</link><guid isPermaLink="false">https://refactoring.fm/p/a-case-study-in-ai-product-development</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 29 Jul 2026 07:31:16 GMT</pubDate><enclosure url="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" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Hey there, Luca here!</span></p><p><span>When I write about AI coding, you can typically find three types of articles:</span></p><ol><li><p><strong><span>Commentary on recent research</span></strong><span> &#8212; as we did </span><a href="https://refactoring.fm/p/acceleration-whiplash"><span>several</span></a><span> times recently.</span></p></li><li><p><strong><span>My own experiments</span></strong><span> &#8212; these days, mostly about building Tolaria.</span></p></li><li><p><strong><span>Case studies</span></strong><span> &#8212; about how other teams work.</span></p></li></ol><p><span>The third type is the hardest to write. There are very few companies that accept to put themselves out there and talk about </span><em><span>practices</span></em><span>, not just tools or tokens. That is why I was happy when I met </span><a href="https://www.linkedin.com/in/rahulr0609/"><span>Rahul</span></a><span> and the team at </span><a href="http://trmlabs.com/"><span>TRM Labs</span></a><span>, and they agreed to share how they are redesigning their product development workflow.</span></p><p><span>For context, over the last few months, I have argued that AI is changing the </span><strong><span>cost structure</span></strong><span> of development. So, since coding is now cheaper, we need to find a way to make everything else cheaper too.</span></p><p><span>TRM reached the same conclusion and did something interesting: they rebuilt their shipping workflow and encoded it into a </span><strong><span>custom internal harness</span></strong><span> called </span><strong><span>Cortex</span></strong><span>, which they are now open-sourcing.</span></p><p><span>Today we&#8217;ll explore how they have been thinking about it. So here is the agenda:</span></p><ul><li><p><span>&#127937; </span><strong><span>Inner loop vs outer loop</span></strong><span> &#8212; a useful mental model to translate faster coding into actual faster delivery.</span></p></li><li><p><span>&#128256; </span><strong><span>From handoffs to outcomes</span></strong><span> &#8212; how TRM redesigned its product workflow around the work rather than the roles.</span></p></li><li><p><span>&#129520; </span><strong><span>Cortex as a harness</span></strong><span> &#8212; how reviewable artifacts, deterministic gates, and repository context make the workflow reliable.</span></p></li><li><p><span>&#129514; </span><strong><span>Starting small</span></strong><span> &#8212; how TRM moved from a greenfield experiment to a regulated production system.</span></p></li><li><p><span>&#9989; </span><strong><span>Healthy code and healthy people</span></strong><span> &#8212; why increasing automation doesn&#8217;t mean removing human judgment.</span></p></li></ul><p><span>Let&#8217;s dive in!</span></p><div><hr></div><p><em><span>I want to thank </span><a href="https://www.linkedin.com/in/rahulr0609"><span>Rahul</span></a><span> and the team at </span><a href="http://trmlabs.com/"><span>TRM Labs</span></a><span> for partnering on this piece. You can learn more about their work below:</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://trmlabs.com/&quot;,&quot;text&quot;:&quot;Learn more about TRM Labs&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="http://trmlabs.com/"><span>Learn more about TRM Labs</span></a></p><div><hr></div><h2><span>&#127937; Inner loop vs Outer loop</span></h2><p><span>Most AI coding tools optimize what we call the </span><strong><span>inner loop</span></strong><span>: you describe a feature, watch the agent write the code, and get something working a few minutes later. This is where AI has delivered the most visible improvements, but it&#8217;s just a small part of how software gets shipped.</span></p><p><span>Other than the inner loop, there is an </span><strong><span>outer loop</span></strong><span>, that covers the broader cycle: deciding what is worth doing, shaping and reviewing the solution, releasing it, and learning from production.</span></p><p><span>As of today, it&#8217;s been obvious how AI can help with the </span><em><span>inner loop</span></em><span>, but much less so with the </span><em><span>outer loop</span></em><span>. And if you don&#8217;t do </span><em><span>both</span></em><span>, constraints move to other parts of the workflow, like:</span></p><ul><li><p><span>&#128269; </span><strong><span>Reviews</span></strong><span> &#8212; agents create more PRs than people can reasonably inspect.</span></p></li><li><p><span>&#128203; </span><strong><span>Shaping product</span></strong><span> &#8212; the team can build faster than it can decide what good work looks like.</span></p></li><li><p><span>&#127919; </span><strong><span>Customer signal</span></strong><span> &#8212; shipping the wrong thing faster is still waste.</span></p></li></ul><p><span>At a small scale, this is the same </span><a href="https://refactoring.fm/p/acceleration-whiplash"><span>acceleration whiplash</span></a><span> I have experienced with Tolaria. 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.</span></p><p><span>To fix this, the TRM team stopped treating </span><em><span>engineering speed</span></em><span> as the goal and started looking at </span><strong><span>end-to-end throughput </span></strong><span>instead &#128071;</span></p><div><hr></div><h2><span>&#128256; From handoffs to outcomes</span></h2><p><span>Like most companies, TRM had a product shipping </span><em><span>framework</span></em><span>. This can be more or less formalized, but chances are your team has a </span><em><span>shared language</span></em><span> for how an idea moves from customer feedback to production.</span></p><p><span>At TRM, such a framework had </span><strong><span>nine stages</span></strong><span> and was mostly organized around roles. A Product Owner prepared the spec, a Technical Product Manager helped translate it; a Technical Anchor owned the implementation, and various artifacts moved from one person to another.</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_!-OLv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-OLv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 424w, https://substackcdn.com/image/fetch/$s_!-OLv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 848w, https://substackcdn.com/image/fetch/$s_!-OLv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 1272w, https://substackcdn.com/image/fetch/$s_!-OLv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-OLv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png" width="1200" height="309.8901098901099" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:376,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&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_!-OLv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 424w, https://substackcdn.com/image/fetch/$s_!-OLv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 848w, https://substackcdn.com/image/fetch/$s_!-OLv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 1272w, https://substackcdn.com/image/fetch/$s_!-OLv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8184233-250a-47c7-98d5-ee83f03efc15_2048x529.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>The process was designed around the assumption that every artifact had to be created by one specialist and handed to the next.</span></p><p><span>AI weakens that assumption. For example:</span></p><ul><li><p><span>A PM can now explore technical feasibility and create a working prototype.</span></p></li><li><p><span>Or, on the other end, an engineer can investigate the customer context and draft a product spec.</span></p></li></ul><p><span>Does this mean the intermediate artifacts disappear? I don&#8217;t think so. If anything, specs, plans, or decision records can become even more important when agents do the implementation, to trace execution and record history. But it&#8217;s likely that individual artifacts no longer need to belong *exclusively* to an individual role.</span></p><p><span>So, TRM rebuilt the framework around six outcomes, organized into three groups:</span></p><ol><li><p><span>&#128301; </span><strong><span>Sense and Decide</span></strong><span> &#8212; collect signals, understand the problem, and decide whether it is worth solving.</span></p></li><li><p><span>&#9999;&#65039; </span><strong><span>Shape and Make</span></strong><span> &#8212; turn the problem into a reviewable direction, then build it.</span></p></li><li><p><span>&#128227; </span><strong><span>Communicate and Learn</span></strong><span> &#8212; release the change, observe its impact, and feed what was learned into the next cycle.</span></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_!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" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sCNl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdf5bd1-2bce-4b88-ae47-2e5e43c373b9_1274x1154.png 424w, https://substackcdn.com/image/fetch/$s_!sCNl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdf5bd1-2bce-4b88-ae47-2e5e43c373b9_1274x1154.png 848w, https://substackcdn.com/image/fetch/$s_!sCNl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdf5bd1-2bce-4b88-ae47-2e5e43c373b9_1274x1154.png 1272w, https://substackcdn.com/image/fetch/$s_!sCNl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcdf5bd1-2bce-4b88-ae47-2e5e43c373b9_1274x1154.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sCNl!,w_1456,c_limit,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" width="522" height="472.8320251177394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcdf5bd1-2bce-4b88-ae47-2e5e43c373b9_1274x1154.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1154,&quot;width&quot;:1274,&quot;resizeWidth&quot;:522,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sCNl!,w_424,c_limit,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 424w, https://substackcdn.com/image/fetch/$s_!sCNl!,w_848,c_limit,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 848w, https://substackcdn.com/image/fetch/$s_!sCNl!,w_1272,c_limit,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 1272w, https://substackcdn.com/image/fetch/$s_!sCNl!,w_1456,c_limit,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 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>These are broad areas that change the job of the people involved:</span></p><ul><li><p><span>&#127919; </span><strong><span>PMs and EMs expand their scope</span></strong><span> &#8212; they can test feasibility and prototype ideas without waiting for engineering capacity.</span></p></li><li><p><span>&#129489;&#8205;&#128187; </span><strong><span>Engineers get closer to the problem</span></strong><span> &#8212; they can retrieve customer signal, shape solutions, and work across more of the stack.</span></p></li><li><p><span>&#127912; </span><strong><span>Specialists turn judgment into platforms</span></strong><span> &#8212; designers, security engineers, and other experts create rules and constraints that make good decisions easier for everyone else.</span></p></li></ul><p><span>I really care about the last point, and I think it&#8217;s how specialist work is evolving today. Deep specialists are more and more an </span><em><span>overkill</span></em><span> for regular production tasks &#8212; they have a bigger impact when they bottle their taste into design systems, components, security policies, workflows, and </span><em><span>platform</span></em><span> in general.</span></p><p><span>So TRM laid down the process and then created a harness around it &#128071;</span></p>
      <p>
          <a href="https://refactoring.fm/p/a-case-study-in-ai-product-development">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Good relationships, automation, and weekly readings 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #218]]></description><link>https://refactoring.fm/p/good-relationships-automation-and</link><guid isPermaLink="false">https://refactoring.fm/p/good-relationships-automation-and</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 27 Jul 2026 07:00:37 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><div><hr></div><h2>&#128184; AI spend is outrunning returns</h2><p><em>This idea is brought to you by today&#8217;s sponsor, DX!</em></p><p>Last week I published <a href="https://refactoring.fm/p/the-state-of-ai-impact-in-engineering">my own commentary</a> on the <a href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=refactoring">Q2 AI Impact report</a> by <a href="http://getdx.com/">DX</a>, which among other things, showed how quarterly median AI spend <strong>grew 28x</strong> year-over-year!</p><p>My expectation is that this <strong>AI honeymoon</strong> will not last forever, and tech leaders may already face tough budget conversations in the back half of 2026. That&#8217;s especially because it doesn&#8217;t seem that such spend is leading to <a href="https://refactoring.fm/i/207414394/orgs-are-not-multiplying-ai-output">outrageous outcomes</a> so far.</p><p>But we&#8217;ll see! You can find the full report below &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=refactoring&quot;,&quot;text&quot;:&quot;Check out the full AI impact report&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=refactoring"><span>Check out the full AI impact report</span></a></p><div><hr></div><h2>&#127793; Build relationships before you need them</h2><p>Especially in tech, networking often gets framed in a very transactional way. You meet people because one day you may need a referral, an intro, a customer, or a job.</p><p>I think this is exactly the wrong way to look at it.</p><p>I have found that the best relationships are created <em>before</em> there is any immediate need attached to them. You build rapport around common interests, you understand what the other person cares about, you are helpful when you can, and <strong>you do not keep score</strong>.</p><p>Long-term, this is both 1) the better behavior as a human being, and 2) the better strategy.</p><p>Because you never really know who will be able to help you in the future, or how. Opportunities often come through weak signals, second-order connections, and people who simply remember that interacting with you was... pleasant. Before it was any useful.</p><p>So my advice is simple: do not wait until you need something to show up.</p><p>But how?!</p><p>It can be anything, really. Share useful material (&#8221;I read this article today and thought you might like it&#8221;). Make intros. Reply thoughtfully. Follow up when someone is working on something interesting. <strong>Be generous</strong> <strong>in small ways</strong> that compound over time.</p><p>I wrote more about this in this full piece on growing your network &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:71183836,&quot;url&quot;:&quot;https://refactoring.fm/p/networking&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 to Grow your Network &#127867;&quot;,&quot;truncated_body_text&quot;:&quot;For as long as I can remember, a good share of the people I admired have recommended me to grow my network.&quot;,&quot;date&quot;:&quot;2022-09-01T05:35:16.907Z&quot;,&quot;like_count&quot;:21,&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;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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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/networking?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 to Grow your Network &#127867;</div></div><div class="embedded-post-body">For as long as I can remember, a good share of the people I admired have recommended me to grow my network&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">4 years ago &#183; 21 likes &#183; 2 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>&#128295; Automate the copy-paste (not the judgment)</h2><p>A lot of team process work is not actually <em>process</em> work. It&#8217;s copy-paste disguised as process.</p><p>Raise your hand if you ever updated a project management ticket because the real status lives elsewhere. Or you asked an engineer for a delivery date because the current dashboard is stale and can&#8217;t be trusted.</p><p>In my conversation with Antonia Scheidel, Director of Engineering at Duolingo, I liked her distinction between two kinds of information:</p><ol><li><p><strong>Information that already exists somewhere</strong></p></li><li><p><strong>Information that only exists in people&#8217;s heads</strong></p></li></ol><p>The first kind should usually be automated. E.g.:</p><ul><li><p>If an experiment was launched on the appropriate <em>experimentation platform</em>, humans should not have to copy that into Jira.</p></li><li><p>If a stakeholder needs to know that a step is ready for review, the system should notify them.</p></li></ul><p>The second kind, instead, still needs people.</p><p>In normal teams&#8217; workflows, there are plenty of <em>judgment calls</em> that cannot be reliably inferred from a tool, and that&#8217;s where you want to <em>direct</em> human attention. Things like delivery estimates, blockers, timeline changes, tradeoffs.</p><p>So, the shape of good automation looks like:</p><ol><li><p>Connect the systems of record</p></li><li><p>Remove the glue work</p></li><li><p>Ask people for the (remaining) information that genuinely requires their judgment.</p></li></ol><p>Antonia built this successfully at Duolingo, and you can find the full interview here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;48978b38-337e-4f93-a67e-c194bedc331d&quot;,&quot;caption&quot;:&quot;Listen now on YouTube, Apple, or Spotify&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 Automate Team Processes &#9889; &#8212; with Antonia Scheidel&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;2025-09-12T06:01:23.662Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/GK8M5tdgXi0&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/automating-team-processes-gracefully&quot;,&quot;section_name&quot;:&quot;&#127897;&#65039; Podcast&quot;,&quot;video_upload_id&quot;:&quot;1a2d9865-a9c0-4af3-9227-70819ded4953&quot;,&quot;id&quot;:172078825,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:21,&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://brodzinski.com/2026/07/3x-pull-request-size-ai.html">We 3.5x&#8217;d Our Pull Requests with AI: Now We Catch Fewer Bugs</a></h4><h5>5 min &#8226; by Pawel Brodzinski</h5><p>A detailed, real-world write-up about the impact of AI on an engineering team&#8217;s code reviews. PRs went from 200 to 800 lines on average, and reviewers inevitably started missing more things. Worth checking out.</p><div><hr></div><h4>&#129352; <a href="https://werd.io/american-ai-is-locked-down-and-proprietary-its-losing/">American AI is locked down and proprietary. It&#8217;s losing.</a></h4><h5>3 min &#8226; by Ben Werdmuller</h5><p>Ben makes a sharp argument that open models may win for the same reasons open infra usually wins: distribution, portability, and permissionless innovation. I am not sure the geopolitical framing is the whole story, but I really like the business point.</p><div><hr></div><h4>&#129353; <a href="https://simonwillison.net/2026/Jul/20/cheap-reverse-engineering/#atom-everything">Reverse-engineering is cheap now</a></h4><h5>1 min &#8226; by Simon Willison</h5><p>Tiny post, big ideas. Agents make throwaway code extremely cheap, so entire categories of &#8220;not worth it&#8221; automation suddenly become worth trying. Simon makes the example of reverse-engineering home devices, which I have tried myself many times! If AI makes weird small projects viable, I am all for 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[The State of AI Impact in Engineering]]></title><description><![CDATA[What data from 500+ teams is revealing about velocity gains.]]></description><link>https://refactoring.fm/p/the-state-of-ai-impact-in-engineering</link><guid isPermaLink="false">https://refactoring.fm/p/the-state-of-ai-impact-in-engineering</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 22 Jul 2026 12:06:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fd2h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Hi there! Today&#8217;s article is written together with my friend </span><a href="https://www.linkedin.com/in/justinreock"><span>Justin Reock</span></a><span>, Deputy CTO at </span><a href="http://getdx.com/"><span>DX</span></a><span>. Justin already co-authored a great article about </span><a href="https://refactoring.fm/p/vibe-coding-workflows"><span>vibe-coding workflows</span></a><span> last year, which ended up becoming one of the top 5 Refactoring articles ever, so we have a high bar to clear!</span></p><p><span>One of the things I like the most about the DX team is that they run an incredible amount of research. They run surveys all year round, and keep a pulse of where the industry is going around several topics &#8212; especially </span><strong><span>AI and developer experience</span></strong><span>.</span></p><p><span>They recently released the </span><a href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=refactoring"><span>Q2 2026 AI impact report</span></a><span>, the latest in a quarterly series tracking how AI is reshaping engineering teams. I regularly check out these reports, and one thing I noticed is how they gradually moved from discussing </span><strong><span>adoption</span></strong><span> to discussing </span><strong><span>impact</span></strong><span>.</span></p><p><span>The feeling is that AI is everywhere now, and the main challenge for engineering leaders is not to spearhead adoption anymore, but rather justify the exponentially-increasing AI budgets, by demonstrating what AI is actually delivering.</span></p><p><span>I got preview access to the report, and today we will comment on a few key highlights.</span></p><p><span>So here is the agenda:</span></p><ul><li><p><span>&#128202; </span><strong><span>Speed is real but uneven</span></strong><span> &#8212; what 500+ teams reveal about where AI gains concentrate, and who&#8217;s being left behind.</span></p></li><li><p><span>&#129521; </span><strong><span>Orgs are not multiplying AI output</span></strong><span> &#8212; developer experience is declining even as velocity climbs.</span></p></li><li><p><span>&#128300; </span><strong><span>Code is easier to change but harder to trust</span></strong><span> &#8212; a surprising divergence between maintainability and confidence.</span></p></li><li><p><span>&#128694;&#8205;&#9794;&#65039;&#8205;&#10145;&#65039; </span><strong><span>Spend is outrunning returns</span></strong><span> &#8212; AI budgets are up 28x, but innovation ratio is flat.</span></p></li><li><p><span>&#129517; </span><strong><span>What this means for engineering leaders</span></strong><span> &#8212; how to shift from tool adoption to system optimization.</span></p></li></ul><p><span>Let&#8217;s dive in!</span></p><div><hr></div><p><em><span>I want to thank Justin and the DX team for partnering on this! I am a big fan of their work and you should check out the full report here.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=refactoring&quot;,&quot;text&quot;:&quot;Download the full report&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=refactoring"><span>Download the full report</span></a></p><div><hr></div><h2><span>&#128202; Speed is real but uneven</span></h2><p><span>Across the 500+ respondents, </span><strong><span>over 50% of the code is now generated by AI</span></strong><span>. This metric has accelerated rapidly, increasing from 34% in Q1 2026.</span></p><p><span>Median weekly throughput rose 37% over four quarters (1.42 to 1.94 PRs/eng/week), and deployment frequency is up double digits across most segments. However, gains are concentrated among </span><strong><span>small organizations</span></strong><span> (less than 100 engineers) and tech-sector teams, pulling away from larger and traditional-industry teams, and the gap is widening.</span></p><p><span>This echoes what we have seen in other reports recently, from the </span><a href="https://refactoring.fm/p/acceleration-whiplash"><span>Acceleration Whiplash</span></a><span>, to the </span><a href="https://refactoring.fm/p/the-era-of-the-software-factory"><span>State of Software Delivery</span></a><span> earlier this year.</span></p><p><span>The speed at which the tools keep improving makes gains compound for teams who invest into AI workflows, so the distribution of team productivity becomes a steeper and steeper power law, with the top percentiles pulling away from the pack.</span></p><div><hr></div><h2><span>&#129521; Orgs are not multiplying AI output</span></h2><p><span>DX measures developer experience with a proprietary index called DXI (</span><a href="https://refactoring.fm/p/the-era-of-the-software-factory"><span>we talked about it with Abi Noda</span></a><span>), which, over the last four quarters, has </span><em><span>dropped</span></em><span> on average from 67 to 65.</span></p><p><span>Again this is not an </span><em><span>even</span></em><span> drop: AI is </span><em><span>improving</span></em><span> some aspects of the devex (docs quality, code maintainability, onboarding speed) while making others worse: larger PRs, slower reviews, less incremental delivery. In aggregate, the </span><strong><span>net effect is negative</span></strong><span>.</span></p><p><span>Median PR sizes have nearly doubled during the same period &#8212; and of course increases in PR size are an early proxy for technical debt, bugs, review friction, and all kinds of nasty stuff.</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_!fd2h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fd2h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 424w, https://substackcdn.com/image/fetch/$s_!fd2h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 848w, https://substackcdn.com/image/fetch/$s_!fd2h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 1272w, https://substackcdn.com/image/fetch/$s_!fd2h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fd2h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png" width="1360" height="878" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:878,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:131121,&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/207414394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.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_!fd2h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 424w, https://substackcdn.com/image/fetch/$s_!fd2h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 848w, https://substackcdn.com/image/fetch/$s_!fd2h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 1272w, https://substackcdn.com/image/fetch/$s_!fd2h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1908ddbd-9fb3-4b56-adb6-09cca1434184_1360x878.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>So, </span><strong><span>velocity metrics</span></strong><span> alone will tell you things are improving, but </span><strong><span>devex metrics</span></strong><span> will tell you that the system (and developers) are strained, and we are far from a sustainable, positive flywheel.</span></p><p><span>My personal feeling about this is that so far we have mostly tried to </span><em><span>slap</span></em><span> AI onto the existing steps of the dev process, while running them the same way we always have. This might bring incremental gains, and even work well for some of the steps, but it completely breaks others, like </span><strong><span>code reviews</span></strong><span>.</span></p><p><span>It&#8217;s obviously foolish to think that AI can make developers write code 3x faster (as it already does), while assuming we&#8217;ll need to keep reviewing every single LOC manually.</span></p>
      <p>
          <a href="https://refactoring.fm/p/the-state-of-ai-impact-in-engineering">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[AI scaffolding, daily feedback, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #217]]></description><link>https://refactoring.fm/p/ai-scaffolding-daily-feedback-and</link><guid isPermaLink="false">https://refactoring.fm/p/ai-scaffolding-daily-feedback-and</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 20 Jul 2026 07:02:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1AzC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp" 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><h3>Brought to you by our friends at <a href="https://na2.hubs.ly/H06Ljjc0">Atono</a>!</h3><blockquote><p>You hand off a story to an agent. The code works, it ships, but it&#8217;s not what you meant.</p><p>As agents move faster, the decisions that shape what gets built need to travel with the work. Most teams haven&#8217;t systematized this yet, so the result is correct implementations&#8230; of the wrong thing!</p><p>Atono just published their <strong><a href="https://na2.hubs.ly/H06LHnt0">From Intent to Production at Agent Speed</a></strong> guide, showing how product knowledge becomes your leverage point for keeping decisions intact, even at agent speed.</p><p><span>We&#8217;ve previously collaborated on pieces like </span><a href="https://refactoring.fm/p/the-state-of-product-development"><span>The State of Product Development 2026</span></a><span> and </span><a href="https://refactoring.fm/p/the-ai-productivity-paradox"><span>The AI Productivity Paradox</span></a><span> &#8212; this guide goes deeper into product delivery for agentic workflows </span>&#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://na2.hubs.ly/H06LHnt0&quot;,&quot;text&quot;:&quot;Download the guide&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://na2.hubs.ly/H06LHnt0"><span>Download the guide</span></a></p></blockquote><div><hr></div><h2>1) &#127959;&#65039; Agents are great scaffolding</h2><p>A mistake I see more and more with AI workflows (including mine!) is using AI for everything, even for parts that would be better done in other ways.</p><p>That&#8217;s easy to fall into, because when you are automating a new recurring task, an agent is often the fastest way to start. You can give it the goal in natural language, let it run the process end to end, and observe what happens. This is not only quick to do, it&#8217;s also useful because, at the beginning, you often do not know the real shape of the work yet.</p><p>So the agent helps you discover things like:</p><ul><li><p>which steps repeat every time</p></li><li><p>which data is missing or messy</p></li><li><p>where approvals are needed</p></li><li><p>which parts require actual judgment</p></li><li><p>and more</p></li></ul><p>Once the workflow becomes clear, though, the boring parts should be extracted into something more deterministic: scripts, APIs, cron jobs, workflow definitions, or whatever tool fits the job. That makes the workflow faster, cheaper, and easier to observe and debug.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1AzC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1AzC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp 424w, https://substackcdn.com/image/fetch/$s_!1AzC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp 848w, https://substackcdn.com/image/fetch/$s_!1AzC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp 1272w, https://substackcdn.com/image/fetch/$s_!1AzC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1AzC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp" width="1456" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/faeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:825,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74042,&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/207253073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1AzC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp 424w, https://substackcdn.com/image/fetch/$s_!1AzC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp 848w, https://substackcdn.com/image/fetch/$s_!1AzC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.webp 1272w, https://substackcdn.com/image/fetch/$s_!1AzC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaeb49de-28a9-45e2-a032-a3960618c273_1456x825.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"><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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These days I try to keep AI where flexibility is valuable (e.g. judgment calls), and replace it where determinism is cheap. Most often, it&#8217;s a progression: I start with an agent because it is fast, observe where the task repeats, harden the stable steps, and leave the ambiguous parts to AI.</p><p>I wrote more about this in the full piece on orchestrating AI workflows &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:197106828,&quot;url&quot;:&quot;https://refactoring.fm/p/how-to-orchestrate-ai-workflows&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:null,&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 to Orchestrate AI Workflows&quot;,&quot;truncated_body_text&quot;:&quot;Hey, Luca here! Welcome to a weekly essay from Refactoring.&quot;,&quot;date&quot;:&quot;2026-05-13T07:15:51.793Z&quot;,&quot;like_count&quot;:60,&quot;comment_count&quot;:1,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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/how-to-orchestrate-ai-workflows?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><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 to Orchestrate AI Workflows</div></div><div class="embedded-post-body">Hey, Luca here! Welcome to a weekly essay from Refactoring&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 months ago &#183; 60 likes &#183; 1 comment &#183; Luca Rossi</div></a></div><div><hr></div><h2>2) &#128172; Giving feedback should be ordinary</h2><p>Feedback is often treated like a special event. It&#8217;s the performance review, or the difficult conversation we should have had long ago, or the moment when something went wrong enough that somebody has to say something.</p><p>The problem is that, if feedback only appears in those moments, people learn to <strong>associate it with danger</strong>. They hear &#8220;can I give you some feedback?&#8221; and brace for impact.</p><p>In my conversation with Jean Hsu and Cate Huston, two professional coaches, Cate shared a better habit: every time someone does something good, tell them.</p><p>When people receive frequent, <strong>specific positive feedback</strong>, they learn that you are paying attention to their work as a whole, not only waiting for mistakes. Then, even when you eventually need to say something corrective, it lands differently.</p><p>You can also spread this beyond yourself. When someone praises a colleague privately, ask: &#8220;have you told them?&#8221; Over time, feedback stops being capital-F Feedback and becomes normal signal in the system.</p><p>You can find the full interview with Jean and Cate here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8fba2164-bbaf-4c47-8b4d-d9e6a35d1cf0&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 Own Your Career &#129437; &#8212; with Jean Hsu and Cate Huston&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-05-01T08:37:21.922Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/tb5wdmTJeuk&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/how-to-own-your-career-with-jean&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;53d8586b-f6d8-474a-9f3a-292a3bf0f3f2&quot;,&quot;id&quot;:195650521,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:21,&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>3) &#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://lucumr.pocoo.org/2026/7/13/the-tower-keeps-rising/">The Tower Keeps Rising</a></h4><h5>3 min &#8226; by Armin Ronacher</h5><p>I really like the Babel analogy applied to how we cooperate as humans and, ultimately, software. For the first time, &#8220;construction&#8221; can keep going even after humans have lost the shared language needed to reason about the system. Food for thought.</p><div><hr></div><h4>&#129352; <a href="https://lethain.com/generated-demand/">Generated and Suppressed Demand</a></h4><h5>3 min &#8226; by Will Larson</h5><p>A useful mental model for why fixing a struggling team can feel like nothing improved. Sometimes the team gets better, and the reward for it is... more work! All the previously <em>hidden</em> demand finally shows up. Great management advice, as always from Will.</p><div><hr></div><h4>&#129353; <a href="https://antirez.com/news/169">Control the Ideas, Not the Code</a></h4><h5>6 min &#8226; by Salvatore &#8220;Antirez&#8221; Sanfilippo</h5><p>Antirez makes a clear point that many engineers are still resisting: if AI writes more code, reviewing every line is probably the wrong use of your time. You have more leverage when you focus on ideas and design.</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[Speed is the Only Moat 🏎️ — with Anush Elangovan]]></title><description><![CDATA[Watch now | Refactoring Podcast &#8226; Episode 68]]></description><link>https://refactoring.fm/p/speed-is-the-only-moat-with-anush</link><guid isPermaLink="false">https://refactoring.fm/p/speed-is-the-only-moat-with-anush</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 17 Jul 2026 07:00:22 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/206247034/ca64810baae153b9914789cb4bc5fd58.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-w2F-u0kJllA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;w2F-u0kJllA&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/w2F-u0kJllA?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:</em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="http://getunblocked.com/refactoring" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eEtG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 424w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 848w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1272w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png" width="266" height="57.36538461538461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:314,&quot;width&quot;:1456,&quot;resizeWidth&quot;:266,&quot;bytes&quot;:174076,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;http://getunblocked.com/refactoring&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/197536623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.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_!eEtG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 424w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 848w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1272w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><em><strong><a href="http://getunblocked.com/refactoring">Unblocked</a></strong> is the context layer for modern engineering teams. Get a free three-week trial at</em> <em><strong><a href="http://getunblocked.com/refactoring">getunblocked.com/refactoring</a></strong></em></p></blockquote><div><hr></div><p><span>Today's guest is </span><strong><span>Anush</span></strong><span> </span><strong><span>Elangovan</span></strong><span>, VP of AI Software at AMD. </span></p><p><span>With Anush, we talked about how he thinks about open source as a key strategic driver in the AI era, and how his team is able to stay super fast while ensuring quality by combining their internal work with their external contributions.<br><br>And then we got into a rabbit hole about how to get big companies ready for AI, how to think about human capital, and how Anush personally spends his time. And spoiler alert, he is back to doing IC work for up to 40% of his time.</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>&#128275; AMD&#8217;s open-source AI stack</strong></p></li><li><p><strong>&#129302; Navigating AI-generated code contributions</strong></p></li><li><p><strong>&#9889; Speed as the only moat</strong></p></li><li><p><strong>&#127959;&#65039; Getting legacy systems AI-ready</strong></p></li><li><p><strong>&#129504; Why leaders should get their hands dirty</strong></p></li></ol><p>&#10240;Let&#8217;s dive in &#128071;</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/speed-is-the-only-moat-with-anush">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What LLM should you use for AI coding?]]></title><description><![CDATA[A guide to choosing and measuring different AI models]]></description><link>https://refactoring.fm/p/what-llm-should-you-use-for-ai-coding</link><guid isPermaLink="false">https://refactoring.fm/p/what-llm-should-you-use-for-ai-coding</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 15 Jul 2026 07:02:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/59d435a1-d1ee-4822-a73a-92ba03e62c68_2292x1526.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Quick heads up! <span>On </span><strong><span>July 22nd</span></strong><span> I am hosting a webinar on </span><strong><span>automated incident mgmt</span></strong><span> with AI, together with the folks at Augment Code.</span></em></p><p><em>That&#8217;s because I write a lot about my <a href="https://refactoring.fm/p/introducing-the-tolaria-alliance">AI workflows with Tolaria</a>, but many people (rightfully) tell me that things are more complex </em>on<em><span> a real team. </span></em></p><p><em><span>So I invited the team at Augment to share </span><strong><span>how they transformed their own engineering org</span></strong><span>, redesigning their main dev workflows. It&#8217;s free for everyone and you can RSVP below!</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://streamyard.com/watch/CXnfrUnxMCwk&quot;,&quot;text&quot;:&quot;Learn more and RSVP!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://streamyard.com/watch/CXnfrUnxMCwk"><span>Learn more and RSVP!</span></a></p><div><hr></div><p>Hi there! A lot of people these days ask me what AI models I use for coding, which I usually explain in my <a href="https://refactoring.fm/p/introducing-the-tolaria-alliance">monthly recaps</a>.</p><p>Some people also ask me &#8220;why&#8221; I use one model vs another, and that&#8217;s a way more complicated question to answer. AI models are hard to evaluate, because there are several factors to consider, and because, despite what public benchmarks say, each team situation is unique.</p><p>So today let&#8217;s try to think from first principles about <strong>how you should choose what LLM to use for coding</strong>, factoring everything in. Also let&#8217;s try to find some <em>durable</em> angles, so that you can create a mental model for yourself that stays valid for more than a couple of weeks.</p><p>Here is the agenda for today:</p><ul><li><p>&#128314; <strong>Accuracy / Speed / Cost</strong> &#8212; the three dimensions of model selection. But they are messier than you might think.</p></li><li><p>&#128202; <strong>Public benchmarks are not enough</strong> &#8212; you can&#8217;t trust leaderboards, and how your codebase discipline sets your floor.</p></li><li><p>&#129514; <strong>How to evaluate AI models</strong> &#8212; a maturity path from &#8220;just don&#8217;t&#8221; to building your own eval.</p></li><li><p>&#128256; <strong>Model routing</strong> &#8212; not all tasks are equally hard, so stop paying frontier prices for all of them.</p></li><li><p>&#127968; <strong>Self-hosting: almost never</strong> &#8212; cloud-hosted cheap models beat your own hardware, every time.</p></li></ul><p>Let&#8217;s dive in</p><div><hr></div><h2>&#128314; Model Selection 101</h2><p>With some degree of simplification, today you have three macro choices:</p><ol><li><p><strong>Top frontier models</strong> &#8212; e.g. Fable 5 or GPT 5.6</p></li><li><p><strong>Large open weights models, hosted in the cloud</strong> &#8212; e.g. GLM 5.2 on OpenRouter</p></li><li><p><strong>Smaller open weights models, self-hosted</strong> &#8212; e.g. see DeepSeek 4 Flash via <a href="https://github.com/antirez/ds4">DwarfStar</a> by Antirez</p></li></ol><p>These choices are actually more nuanced than this, because e.g. within frontier models, you may tweak the level of reasoning, or intentionally pick a smaller model that is cheaper and faster, because you feel it is a better fit for your task.</p><p>In fact, when judging models, there are three dimensions to consider:</p><ul><li><p>&#128300; <strong>Accuracy</strong> &#8212; % of times the AI gets the thing right</p></li><li><p>&#9889; <strong>Speed</strong> &#8212; tokens per second</p></li><li><p>&#128184; <strong>Cost</strong> &#8212; cost per 1M tokens (multiplied by tokens required)</p></li></ul><p>To make things even messier, these dimensions are not orthogonal. For example:</p><ul><li><p>A model with higher accuracy may translate into fewer round trips, which may translate into fewer tokens being used.</p></li><li><p>With many models you can reduce the amount of reasoning to improve speed while reducing accuracy.</p></li></ul><p>So, in most cases, performance is tricky to evaluate. Top frontier models guarantee max accuracy, but <strong>do you really need it</strong>?</p><p>Most people have anecdotal experience of small tasks for which fast + cheap models delivered the same level of accuracy. But how do you recognize them?</p><p>Also, it&#8217;s trickier than that, because even for bigger tasks you might find that a faster model, while less accurate, iterates faster over mistakes, leading to a lower cost overall. That&#8217;s what Jamie Turner, founder at Convex, was already <a href="https://refactoring.fm/p/how-to-design-your-tech-stack-for">saying last year</a>:</p><blockquote><p><em><strong>We optimize for fast feedback loops over perfect output. It&#8217;s better to get 80% correct code in 2 seconds than 95% correct code in 2 minutes.</strong></em></p></blockquote><p>Jamie made the case for optimizing for a quick feedback loop, so that developers don&#8217;t lose their train of thoughts while waiting for slow responses, even at the expense of a few more errors.</p><p>This is even more compelling when you factor in that with the current crop of LLMs, <strong>accuracy and cost are not in a linear relationship</strong>: a model that is 80% as accurate as the top frontier one might cost 1/10th of it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QuqF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QuqF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 424w, https://substackcdn.com/image/fetch/$s_!QuqF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 848w, https://substackcdn.com/image/fetch/$s_!QuqF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 1272w, https://substackcdn.com/image/fetch/$s_!QuqF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QuqF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png" width="1456" height="934" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:934,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121623,&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/206850127?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.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_!QuqF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 424w, https://substackcdn.com/image/fetch/$s_!QuqF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 848w, https://substackcdn.com/image/fetch/$s_!QuqF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 1272w, https://substackcdn.com/image/fetch/$s_!QuqF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f51d5fb-b6ee-4dee-8ee2-5393c22536ed_1678x1076.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Many open models cost 1/10th of frontier ones, while being 80% as accurate in real-world tasks</figcaption></figure></div><p>Two good examples are GLM 5.2 and Grok 4.5. They both score pretty close to the top OpenAI and Anthropic models, while costing a small fraction of 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_!8EGM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8EGM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 424w, https://substackcdn.com/image/fetch/$s_!8EGM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 848w, https://substackcdn.com/image/fetch/$s_!8EGM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!8EGM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8EGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png" width="728" height="477" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:1095996,&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/206850127?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8EGM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 424w, https://substackcdn.com/image/fetch/$s_!8EGM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 848w, https://substackcdn.com/image/fetch/$s_!8EGM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!8EGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9626ee9-800d-40df-a55e-6fa66d0e3dee_2540x1664.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">GLM 5.2 scores very well against frontier labs models</figcaption></figure></div><p>Looking at these numbers is a good way to start some kind of <em>quantitative</em> reasoning around models, but I don&#8217;t think it&#8217;s enough &#128071;</p><div><hr></div><h2>&#128202; Public benchmarks are not enough</h2><p>I have grown skeptical of public benchmarks, for two reasons:</p>
      <p>
          <a href="https://refactoring.fm/p/what-llm-should-you-use-for-ai-coding">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Anticipating questions, quiet leadership, and weekly readings 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #216]]></description><link>https://refactoring.fm/p/anticipating-questions-quiet-leadership</link><guid isPermaLink="false">https://refactoring.fm/p/anticipating-questions-quiet-leadership</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 13 Jul 2026 07:00:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!X6r4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.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>&#129692; <a href="https://watch.getcontrast.io/register/context-maturity-jul?utm_source=refactoring&amp;utm_medium=email&amp;utm_campaign=primary">The 8 Levels of Context Maturity</a></h2><p><em>This is brought to you by our friends at <a href="https://watch.getcontrast.io/register/context-maturity-jul?utm_source=refactoring&amp;utm_medium=email&amp;utm_campaign=primary">Unblocked</a>!</em></p><p>The token spend shows that AI is in your engineering workflow, but the throughput doesn&#8217;t!</p><p>Raise your hand if you can relate. A lot of the times, this is a <strong>context problem</strong>. I personally invest a lot in making sure AI gets good context about past decisions, what exists, and what needs to do, and <a href="https://refactoring.fm/i/204247813/fetching-knowledge-with-unblocked">I get a lot of help from Unblocked</a> about this.</p><p>On <strong>July 23rd</strong>, the Unblocked team is running a free webinar that maps the 8 levels of context maturity: where most teams are stuck, what the ceiling looks like at each stage, and what it takes to make the most out of your agents. </p><p>Very recommended &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://watch.getcontrast.io/register/context-maturity-jul?utm_source=refactoring&amp;utm_medium=email&amp;utm_campaign=primary&quot;,&quot;text&quot;:&quot;Join live July 23rd (FREE)&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://watch.getcontrast.io/register/context-maturity-jul?utm_source=refactoring&amp;utm_medium=email&amp;utm_campaign=primary"><span>Join live July 23rd (FREE)</span></a></p><div><hr></div><h2>1) &#128499;&#65039; Anticipate exec questions</h2><p>Whether you are an engineer or a manager, one of the most underrated skills you can have is making your ideas easier to approve!</p><p>This is often tricky, especially when presenting to executives, who may be removed from our work and don&#8217;t understand technical details. In this case, you can put yourself in their shoes and *anticipate *many of their questions, like:</p><ul><li><p><em>How much will it cost?</em></p></li><li><p><em>What do we get for the money?</em></p></li><li><p><em>Why now?</em></p></li><li><p><em>What happens if we do nothing?</em></p></li><li><p><em>What other options did we consider?</em></p></li><li><p><em>How will we measure success?</em></p></li><li><p><em>What are the risks, and how do we reduce them?</em></p></li><li><p><em>Who owns delivery?</em></p></li><li><p><em>Which other teams or business areas are affected?</em></p></li></ul><p>Some of these will feel annoying or nitpicky, or even not really applicable to your situation, but you may get asked them anyway! The more senior someone is, the wider their span of responsibility becomes, and the less time they can spend understanding any single problem. Expect broad, sometimes even off-topic questions.</p><p>So your job becomes to compress the important context for your interlocutor, translating complexity into things like trade-offs, outcomes, risks, and timing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X6r4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X6r4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 424w, https://substackcdn.com/image/fetch/$s_!X6r4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 848w, https://substackcdn.com/image/fetch/$s_!X6r4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 1272w, https://substackcdn.com/image/fetch/$s_!X6r4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X6r4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png" width="1456" height="601" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124030,&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/206250738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.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_!X6r4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 424w, https://substackcdn.com/image/fetch/$s_!X6r4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 848w, https://substackcdn.com/image/fetch/$s_!X6r4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 1272w, https://substackcdn.com/image/fetch/$s_!X6r4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F399ebc18-fdc2-4ba7-85e4-8bf79b7c2021_1910x788.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A good proposal should make the obvious executive questions boring, because they are already answered. That is how you turn a good technical idea into something the business can actually say yes to.</p><p>I wrote more about this in the full piece with Anna Shipman on the Engineer &#8594; Executive Translation Layer &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:178065441,&quot;url&quot;:&quot;https://refactoring.fm/p/the-engineer-executive-translation&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:null,&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 Engineer &#8594; Executive Translation Layer &#128256;&quot;,&quot;truncated_body_text&quot;:&quot;Hey, Luca here! Today we are hosting a fantastic new article by Anna Shipman, CTO at Kooth.&quot;,&quot;date&quot;:&quot;2025-11-12T08:01:00.523Z&quot;,&quot;like_count&quot;:31,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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;:411731536,&quot;name&quot;:&quot;Anna Shipman&quot;,&quot;handle&quot;:&quot;annashipman&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c41f7b58-210b-4e51-9ee9-eed131f347c5_3259x3259.jpeg&quot;,&quot;bio&quot;:&quot;Strategic technology leader. Previous: CTO at Kooth, Technical Director at the Financial Times, Technical Architect at GDS. Love Vim, cryptic crosswords and pool. I speak at conferences, and write about strategy and tech leadership on my blog, JFDI.&quot;,&quot;profile_set_up_at&quot;:&quot;2026-02-25T10:14:45.167Z&quot;,&quot;reader_installed_at&quot;:&quot;2026-02-25T10:23:36.696Z&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;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-engineer-executive-translation?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><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 Engineer &#8594; Executive Translation Layer &#128256;</div></div><div class="embedded-post-body">Hey, Luca here! Today we are hosting a fantastic new article by Anna Shipman, CTO at Kooth&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">9 months ago &#183; 31 likes &#183; Luca Rossi and Anna Shipman</div></a></div><div><hr></div><h2>2) &#127911; Quiet leadership prevents noisy emergencies</h2><p>Tech culture loves the person who saves the day.</p><p>The engineer who stays up late to fix production. The heroic intervention that makes everybody clap.</p><p>These days I rewatched <a href="https://refactoring.fm/p/how-to-manage-humans-with-rands">my first conversation with Rands</a>, and I love how he pushed back on this instinct. Rands simply says: if someone saves the day, the first question should be &#8220;<em>why did the day need saving?&#8221;</em></p><p>A lot of good leadership is invisible because the bad thing simply never happens. It&#8217;s when:</p><ul><li><p>You act on a yellow flag before it becomes a red flag.</p></li><li><p>You give feedback early, before resentment piles up.</p></li><li><p>You listen long and hard enough to understand what is actually going on, instead of rushing to action.</p></li></ul><p>Nobody claps when nothing explodes, but that&#8217;s how it works.</p><p>To make this possible, Rands stresses over the importance of <em>listening</em> as an active leadership tool. You need to be collecting the weak signals, the small patterns, which lead to equally small (but crucial) interventions every day.</p><p>You can find the full interview with Rands here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;1f42fd58-0ff9-4337-8b64-488471aa5265&quot;,&quot;caption&quot;:&quot;Today's guest is Michael Lopp, better known as Rands!&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 Manage Humans &#127933; &#8212; with Rands&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;2025-05-30T06:02:09.377Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/T8pcMl3rmbM&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/how-to-manage-humans-with-rands&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;6fe20f16-45bd-4435-9c43-db420a814dad&quot;,&quot;id&quot;:164631904,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:33,&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>3) &#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://martinfowler.com/articles/exploring-gen-ai/local-models-for-coding-factors.html">Viability of Local Models for Coding</a></h4><h5>9 min &#8226; by Birgitta B&#246;ckeler</h5><p>A useful reality check on local coding models. The short version is they are getting much better, but the constraints are still very real: RAM, speed, context, tool calling, and reliability all matter. Great piece by Birgitta who we also interviewed <a href="https://www.youtube.com/watch?v=65ctfy3Rmgc">last year</a>.</p><div><hr></div><h4>&#129352; <a href="https://charity.wtf/p/in-defense-of-ai-mandates">In Defense of AI Mandates</a></h4><h5>4 min &#8226; by Charity Majors</h5><p>I love how Charity frames AI mandates as a funding device. This means. if leaders want people to learn a new way of working, they have to make room for the temporary slowdown, the annoyance, and the mess. Charity was also one of the <a href="https://www.youtube.com/watch?v=97YRxrKNLP0">very first guests</a> of our podcast.</p><div><hr></div><h4>&#129353; <a href="https://vickiboykis.com/2026/05/28/we-should-be-more-tired-than-the-model/">We should be more tired than the model</a></h4><h5>2 min &#8226; by Vicki Boykis</h5><p>An interesting take that I largely do not agree with, but gave me something to think about. I love the idea of using LLMs in a way that I can *grow *(as opposed to my skills <em>atrophying </em>here and there<em>)</em>, but I don&#8217;t see myself going back to writing code manually in order to do that. That&#8217;s too big of a tradeoff. But will look for ways to make this more <em>palatable</em>!</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[The Rise of Malleable Software 🧩 — with Geoffrey Litt]]></title><description><![CDATA[Watch now | Refactoring Podcast &#8226; Episode 67]]></description><link>https://refactoring.fm/p/the-rise-of-malleable-software-with</link><guid isPermaLink="false">https://refactoring.fm/p/the-rise-of-malleable-software-with</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 10 Jul 2026 07:01:01 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/205382828/6cb73de6333b2b6594561b52d5f2f9f8.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-XS56wfgAcdw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;XS56wfgAcdw&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/XS56wfgAcdw?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:</em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="http://getunblocked.com/refactoring" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eEtG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 424w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 848w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1272w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png" width="266" height="57.36538461538461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:314,&quot;width&quot;:1456,&quot;resizeWidth&quot;:266,&quot;bytes&quot;:174076,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;http://getunblocked.com/refactoring&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/197536623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.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_!eEtG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 424w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 848w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1272w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><em><strong><a href="http://getunblocked.com/refactoring">Unblocked</a></strong> is the context layer for modern engineering teams. Get a free three-week trial at</em> <em><strong><a href="http://getunblocked.com/refactoring">getunblocked.com/refactoring</a></strong></em></p></blockquote><div><hr></div><p>Today&#8217;s guest is <strong>Geoffrey Litt</strong>, Design Engineer at <strong>Notion</strong>.</p><p>With Geoffrey, we talked about malleable software, a type of platform that kind of always existed, but is now getting new meaning and opportunity thanks to AI. </p><p>We also discussed how Notion itself changed its place in the ecosystem, with the AI agents first, and now with the new developer platform, where you can ship code directly inside Notion. And finally, we talked about how Notion builds Notion, design as shipping code to production, internal prototyping, feature flags, and more.</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 <strong>5-minute takeaways</strong> 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>&#129521; <strong>What is malleable software?</strong></p></li><li><p>&#128690; <strong>The nightmare bicycle and progressive disclosure</strong></p></li><li><p>&#129302; <strong>Notion&#8217;s AI agent platform and developer tools</strong></p></li><li><p>&#127912; <strong>Design engineering and shipping code to production</strong></p></li><li><p>&#128302; <strong>What&#8217;s next for Notion</strong></p></li></ol><p>&#10240;Let&#8217;s dive in &#128071;</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/the-rise-of-malleable-software-with">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[🏢 Customer work vs product work]]></title><description><![CDATA[How to navigate the big conflict in B2B SaaS]]></description><link>https://refactoring.fm/p/customer-work-vs-product-work</link><guid isPermaLink="false">https://refactoring.fm/p/customer-work-vs-product-work</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 08 Jul 2026 07:00:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KDOH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a086a0-7264-4a27-bff8-11f651ab1562_1520x968.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Hey, </span><a href="https://refactoring.fm/about">Luca</a><span> here! Welcome to a </span></em><span>&#128274;</span><em><span> </span><strong>weekly essay</strong><span> </span></em><span>&#128274;</span><em> from Refactoring.</em></p><p><em><span>Every week I </span><a href="https://refactoring.fm/s/essays?sort=top">write an article</a><span> to 170K+ engineers about how make good software together, and </span><a href="https://refactoring.fm/podcast">interview a world-class tech leader</a><span>. I also build and maintain </span><a href="https://refactoring.fm/p/introducing-tolaria">Tolaria</a><span> in the open, publishing my workflows and learnings here.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://refactoring.fm/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>I happen to know many startups who develop B2B products for large companies. I worked <a href="http://translated.com/">in one</a>, invested <a href="https://commerceclarity.com/">in another one</a>, and have friends who work in others.</p><p>An evergreen problem about these products is organizing work in a way that successfully takes into account:</p><ol><li><p>Roadmap / long-term product strategy</p></li><li><p>Impromptu requests from key customers</p></li></ol><p>This is tricky from all points of view: business, tech, and team organization. I have thoughts about this, so let&#8217;s start from first principles. Really the very basics.</p><p>We build tech to solve problems to customers, that pay us in return for it. At any given time we can have many of such customers. Based on this, the type the work we can do to solve such problems lays on a spectrum from <em>bespoke</em> to <em>one-size-fits-all</em>:</p><ul><li><p><strong>100% bespoke</strong> &#8212; is consultancy work.<strong> </strong>You just solve the problem, IP is of the client, zero reuse.</p></li><li><p><strong>100% one-size-fits-all</strong> &#8212; is product work.<strong> </strong>You develop <em>features</em> that can be used by all (or many of) the customers of your product.</p></li></ul><p>These types of work are <em>very</em> different but, fortunately, in most real-life situations it&#8217;s obvious where your work should land on the spectrum.</p><p>First of all, a lot of the ambiguity is cleared up upfront, by deciding the type of business you want to build. Knowing that you want to build an agency vs a B2B SaaS takes a lot of cards off the table:</p><ul><li><p>If you run an agency, the problems you solve change all the time, and there is most often not a clear path to building reusable pieces.</p></li><li><p>Conversely, if you ran a B2B SaaS with e.g. thousands of customers, any of these customers <em>might</em> want something custom, but it&#8217;s obvious that it&#8217;s not worth to build it just for them.</p></li></ul><p>About the latter, though, what if these customers are not thousands, but hundreds &#8212; or maybe just tens &#8212; and each of them is very valuable to you?</p><p>That&#8217;s where things get messy. Welcome to enterprise B2B SaaS.</p><p>So here is the agenda for today:</p><ul><li><p>&#9878;&#65039; <strong>Customer work vs product work</strong> &#8212; why enterprise B2B creates a unique tension between different types of work, and how you should think about them.</p></li><li><p>&#8265;&#65039; <strong>Is it worth to do bespoke customer work?</strong> &#8212; the right questions to ask yourself before committing to custom work for a single customer.</p></li><li><p>&#127933; <strong>How to design team structure</strong> &#8212; use dedicated roles like solution engineers of FDEs to shield your roadmap from customer requests.</p></li><li><p>&#128207; <strong>How to design tech strategy</strong> &#8212; empower solution engineers with great platform, so they move fast and build things close to product shape.</p></li><li><p>&#128256; <strong>How to converge</strong> &#8212; treat customer work as validated product input, and create avenues to merge it back over time.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><h2>&#9878;&#65039; Customer work vs product work</h2><p>If a customer of yours is paying you $100K for a yearly contract, instead of e.g. $2K, and you have, say, only 12 of those customers, all of a sudden their requests, however absurd, look... different.</p><p>This customer has <em>leverage</em> &#8212; and you have probably spent a lot to acquire them, so it can make complete business sense to do something specific to make them (and only them) happy.</p><p>We said this is a spectrum, but for the sake of simplicity let&#8217;s call this type of work &#8220;<strong>customer work</strong>&#8220;, as opposed to more general &#8220;<strong>product work</strong>&#8220;, which is done in the service of everyone.</p><p>The problem with customer work vs product work is that they have completely different <em>shapes</em>, when it comes to fundamental factors like:</p><ul><li><p><em>When</em> and <em>how</em> such work spawns</p></li><li><p>How urgent it is</p></li><li><p>How big it is</p></li><li><p>How it fits your overall strategy</p></li></ul><p>One of the goals of your standard <strong>product workflow</strong> is to <em>control </em>for these factors, in order to normalize them. So items you plan for are: comparable in size, planned in timely fashion, all fit your strategy, and so on.</p><p>Customer work spawns, by definition, from external forces, which makes all of the above out of your control. It also doesn&#8217;t land with the same level of <em>discipline</em> that you might put into your product process, so it&#8217;s work that is often: urgent, big, and unrelated to your plans.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S1jd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S1jd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 424w, https://substackcdn.com/image/fetch/$s_!S1jd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 848w, https://substackcdn.com/image/fetch/$s_!S1jd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 1272w, https://substackcdn.com/image/fetch/$s_!S1jd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S1jd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png" width="1456" height="687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:687,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:177149,&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/205507399?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.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_!S1jd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 424w, https://substackcdn.com/image/fetch/$s_!S1jd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 848w, https://substackcdn.com/image/fetch/$s_!S1jd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 1272w, https://substackcdn.com/image/fetch/$s_!S1jd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa815e1c7-f704-4e2d-97c7-b8be2ff53edc_2128x1004.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This leads to questions:</p><ul><li><p>When is it worth to do these things?</p></li><li><p>How should I design my company accordingly? Speaking of team, tech, and process?</p></li></ul><p>Let&#8217;s start with the first one.</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/customer-work-vs-product-work">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Code hygiene, personal identity, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #]]></description><link>https://refactoring.fm/p/code-hygiene-personal-identity-and</link><guid isPermaLink="false">https://refactoring.fm/p/code-hygiene-personal-identity-and</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 06 Jul 2026 07:02:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!alN4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.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>&#127903;&#65039; <a href="https://streamyard.com/watch/CXnfrUnxMCwk">Join our webinar on how to become an agentic engineering org!</a></h2><p>On <strong>July 22nd</strong> I will host an exclusive webinar together with the team at Augment Code!</p><p>Most teams adopt coding agents and see a <strong>20% lift</strong> at most, and then plateau. The most common reason is that the bottleneck moves, and <strong>you should lift your whole dev process</strong>, not just coding.</p><p>In this session, the Augment Code team shares <strong>how they transformed their own engineering org</strong> by redesigning one workflow at a time, and demos two of them live on a real codebase: <em>agentic code review</em> and <em>automated incident management</em>, where agents now resolve the majority of incidents end-to-end.</p><p>You&#8217;ll leave with a playbook for finding your org&#8217;s current bottleneck and a workflow you can replicate with your team this week &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://streamyard.com/watch/CXnfrUnxMCwk&quot;,&quot;text&quot;:&quot;Learn more and RSVP!&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://streamyard.com/watch/CXnfrUnxMCwk"><span>Learn more and RSVP!</span></a></p><div><hr></div><h2>1) &#129529; AI makes code hygiene enforceable</h2><p>I have written many times about this recently, but I&#8217;ll keep hammering on this point because it is so important, and I believe many people haven&#8217;t fully grasped it yet.</p><p>Good code hygiene is, at once, 1) something everybody agrees with in theory, and 2) quietly and often sacrifices in practice, because it&#8217;s hard to maintain.</p><p>Things like good test coverage, small files, high cohesion + low coupling, low cyclomatic complexity, have all historically needed people who care enough to push for it, review for it, and absorb the cost of fixing it.</p><p>For the first time, AI allows to turn hygiene into a system that can be enforced at almost no additional cost. You can give agents rules about how to write tests, keep files small, or refactor before adding new behavior.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!alN4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!alN4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 424w, https://substackcdn.com/image/fetch/$s_!alN4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 848w, https://substackcdn.com/image/fetch/$s_!alN4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 1272w, https://substackcdn.com/image/fetch/$s_!alN4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!alN4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png" width="728" height="260.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:521,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:200363,&quot;alt&quot;:&quot;&quot;,&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/195748040?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.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_!alN4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 424w, https://substackcdn.com/image/fetch/$s_!alN4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 848w, https://substackcdn.com/image/fetch/$s_!alN4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 1272w, https://substackcdn.com/image/fetch/$s_!alN4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d97bf8-6be6-48af-9ff5-2196f8d60cee_2336x836.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Many of such rules can also be enforced by gates: coverage checks, code health thresholds, linters, static analysis, and more. Guidance tells the agent what the floor looks like, and gates make such floor non-negotiable. And you can design these checks to run early, so the feedback arrives while the work is still cheap to fix.</p><p>The #1 concern of engineers about AI coding is still code quality, but you can actually use AI to <em>increase</em> the code quality of your team. I wrote more about this in the full piece on the compounding software factory &#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;:null,&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;:58,&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;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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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"><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">4 months ago &#183; 58 likes &#183; 2 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>2) &#129694; Find a broader identity for yourself</h2><p>A lot of the anxiety around AI is really about who you are (and who you are going to become) as a professional, rather than about tools.</p><p>Based on your sense of identity, AI can feel either like an opportunity, or a threat.</p><p>If you define yourself narrowly &#8212; e.g. &#8220;I am a backend engineer who is great at algorithms&#8221;, or &#8220;I love the thrill of solving puzzles with code&#8221; &#8212; then AI might feel like it is walking into your house and stealing furniture.</p><p>Earlier this year I talked about this with my friend Thiago Ghisi, who had a long engineering leadership career, and then used his sabbatical to step back and look for broader patterns in his life and work.</p><p>He is now studying clinical psychology&#8212; and sure, if you frame him only as a Director of Engineering, this might look like a strange detour. But if you frame him as someone who helps high-achieving people grow, you can suddenly connect more dots.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MYMl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MYMl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 424w, https://substackcdn.com/image/fetch/$s_!MYMl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 848w, https://substackcdn.com/image/fetch/$s_!MYMl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!MYMl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MYMl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png" width="1456" height="772" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:772,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:293136,&quot;alt&quot;:&quot;&quot;,&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/184235918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.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_!MYMl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 424w, https://substackcdn.com/image/fetch/$s_!MYMl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 848w, https://substackcdn.com/image/fetch/$s_!MYMl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!MYMl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb049a8b6-0b0e-4ae5-8dcd-ef1360d5899a_2880x1528.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I think this is a useful exercise for engineers too. Instead of thinking in terms of <em>skills</em>, ask yourself:</p><ul><li><p><em>Why do I do what I do?</em></p></li><li><p><em>What is a broader version of my role?</em></p></li><li><p><em>What kinds of problems do I actually care about solving?</em></p></li></ul><p>A broader identity makes you more adaptable, and opens up more opportunities. You can find the full piece below &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:184235918,&quot;url&quot;:&quot;https://refactoring.fm/p/finding-yourself-in-the-ai-era&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:null,&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;Finding yourself in the AI era &#10024;&quot;,&quot;truncated_body_text&quot;:&quot;Hey, Luca here! This is a &#10024; bonus free essay &#10024; from Refactoring. Based on our schedule it should have been a paid one! But I really care about this topic so I decided to make it free for everyone.&quot;,&quot;date&quot;:&quot;2026-01-14T08:02:05.523Z&quot;,&quot;like_count&quot;:77,&quot;comment_count&quot;:6,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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/finding-yourself-in-the-ai-era?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><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">Finding yourself in the AI era &#10024;</div></div><div class="embedded-post-body">Hey, Luca here! This is a &#10024; bonus free essay &#10024; from Refactoring. Based on our schedule it should have been a paid one! But I really care about this topic so I decided to make it free for everyone&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">7 months ago &#183; 77 likes &#183; 6 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>3) &#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://newsletter.kentbeck.com/p/the-cost-yagni-was-never-about">The Cost YAGNI Was Never About</a></h4><h5>4 min &#8226; by Kent Beck</h5><p>I love how Kent reframes YAGNI for the AI era. The cost has never been writing the actual code, but rather spending optionality too early, and pulling investment forward before the feature can pay you back. Great article everyone should read.</p><div><hr></div><h4>&#129352; <a href="https://sandimetz.com/blog/2016/1/20/the-wrong-abstraction">The Wrong Abstraction</a></h4><h5>4 min &#8226; by Sandi Metz</h5><p>This is a great <em>segue</em> to the Kent&#8217;s article above. Duplication is usually cheaper than the wrong abstraction, because the wrong abstraction eventually collects all kinds of bad stuff &#8212; parameters, conditionals, and sunk-cost arguments. Sometimes the fastest way forward is going back, but this is usually very hard to do.</p><div><hr></div><h4>&#129353; <a href="https://www.schneier.com/blog/archives/2026/06/ai-and-liability.html">AI and Liability</a></h4><h5>4 min &#8226; by Bruce Schneier</h5><p>Including this great piece by Bruce even if it&#8217;s not properly about software engineering, because it&#8217;s so relevant today. Companies should be liable for what their AI agents say and do, just like they are for employees or published content. If your product presents an answer with your logo on it, you should own it, and not use &#8220;the model said so&#8221; as an escape hatch.</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[Introducing the Tolaria Alliance! 🦸‍♂️]]></title><description><![CDATA[A small set of tools that power my Tolaria coding workflow, and also fund my work!]]></description><link>https://refactoring.fm/p/introducing-the-tolaria-alliance</link><guid isPermaLink="false">https://refactoring.fm/p/introducing-the-tolaria-alliance</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 01 Jul 2026 11:47:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-_GB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is a special edition of Refactoring and I am so excited about it!</p><p>By now, <strong>developing <a href="https://tolaria.md/">Tolaria</a></strong> is a big chunk of my working time (about 40%, to be precise). I like this balance and I am happy I can regularly write articles about AI coding coming from my own experience, as opposed to pure research.</p><p>I also don&#8217;t want to end up writing <em>only</em> about that, and so far I have kept a schedule of about <strong>once a month</strong>. This feels like is a good cadence: it&#8217;s feel overwhelming for readers, and gives me time to produce actual <em>updates</em> to the workflow, as opposed to posting always the same things.</p><p>So, today I am covering a few workflow updates, but most of all I am introducing a <strong>new set of partnerships</strong> I am very proud of.</p><p>So let&#8217;s dive in!</p><div><hr></div><h2>&#128167; The State of Tolaria</h2><p>First of all you may wonder: how is Tolaria doing? Pretty well, if you ask me.</p><p>From a growth perspective, it has now almost <strong>18K stars</strong> on Github, <strong>100K+ downloads</strong>, and thousands of daily active users.</p><p>From a product perspective, this month we delivered a ton of updates, including some massive ones, like the support for <strong>native spreadsheets</strong>. </p><p>You can now create and edit spreadsheets inside Tolaria with Excel-compatible formulas in a completely open and portable format, which is basically CSV with a frontmatter on top.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-_GB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-_GB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 424w, https://substackcdn.com/image/fetch/$s_!-_GB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 848w, https://substackcdn.com/image/fetch/$s_!-_GB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 1272w, https://substackcdn.com/image/fetch/$s_!-_GB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-_GB!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png" width="1200" height="774.7252747252747" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:940,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:2493531,&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/204247813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.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_!-_GB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 424w, https://substackcdn.com/image/fetch/$s_!-_GB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 848w, https://substackcdn.com/image/fetch/$s_!-_GB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 1272w, https://substackcdn.com/image/fetch/$s_!-_GB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefae0d0d-d7db-467a-892d-75f88b89d2ee_2590x1672.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>We also improved a lot of the editor experience, adding </span><strong>collapsible headings</strong><span>, block navigation, better spacing and typography, all while making everything </span><strong>faster than ever</strong><span>. If you haven&#8217;t tried it in a while, you definitely should!</span></p><p>I really enjoy developing (and using!) Tolaria, so the question recently has rather become: how do I make this work sustainable, while keeping everything free and open?</p><p>Enter our tech alliance!</p><div><hr></div><h2>&#129464;&#8205;&#9794;&#65039; Creating our own Tech Alliance</h2><p>The tools I use to develop Tolaria are no secret &#8212; you can figure out most of them by looking at the repo, the <a href="https://github.com/refactoringhq/tolaria/blob/main/AGENTS.md">AGENTS</a> file, hooks, and my own articles.</p><p>So, over the last month I reached out to the ones I use the most to figure out if we could work together to make the development of Tolaria more sustainable on my end via open source sponsorships, in return for me spreading the word about how I use such tools, and providing good feedback on how to improve them.</p><p>The result is an <strong>alliance</strong> that as of today includes four tools: <strong><a href="https://codescene.com/">CodeScene</a></strong>, <strong><a href="https://circleci.com/">CircleCI</a></strong>, <strong><a href="https://codacy.com/">Codacy</a></strong>, and <strong><a href="https://getunblocked.com/https://getunblocked.com/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=tolaria">Unblocked</a></strong>.</p><p>These partnerships allow Tolaria to stay free and open forever, and even give us the opportunity to accelerate by hiring a great product engineer (<em>if you think you are a great fit, please reach out and say hi!</em>).</p><p>So today I will tell you more about my workflow, which includes these tools &#8212; but first an ethical statement: I will only <em>ally </em>(and stay allied) with tools I personally use and believe are the best way to do what they do. As you will see these are <em>non overlapping</em>: each has its own job, so they really make for my <strong>tech stack</strong>. Over time we will also expand on this and create exclusive deals for Refactoring subscribers!</p><p>Before we talk about the tools, it&#8217;s worth refreshing how I think about <em>controls</em> for code written by AI. I have written about it in this recent piece &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;6d92a9d5-baf3-4000-acc6-ec5fa9b10dd6&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;My AI Coding Workflow&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-03T07:02:23.762Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba3740b9-b1f0-462d-8744-8cd1d81d6a81_1714x1138.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/my-ai-coding-workflow-b09&quot;,&quot;section_name&quot;:&quot;&#129525; Essays&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:200102476,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:71,&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><p>In a nutshell, I <em>steer </em>AI output in three main ways:</p><ul><li><p><strong>&#8618;&#65039; Guides </strong>&#8212; instructions in the AGENTS file and skills. Not 100% reliable: the AI may or <em>may not</em> follow them.</p></li><li><p><strong>&#128260; Gates </strong>&#8212; deterministic checks that don&#8217;t let bad code move forward if some conditions are not met.</p></li><li><p><strong>&#8617;&#65039; Guards</strong> &#8212; fallback procedures that typically run once a day to fix what goes through the cracks.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hd-o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hd-o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 424w, https://substackcdn.com/image/fetch/$s_!hd-o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 848w, https://substackcdn.com/image/fetch/$s_!hd-o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 1272w, https://substackcdn.com/image/fetch/$s_!hd-o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hd-o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png" width="1456" height="691" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:691,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:524294,&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/204247813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.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_!hd-o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 424w, https://substackcdn.com/image/fetch/$s_!hd-o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 848w, https://substackcdn.com/image/fetch/$s_!hd-o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 1272w, https://substackcdn.com/image/fetch/$s_!hd-o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e77db0-5966-4432-a71b-fb513f6c6473_1914x908.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Out of these, the most important part is the </span><strong>gates</strong><span>, because they have the (deterministic) power to stop bad code, so the more I can express this way, the better. Most of the tools below are integrated this way.</span></p><p><span>So let&#8217;s go &#128071;</span></p><div><hr></div><h2>&#129658; Code Health &#8212; with <a href="https://codescene.com/">CodeScene</a></h2><p><a href="https://codescene.com/">CodeScene</a> probably needs no introduction because I have written about it many times here. I am a big fan of <a href="https://se.linkedin.com/in/adam-tornhill-71759b48">Adam Tornhill</a>&#8216;s work, which to me is about two big things:</p><ul><li><p>A proprietary algorithm to calculate code health, that considers 20+ factors.</p></li><li><p>The &#8220;hotspot&#8221; approach, which looks at git history and suggests refactoring targets prioritizing files that are changed the most often.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-9Dp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-9Dp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 424w, https://substackcdn.com/image/fetch/$s_!-9Dp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 848w, https://substackcdn.com/image/fetch/$s_!-9Dp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 1272w, https://substackcdn.com/image/fetch/$s_!-9Dp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-9Dp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png" width="1456" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1192160,&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/204247813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.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_!-9Dp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 424w, https://substackcdn.com/image/fetch/$s_!-9Dp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 848w, https://substackcdn.com/image/fetch/$s_!-9Dp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 1272w, https://substackcdn.com/image/fetch/$s_!-9Dp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52031750-52f6-4df1-95f0-5460d57455b5_2666x1748.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">It&#8217;s nice to see code dependencies and clusters at a glance</figcaption></figure></div><p>I integrate CodeScene as a hard gate in local hooks: new code can&#8217;t be committed if it&#8217;s not a 10/10. For modifying old code, the AI needs to follow the boy scout rule: leave the code better than it found it. So it measures the code health <em>before</em> touching the file, and <em>after</em>, and the score needs to be the same or higher.</p><p>After any commit that improves the overall codebase health, the AI also increases the thresholds, to create a positive flywheel.</p><p>After four months working like this, now the code has perfect health, and the <a href="https://github.com/refactoringhq/tolaria/blob/main/.codescene-thresholds">current threshold</a> is literally 10/10!</p><div><hr></div><h2>&#128274; Security and Quality &#8212; with <a href="https://codacy.com/">Codacy</a></h2><p><a href="https://codacy.com/">Codacy</a> works on code quality too, but from a different angle: rather than <em>scoring</em> files, it surfaces <strong>individual issues</strong>.</p><p>Issues come with severity levels and belong to various categories, like security, performance, compatibility, code being error prone, and more.</p><p>Codacy has an MCP that I use to steer my Codex locally, and to implement an actual blocking <em>gate </em>before it pushes any code. All new code has to be issue-free, and when touching old code, the AI also needs to fix existing problems, other than making the business changes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qe5H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qe5H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 424w, https://substackcdn.com/image/fetch/$s_!qe5H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 848w, https://substackcdn.com/image/fetch/$s_!qe5H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 1272w, https://substackcdn.com/image/fetch/$s_!qe5H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qe5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png" width="1456" height="705" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:705,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:139823,&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/204247813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.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_!qe5H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 424w, https://substackcdn.com/image/fetch/$s_!qe5H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 848w, https://substackcdn.com/image/fetch/$s_!qe5H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 1272w, https://substackcdn.com/image/fetch/$s_!qe5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8652d69-8deb-4d24-8f91-8cba91703730_1954x946.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I am also working with the Codacy team on their new product <strong><a href="https://verity.md/tolaria">Verity</a> </strong>(you can join the <a href="https://verity.md/tolaria#pricing">beta for free here</a>), that aims to steer agents&#8217; work by creating a knowledge base of past decisions.</p><p>This is interesting to me because I do that with ADRs, and would love to create more reliable controls against code that violates them. Verity is promising about that, and should also track token efficiency and a bunch of process metrics that I am interested in improving over time.</p><div><hr></div><h2><span>&#9989; Validation &#8212; with </span><a href="https://circleci.com/">CircleCI</a></h2><p>A few months ago I made a change in how I run our test suite, creating local hooks with Husky so that AI agents can immediately see if controls fail, instead of waiting for the remote CI.</p><p>This was very effective at improving the agents&#8217; work, at the expense of completely hogging my machine every time. Some parts of the test suite are particularly heavy (e.g. playwright), and running them in local means the whole thing takes time &#8212; about 15 mins &#8212; and parallelizing things is out of question, because resources are not enough. It&#8217;s tricky to run even just 2 worktrees at the same time: things sometimes literally crash.</p><p>I talked with <a href="https://www.linkedin.com/in/robzuber/">Rob Zuber</a> from <a href="https://circleci.com/">CircleCI</a> about this, and they implemented a great solution: local hooks that are run remotely, in what they call <a href="https://circleci.com/blog/chunk-sidecars/">Chunk Sidecars</a>.</p><p>Sidecars are preconfigured environments that run alongside your local workflow, and validate changes as they happen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tPlB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tPlB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 424w, https://substackcdn.com/image/fetch/$s_!tPlB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 848w, https://substackcdn.com/image/fetch/$s_!tPlB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!tPlB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tPlB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:834833,&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/204247813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.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_!tPlB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 424w, https://substackcdn.com/image/fetch/$s_!tPlB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 848w, https://substackcdn.com/image/fetch/$s_!tPlB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!tPlB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F448719bf-44ac-41a3-9a7f-a99230869258_2152x1300.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This allows to 1) free up your machine resources, and 2) make things faster by introducing real concurrency.</p><p>This way I have been able to reduce the suite run time <strong>from 15 to 4 mins</strong>, while also being able to spawn more worktrees safely. A massive win!</p><div><hr></div><h2>&#128214; Fetching knowledge &#8212; with <a href="https://getunblocked.com/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=tolaria">Unblocked</a></h2><p><a href="https://getunblocked.com/?utm_source=refactoring&amp;utm_medium=newsletter&amp;utm_campaign=tolaria">Unblocked</a> is a context engine: it takes information from several sources (e.g. Github, Notion, Slack, Datadog, ...) so you can ask questions about it.</p><p>I have known Dennis, Claire, and the team at Unblocked for a long time, but didn&#8217;t think of using it for Tolaria until just recently, because I thought that Unblocked would shine when you have <em>many</em> information sources, and we legitimately don&#8217;t have many.</p><p>I was wrong.</p><p>I plugged it about one month ago, connecting it to Github and Sentry. Sentry is useful to triangulate issues, but the Github connection would basically be worth by itself, because it indexes the code, the ADRs, and all the history of changes.</p><p>I have been asking questions about how we do this and that and checking side by side with Codex (which instead just greps and fetches things on the go) and the difference in speed and accuracy is just obvious.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4tT5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4tT5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 424w, https://substackcdn.com/image/fetch/$s_!4tT5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 848w, https://substackcdn.com/image/fetch/$s_!4tT5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!4tT5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4tT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png" width="1456" height="948" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:948,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1335937,&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/204247813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.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_!4tT5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 424w, https://substackcdn.com/image/fetch/$s_!4tT5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 848w, https://substackcdn.com/image/fetch/$s_!4tT5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!4tT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd7f01a1-c83f-4da2-a9a7-347a42429fbe_1856x1208.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Even more importantly, Codex itself uses Unblocked via the MCP to understand past decisions and fetch relevant ADRs.</p><p>Big props to the Unblocked guys because this was an easy win and largely plug-and-play!</p><div><hr></div><h2>&#128301; What&#8217;s next</h2><p>Now that Tolaria has sustainable funding, I am going to invest even more on it. Again, I am exploring hiring a strong product engineer, so if you think you can be a good fit, feel free to reach out and say hi!</p><p>As for future work, the most important thing ahead is the <strong>mobile version</strong>.</p><p>I already have a working prototype for iPad, but there are still a lot of rough edges. Also, the iPad version is the easy part: for smartphones we need to completely reinvent the UI &#8212; I have been working on it &#128170;</p><div><hr></div><p>And that&#8217;s it for today! I wish you a great week</p><p><span>Sincerely &#128075;</span><br><span>Luca</span></p>]]></content:encoded></item><item><title><![CDATA[Organizing information, code health, and weekly readings! 💡]]></title><description><![CDATA[Monday Ideas &#8212; Edition #214]]></description><link>https://refactoring.fm/p/monday</link><guid isPermaLink="false">https://refactoring.fm/p/monday</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Mon, 29 Jun 2026 07:01:46 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><div><hr></div><div class="callout-block" data-callout="true"><h3>&#128203; <a href="https://getunblocked.link/X5bccbt">Unblocked: context to save you time and money</a></h3><p><em>This week&#8217;s newsletter is brought to you by <a href="https://getunblocked.link/X5bccbt">Unblocked</a>!</em></p><p><a href="https://getunblocked.link/X5bccbt">Unblocked</a><strong> </strong>brings together your PRs, docs, conversations, tickets, and more&#8211; turning them into actionable context for both your team and their AI agents.</p><p>Engineering teams that are getting ahead right now use a <strong>context engine</strong> like Unblocked to make better plans, use fewer tokens, and spend less time in review cycles.</p><p>AI is in your engineering workflow. While the token spend shows it, the throughput doesn&#8217;t. The human is very much still in the loop, and that&#8217;s a context problem.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getunblocked.link/X5bccbt&quot;,&quot;text&quot;:&quot;Stop babysitting your agents&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getunblocked.link/X5bccbt"><span>Stop babysitting your agents</span></a></p></div><div><hr></div><h2>1) &#129517; Organize information based on action</h2><p>Most knowledge bases slowly become piles of <strong>uninteresting information</strong>. After a while everything starts looking the same: meeting notes, ideas, projects, living side by side and you don&#8217;t know exactly how and why.</p><p>I believe when you store a new piece of information, there are two questions you need to ask yourself:</p><ul><li><p><strong>What is this?</strong></p></li><li><p><strong>What is this useful for?</strong></p></li></ul><p>The second question is often overlooked, and it&#8217;s a core idea behind <a href="https://refactoring.fm/p/introducing-portent">Portent</a>, which I published last month.</p><p>Portent includes default types &#8212; which answer the question &#8220;what is this&#8221; &#8212; but also a set of default relationships (belongs to, related to, etc) to help you figure out <strong>how to connect notes together</strong>, based on what they should help you with.</p><p>So, a meeting may belong to a project, a procedure may belong to a responsibility, a resource may be related to a topic, and so on.</p><p>Connecting notes together is hard work, but it&#8217;s paramount work! Otherwise you easily get stuck: you optimize too much for memory, and not enough for motion.</p><p>The goal is to know what to do next, rather than remember more stuff.</p><p>You can find the full article below:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:198376374,&quot;url&quot;:&quot;https://refactoring.fm/p/introducing-portent&quot;,&quot;publication_id&quot;:64099,&quot;embedding_publication_id&quot;:null,&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;Introducing Portent &#9752;&#65039;&quot;,&quot;truncated_body_text&quot;:&quot;Today it&#8217;s almost one month since I released Tolaria, and during this time I have spoken with many people and teams that are trying to use it to create and manage internal knowledge bases.&quot;,&quot;date&quot;:&quot;2026-05-20T07:44:11.683Z&quot;,&quot;like_count&quot;:63,&quot;comment_count&quot;:7,&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;Learn how to make your engineering team ship faster and better. Read weekly by 170,000+ engineers and managers&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/introducing-portent?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><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">Introducing Portent &#9752;&#65039;</div></div><div class="embedded-post-body">Today it&#8217;s almost one month since I released Tolaria, and during this time I have spoken with many people and teams that are trying to use it to create and manage internal knowledge bases&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 months ago &#183; 63 likes &#183; 7 comments &#183; Luca Rossi</div></a></div><div><hr></div><h2>2) &#128202; Treat code health as a data product</h2><p>Code quality conversations are often extremely vague.</p><p>Everyone wants cleaner code, fewer bugs, easier changes, but unless these things become <strong>visible and measurable</strong>, they remain mostly opinions.</p><p>One thing that I liked in my conversation with Stuart Caborn is that Loveholidays treated <strong>code health like a data product</strong>.</p><p>They collected signals, put them on dashboards, trended them over time, compared teams, and checked whether the numbers matched how engineers felt in sentiment surveys.</p><p>The AI angle makes this even more important. If code health data is available through tools and MCP servers, humans and agents can ask questions directly:</p><ul><li><p>How is my team doing compared with yesterday?</p></li><li><p>Are there any areas that got worse this week?</p></li><li><p>Where should an agent be more careful?</p></li></ul><p>At that point code health becomes a feedback system that informs your dev process, and it&#8217;s exactly the kind of feedback AI needs. The better the codebase, the easier for agents to understand it, change it, and spend fewer tokens doing so.</p><p>You can find the full interview with Stuart here &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;4669ab7b-bac5-4109-b550-5ff85536dacb&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;AI Coding meets Code Health &#129668; &#8212; with Stuart Caborn&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-04-17T07:01:17.745Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/msEjXJhL0HM&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://refactoring.fm/p/ai-coding-meets-code-health-with&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;99827a36-4345-4b9a-b654-f13b7e2b736e&quot;,&quot;id&quot;:194274334,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:18,&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>3) &#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://theengineeringmanager.substack.com/p/the-right-kind-of-ai-sceptic">Earn Your Scepticism</a></h4><h5>10 min &#8226; by James Stanier</h5><p>James makes a distinction I like a lot: scepticism as a conclusion vs scepticism as an identity. The useful version comes from actually using the tools, staying specific about what fails, and keeping your mind open as the evidence changes. This applies just as much to AI enthusiasts as to sceptics.</p><div><hr></div><h4>&#129352; <a href="https://www.moderndescartes.com/essays/ai_and_expertise/">Expertise in the Age of AI</a></h4><h5>5 min &#8226; by Brian Kihoon Lee</h5><p>Brian uses calculators as the analogy for coding agents: the tool removes a lot of mechanical work, but makes the underlying intuition even more valuable. I do not agree with every prediction in here, but the core point is sharp: skipping the struggle may leave you unable to judge the output.</p><div><hr></div><h4>&#129353; <a href="https://larahogan.me/blog/identify-new-role/">Find a New Role - Worksheet</a></h4><h5>4 min &#8226; by Lara Hogan</h5><p>Lara turns career decisions into four simple lists: must-haves, nice-to-haves, don&#8217;t-cares, and what you are optimizing for. This is practical and useful, especially when titles, prestige, and compensation make a role look more appealing than it really is.</p><div><hr></div><blockquote><p><em>Quick heads up! Joel and Melinda, coaches in residence at Refactoring, are part of a group offering <strong>full coaching scholarships</strong> to 29 engineering leaders from underrepresented groups in tech. Applications are open until the end of the day on 30th June.</em></p><p><strong><a href="https://monkeysthumb.co.uk/coaching-for-engineering-leaders/scholarships/">Learn more and apply here</a></strong></p></blockquote><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[The Power of Stories ✍️ — with Rands]]></title><description><![CDATA[Watch now | Refactoring Podcast &#8226; Episode 66]]></description><link>https://refactoring.fm/p/the-power-of-stories-with-michael</link><guid isPermaLink="false">https://refactoring.fm/p/the-power-of-stories-with-michael</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Fri, 26 Jun 2026 07:01:48 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203274265/e6f9f8e34d9767647a606dda3c000518.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-56qoZulS5Rg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;56qoZulS5Rg&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/56qoZulS5Rg?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:</em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="http://getunblocked.com/refactoring" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eEtG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 424w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 848w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1272w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png" width="266" height="57.36538461538461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:314,&quot;width&quot;:1456,&quot;resizeWidth&quot;:266,&quot;bytes&quot;:174076,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;http://getunblocked.com/refactoring&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/197536623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.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_!eEtG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 424w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 848w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1272w, https://substackcdn.com/image/fetch/$s_!eEtG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303c8adb-e06a-4879-bd48-0d62d3bc0467_8042x1737.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><em><strong><a href="http://getunblocked.com/refactoring">Unblocked</a></strong> is the context layer for modern engineering teams. Get a free three-week trial at</em> <em><strong><a href="http://getunblocked.com/refactoring">getunblocked.com/refactoring</a></strong></em></p></blockquote><div><hr></div><p>Today&#8217;s guest is <strong>Michael Lopp</strong>, better known as <strong>Rands</strong>, who is writer of several popular books about engineering management, including &#8220;Managing Humans&#8221;, which is a personal favorite of mine.</p><p><a href="https://leaddev.com/leaddev-london">Live at LDX3</a>, we discussed his lifelong writing habit, the importance of giving feedback through stories and the leverage of leadership experience in the AI era.</p><div><hr></div><blockquote><p><em>Quick heads up! Joel and Melinda, coaches in residence at Refactoring, are part of a group offering <strong>full coaching scholarships</strong> to 29 engineering leaders from underrepresented groups in tech. Applications are open until the end of the day on 30th June.</em></p><p><strong><a href="https://monkeysthumb.co.uk/coaching-for-engineering-leaders/scholarships/">Learn more and apply here</a></strong></p></blockquote><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 <strong>5-minute takeaways</strong> 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>&#9997;&#65039; Writing as a lifelong habit</strong></p></li><li><p><strong>&#127991;&#65039; The power of naming things</strong></p></li><li><p><strong>&#128172; Stories as a feedback tool</strong></p></li><li><p><strong>&#129302; AI and the return of the coding manager</strong></p></li><li><p><strong>&#128214; Managing Humans, Managing Robots</strong></p></li></ol><p>Let&#8217;s dive in &#128071;</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/the-power-of-stories-with-michael">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>