<?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[Tech World With Milan Newsletter]]></title><description><![CDATA[Practical insights on engineering judgment, software architecture, and AI for ambitious software engineers.
Trusted by engineers at Amazon, Microsoft, and Google.]]></description><link>https://newsletter.techworld-with-milan.com</link><image><url>https://substackcdn.com/image/fetch/$s_!Bimu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png</url><title>Tech World With Milan Newsletter</title><link>https://newsletter.techworld-with-milan.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 13 Apr 2026 15:33:35 GMT</lastBuildDate><atom:link href="https://newsletter.techworld-with-milan.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Dr Milan Milanović]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[techworldwithmilan@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[techworldwithmilan@substack.com]]></itunes:email><itunes:name><![CDATA[Dr Milan Milanović]]></itunes:name></itunes:owner><itunes:author><![CDATA[Dr Milan Milanović]]></itunes:author><googleplay:owner><![CDATA[techworldwithmilan@substack.com]]></googleplay:owner><googleplay:email><![CDATA[techworldwithmilan@substack.com]]></googleplay:email><googleplay:author><![CDATA[Dr Milan Milanović]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Trends #10: Amazon now requires senior approval for AI-assisted code from junior and mid-level engineers]]></title><description><![CDATA[The Trends filter tracks tech trends: what moved, why it matters, and what to watch next.]]></description><link>https://newsletter.techworld-with-milan.com/p/the-trends-10-amazon-now-requires</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/the-trends-10-amazon-now-requires</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 09 Apr 2026 15:02:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5ce91abd-d865-45fb-8db9-c9af00dbfa97_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>The Trends</strong> filter tracks tech trends: what moved, why it matters, and what to watch next. If you spot a signal I missed, reply with a link and one line of context.</p><p>Today, we cover:</p><ol><li><p><strong>Junior and mid-level engineers at Amazon can no longer push AI-assisted code without a senior signing off.</strong> What happened when Amazon&#8217;s own AI coding tool went rogue in production, and what changed after.</p></li><li><p><strong>What happened when a missile hit a Cloud data center?</strong> Iranian strikes hit AWS data centers. Cloud resilience meets actual war.</p></li><li><p><strong>Donald Knuth is shocked by how good AI has become at solving</strong>&nbsp;an 88-year-old open math problem and at a one-hour AI session.</p></li><li><p><strong>What happens when you let Claude Code pick tools for you?</strong> What Claude Code picks by default when you ask it to build something, and what it quietly ignores.</p></li><li><p><strong>LLMs are not reading your code.</strong> 750,000 debugging experiments show your AI assistant is more of a pattern-matching machine, not a reasoning machine.</p></li><li><p><strong>Should Juniors Code with AI?</strong> Anthropic tested this. The answer is more complicated than you&#8217;d expect.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. Junior and mid-level engineers can no longer push AI-assisted code without a senior signing off at Amazon</h2><p>Recently, AWS engineers gave their agentic coding tool, <a href="https://kiro.dev/autonomous-agent/">Kiro</a>, a simple task: fix a small issue in Cost Explorer. Kiro's response was to delete the entire environment and rebuild it from scratch. That took down a customer-based service for 13 hours!</p><p>But the problem that it was not the first time. A senior AWS employee told the <a href="https://www.ft.com/content/00c282de-ed14-4acd-a948-bc8d6bdb339d">Financial Times</a> this was at least the second AI-caused production outage in recent months. The first involved Amazon Q Developer. Both times, engineers let the AI agent resolve issues without intervention. The employee described both incidents as "entirely foreseeable."</p><p>AWS's response was basically that this was a user error, not an AI issue. Their argument is that the engineer had broader permissions than expected. This is technically true, but a human engineer with the same permissions probably wouldn't have destroyed the entire environment to fix a minor bug. </p><p>After this, they introduced&nbsp;<strong>mandatory peer review for production access</strong>, staff training, and measures to protect resources. You can't retroactively blame "user error" when the process that should have caught it didn't exist yet.</p><p>However, the bigger picture here is organizational. <strong>Amazon first mandated 80% weekly Kiro usage and tracked it as a corporate OKR</strong>. Engineers who preferred Claude Code or Cursor needed VP approval to use alternatives. Around 1,500 engineers pushed back on internal forums. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ku45!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ku45!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ku45!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ku45!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ku45!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ku45!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg" width="731" height="569" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:569,&quot;width&quot;:731,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124932,&quot;alt&quot;:&quot;View image&quot;,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!ku45!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ku45!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ku45!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ku45!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ba3f92-a9d0-47ed-8805-fbf5de21122a_731x569.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Amazon's service was taken down by an AI coding bot (Source: <a href="https://www.ft.com/content/00c282de-ed14-4acd-a948-bc8d6bdb339d">FT</a>)</figcaption></figure></div><p>However, after a <a href="https://www.theguardian.com/technology/2026/feb/20/amazon-cloud-outages-ai-tools-amazon-web-services-aws">few recent incidents</a> in production at AWS, they decided to reduce the trend of "high blast radius" caused by "Gen-AI assisted changes". <strong>Junior and mid-level engineers can no longer push AI-assisted code without a senior signing off at AWS</strong><br><br>Folks from Amazon concluded that "novel GenAI usage for which best practices and safeguards are not yet fully established".</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jtXA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jtXA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jtXA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jtXA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jtXA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jtXA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg" width="800" height="481" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:481,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;View image&quot;,&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="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!jtXA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jtXA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jtXA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jtXA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19a5ccd4-32a4-40dd-9d1f-f5e48e0843b1_800x481.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Amazon holds engineering meeting following AI-related outages (Source: <a href="https://www.ft.com/content/7cab4ec7-4712-4137-b602-119a44f771de">FT</a>)</figcaption></figure></div><p>This story is something we will see in more and more companies. AI-coding hype is all over the place, and we don&#8217;t have good enough guardrails or best practices for dealing with it. They make us much faster, but they also make us make more mistakes.</p><h2><strong>2. What happened when a missile hit a Cloud data center</strong></h2><p>On March 1, 2026, Iranian strikes <a href="https://www.theguardian.com/world/2026/mar/07/it-means-missile-defence-on-data-centres-drone-strikes-raises-doubts-over-gulf-as-ai-superpower">hit three AWS data centers</a>. Two data centers were in the United Arab Emirates, and one was in Bahrain. <br><br>We've spent 15 years treating cloud resilience as a software problem: availability zones, redundant power, auto-scaling, and cross-region replication. It is good engineering, all of it, but none of it was built with missiles in mind.<br><br>The UAE region has three availability zones, and the strikes took out two. AWS's redundancy model can survive the loss of a single zone, but not an attack on multiple zones.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hp_W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hp_W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 424w, https://substackcdn.com/image/fetch/$s_!hp_W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 848w, https://substackcdn.com/image/fetch/$s_!hp_W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 1272w, https://substackcdn.com/image/fetch/$s_!hp_W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hp_W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png" width="1243" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:827,&quot;width&quot;:1243,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:177353,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/193150820?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.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_!hp_W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 424w, https://substackcdn.com/image/fetch/$s_!hp_W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 848w, https://substackcdn.com/image/fetch/$s_!hp_W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 1272w, https://substackcdn.com/image/fetch/$s_!hp_W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5455b992-c0c8-4fa5-ab3c-c3ece4e172bf_1243x827.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AWS Global Infrastructure in the UAE region</figcaption></figure></div><p>Many users reported issues in their systems: Careem, Snowflake, Emirates NBD, First Abu Dhabi Bank, and Abu Dhabi Commercial Bank all had problems. These companies did not ignore the importance of having multi-AZ, but they still had issues. The problem was actually with the region, not just with the individual companies.</p><p>Iran's IRGC said it targeted the Bahrain facility specifically because AWS hosts U.S. military workloads. That boundary between commercial cloud and military infrastructure has been gone for years. Most of us just didn't think about what that means when the shooting starts.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!76zc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!76zc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 424w, https://substackcdn.com/image/fetch/$s_!76zc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 848w, https://substackcdn.com/image/fetch/$s_!76zc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!76zc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!76zc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg" width="800" height="125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:125,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;View image&quot;,&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="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!76zc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 424w, https://substackcdn.com/image/fetch/$s_!76zc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 848w, https://substackcdn.com/image/fetch/$s_!76zc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!76zc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dd7726b-16ce-4d32-9765-7cbc5d0701d5_800x125.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://health.aws.amazon.com/health/status">AWS Service health </a></figcaption></figure></div><p>We should also not forget that the Red Sea has 17 submarine cables running through it. These cables carry most of the traffic between Europe, Asia, and Africa. The Red Sea is facing problems due to the Houthis' threats. This means that both the Red Sea and the Strait of Hormuz are facing major problems simultaneously. The Red Sea and the Strait of Hormuz have never had problems like this before.</p><h2>3. Donald Knuth is shocked by how good AI has become at solving</h2><p>Famous computer scientist <a href="https://en.wikipedia.org/wiki/Donald_Knuth">Knuth </a>is now 88 years old. He wrote <a href="https://www-cs-faculty.stanford.edu/~knuth/taocp.html">The Art of Computer Programming</a> starting in 1962, and won the Turing Award in 1974.</p><p>Recently, he published a&nbsp;<a href="https://cs.stanford.edu/~knuth/papers/claude-cycles.pdf">paper</a>&nbsp;on how AI helped him solve a problem. He wrote at the start: "Shock! Shock!"<br><br>Here is what happened:</p><ol><li><p><strong>The problem</strong></p></li></ol><p>Knuth was stuck for weeks on an open graph theory problem he was preparing for a future volume of TAOCP. The problem involves a 3D grid of points. You can think of it as an m&#215;m&#215;m cube. Each point connects to three neighbors. The challenge is to find a single rule that traces three distinct paths through the entire cube, each visiting every point exactly once. <br><br>That kind of path is called a Hamiltonian cycle. Knuth had worked it out for a 3&#215;3&#215;3 cube. His friend Filip Stappers confirmed it worked up to a 16&#215;16&#215;16 cube by running it on a computer. But no one could find a general rule that worked for any size.</p><ol start="2"><li><p><strong>The session</strong></p></li></ol><p>Stappers gave the problem to Claude Opus 4.6 with one strict rule: after every attempt, write down what you tried and what you learned before moving on. Claude worked through 31 explorations over about an hour. It tried simple formulas, brute-force search, geometric patterns, and statistical methods. Most hit dead ends. <br><br>At attempt 25, it essentially told itself: "<em>The search approach won't get us there. This needs actual mathematical reasoning</em>." At attempt 31, it found a construction that worked.</p><ol start="3"><li><p><strong>The construction</strong></p></li></ol><p>Claude found a surprisingly simple rule for navigating the cube: <strong>at each point, look at where you are and follow a small set of conditions to decide which direction to move next</strong>. That's it. No complex formula, no special cases beyond a handful of boundary checks. Stappers ran the resulting program against every odd cube size from 3 to 101. It produced perfect results every time.</p><p>Then, Knuth wrote a formal proof, generalized the construction, and showed that there are exactly 760 valid solutions of this type for all odd cube sizes. </p><p>Then another researcher used GPT and Claude together as collaborating agents and found an even better solution that covered both cases. The problem that had been open for years, odd and even sizes, is now fully solved. Knuth's reaction was: "<em>We are living in very interesting times indeed</em>."</p><p>His closing line: "<em>It seems I'll have to revise my opinions about generative AI one of these days.</em>"</p><p>From Donald Knuth, that sentence lands differently than it would from anyone else.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!496N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!496N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 424w, https://substackcdn.com/image/fetch/$s_!496N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 848w, https://substackcdn.com/image/fetch/$s_!496N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!496N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!496N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg" width="680" height="435" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:435,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89313,&quot;alt&quot;:&quot;View image&quot;,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!496N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 424w, https://substackcdn.com/image/fetch/$s_!496N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 848w, https://substackcdn.com/image/fetch/$s_!496N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!496N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4eb5ca6-090d-4dcc-9219-9e0d5583c0c0_680x435.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://cs.stanford.edu/~knuth/papers/claude-cycles.pdf">Claude&#8217;s Cycles</a>, Don Knuth</figcaption></figure></div><div><hr></div><p><strong>Linus Torvalds also admitted to vibe coding</strong>. Yes, that Linus. The one who called 90% of AI marketing "hype." He published a hobby project called <a href="https://github.com/torvalds/AudioNoise">AudioNoise</a>, a digital guitar pedal effects, which he built to learn signal processing</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!coS4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!coS4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!coS4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!coS4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!coS4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!coS4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg" width="608" height="304" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:608,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;View image&quot;,&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="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!coS4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!coS4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!coS4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!coS4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36155d02-1ca4-4134-aa4a-878af84e2056_800x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://github.com/torvalds/AudioNoise">AudioNoise </a>- Random digital effects project </figcaption></figure></div><p>Torvalds revealed that he had used an AI coding tool in the README for the repo: </p><blockquote><p>"<em>Also note that the Python visualizer tool has been basically written by Vibe-Coding. I know more about analog filters&#8212;and that&#8217;s not saying much&#8212;than I do about Python. It started out as my typical &#8220;google and do the monkey-see-monkey-do&#8221; kind of programming, but then I cut out the middle-man&#8212;me&#8212;and just used Google Antigravity to do the audio sample visualizer</em>."</p></blockquote><p>But here's what people miss: he wrote all the core C code himself, including filters and audio processing. Basically, the stuff he wanted to learn.</p><p>He only used AI for Python, a language he admits he barely knows. If the script breaks, nothing happens. </p><p>We can see here that a larger shift is underway. When someone as rigid as Torvalds uses AI, it gives permission to the purists who still feel guilty about it. </p><p>But here's the catch: most people won't mention this, but Torvalds can spot bad AI output because he understands the fundamentals. He knows enough to smell when the code is wrong, even in a language he doesn't write daily. </p><p>That's the prerequisite. <em>Juniors who vibe code features they don't understand can't debug them when they break. </em></p><p>Knowing when to code manually matters more now than knowing how to code everything manually.</p><div><hr></div><h2>4. What happens when you let Claude Code pick tools for you?</h2><p><a href="https://amplifying.ai/research/claude-code-picks/report">Researchers</a> from Amplifying sent 2,430 open-ended prompts to Claude Code across 3 models, 4 project types, and 20 categories. In those prompts, they did not mention any tools, but just asked, "What should I use?" The results were interesting and important to understand.</p><p>Here is what they found:</p><ol><li><p><strong>Build over buy is the default</strong></p></li></ol><p>Custom/DIY is the single most common "recommendation" in the dataset: 252 picks across 12 of 20 categories. If you ask Claude Code to add feature flags, he will build a system with env vars and React Context. If you ask it to add auth to a Python project, it will write a JWT from scratch every single time. When an agent can build a working solution in 30 seconds, it often does.</p><p>This is something we should be aware of, because building a new auth system could be fast for AI, but it could still have security issues or bugs, and we would still need to maintain it. When deciding whether to build or buy, we should consider multiple factors before choosing, and not let AI make the decision for us. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gV0h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gV0h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 424w, https://substackcdn.com/image/fetch/$s_!gV0h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 848w, https://substackcdn.com/image/fetch/$s_!gV0h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 1272w, https://substackcdn.com/image/fetch/$s_!gV0h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gV0h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png" width="801" height="667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20e9125e-2f6c-4355-89be-515978a2e090_801x667.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:667,&quot;width&quot;:801,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76097,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/193150820?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.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_!gV0h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 424w, https://substackcdn.com/image/fetch/$s_!gV0h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 848w, https://substackcdn.com/image/fetch/$s_!gV0h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 1272w, https://substackcdn.com/image/fetch/$s_!gV0h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e9125e-2f6c-4355-89be-515978a2e090_801x667.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Custom/DIY Finding (Source: <a href="https://amplifying.ai/research/claude-code-picks/report">Amplifying report</a>)</figcaption></figure></div><ol start="2"><li><p><strong>A default tech stack exists</strong></p></li></ol><p>Where Claude Code does pick third-party tools, it converges hard:</p><ul><li><p>GitHub Actions owns CI/CD at 94%</p></li><li><p>Stripe owns payments at 91%</p></li><li><p>shadcn/ui owns UI components at 90%</p></li><li><p>Vercel is a must for JavaScript projects.</p></li></ul><p>The rest of the list: PostgreSQL, Tailwind CSS, Zustand, pnpm, Resend, Vitest. </p><p>What is important here is that these tools may not be the best option for your project, but these are what the model will choose for you. They choose them not because they are the best fit for our project, but because they find them in use in the wild (mostly on GitHub). So, the decision on the tech stack should be ours, not the AI model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wlwQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wlwQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wlwQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wlwQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wlwQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wlwQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg" width="800" height="740" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:740,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;View image&quot;,&quot;title&quot;:&quot;View image&quot;,&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="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!wlwQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wlwQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wlwQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wlwQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a7da28-012f-48c5-90c1-bd51aca59d10_800x740.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Overall Tool Rankings (Source: <a href="https://amplifying.ai/research/claude-code-picks/report">Amplifying report</a>)</figcaption></figure></div><ol start="3"><li><p><strong>Redux is dead in AI-assisted code</strong></p></li></ol><p>Redux didn't get any primary picks in these 2,430 prompts. The model knows it exists, with 23 mentions and 2 alternative recommendations, but never actually chooses it. </p><p>Zustand wins state management at 65% instead. Express has it even worse, where it doesn't show up as a primary pick, an alternative, or even a passing suggestion.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SNds!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SNds!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 424w, https://substackcdn.com/image/fetch/$s_!SNds!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 848w, https://substackcdn.com/image/fetch/$s_!SNds!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 1272w, https://substackcdn.com/image/fetch/$s_!SNds!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SNds!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png" width="795" height="275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:275,&quot;width&quot;:795,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43505,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/193150820?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.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_!SNds!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 424w, https://substackcdn.com/image/fetch/$s_!SNds!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 848w, https://substackcdn.com/image/fetch/$s_!SNds!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 1272w, https://substackcdn.com/image/fetch/$s_!SNds!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38612659-31fe-48ea-bec6-72c0abdc0393_795x275.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">State Management (Source: <a href="https://amplifying.ai/research/claude-code-picks/report">Amplifying report</a>)</figcaption></figure></div><ol start="4"><li><p><strong>Newer models prefer newer tools</strong></p></li></ol><p>This is the clearest signal from this dataset. Prisma goes from 79% in Sonnet 4.5 to 0% in Opus 4.6. Drizzle takes over completely. In Python projects, Celery usage collapses from 100% to 0% as newer models prefer FastAPI's built-in background tasks. It tracks with what appeared in more recent training data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S8Xt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S8Xt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 424w, https://substackcdn.com/image/fetch/$s_!S8Xt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 848w, https://substackcdn.com/image/fetch/$s_!S8Xt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 1272w, https://substackcdn.com/image/fetch/$s_!S8Xt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S8Xt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png" width="814" height="553" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:553,&quot;width&quot;:814,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86553,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/193150820?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.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_!S8Xt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 424w, https://substackcdn.com/image/fetch/$s_!S8Xt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 848w, https://substackcdn.com/image/fetch/$s_!S8Xt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 1272w, https://substackcdn.com/image/fetch/$s_!S8Xt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b306ad-02c9-44fd-9fc6-139cc6d41fbf_814x553.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Where Models Disagree (Source: <a href="https://amplifying.ai/research/claude-code-picks/report">Amplifying report</a>)</figcaption></figure></div><ol start="5"><li><p><strong>Context-awareness is real</strong></p></li></ol><p>The same model picks Vercel for JavaScript and Railway for Python. Drizzle for Next.js, SQLModel for FastAPI. This is not a fixed list; the agent reads the stack and adapts, which is more useful than a blanket recommendation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EiIH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EiIH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 424w, https://substackcdn.com/image/fetch/$s_!EiIH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 848w, https://substackcdn.com/image/fetch/$s_!EiIH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 1272w, https://substackcdn.com/image/fetch/$s_!EiIH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EiIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png" width="811" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96854607-fa13-4eff-9747-3b481c5bf622_811x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:811,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66175,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/193150820?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.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_!EiIH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 424w, https://substackcdn.com/image/fetch/$s_!EiIH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 848w, https://substackcdn.com/image/fetch/$s_!EiIH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 1272w, https://substackcdn.com/image/fetch/$s_!EiIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96854607-fa13-4eff-9747-3b481c5bf622_811x460.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Stack-Specific Tools (Source: <a href="https://amplifying.ai/research/claude-code-picks/report">Amplifying report</a>)</figcaption></figure></div><ol start="6"><li><p><strong>Being absent from primary picks isn&#8217;t the same as being invisible</strong></p></li></ol><p>This is something worth noting in the report. A few technologies, such as Netlify, SendGrid, and Jest, were never chosen as the primary option. But they kept showing up as second choices. The model knows these tools and still recommends something else first. That gap is the one worth closing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RTeL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RTeL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 424w, https://substackcdn.com/image/fetch/$s_!RTeL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 848w, https://substackcdn.com/image/fetch/$s_!RTeL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 1272w, https://substackcdn.com/image/fetch/$s_!RTeL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RTeL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png" width="805" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:805,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138037,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/193150820?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.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_!RTeL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 424w, https://substackcdn.com/image/fetch/$s_!RTeL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 848w, https://substackcdn.com/image/fetch/$s_!RTeL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 1272w, https://substackcdn.com/image/fetch/$s_!RTeL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd248d435-1d7d-40c7-8cce-561ed55e94d1_805x546.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude Code Default Picks (Source: <a href="https://amplifying.ai/research/claude-code-picks/report">Amplifying report</a>)</figcaption></figure></div><p>If we're using AI coding agents for greenfield projects, we're increasingly inheriting a default stack. Worth knowing what that stack is.</p><h2>5. LLMs are not reading your code</h2><p>We keep calling LLMs &#8220;AI coding assistants,&#8221; but we all know that writing code and understanding it are not the same. Researchers from Virginia Tech and Carnegie Mellon University just ran <a href="https://arxiv.org/abs/2510.26130">750,000 debugging experiments across 10 models</a> to assess how well LLMs actually understand code.</p><p>What they found out is that you should not blindly trust your AI coding assistant when debugging.</p><p>Here are the findings:</p><ol><li><p><strong>A renamed variable breaks the debugger</strong>. Researchers created a bug, confirmed that the LLM found it, then made changes that don&#8217;t touch the bug at all, such as renaming a variable or adding a comment. In 78% of cases, the model could no longer find the same bug, but it was still there. The variable names and comments changed, and that was enough.</p></li><li><p><strong>Dead code is a trap</strong>. Adding code that never runs reduced bug-detection accuracy to 20.38%. Models treated dead code as live and flagged it as the source of the bug. But the bug was in another line. So, LLMs cannot reliably distinguish &#8220;this runs&#8221; from &#8220;this never runs.&#8221;</p></li><li><p><strong>Models read top-to-bottom, not logically</strong>. 56% of correctly found bugs were in the first quarter of the file, and only 6% were in the last quarter. The further down the file's code, the less attention the model pays to it. If the bug lives in the bottom half of your file, the model is already less likely to find it. </p></li><li><p><strong>Function reordering alone cut accuracy by 83%</strong>. Changing the order of functions in a Java file caused an 83% drop in debugging accuracy. The code still remained the same. Where the code physically sits in the file matters more to the model than what the code does. </p><p></p><p>So, obviously, this is a <em>sign of pattern recognition, not real code understanding</em>.</p></li><li><p><strong>Newer models weren&#8217;t actually much better</strong>. Claude improved by ~1% between 3.7 and 4.5 Sonnet on this task, and Gemini improved by ~1.8%. Every model release comes with a new benchmark leaderboard and new headlines. But the ability to reason about code under realistic conditions is improving slowly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lntO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lntO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lntO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lntO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lntO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lntO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg" width="794" height="248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:248,&quot;width&quot;:794,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;View image&quot;,&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="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!lntO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lntO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lntO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lntO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668a7e0c-1c30-44c6-b735-737c6794561e_794x248.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Of course, all of these models where pre Opus 4.5 era, so it would be interesting to see how they do now.</p></li><li><p><strong>These were best -case conditions</strong></p></li></ol><p>The study used single-file programs with ~250 lines, and each had a clear description of what the code should do. The authors say this was intentional. They wanted the best-case conditions. Real production code is multi-file, cross-module, and poorly documented. It will perform worse for sure.</p><h2>6. Should Juniors Code with AI?</h2><p>We assume AI helps junior developers ramp up faster, allowing them to learn the codebase more quickly, ship sooner, and close the skill gap with seniors. </p><p>Anthropic just ran a <a href="https://www.anthropic.com/research/AI-assistance-coding-skills">randomized controlled trial</a> that challenges this. 52 developers learned a new Python library for async programming, half with AI assistance, half without. The AI group scored <strong>17% lower</strong> on comprehension tests. That's nearly two letter grades (50% vs 67%, p=0.01). </p><p>The largest gap was in <strong>debugging</strong>. But this is the exact skill juniors need to catch errors in AI-generated code. </p><p>AI didn't even make them faster. The AI group finished about 2 minutes earlier, but the difference wasn't statistically significant. Some participants spent up to 30% of their time just writing prompts.</p><p>So, how can we use AI to determine whether you learn at all? The study identified six interaction patterns. Three scored below 40%, three scored above 65%.<br><br>Those who were low scorers delegated everything to AI, starting manually and progressively offloading work. They used AI as a debugging crutch without building understanding. Those who scored highly generated code and asked follow-up questions. They requested explanations of the code and asked more conceptual questions.</p><p>This implies that unrestricted AI access during onboarding creates a capability gap. We get faster task completion today, but we lose the debugging instincts needed to validate AI output tomorrow. </p><p>We should take this into account before we onboard new junior developers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6skQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6skQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6skQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6skQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6skQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6skQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;View image&quot;,&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="View image" title="View image" srcset="https://substackcdn.com/image/fetch/$s_!6skQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6skQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6skQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6skQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0be5da8-206f-4fae-96cb-d5b1558f7328_800x450.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How AI assistance impacts the formation of coding skills (Source: <a href="https://www.anthropic.com/research/AI-assistance-coding-skills">Antrohpic</a>)</figcaption></figure></div><div><hr></div><h2><strong>More ways I can help you</strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 270K+ followers in under two years, plus a 50K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 400+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle</a></strong>. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a></strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join my Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Agentic code workflows with Nick Tune]]></title><description><![CDATA[Most engineers who talk about AI productivity talk in abstractions.]]></description><link>https://newsletter.techworld-with-milan.com/p/agentic-code-workflows-with-nick</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/agentic-code-workflows-with-nick</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 26 Mar 2026 16:01:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BFRm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With the rise of AI coding workflows, many engineers have started to find their own ways to do it properly. Some use just plain LLMs via the web; others use GitHub Copilot or Claude Code. But inside, the key thing that improves the quality of the whole process is the workflow followed, together with the tools used. In this article, we will present best practices for advanced agentic code workflows with Nick Tune.</p><p>Nick is a senior staff software engineer at PayFit and the author of <em>Architecture Modernization</em> (Manning). His focus areas are legacy migration, domain-driven design, and continuous delivery. </p><p>Nick will walk us through exactly how he works: how he plans features, how he structures AI workflows as state machines, how he enforces architecture rules deterministically, and how he keeps AI-generated code from quietly degrading quality over time.</p><p>In particular, we are going to talk about:</p><ul><li><p><strong>How Nick approaches AI tools.</strong> Try it on everything, timebox the experiments, and track what actually pays off.</p></li><li><p><strong>Agentic coding workflow.</strong> Nick models his development process as a state machine with typed transitions and enforced invariants. The workflow itself has unit tests.</p></li><li><p><strong>Planning and PRDs.</strong> How he structures requirements before any code is written, and why he spends real time here before touching Claude Code.</p></li><li><p><strong>Implementing features autonomously.</strong> Claude runs the full cycle from requirements to pull request, with guardrails that block non-compliant code from landing.</p></li><li><p><strong>Code quality and architecture rules.</strong> Lint rules, dependency constraints, and why deterministic checks beat asking Claude to follow conventions.</p></li><li><p><strong>Code reviews.</strong> Here Nick talks about his layered approach to code reviews: CodeRabbit, local review agents, and his own eyes on every PR before anything ships.</p></li><li><p><strong>Testing with TDD.</strong> How he runs Claude through a strict red-green cycle with verified pre- and post-conditions at every step.</p></li><li><p><strong>Tooling and techniques.</strong> His custom CLI setup and a few smaller tricks are worth stealing.</p></li></ul><p>So, let&#8217;s dive in.</p><div><hr></div><h2><strong><a href="https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine">Unblocked: Context that saves you time and tokens (Sponsored)</a></strong></h2><p><em>Stop babysitting your coding agents. Unblocked gives them the organizational knowledge to generate mergeable code without the back-and-forth. It pulls context from across your engineering stack, resolves conflicts, and cuts the rework cycle by delivering only what agents need for the task at hand.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N-nF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 424w, https://substackcdn.com/image/fetch/$s_!N-nF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 848w, https://substackcdn.com/image/fetch/$s_!N-nF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 1272w, https://substackcdn.com/image/fetch/$s_!N-nF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N-nF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:692378,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/191656854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N-nF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 424w, https://substackcdn.com/image/fetch/$s_!N-nF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 848w, https://substackcdn.com/image/fetch/$s_!N-nF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 1272w, https://substackcdn.com/image/fetch/$s_!N-nF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F215cea94-ce15-4a20-b81b-ab2173a363f8_1600x840.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine&quot;,&quot;text&quot;:&quot;Check it out&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine"><span>Check it out</span></a></p><div><hr></div><h2>1. Who is Nick?</h2><p>Hi, I&#8217;m <a href="https://nick-tune.me/">Nick</a>. I&#8217;m a Senior Staff Software Engineer at <a href="https://payfit.com/">PayFit</a>, a European payroll and HR company. I&#8217;m the author of a book called <a href="https://amzn.to/47Ysx1A">Architecture Modernization (Manning)</a>. Legacy modernization, along with software architecture, domain-driven design, and continuous delivery, are my main areas of focus. I&#8217;m based in London, UK.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BFRm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BFRm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 424w, https://substackcdn.com/image/fetch/$s_!BFRm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 848w, https://substackcdn.com/image/fetch/$s_!BFRm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 1272w, https://substackcdn.com/image/fetch/$s_!BFRm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BFRm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png" width="1200" height="655" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:655,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:384727,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/191656854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.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_!BFRm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 424w, https://substackcdn.com/image/fetch/$s_!BFRm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 848w, https://substackcdn.com/image/fetch/$s_!BFRm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 1272w, https://substackcdn.com/image/fetch/$s_!BFRm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8826fc4e-227b-4eb8-a257-3b98eb9d1b99_1200x655.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>2. How do you use AI tools in general?</h2><p>The current strategy is to <strong>use it everywhere</strong>. Figure out what works and what doesn&#8217;t. That&#8217;s basically my current philosophy. Every time I do anything, I try to use AI to help me. Sometimes I don&#8217;t have time, and I just need to get stuff done, though, and I can&#8217;t afford to experiment, e.g., 3 hours trying to get AI to create perfect diagrams vs just doing it myself. But I make an effort to at least timebox it with AI.</p><p>For example, I was recently working on resolving customer support tickets, and I thought, &#8220;<em>Wouldn&#8217;t it be great if I had a tool that allowed me to keep track of all this and act as a memory for my AI agents so they could work on 10 customer support tickets in parallel?</em>&#8221; My initial thought was &#8220;<em>it&#8217;s the peak season, I can&#8217;t really afford to let a backlog of tickets build up while I&#8217;m playing around with AI</em>," but then I said to myself, &#8220;<em>well just spend 1 hour on it and see what happens?</em>&#8221;</p><p>The break-even point came within 2-2.5 days. I had built a custom tool (UI, investigation subagents, etc.) and resolved the number of tickets I would have done manually. By the end of the week,<strong> I felt 20 - 40% more productive than I would have been without it</strong>. In fact, it was funny because at the end of the week, I was working on a ticket when another ticket was raised. While I was working on the first ticket, I had Claude using the process I&#8217;d built to work on the new ticket. Then there was an issue where some highlighted that the 2nd ticket was causing issues for some clients and needed to be prioritised.</p><p>At that point, I checked in on Claude, and he&#8217;d already figured out the root cause and the exact code causing the problem. And this wasn&#8217;t a simple bug; it spanned 3 codebases and required correlating data from 3 different data sources to identify where the inconsistency was introduced.</p><p>What I built in a week was still quite basic. But like I said: the ROI was achieved within 3 days, AND I now have a version that I can keep iterating and improving (both the underlying AI system and the UI for managing it all), so the potential long-term ROI and learning insights I can apply to other initiatives is significant. And all because I pushed myself to &#8220;<em>come on, let&#8217;s do that 1-hour timebox.</em> &#8221;</p><p>But it doesn&#8217;t always work out; sometimes it ends in wasted time and frustration. That&#8217;s why it&#8217;s important to understand that getting the best results usually requires an investment.</p><h2>3. What is your main agentic workflow for coding?</h2><p>It depends on the repository. You can see an example from one of my open-source projects here: <a href="https://github.com/NTCoding/living-architecture">https://github.com/NTCoding/living-architecture.<br><br></a>I try to have a very strict, repeatable workflow so that AI can autonomously implement features, and I know that all steps, checks, rules, and reviews will be completed without exception.</p><p>I&#8217;m currently working towards a more <strong>hook- and event-driven workflow</strong>. This is a major differentiator because you can apply fine-grained rules deterministically based on your workflow's current state.</p><p>Basically, you model your <strong>workflow as a state machine </strong>(like an aggregate in DDD). The workflow has rules and invariants, and stores its internal state in persistence. This can be written in full code with 100% test coverage. Every time AI does something wrong, you write a failing test and implement - for example, not allowed to commit code during the &#8220;planning&#8221; phase.</p><p>This is an example of the PR-creation state machine step:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;d371152f-9134-45ed-88a4-63cc3b7ea803&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">export const submittingPrState: ConcreteStateDefinition = {
  emoji: '&#128640;',
  agentInstructions: 'states/submitting-pr.md',
  canTransitionTo: ['AWAITING_CI', 'BLOCKED'],
  allowedWorkflowOperations: ['record-pr'],
  forbidden: { write: true },

  allowForbidden: { bash: ['git push', 'gh pr'] },

  transitionGuard: (ctx) =&gt; {
    if (!ctx.state.prNumber) return fail('prNumber not set. Run record-pr first.')
    return pass()
  },
}</code></pre></div><p>In this state:</p><ul><li><p>&#128640;SUBMITTING will be prefixed to each agent message so I can always see the current state</p></li><li><p>The instructions in `states/submitting-pr-md` will be injected into the current conversation when the agent transitions to this state (and it will also be re-injected if the agent makes an error and needs reminding)</p></li><li><p>The agent can transition to `AWAITING` or  `BLOCKED` from this state. If it tries to transition to another state, it will be blocked (and the prompt in `states/<a href="http://submitting-pr.md">submitting-pr.md</a>` will be re-injected into the error message)</p></li><li><p>The agent can invoke the worfkflow operation `record-pr` which will update the state of the workflow, it cannot call other workflow methos</p></li><li><p>The agent cannot write any files</p></li><li><p>The agent is allowed to use `git push` and `gh pr` =&gt; even though these are globally forbidden</p></li><li><p>When the agent tries to transition to a new state, the transition will fail if `ctx.state.prNumber` has not been set =&gt; that is a requirement of this phase, to create the PR and record the PR number. The agent&#8217;s job here is not done until that obligation is fulfilled (the following workflow steps depend on it, the whole workflow is broken without it)</p></li></ul><p>Remember that this is all real code, so you can fully unit test it.</p><h2>4. How do you plan first?</h2><p>How I plan depends on the type of project, e.g., building an open-source project vs. a complex legacy migration.</p><p>For my open source projects, I have a <a href="https://github.com/NTCoding/claude-skillz/blob/main/system-prompts/prd-expert.md">PRD expert agent</a> (a product requirements expert). This agent helps me to discuss a project, define the requirements, shape the architecture, and produce a structured PRD file that lists dependencies.</p><p>A structure of PRD is as follows:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;4edabd69-3b9b-41c6-ada4-ab33726a8a59&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown"># PRD: [Feature Name]
**Status:** Draft | Planning | Awaiting Architecture Review | Approved

## 1. Problem
[What problem, who has it, why it matters]

## 2. Design Principles
[What we're optimizing for, trade-offs, WHY]

## 3. What We're Building
[Requirements with detail]

## 4. What We're NOT Building
[Explicit scope boundaries]

## 5. Success Criteria
[How we know it worked]

## 6. Open Questions
[Uncertainties to resolve - Draft only]

## 7. Milestones
[Major checkpoints - Planning only]

### M1: [Name]
[What's delivered at this checkpoint]

#### Deliverables
- **D1.1:** [Deliverable name]
  - Key scenarios (happy path + known edge cases)
  - Acceptance criteria
  - Verification
- **D1.2:** [Architecture deliverable, if this milestone introduces changes]
  - What doc to update and why
  - Verification

### M2: [Name]
...

## 8. Parallelization
[Work streams that can proceed in parallel]

## 9. Architecture
[Added during architecture review]

```yaml
tracks:
  - id: A
    name: [Track name]
    deliverables:
      - M1
      - D2.1
  - id: B
    name: [Track name]
    deliverables:
      - D1.2
      - M3</code></pre></div><p>Once that is done, I have a command to create tasks, which creates tasks in GitHub (as GitHub issues). The reason I like to use GitHub is that when you create a pull request, it links to the issue, so code reviewers (human and AI) can review the PR against the full source of truth.</p><p>I usually spend quite a lot of time discussing PRDs, and my PRD expert is set up as a coach who asks good questions and challenges me. It&#8217;s not just a robotic step-by-step process.</p><p>For legacy migration projects, I have a team of agents who scan codebases, map the current state, identify migration options, and produce draft ADRs for me to review. Things like &#8220;identify all the API endpoints in the codebase, and do a full end-to-end analysis (use a separate subagent for each API endpoint to optimize context window usage&#8221; and &#8220;compare the API endpoint in the legacy with existing API endpoints in the target system, which is the best fit, or should we create a new endpoint?&#8221; I actually provide these agents with very structured and precise instructions and analysis criteria. I try to put my exact thought process on paper rather than giving AI too much freedom.</p><h2>5. How do you implement the initial code structure?</h2><p>My default approach is an <strong>autonomous dev workflow</strong>. I kick off Claude, and it will implement the whole feature. The goal is to create a pull request that passes all checks and has been reviewed by code review agents and <a href="https://www.coderabbit.ai/">CodeRabbit</a> (see below for more information).</p><p>The following shows an extract from a `<a href="https://github.com/NTCoding/living-architecture/blob/main/docs/workflow/task-workflow.md">docs/workflow.md</a>` file. This is written primarily for the agent. It describes the states and what command to use in each state. As you can see, I have a mix of slash commands and real code (I strive for determinism where possible). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Ipg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Ipg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 424w, https://substackcdn.com/image/fetch/$s_!1Ipg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 848w, https://substackcdn.com/image/fetch/$s_!1Ipg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ipg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Ipg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png" width="1367" height="1798" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1798,&quot;width&quot;:1367,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:290522,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/191656854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.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_!1Ipg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 424w, https://substackcdn.com/image/fetch/$s_!1Ipg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 848w, https://substackcdn.com/image/fetch/$s_!1Ipg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ipg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb186255-bc37-4b40-9498-ddb688e3267c_1367x1798.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Lifecycle steps (Autonomous = you can do this without user permission)</figcaption></figure></div><p>Claude then follows my <strong>TDD workflow to implement requirements</strong>. I have various checks in place, like pre-commit hooks, that ensure Claude cannot commit code that does not compile or lint. I have also banned operations like `<code>git commit &#8220;&#8211;no-verify&#8221;</code>` so Claude cannot work around the guard rails I have put in place.</p><p>Wherever possible, I try to leverage full code. E.g., I have a script that creates a GitHub PR, waits for all checks to pass, and fetches the PR feedback. Anything written in an agent&#8217;s prompt or a markdown file is too unreliable, and I have lost so much time pleading with agents to follow processes. As I mentioned in step 3, I&#8217;ve also been working towards a more deterministic workflow, which reduces reliance on the agent reading this file and doing the right thing (this file is still useful).</p><p>With real code, you get determinism and unit tests to verify it works the exact same way <a href="https://github.com/NTCoding/living-architecture/blob/main/tools/dev-workflow/features/complete-task/commands/complete-task.ts#L47">every time</a>: </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;bbed6540-a47b-4ee3-9215-e57f7a36f01c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">describe('executeCompleteTask', () =&gt; {

 it('passes workflow steps in correct order', () =&gt; {
    executeCompleteTask()

    const steps: unknown[] = mockRunWorkflow.mock.calls[0][0]
    const stepNames = steps.map((s) =&gt; {
      const step = s &amp;&amp; typeof s === 'object' &amp;&amp; 'name' in s ? s : null
      return step?.name
    })
    expect(stepNames).toStrictEqual([
      'verify-build',
      'code-review',
      'submit-pr',
      'fetch-pr-feedback',
    ])
  })

&#8230;
}</code></pre></div><h2>7. How do you improve code quality and correctness of AI-generated code?</h2><p>Continuous improvement is the key. Every time your agent produces bad code, you need some way of <strong>updating your harness to ensure that it does not produce similar code in the future</strong>. The best way to do this is to use deterministic tools.</p><p>I have a lot of lint rules: file size rules, function complexity rules, naming rules, code comment rules, banned syntax (I don&#8217;t let Claude use &#8220;as&#8221; or &#8220;let&#8221; in TypeScript. I force it to <a href="https://github.com/NTCoding/living-architecture/blob/main/eslint.config.mjs">write type-safe and immutable code</a>. </p><p>In addition, I use a dependency cruiser to enforce architecture rules, such as that files in the &#8220;domain&#8221; folder cannot depend on files in the &#8220;infra&#8221; folder. I have a DDD/CQRS architecture that I use, and it is defined here: <a href="https://github.com/NTCoding/claude-skillz/tree/main/separation-of-concerns">https://github.com/NTCoding/claude-skillz/tree/main/separation-of-concerns</a></p><p>So the documentation defines this structure:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;9cbdca21-238f-4f14-95ba-30f12cdf5593&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">features/              platform/              shell/
&#9500;&#9472;&#9472; checkout/          &#9500;&#9472;&#9472; domain/            &#9492;&#9472;&#9472; cli.ts
&#9474;   &#9500;&#9472;&#9472; entrypoint/    &#9474;   &#9492;&#9472;&#9472; tax-calc/
&#9474;   &#9500;&#9472;&#9472; commands/      &#9492;&#9472;&#9472; infra/
&#9474;   &#9500;&#9472;&#9472; queries/           &#9500;&#9472;&#9472; external-clients/
&#9474;   &#9500;&#9472;&#9472; domain/            &#9500;&#9472;&#9472; http/
&#9474;   &#9492;&#9472;&#9472; infra/             &#9500;&#9472;&#9472; cli/
&#9474;       &#9500;&#9472;&#9472; mappers/       &#9500;&#9472;&#9472; persistence/
&#9474;       &#9492;&#9472;&#9472; persistence/   &#9500;&#9472;&#9472; config/
&#9474;                          &#9492;&#9472;&#9472; logging/
&#9492;&#9472;&#9472; refunds/
    &#9500;&#9472;&#9472; entrypoint/
    &#9500;&#9472;&#9472; commands/
    &#9500;&#9472;&#9472; queries/
    &#9492;&#9472;&#9472; domain/</code></pre></div><p>Defines rules for enforcing the structure (rules are used during planning, development, and review).</p><h3>SoC-006: Entrypoints are thin translation layers</h3><p>Entrypoints translate between the external world and commands/queries: parse external input &#8594; invoke command/query &#8594; map result to external response. Nothing else.</p><p>Entrypoints own: input parsing, output formatting, interactive prompts (progress bars, spinners), and exit code mapping. When entrypoint/ grows large, extract infrastructure helpers to features/{name}/infra/.</p><p>And provide dependency-cruiser rules to enforce the convention that, even if Claude makes a mistake, the pre-commit hooks and PR checks will fail if there is a dependency violation. </p><p>Here is a rule that says a feature (aka a vertical slice) cannot depend on another vertical slice:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;f69d920f-300e-45d2-a2f5-9be9e32495a5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">// --- Feature isolation rules ---
// Features are independent vertical slices. No feature may import from another.
// The $1 capture group ensures imports within the same feature are allowed.
{
  name: "no-cross-feature-imports",
  severity: "error",
  comment: "Features must not import from other features",
  from: { path: "features/([^/]+)/.+" },
  to: {
      path: "features/([^/]+)/.+",
      pathNot: "features/$1/.+"
  }
},</code></pre></div><p>I find that Claude Code really struggles to make simple decisions about where to put code, so having strict rules and clear guidelines is key.</p><h2>8. How do you do code reviews?</h2><p>Depends on the project and team conventions. One thing that I use everywhere is <a href="https://t.co/JPyopGIvGG">CodeRabbit</a>. It is quite amazing. I have it set up on all my pull requests, both personal projects and at work.</p><p>The great thing about CodeRabbit is that not only can it identify bad and insecure code, but it can also be configured to read all your coding standards and ADRs and find violations. It also stores learnings, and you can even tell it &#8220;next time remember to review &lt;this&gt;&#8221; or &#8220;don&#8217;t suggest &lt;that&gt;&#8221;.</p><p>Sometimes I also run CodeRabbit via CLI before creating a branch.</p><blockquote><p><em>Read more here on how to use CodeRabbit for code reviews:</em></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:170342051,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/how-to-do-code-reviews-with-ai-tools&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;How to do code reviews with AI tools&quot;,&quot;truncated_body_text&quot;:&quot;Writing code has never been easier, but delivering great software is now more complex than ever. AI tools have pushed our productivity to new levels, allowing developers to write code much faster, teams to ship more features, and delivery to increase.&quot;,&quot;date&quot;:&quot;2025-08-14T15:02:41.366Z&quot;,&quot;like_count&quot;:40,&quot;comment_count&quot;:5,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3013d0ff-7db5-4a90-91a5-eeaed25e99ba_1042x1040.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Practical insights on engineering judgment, software architecture, and AI for ambitious software engineers.\nTrusted by engineers at Amazon, Microsoft, and Google.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&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;:null}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[64099,458709],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/how-to-do-code-reviews-with-ai-tools?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How to do code reviews with AI tools</div></div><div class="embedded-post-body">Writing code has never been easier, but delivering great software is now more complex than ever. AI tools have pushed our productivity to new levels, allowing developers to write code much faster, teams to ship more features, and delivery to increase&#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; 40 likes &#183; 5 comments &#183; Dr Milan Milanovi&#263;</div></a></div></blockquote><p>In addition, I have dedicated code review agents that run locally: code review, architect review, test review, QA check (does the work actually implement the required functionality), and bug check.</p><p>I have a strictly <a href="https://nick-tune.me/blog/2026-01-17-dev-workflows-as-code/">enforced workflow</a> on some projects that prevents a pull request from being created until these reviews have run. The basic idea is to create a hook that blocks Claude from running the command directly and forces Claude to use a script that enforces the correct usage of the tool:</p><p>Hook wiring to block `gi<code>t push`:</code></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;e1b6de4a-648f-4fa2-8e6e-0613cf2db8a2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
    pattern: /\bgit\s+push\b/,
    reason:
      &#8216;Blocked: Direct git push bypasses required workflow. Use /complete-task command instead, which runs the complete verification pipeline (lint, test, code review, PR submission) and prevents orphaned changes.&#8217;,
},</code></pre></div><p>Then a script which enforces local code review before submitting a PR:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;10c20028-0a94-4280-97bd-8d9f384d2885&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">runWorkflow&lt;CompleteTaskContext&gt;(
   [verifyBuild, codeReview, submitPR, fetchPRFeedback],
   buildCompleteTaskContext,
   (result: WorkflowResult, ctx: CompleteTaskContext) =&gt; formatCompleteTaskResult(result, ctx),
)</code></pre></div><p>One of the things I found with agentic code reviews is to be precise. Rather than saying &#8220;review the code for these &lt;principles&gt;&#8221;. I say, &#8220;For each modified file, review the file against each code review principle (I give them codes like CR-001 and write an audit table.&#8221; It forces the agent to get into the details rather than letting the agent decide to  optimise for speed or efficiency when you actually want correctness and robustness.</p><p>I also review the code myself. I don&#8217;t feel safe deploying anything to production that I haven&#8217;t reviewed myself. The main thing for me is: giving feedback on a PR is a process failure. The AI didn&#8217;t do it right the first time, so I try to ensure the feedback I provide is built into the harness and automatically applied in the future.</p><h2>9. How do you create tests?</h2><p>I&#8217;ve used TDD throughout my career, and I push my agents to use <a href="https://github.com/NTCoding/claude-skillz/tree/main/tdd-process">something that resembles</a> it. The focus is on writing tests first, obviously, and implementing them with the simplest possible solution, with structured pre-conditions for state transitions.</p><p>Example state definition:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;xml&quot;,&quot;nodeId&quot;:&quot;a90cbdc8-08cb-45a1-8fbc-d0529ef3e1ef&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-xml">&lt;state name="RED"&gt;
  &lt;prefix&gt;&#128308; TDD: RED&lt;/prefix&gt;
  &lt;purpose&gt;Test IS failing for the right reason. Implement ONLY what the error message demands.&lt;/purpose&gt;

  &#128680; CRITICAL: You are in RED state - test IS CURRENTLY FAILING. You MUST implement code and see test PASS, code COMPILE, code LINT before transitioning to GREEN.
  DO NOT transition to GREEN until you have:
  1. Implemented ONLY what the error message demands
  2. Executed the test with Bash tool
  3. Seen the SUCCESS output (green bar)
  4. Executed compile check and seen SUCCESS
  5. Executed lint check and seen PASS
  6. Shown all success outputs to the user

  &lt;pre_conditions&gt;
    &#10003; Test written and executed (from PLANNING)
    &#10003; Test IS FAILING correctly (red bar visible)
    &#10003; Failure message shown and justified
    &#10003; Failure is "meaningful" (not setup/syntax error)
  &lt;/pre_conditions&gt;

  &lt;actions&gt;
    1. Read the error message - what does it literally ask for?
    2. &#128680; MANDATORY SELF-CHECK - announce before implementing:
       "Minimal implementation check:
       - Error demands: [what the error literally says]
       - Could hardcoded value work? [yes/no]
       - If yes: [what hardcoded value]
       - If no: [why real logic is required]"

       Guidelines:
       - If test asserts `x === 5` &#8594; return `5`
       - If test asserts `count === 0` &#8594; return object with `count: 0`
       - If test asserts type &#8594; return minimal stub of that type
       - Only add logic when tests FORCE you to (multiple cases, different inputs)
    3. Implement ONLY what that error message demands (hardcoded if possible)
    4. Do NOT anticipate future errors - address THIS error only
    5. Run test (use Bash tool to execute test command)
    6. VERIFY test PASSES (green bar)
    7. Show exact success message to user (copy/paste verbatim output)
    8. Run quick compilation check (e.g., tsc --noEmit, or project-specific compile command)
    9. Run lint on changed code
    10. If compile/lint fails: Fix issues and return to step 5 (re-run test)
    11. Show compile/lint success output to user
    12. Justify why implementation is minimum
    13. ONLY AFTER completing steps 5-12: Announce post-condition validation
    14. ONLY AFTER validation passes: Transition to GREEN

    &#128680; YOU CANNOT TRANSITION TO GREEN UNTIL TEST PASSES, CODE COMPILES, AND CODE LINTS &#128680;
  &lt;/actions&gt;

  &lt;post_conditions&gt;
    &#10003; Implemented ONLY what error message demanded
    &#10003; Test executed
    &#10003; Test PASSES (green bar - not red)
    &#10003; Success message shown to user verbatim
    &#10003; Code compiles (no compilation errors)
    &#10003; Code lints (no linting errors)
    &#10003; Compile/lint output shown to user
    &#10003; Implementation addresses ONLY what error message demanded (justified)
  &lt;/post_conditions&gt;

  &lt;validation_before_transition&gt;
    &#128680; BEFORE transitioning to GREEN, verify ALL with evidence from tool history:
    &#10003; Test PASSES (green bar) - show verbatim output
    &#10003; Code compiles - show output
    &#10003; Code lints - show output
    &#10003; Implementation addresses ONLY what error demanded - justify

    If ANY evidence missing: "&#9888;&#65039; CANNOT TRANSITION - Missing: [what]" &#8594; stay in RED.
  &lt;/validation_before_transition&gt;

  &lt;critical_rules&gt;
    &#128680; NEVER transition to GREEN without test PASS + compile SUCCESS + lint PASS
    &#128680; IMPLEMENT ONLY WHAT THE ERROR MESSAGE DEMANDS - no anticipating future errors
    &#128680; DON'T CHANGE TEST TO MATCH IMPLEMENTATION - fix the code, not the test
  &lt;/critical_rules&gt;

  &lt;transitions&gt;
    - RED &#8594; GREEN (when test PASSES, code COMPILES, code LINTS - green milestone achieved)
    - RED &#8594; BLOCKED (when cannot make test pass or resolve compile/lint errors)
    - RED &#8594; PLANNING (when test failure reveals requirement was misunderstood)
  &lt;/transitions&gt;
&lt;/state&gt;</code></pre></div><p>Currently, I rely solely on prompts to enforce the TDD workflow. I don't use deterministic workflows for this, but in the future I&#8217;m tempted.</p><p>I have very strict lint rules on the tests, like:</p><ul><li><p>100% test coverage mandatory (build will fail without it)</p></li><li><p>maximum assertions per test: 4</p></li><li><p>no conditional assertions</p></li><li><p>file size limit: 400 (forces AI to break up tests into descriptive chunks, and use patterns like it for each)</p></li></ul><p>I also have a code-review agent focused on testing.</p><h2>10. What are some useful techniques you use?</h2><p>I have <a href="https://github.com/NTCoding/claude-skillz/tree/main/claude-launcher">my own CLI tool</a> for starting Claude code.</p><p>It runs `claude &#8211;system-prompt` to start the session. And it builds a system prompt based on specific personas I have. For example, I run `cl prd opus`. This will start a Claude code session using my <a href="https://github.com/NTCoding/claude-skillz/blob/main/system-prompts/prd-expert.md">PRD expert system prompt</a>.</p><p>The benefits of this:</p><ol><li><p>Embedding in the system prompt increases compliance</p></li><li><p>Dedicated system prompt means avoiding loading unnecessary content - when my PRD system prompt is loaded, I don&#8217;t need to load all my rules about unit tests, for example</p></li><li><p>Embedding in the system prompt is more efficient than reading files after the session has started</p></li></ol><h2>11. Anything else worth mentioning?</h2><p><em>Build your own tools.</em> One of the great things about AI is that it&#8217;s so easy to build simple tools. I built a whole project management tool to help me plan and deliver legacy modernization projects. I can build whole features in one Claude Code terminal while I&#8217;m waiting for Claude to finish some work in another terminal - it&#8217;s basically free.</p><p>My advice is to think about the task you are working on and ask yourself: What kind of CLI command, UI, or knowledge management tool would help me be more productive? How can I automate some of the annoying bits so I only need to focus on the important parts?</p><p>Then ask your AI agent to help you design a tool.</p><div><hr></div><h2><strong>More ways I can help you</strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 270K+ followers in under two years, plus a 50K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle</a></strong>. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a></strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[You're Not Paid to Write Code]]></title><description><![CDATA[One thing I noticed in my engineering organizations is that when people get the problem to work on, the first step is to open the editor, create a new branch, and start coding.]]></description><link>https://newsletter.techworld-with-milan.com/p/youre-not-paid-to-write-code</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/youre-not-paid-to-write-code</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 12 Mar 2026 16:00:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0ecf7d87-f593-4465-962b-7baf35ec4107_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One thing I noticed in my engineering organizations is that when people get the problem to work on, the first step is to open the editor, create a new branch, and start coding. I always felt this was the wrong direction.</p><p>What I've found over more than twenty years of building software across different domains is that engineers who delivered the most value to projects and companies weren&#8217;t the most productive coders. The ones that brought the most value were those that started first with thinking, asking questions, pushing back on requirements, analyzing, and making a plan. Sometimes, during this process, they found out that coding is not even necessary. And this was the best outcome.</p><p>This habit was valuable. This year, when AI can write code much faster than us, it&#8217;s become even more important to bring value to your company without only coding.</p><p>In particular, we&#8217;re going to talk about:</p><ul><li><p><strong>The identity trap</strong>. The common mistake is treating software engineering as code output. It shifts the focus to questions, intent, and what the work is meant to change.</p></li><li><p><strong>Code is a liability, not an asset</strong>. Every line of code has to be maintained, understood, and changed later, so the real goal is not to write more, but to solve the problem with less.</p></li><li><p><strong>What happens when you skip the thinking</strong>. It&#8217;s easy to fix the wrong problem when you jump straight into implementation. The difference is between moving fast in code and being right about the problem.</p></li><li><p><strong>Why do we default to coding anyway</strong>. There is a reason why teams rush into code-first behavior. Incentives, praise, deadlines, and org structure all push it in the wrong direction.</p></li><li><p><strong>AI amplifies this even further</strong>. What changes when code becomes cheap to produce? AI can speed up execution, but it also leads to poor framing, weak judgment, and unnecessary code scaling.</p></li><li><p><strong>What thinking-first actually looks like</strong>. There is a simple way to clarify the problem before coding, using short notes, lightweight documents, feedback, and quick prototypes to test assumptions.</p></li><li><p><strong>The engineer&#8217;s real job description</strong>. The focus moves from coding to judgment, trade-offs, architecture, validation, and deciding what should never be built in the first place.</p></li></ul><p>Let&#8217;s discuss this deeper.</p><div><hr></div><h2><strong><a href="https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine">Unblocked: Context that saves you time and tokens (Sponsored)</a></strong></h2><p><em>Give Cursor, Claude, and Copilot the organizational knowledge they need to generate code that is ready for git push. Unblocked synthesizes your code, PR history, conversations, docs, and runtime signals to surface the right context for each task.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nF02!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 424w, https://substackcdn.com/image/fetch/$s_!nF02!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 848w, https://substackcdn.com/image/fetch/$s_!nF02!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 1272w, https://substackcdn.com/image/fetch/$s_!nF02!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nF02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:692378,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/190189790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.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_!nF02!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 424w, https://substackcdn.com/image/fetch/$s_!nF02!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 848w, https://substackcdn.com/image/fetch/$s_!nF02!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 1272w, https://substackcdn.com/image/fetch/$s_!nF02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8c65ba-02fd-40d7-b2fb-e474ab985aa7_1600x840.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine&quot;,&quot;text&quot;:&quot;Check it out&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getunblocked.com/?utm_source=techworldwithmilan&amp;utm_medium=email&amp;utm_campaign=contextengine"><span>Check it out</span></a></p><div><hr></div><h2>1. The identity trap</h2><p>The idea that a software engineer is only as good as the code they write is just not true. People think that if you write a lot of code, you become a good software engineer. They look at things like how many lines of code you commit, how many pull requests you merge, and how many features you ship. If we use that way of thinking, then a computer program that can write code is already a software engineer, and most people are not, especially now in the AI age. That way of thinking is wrong.</p><p>A software engineer does not start by thinking about what tools or computer programs to use. They start by asking questions:</p><ul><li><p><strong>What problem are we trying to solve with this? </strong></p></li><li><p><strong>Who are we trying to help? </strong></p></li><li><p><strong>Why is it important to solve this problem?</strong></p></li><li><p><strong>What will happen if we do not do this and do something else?</strong> </p></li></ul><p>Some people just focus on writing the code, which is what developers do. Software engineers <strong>think </strong>about the outcomes of their work.</p><p>When you write code, you want to make sure the code works properly. But software engineering is different. It is about making code that can handle problems when they happen. It should be easy to understand and fix, and other people should be able to work on it even if they did not write it. Software engineering also considers how it affects systems connected to it. It is like looking at the picture and thinking about how all the parts work together.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-WLo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-WLo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-WLo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-WLo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-WLo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-WLo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png" width="638" height="425.4793956043956" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:638,&quot;bytes&quot;:2016152,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/190189790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.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_!-WLo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-WLo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-WLo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-WLo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebe0704-dd5b-4114-860e-cc7575819850_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Coding is part of the solution</figcaption></figure></div><h2>2. Code is a liability, not an asset</h2><p>This is something we need to understand from the start. Even though our job is mainly focused on the code, we need to have it, not want it. The reason is that every line of code you write needs to be maintained, it needs to be understood by you in the future and your colleagues, and eventually changed when new requirements arrive. Nothing of this is free. <strong>Code is not valuable until what it does earns more than what it costs to keep it running.</strong></p><p>The thing is that a lot of code never gets to this point. Code capabilities are assets, but code itself is a liability you incur to produce those capabilities. The goal is to implement the business capability with as little code as possible.</p><p>Jeff Atwood <a href="https://blog.codinghorror.com/the-best-code-is-no-code-at-all/">said</a> <strong>the best code is no code at all.</strong> Code you do not write does not have bugs, does not need tests. Never needs to be cared for. If you can solve a problem by deleting code, changing the way you do things, or using a tool that already exists, then you have done your job well.</p><p>This is not about being against code, but about knowing when to use it. It's the code itself that we need to be careful with. We should think carefully about when to write it. Code is what we are trying to be disciplined about.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!geBk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!geBk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 424w, https://substackcdn.com/image/fetch/$s_!geBk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 848w, https://substackcdn.com/image/fetch/$s_!geBk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!geBk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!geBk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg" width="626" height="417" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:417,&quot;width&quot;:626,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Delete button computer keyboard word on pc computer keyboard vector  illustration | Premium Vector&quot;,&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="Delete button computer keyboard word on pc computer keyboard vector  illustration | Premium Vector" title="Delete button computer keyboard word on pc computer keyboard vector  illustration | Premium Vector" srcset="https://substackcdn.com/image/fetch/$s_!geBk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 424w, https://substackcdn.com/image/fetch/$s_!geBk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 848w, https://substackcdn.com/image/fetch/$s_!geBk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!geBk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a9753a8-604a-41e1-a230-de0dba2779f5_626x417.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">More code should not be the goal (Source: Freepik)</figcaption></figure></div><h2>3. What happens when you skip the thinking</h2><p>Let me walk through the example. I have seen this same thing happen many times. Let&#8217;s say we get a ticket which says: &#8220;Users are saying that the checkout is slow. We probably need to fix the problem with the performance.&#8221;</p><p>The engineer would look at the code, see how this functionality works, then identify a slow DB query and maybe add some indexes. Sometimes it would add tests too. The problem is fixed.</p><p>Then, three weeks later, the ticket gets reopened. It turns out that people are still leaving the checkout without paying. The slow database query was not the problem. People were leaving the payment form because it had many fields to fill out, not because it was slow. Nobody reviewed the data on how people use the website before they started working on the problem. So the engineer made the checkout faster. That was not what people were really having trouble with.</p><p>Now lets look at what happens when the engineer thinks about the problem.</p><p>Before they start coding, the engineer asks: What does &#8220;slow checkout&#8221; really mean to the website's users? They look at data on how people use the website, and they talk to two people who work in support. They read feedback from the last three months. They find out how many people are leaving the checkout at the payment form, and they write down something like this:</p><p><em>&#8220;Users are leaving the checkout at the payment form. The data shows that people are having trouble with all the fields they have to fill out, not that it is slow. My idea is that if we make the form shorter, more people will finish checking out</em>.&#8221;</p><p>The engineer spent 2 hours thinking about the problem and came up with a correct solution. They made a form and tested it against the old one. It worked. 18% more people finished checking out, and the code change was 40 lines.</p><p>The first engineer was really fast at coding. The second engineer actually solved the checkout problem.</p><blockquote><p>&#128161;<em> Weeks of coding can save you hours of planning.</em></p></blockquote><h2>4. Why we default to coding anyway</h2><p>Unfortunately, we often do coding first because that is how we measure and reward engineering work.</p><p>The way we measure things is how fast we complete our tasks, not by looking at problems to avoid. Promotions are given to someone based on the number of features they delivered, more than anything else. Nobody gets praise for removing code or <a href="https://terriblesoftware.org/2026/03/03/nobody-gets-promoted-for-simplicity/">making something simpler</a>, even when it improves the system. Engineers are just smart people who follow the rules. This is a great example of <strong><a href="https://en.wikipedia.org/wiki/Goodhart%27s_law">Goodhart's Law</a></strong>.</p><p>This is a problem on the organizational level, not just with individuals. We see it when individual people make decisions. The goal is to show that we are making progress. Progress looks like we are writing code, because the clock is ticking from the moment we take the ticket. So, engineers write code before they really understand the problem, the organization rewards them, and we end up with something that&#8217;s not what we wanted, and then everyone is confused. This is only accelerated with AI (read more in the next section).</p><p>But, there is another way this can go. In teams where everyone can talk to each other and see how users are affected, we usually understand the problem naturally. The problem is worse in organizations where it takes a long time to see how a line of code affects the business, and it has to go through many teams and people.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ajY_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ajY_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ajY_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ajY_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ajY_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ajY_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg" width="1024" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;What is &#8220;Coding&#8221;?&quot;,&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="What is &#8220;Coding&#8221;?" title="What is &#8220;Coding&#8221;?" srcset="https://substackcdn.com/image/fetch/$s_!ajY_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ajY_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ajY_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ajY_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf625edc-7277-4bc2-a992-8e4b359efdea_1024x684.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Coding only (Source: <a href="https://www.brytdesigns.com/what-is-coding">Bryan Miller</a>)</figcaption></figure></div><h2>5. AI amplifies this even further</h2><p>AI coding tools have made it really easy to generate code. A lot of code. A good engineer with the tool can make a working draft in just a few minutes that would have taken hours before. This sounds like a good idea, but it really depends on what happened before they started using the tool.</p><p>Think of an AI tool like a person who builds something the way you tell them to. If you give them an idea of what you want, they will do a good job quickly. If you are not clear about what you want, they will still build something quickly, but it will be the wrong thing built. The tool cannot determine whether it is doing what it is supposed to. Only the engineer can do that.</p><p>In 2025, a METR <a href="https://arxiv.org/abs/2507.09089">study</a> found that some experienced developers worked on their projects with and without AI tools. The developers thought they would be 24% faster with AI tools. After using the tools, they thought they were 20% faster. But the actual result shows that they were 19% slower. Researchers said this was mainly due to over-optimism about AI and lower AI reliability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z1ub!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z1ub!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 424w, https://substackcdn.com/image/fetch/$s_!Z1ub!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 848w, https://substackcdn.com/image/fetch/$s_!Z1ub!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 1272w, https://substackcdn.com/image/fetch/$s_!Z1ub!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z1ub!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png" width="1456" height="875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:875,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer  Productivity - METR&quot;,&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="Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer  Productivity - METR" title="Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer  Productivity - METR" srcset="https://substackcdn.com/image/fetch/$s_!Z1ub!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 424w, https://substackcdn.com/image/fetch/$s_!Z1ub!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 848w, https://substackcdn.com/image/fetch/$s_!Z1ub!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 1272w, https://substackcdn.com/image/fetch/$s_!Z1ub!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef271c71-32e1-4f35-abe5-46c08db14ca5_2562x1540.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity&#8221;, Becker, J et al.</figcaption></figure></div><p>Also, folks from <a href="https://www.gitclear.com/coding_on_copilot_data_shows_ais_downward_pressure_on_code_quality">GitClear</a> looked at 153 million lines of code. They found that when AI tools were used, there was four times more copied code and the code was changed more often. We are producing more and more code, but the question is what will really be needed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!miev!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!miev!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 424w, https://substackcdn.com/image/fetch/$s_!miev!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 848w, https://substackcdn.com/image/fetch/$s_!miev!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 1272w, https://substackcdn.com/image/fetch/$s_!miev!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!miev!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png" width="1080" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:825,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&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_!miev!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 424w, https://substackcdn.com/image/fetch/$s_!miev!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 848w, https://substackcdn.com/image/fetch/$s_!miev!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 1272w, https://substackcdn.com/image/fetch/$s_!miev!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98a532e5-ed2d-4b57-add4-9ca94f12783e_1080x825.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Code Operations and Code Churn by Year by GitClear</figcaption></figure></div><p>Of course, AI models become better and better, but we still need to know what code is really needed and what isn&#8217;t.</p><p>When the engineer thinks carefully before using the AI tool, things are different. We can say that AI tools actually help good engineers do their job better. The better the engineer's plan is, the better the AI tools' results will be. </p><p>AI tools do not make everything equal. They make it so that engineers need to be even better at their job.</p><h2>6. What thinking-first actually looks like</h2><p>I want to be clear about this because saying &#8220;think before you code&#8221; can sound like a reason to have a lot of meetings and make documents that nobody actually reads. If we delegate problem-solving to AI, we skip the phase of understanding the problem. Bypass the &#8220;why&#8221; and jump into &#8220;how&#8221;. And this means if we don&#8217;t know how to assess architecture decisions, <strong>AI will just help us go faster in the wrong direction</strong>. And recent <a href="https://www.anthropic.com/research/AI-assistance-coding-skills">research from Anthropic</a> confirms that.</p><p>What I found in all this hype about AI is that <strong>everyone is focused on execution, but no one is focused on thinking or decision-making</strong>. Defining products and problems will be more important than implementation in the future.</p><p>So, here is what I usually do: before I start writing code for something that&#8217;s not simple, I write one paragraph in a note. This paragraph answers: </p><ul><li><p>What is the real problem?</p></li><li><p>Who does it affect?</p></li><li><p>How will I know when it is fixed? </p></li></ul><p>Half the time, writing this paragraph helps me find a problem that I did not know was there (because writing is best thinking). This helps close the gap, or keep it flat, as an assumption before I start. </p><p>For larger projects, I use a short document that outlines the problem, the options, and enables the following:</p><ul><li><p><strong>Figuring out what the problem is</strong>. You have to know what you are trying to solve. Do not just listen to what the customer says they want. Look deeper into what they need.</p></li><li><p><strong>Understand the business</strong>. When you make decisions about technology, you are making business decisions. If you come up with a solution that&#8217;s really cool from a technical standpoint but doesn't help the business, it is a waste of time.</p></li><li><p><strong>Decompose</strong>. Find patterns and use abstraction to get rid of details that&#8217;re not important.</p></li><li><p><strong>Planning</strong>. The goal is to think things through in a way before you start working on the solution. The outcome goes in the document.</p></li><li><p><strong>Communicte</strong>. Get their feedback to make sure you are not missing anything. When you are working on a project, the requirements serve as a contract among the engineers, stakeholders, and users. If everyone is not on the page, the project can get out of hand, and you may miss your deadlines.</p></li><li><p><strong>Prototype to test assumptions</strong>. And here comes AI. Make the simplest version possible to see if it works before you put a lot of time and money into it. This way you can make sure that your idea is a one before you invest too much in it.</p></li></ul><p>We should note that Google and Amazon also both do this. Amazon has a process called <a href="https://www.amazon.co.uk/Working-Backwards-Insights-Stories-Secrets/dp/1529033829">Working Backwards</a> that requires a press release and a list of asked questions to be written before any code is written, before any money is spent, and before any new employees are hired. The goal is to stop ideas before they use up engineering resources. Most proposals are not approved. That is okay, as most proposals should not be approved.</p><h2>7. The engineer&#8217;s real job description</h2><p>The job of a software engineer in 2026 is not about writing a lot of code quickly. It is about&nbsp;<strong>understanding the problem and figuring out what we really need</strong>. This means turning ideas into clear technical requirements and asking questions that others might not think of.</p><p>It is also about making decisions on what to build and what to buy. A software engineer has to know what to skip and remember that every new feature is a risk. The engineer must consider whether the feature's benefits justify the cost of maintaining it.</p><p>Then, about architectural judgement. Deciding how to build software, in which direction. If we make this mistake early, it will be costly to fix it later.</p><p>Software engineers also have to keep an eye on the code that AI generates (for now). They have to review this code just like they would review code written by a new team member. This means catching mistakes that the AI might make because it does not understand the context. So, we still need to validate its output.</p><p><strong>Sometimes the best thing to do is to remove code. This can actually be a feature.</strong></p><p>AI can generate large amounts of code, but it cannot decide what code to generated at the first place. It cannot figure out whether a feature is really needed or weigh the pros and cons of a business decision. These things require human judgment. They are the harder parts of the job.</p><p>Being good at coding is still important. What that means is changing. It shifted to knowing when code is necessary and whether the generated code is correct in terms of business value. A software engineer has to understand how all the parts of a system work together.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" width="3000" height="2001" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2001,&quot;width&quot;:3000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;woman in green shirt sitting in front of computer&quot;,&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="woman in green shirt sitting in front of computer" title="woman in green shirt sitting in front of computer" srcset="https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1580894908361-967195033215?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Software Engineer (Source: Unsplash)</figcaption></figure></div><h3>8. Conclusion</h3><p>The expensive mistakes in software do not come from simple coding errors. They come from trying to fix the issue.</p><p>When we really understand a problem, we write code to solve it. The hard work is in thinking, asking questions, and defining the problem. That&#8217;s where the real engineering happens. Everything else is just implementing the solution.</p><p>When you get a task assigned to you, take a moment to write down two things before you start coding: what is actually not working and how you will know when it is working correctly. If you make this a habit, it will make a difference in what you build than any tool or technology will.</p><p>The best software engineers have always known this. The code is the last part of solving a problem.</p><p>The best code is no code. And if you must code, remember: every line is a promise you&#8217;re making to the future.</p><div><hr></div><p>If you liked this post, consider <a href="https://newsletter.techworld-with-milan.com/">subscribing</a> to email updates about my new posts or <a href="https://news.ycombinator.com/submitlink?u=https://newsletter.techworld-with-milan.com/p/youre-not-paid-to-write-code&amp;t=You%27re%20Not%20Paid%20to%20Write%20Code">sharing it on Hacker News</a>.</p><div><hr></div><h2><strong>More ways I can help you</strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 260K+ followers in under two years, plus a 49K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle</a></strong>. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a></strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[What I learned from the book Software Engineering at Google]]></title><description><![CDATA[And what you can apply from today.]]></description><link>https://newsletter.techworld-with-milan.com/p/what-i-learned-at-swe-at-google-book</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/what-i-learned-at-swe-at-google-book</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 26 Feb 2026 16:01:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6c18a8c6-784e-4c85-8a59-dfe9aac883cd_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I first picked up <em>Software Engineering at Google</em>, I expected another Big Tech flex, with a set of practices that only make sense if you have a billion users and 30,000 engineers. But I was wrong. The lessons in this book are universal and apply whether you&#8217;re on a team of 5 or 5,000.&#8203; It draws on 2 decades of experience from an organization that runs&nbsp;<strong>2+ billion lines of code</strong>&nbsp;and changes&nbsp;<strong>25 million lines per week</strong>.</p><p>The book isn&#8217;t about programming, per se. It&#8217;s about the good engineering practices that Google has used over the years and decades to keep a healthy codebase. </p><p>In particular, it is about what happens after you write the code: how you evolve it, share it, test it, and eventually delete it.</p><p>Here&#8217;s what I learned:</p><ul><li><p><strong>Software Engineering &#8800; Programming.</strong> Programming is writing code. Engineering is asking what happens to that code over the next decade, and who pays the price when it breaks.</p></li><li><p><strong>Hyrum&#8217;s Law and the Beyonc&#233; Rule.</strong> Every observable behavior of your system becomes someone&#8217;s dependency, whether you documented it or not. The fix? Test everything you care about, or don&#8217;t complain when it breaks.</p></li><li><p><strong>Shift Left.</strong> A bug caught in your editor costs seconds. The same bug in production costs your reputation. Google learned this the hard way with GWS in 2005.</p></li><li><p><strong>Code Review Is Not a Bug Filter.</strong> Most teams use it to catch bugs. Google uses it to transfer knowledge, enforce ownership, and keep a billion lines of code from turning into a mess. The mechanics are simple. The discipline behind them is not.</p></li><li><p><strong>Don&#8217;t Use Mocking Frameworks.</strong> Mocks test how something was done, not what actually happened. Google&#8217;s pendulum swung hard, and many engineers now avoid mocking frameworks entirely.</p></li><li><p><strong>Small Frequent Releases.</strong> A 3-line deploy is easy to debug, but a 50-commit mega-release is a weekend ruined. DORA research proves this isn&#8217;t just intuition.</p></li><li><p><strong>Upgrade Dependencies Early and Often.</strong> A patch bump is a coffee break. Three major versions behind is a quarter-long migration project. The math always favors staying current.</p></li><li><p><strong>Measuring Productivity.</strong> Google&#8217;s GSM framework (Goals, Signals, Metrics) prevents you from measuring what&#8217;s easy instead of what matters.</p></li><li><p><strong>The Culture Chapters.</strong> Psychological safety beats 10x developers. The genius myth is toxic. And &#8220;because I said so&#8221; is a leadership failure.</p></li><li><p><strong>What Doesn&#8217;t Work, Even at Google.</strong> Dependency management gave the authors nightmares. SemVer is an estimate, not a guarantee. And yes, the Google product graveyard is ironic.</p></li><li><p><strong>Now What?</strong> Here is a filter to decide which of these ideas actually fit your team and which don&#8217;t.</p></li></ul><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://www.qodo.ai/?utm_source=dr_milan_newsletter&amp;utm_medium=newsletter&amp;utm_campaign=br_qodo-2026">Your AI Writes Code Faster Than You Can Review It (Sponsored)</a></h2><p>Code review is the bottleneck &#8212; slow, inconsistent, and noisy. Qodo is a multi-agent <em>AI code review platform built to surface real issues, not noise. Specialized agents reason with the full codebase and PR history context. Benchmarked #1 in precision and recall. Now with rules that auto-discover your standards, enforce them in every PR, and measure adoption.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.qodo.ai/?utm_source=dr_milan_newsletter&amp;utm_medium=newsletter&amp;utm_campaign=br_qodo-2026" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ULqM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 424w, https://substackcdn.com/image/fetch/$s_!ULqM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 848w, https://substackcdn.com/image/fetch/$s_!ULqM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 1272w, https://substackcdn.com/image/fetch/$s_!ULqM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ULqM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/def97434-653c-4c04-a77c-38714b467802_2640x1320.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;:2211371,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.qodo.ai/?utm_source=dr_milan_newsletter&amp;utm_medium=newsletter&amp;utm_campaign=br_qodo-2026&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.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_!ULqM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 424w, https://substackcdn.com/image/fetch/$s_!ULqM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 848w, https://substackcdn.com/image/fetch/$s_!ULqM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 1272w, https://substackcdn.com/image/fetch/$s_!ULqM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef97434-653c-4c04-a77c-38714b467802_2640x1320.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.qodo.ai/?utm_source=dr_milan_newsletter&amp;utm_medium=newsletter&amp;utm_campaign=br_qodo-2026&quot;,&quot;text&quot;:&quot;Try Qodo free&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.qodo.ai/?utm_source=dr_milan_newsletter&amp;utm_medium=newsletter&amp;utm_campaign=br_qodo-2026"><span>Try Qodo free</span></a></p><div><hr></div><h2>1. <strong>Software Engineering &#8800; Programming</strong></h2><p>This is the core message of the entire book. Titus Winters described it in <a href="https://abseil.io/resources/swe-book/html/ch01.html#software_engineering_versus_programming">Chapter 1</a>, and it changed how I think about my work. In general, we use terms like programming and engineering in the same or similar context, yet I always felt that this is not the same. </p><p><strong>Programming</strong> is about producing code. You take a task and write code to solve it. You get the tests green, you ship them, and you move on.</p><p><strong>Software engineering</strong> is what happens before and after that. It&#8217;s when you take that piece of code and start asking questions like:&#8203;</p><ul><li><p>Why are we doing this at all? </p></li><li><p>How does this impact our users?</p></li><li><p>How will this code evolve as requirements change?</p></li><li><p>How does this scale, not just technically, but organizationally?</p></li></ul><p>As Titus Winters puts it: <em>&#8220;Software engineering is programming integrated over time.&#8221;</em> That little phrase carries enormous weight. It means every line of code has a lifespan, and your job as an engineer is to think about the full cost of that lifespan, not just the fun part where you write it.</p><p>A quick script for a Black Friday marketing page? That&#8217;s programming. The payment system that will process millions of transactions over the next decade? That demands engineering.&#8203;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mB5y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mB5y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mB5y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mB5y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mB5y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mB5y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg" width="446" height="581.0865384615385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1897,&quot;width&quot;:1456,&quot;resizeWidth&quot;:446,&quot;bytes&quot;:1207963,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.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_!mB5y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mB5y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mB5y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mB5y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F061e6e7a-7be9-44fc-b1d3-73b8909394c7_2643x3443.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://abseil.io/resources/swe-book">Software Engineering at Google</a> (Curated by: Titus Winters, Tom Manshreck &amp; Hyrum Wright)</figcaption></figure></div><h2>2. <strong>Hyrum&#8217;s Law and the Beyonc&#233; Rule</strong></h2><p>These two concepts are my favorites from the book, and they come up together for a good reason.</p><h3><strong>Hyrum&#8217;s Law</strong></h3><p>It is probably the book's most cited concept. Named after <a href="https://www.linkedin.com/in/hyrum-wright">Hyrum Wright</a> (one of the book&#8217;s curators), the law states:</p><blockquote><p><em><strong>With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.</strong></em></p></blockquote><p>This sounds theoretical until it bites you. The classic example is hash iteration order. The Java <code>HashMap</code> API explicitly states that no orderings are guaranteed, but when Google attempted to update Java versions (which varied hash orderings), many tests failed. The engineers had written tests with assertions using <code>containsElementInOrder()</code> on <code>HashMap</code> outputs. Some people had even used hash iteration order as an inefficient random number generator. Google&#8217;s solution was defensive randomization, which means they altered their JDK to vary the hash iteration order each time it ran, making it impossible to rely on the unspecified behavior. Python and Go did this independently. So, we can learn from here that pointing fingers at engineers won&#8217;t fix the issue. It will make it impossible to make the mistake instead.</p><p>Hyrum&#8217;s Law applies outside the Google bubble. In 2024, <a href="https://www.recall.ai/blog/encountering-hyrums-law-in-the-wild">Recall.ai released a change that prepended a colon to S3 URL paths</a>. This is a completely valid character in a URL. The customers&#8217; apps were broken because a transitive dependency (the yarl library) auto-normalized URLs by URL-decoding &#8220;safe&#8221; characters, which invalidated the S3 signature. No one had parsed the URLs directly. The dependency three levels deep had established an implicit contract.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T2WW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T2WW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!T2WW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!T2WW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!T2WW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T2WW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png" width="533" height="355.45535714285717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:533,&quot;bytes&quot;:1989525,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.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_!T2WW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!T2WW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!T2WW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!T2WW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89b5ec1-e885-4d6b-b2c9-2ab46c6f4ce0_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Hyrum&#8217;s Law</figcaption></figure></div><p>Hyrum&#8217;s Law is essentially <em>the software version of entropy</em>. You can mitigate it, but you can never fully eliminate it. The more users you have, the more your <em>implicit</em> interface, the behavior nobody documents but everyone depends on, grows alongside your explicit one. This is why backward compatibility is so hard and why breaking changes are so expensive at scale.</p><h3><strong>The Beyonc&#233; Rule</strong></h3><p>This rule says it simply: If you liked it, you should have put a test on it.</p><p>Let&#8217;s say that you fix a small bug&#8217;s not a big deal. But Joe from the billing team had been relying on that bug to make his code work. Now Joe&#8217;s stuff is broken. Who&#8217;s at fault?&#8203;</p><p>The Beyonc&#233; Rule says: <em>if Joe liked that behavior, he should have written a test for it. </em>When your fix breaks his test, you see it immediately: &#8220;Oh, gotta fix Joe&#8217;s code too.&#8221; And because Joe tested everything he cares about, you can fix his code without needing to understand all its gnarly details.&#8203;</p><p>We introduced these practices in our projects, so when a bug is reported with a fix, we first write tests to prove that the bug was fixed. The test methods comment section included the Jira ticket number, so we could track it back to the bug itself.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!knum!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!knum!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!knum!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!knum!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!knum!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!knum!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png" width="527" height="351.4539835164835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:527,&quot;bytes&quot;:1929986,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.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_!knum!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!knum!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!knum!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!knum!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c712876-a184-403d-9c53-4c834383a7c8_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Beyonc&#233; Rule</figcaption></figure></div><p>The deeper lesson here is about <strong>shared ownership</strong>. In a large codebase, anyone might touch your code. Tests become a communication mechanism. They tell the rest of the organization what behaviors matter to you. Without tests, you&#8217;re relying on tribal knowledge, and that doesn&#8217;t scale.</p><h2>3. <strong>Shift Left</strong></h2><p>This concept is simple but powerful: <strong>the earlier you find a mistake, the cheaper it is to fix.</strong></p><p>Google Web Server (GWS), the Google Search engine infrastructure, was in a crisis state in 2005. More than 80% of the production pushes resulted in user-impacting bugs that had to be rolled back. The tech lead made it mandatory for the engineers to automate the testing of new code. Bugs were reduced by half within a year, despite record numbers of new changes. Today, GWS has tens of thousands of tests and releases every day with very few customer-visible failures.</p><p>This clearly explains <a href="https://abseil.io/resources/swe-book/html/ch11.html">Google&#8217;s testing philosophy</a>. The book encourages a strongly lean test pyramid: </p><ul><li><p>~80% small (unit) tests</p></li><li><p>~15% medium (integration) tests</p></li><li><p>~5% large (end-to-end) tests</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_!fNis!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fNis!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 424w, https://substackcdn.com/image/fetch/$s_!fNis!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 848w, https://substackcdn.com/image/fetch/$s_!fNis!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 1272w, https://substackcdn.com/image/fetch/$s_!fNis!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fNis!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png" width="473" height="410" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:410,&quot;width&quot;:473,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Software Engineering at Google&quot;,&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="Software Engineering at Google" title="Software Engineering at Google" srcset="https://substackcdn.com/image/fetch/$s_!fNis!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 424w, https://substackcdn.com/image/fetch/$s_!fNis!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 848w, https://substackcdn.com/image/fetch/$s_!fNis!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 1272w, https://substackcdn.com/image/fetch/$s_!fNis!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadb0b65-ac1d-4cd5-bfc4-3229cd1c7a02_473x410.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Google&#8217;s version of Mike Cohn&#8217;s test pyramid (Source: <a href="https://abseil.io/resources/swe-book/html/ch11.html">Software Engineering at Google book</a>)</figcaption></figure></div><p>Most importantly, Google tests are divided by size (resource usage), not the traditional unit/integration categorization. Small tests run in a single process, a single thread, and without any I/O, network, or disk access. Medium tests may use multiple processes on localhost. Large tests can run across machines. The important characteristics being optimized are speed and determinism. </p><p>Flaky tests get special mention. With Google&#8217;s <em>0.15% flakiness level</em>, even a monorepo of that size still yields thousands of flakes per day. The book states that with ~1% flakiness, tests become useless altogether &#8211; engineers stop caring about them and begin to ignore failures.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UYSo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UYSo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 424w, https://substackcdn.com/image/fetch/$s_!UYSo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 848w, https://substackcdn.com/image/fetch/$s_!UYSo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 1272w, https://substackcdn.com/image/fetch/$s_!UYSo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UYSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png" width="513" height="264.27272727272725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:629,&quot;width&quot;:1221,&quot;resizeWidth&quot;:513,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Timeline of the developer workflow&quot;,&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="Timeline of the developer workflow" title="Timeline of the developer workflow" srcset="https://substackcdn.com/image/fetch/$s_!UYSo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 424w, https://substackcdn.com/image/fetch/$s_!UYSo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 848w, https://substackcdn.com/image/fetch/$s_!UYSo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 1272w, https://substackcdn.com/image/fetch/$s_!UYSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c12a2f7-e7b3-4dcc-b24a-f034d5c8d5ac_1221x629.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Timeline of the developer workflow (Source: <a href="https://abseil.io/resources/swe-book/html/ch01.html#shifting_left">Software Engineering at Google book</a>)</figcaption></figure></div><p>Three cultural interventions distributed testing throughout Google. New employee orientation classes introduced testing as best practice &#8211; within two years, engineers trained in testing outnumbered the pre-testing culture:</p><ul><li><p>&#8220;<strong><a href="https://mike-bland.com/2011/10/18/test-certified.html">Test Certified</a></strong>,&#8221; a five-level biannual program, encouraged 1,500+ projects to adopt testing procedures through a public dashboard that generated social pressure.</p></li><li><p>&#8220;<strong><a href="https://testing.googleblog.com/2007/01/introducing-testing-on-toilet.html">Testing on the Toilet</a></strong>&#8221; is a one-page testing advice posted in stalls starting in April 2006. They evolved into what the authors describe as &#8220;the longest-running and most profound impact of any of the testing initiatives.&#8221;</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_!-HOp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-HOp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-HOp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-HOp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-HOp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-HOp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg" width="526" height="701.3333333333334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:810,&quot;resizeWidth&quot;:526,&quot;bytes&quot;:203356,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.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_!-HOp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-HOp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-HOp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-HOp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35961818-9aec-4759-9cfb-5ede9f57c3ce_810x1080.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Testing on the Toilet practice at Google (Source: <a href="https://mike-bland.com/2011/10/25/testing-on-the-toilet.html">Mike Bland</a>)</figcaption></figure></div><p>In practical terms, <em>shifting left</em> means adding many quality checkpoints into the development process:</p><ul><li><p><strong>Static analysis</strong> happens in your editor. It finds typos, wrong function calls, and type mismatches in real time. Cost to fix: seconds.</p></li><li><p><strong>Unit tests</strong> take a few seconds to run. They verify your code does what you think it does. Cost to fix: minutes.</p></li><li><p><strong>Integration tests</strong> take a few minutes. They validate that your system&#8217;s components work together and can catch edge cases that unit tests miss. Cost to fix: an hour or so.</p></li><li><p><strong>Code review</strong> takes a few hours. It&#8217;s a human-powered quality gate that answers the question: Does this follow team norms? Is the approach sensible? This is also one of the best mechanisms for knowledge sharing on any team. Cost to fix: maybe half a day.</p></li><li><p><strong>QA</strong> takes hours or days. Everything works together as expected? Cost to fix: days, maybe a week.</p></li><li><p><strong>Users in production</strong> will find everything you missed, and expose you to edge cases you never thought possible. Cost to fix: potentially enormous, both technically and reputationally.</p></li></ul><p>The further right you go, the more expensive the fix becomes. This is why Google invests so much in static analysis tools such as <a href="https://abseil.io/resources/swe-book/html/ch20.html">Tricorder</a>, fast unit-test infrastructure, and pre-submit checks that run before code is even submitted for review. The hope is to find as much as possible before a human ever has to look at it.&#8203;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9nxc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9nxc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 424w, https://substackcdn.com/image/fetch/$s_!9nxc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 848w, https://substackcdn.com/image/fetch/$s_!9nxc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 1272w, https://substackcdn.com/image/fetch/$s_!9nxc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9nxc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png" width="1440" height="498" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:498,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Critique&#8217;s diff viewing, showing a static analysis warning from Tricorder in gray&quot;,&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="Critique&#8217;s diff viewing, showing a static analysis warning from Tricorder in gray" title="Critique&#8217;s diff viewing, showing a static analysis warning from Tricorder in gray" srcset="https://substackcdn.com/image/fetch/$s_!9nxc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 424w, https://substackcdn.com/image/fetch/$s_!9nxc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 848w, https://substackcdn.com/image/fetch/$s_!9nxc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 1272w, https://substackcdn.com/image/fetch/$s_!9nxc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aaba70c-d5d4-43d4-9444-6708febea6c8_1440x498.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Critique&#8217;s diff viewing, showing a static analysis warning from Tricorder in gray (Source: <a href="https://abseil.io/resources/swe-book/html/ch20.html">Software Engineering at Google book</a>)</figcaption></figure></div><h2>4. Don&#8217;t Use Mocking Frameworks</h2><p>Chapter 13 in the book about <a href="https://abseil.io/resources/swe-book/html/ch13.html">test doubles</a> is one of the most surprising in its recommendations: <em>always choose real implementations over fakes and stubs, and use mocking only as a last resort</em>. When mocking frameworks first came to Google, they &#8220;seemed like a hammer fit for every nail.&#8221; It was easy to write very focused tests. However, the price was paid later on, as tests became &#8220;something that required constant effort to maintain while rarely finding bugs.&#8221; The pendulum has now swung far in the other direction, with many Google engineers choosing not to use mocking frameworks at all.</p><p>The underlying issue with mocks is that they test how something was done, not what happened as a result. A test for a payment processor might check that the <code>pay()</code> method was called with the correct arguments in a mocked test, but it can&#8217;t tell you if the payment actually went through. A fake is a lightweight implementation that keeps track of state, allowing you to call <code>processPayment()</code> and then check <code>getMostRecentCharge()</code> to see what actually happened. Google went so far as to include an <code>@DoNotMock</code> annotation in their <a href="https://github.com/google/error-prone">ErrorProne static analysis tool</a>. When an API is mocked tens of thousands of times throughout the codebase, it &#8220;severely constrains the API owner&#8217;s ability to make changes,&#8221; because mocks are used in tests that violate the API contract in ways that real implementations and fakes simply can&#8217;t. </p><p>Here is the example with a mock:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QVbV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QVbV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 424w, https://substackcdn.com/image/fetch/$s_!QVbV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 848w, https://substackcdn.com/image/fetch/$s_!QVbV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 1272w, https://substackcdn.com/image/fetch/$s_!QVbV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QVbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png" width="633" height="210.42032967032966" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:1456,&quot;resizeWidth&quot;:633,&quot;bytes&quot;:226716,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.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_!QVbV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 424w, https://substackcdn.com/image/fetch/$s_!QVbV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 848w, https://substackcdn.com/image/fetch/$s_!QVbV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 1272w, https://substackcdn.com/image/fetch/$s_!QVbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a228f1-ac61-4a75-8b56-f23e778d1952_1914x636.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Now the same test with a fake:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dVoG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dVoG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 424w, https://substackcdn.com/image/fetch/$s_!dVoG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 848w, https://substackcdn.com/image/fetch/$s_!dVoG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 1272w, https://substackcdn.com/image/fetch/$s_!dVoG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dVoG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png" width="635" height="190.1510989010989" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:1456,&quot;resizeWidth&quot;:635,&quot;bytes&quot;:234457,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.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_!dVoG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 424w, https://substackcdn.com/image/fetch/$s_!dVoG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 848w, https://substackcdn.com/image/fetch/$s_!dVoG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 1272w, https://substackcdn.com/image/fetch/$s_!dVoG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50230d0f-f15e-4c6b-9a56-ce7f1f9b5071_2124x636.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Now imagine this mock repeated 10,000 times across your codebase. Every refactor that changes <em>how</em> <code>pay()</code> it works breaks all of them, even if the payment still works perfectly.</p><p>The trade-off is that fakes must be invested in. The team that owns the real implementation should maintain the fake, using contract tests that verify against both. If there are only a few consumers, it may not be worth writing a fake. But for popular APIs, the boost to productivity is huge.</p><p>Here is an overview of mocks, stubs, and fakes:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cAGJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cAGJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 424w, https://substackcdn.com/image/fetch/$s_!cAGJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 848w, https://substackcdn.com/image/fetch/$s_!cAGJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 1272w, https://substackcdn.com/image/fetch/$s_!cAGJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cAGJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png" width="638" height="262.0357142857143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:1456,&quot;resizeWidth&quot;:638,&quot;bytes&quot;:107400,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.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_!cAGJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 424w, https://substackcdn.com/image/fetch/$s_!cAGJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 848w, https://substackcdn.com/image/fetch/$s_!cAGJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 1272w, https://substackcdn.com/image/fetch/$s_!cAGJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab87339-8fc0-4bd7-87e5-4f6a5481866f_1528x628.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Mocks vs Stubs vs Fakes</figcaption></figure></div><h2><strong>5. Code Review Is Not a Bug Filter</strong></h2><p>Most teams treat code review as a quality gate. Someone checks your logic, clicks approve, and the change ships. That&#8217;s not what Google does, and the gap matters more than you&#8217;d think.</p><p>The book is explicit: checking code correctness is <strong>not</strong> the primary benefit Google gets from code review. The bigger payoffs are comprehension, knowledge sharing, and long-term maintainability. A change that succeeds but that no one else can understand is already a problem. Code that can&#8217;t be understood can&#8217;t be changed, and code that can&#8217;t be changed can&#8217;t be maintained.</p><p><a href="https://abseil.io/resources/swe-book/html/ch19.html#critique_googleapostrophes_code_review">The process</a> is more formalized than most teams think: a peer LGTM (is this correct and understandable?), an owner sign-off (is this right for this part of the codebase?), and a readability approval (does it follow language standards?). One person can play all three roles, and often does. But breaking them out is important. Each role examines a different aspect, so no one reviewer has to grapple with the whole thing at once.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R8kn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R8kn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 424w, https://substackcdn.com/image/fetch/$s_!R8kn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 848w, https://substackcdn.com/image/fetch/$s_!R8kn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 1272w, https://substackcdn.com/image/fetch/$s_!R8kn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R8kn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png" width="590" height="198.1979977753059" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:302,&quot;width&quot;:899,&quot;resizeWidth&quot;:590,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The code-review flow&quot;,&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="The code-review flow" title="The code-review flow" srcset="https://substackcdn.com/image/fetch/$s_!R8kn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 424w, https://substackcdn.com/image/fetch/$s_!R8kn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 848w, https://substackcdn.com/image/fetch/$s_!R8kn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 1272w, https://substackcdn.com/image/fetch/$s_!R8kn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12d088ee-8e78-4b5a-8338-499b1fe469eb_899x302.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">The code review flow (Source: <a href="https://abseil.io/resources/swe-book/html/ch19.html#critique_googleapostrophes_code_review">Software Engineering at Google book</a>)</figcaption></figure></div><p>Two things make the entire system tick. Changes remain at 200 lines, and feedback is provided within 24 working hours. A third of Google&#8217;s changes affect a single file. Small changes are carefully read, but big changes are just skimmed. It&#8217;s just human nature, and Google designed the system to work with it, not against it.</p><p>The quote that has stuck with me the most is this: &#8220;<em>If you&#8217;re writing it from scratch, you&#8217;re doing it wrong.</em>&#8221; <strong>Code is a liability.</strong> Every line of code is a maintenance burden for the future. Code review is where this reality gets enforced, not as a punishment, but as a forcing function that just slows you down enough to ask yourself: does this need to exist, does it make sense to someone else, and will it hold up in two years?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G9Dz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G9Dz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 424w, https://substackcdn.com/image/fetch/$s_!G9Dz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 848w, https://substackcdn.com/image/fetch/$s_!G9Dz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 1272w, https://substackcdn.com/image/fetch/$s_!G9Dz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G9Dz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png" width="1440" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dashboard view&quot;,&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="Dashboard view" title="Dashboard view" srcset="https://substackcdn.com/image/fetch/$s_!G9Dz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 424w, https://substackcdn.com/image/fetch/$s_!G9Dz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 848w, https://substackcdn.com/image/fetch/$s_!G9Dz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 1272w, https://substackcdn.com/image/fetch/$s_!G9Dz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791000ee-8127-4766-83c1-147d9a1fb7c1_1440x954.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Google Critique tool (Source: <a href="https://abseil.io/resources/swe-book/html/ch19.html#critique_googleapostrophes_code_review">Software Engineering at Google book</a>)</figcaption></figure></div><p>On the human side, the book is clear: <strong>&#8220;You are not your code</strong>.&#8221; It is only natural to feel a sense of ownership over something you have created. The instant you submit code for review, the code no longer belongs to you. Every comment in a code review is a thing that needs to be done, not a criticism of the code. Even if you do not agree with a comment, explain why and ask the person to take another look at the code.</p><p>The book closes the chapter with five practices worth keeping on your wall:</p><ul><li><p><strong>Be Polite and Professional.</strong> If something looks wrong, ask first. Don&#8217;t assume it&#8217;s a mistake. You might be missing context. And if you&#8217;re the author, treat every comment as a TODO, not a verdict. </p></li><li><p><strong>Write Small Changes.</strong> A 200-line diff gets read. A 2,000-line diff gets approved. Keep changes focused on a single issue, and the feedback you get back will actually be useful.</p></li><li><p><strong>Write Good Change Descriptions.</strong> The first line of your description shows up in email subjects, code search results, and future debugging sessions. &#8220;Fix bug&#8221; tells nobody anything. Write one sentence explaining what changed and why.</p></li><li><p><strong>Keep Reviewers to a Minimum.</strong> One reviewer is almost always enough. More reviewers means slower turnaround and diffuse responsibility. If you need a second opinion, ask for it explicitly.</p></li><li><p><strong>Automate Where Possible.</strong> Static analysis, formatting, test coverage, anything a machine can catch shouldn&#8217;t need a human reviewer&#8217;s attention. Save that attention for the decisions that actually require judgment.</p></li></ul><h2><strong>6. Small Frequent Releases</strong></h2><p>A small release is easier to manage, understand, and revert. That&#8217;s the lesson. But it&#8217;s astonishing how many teams still batch up weeks of work into a giant deploy, then spend the next three days debugging what went wrong.</p><p>The logic is simple: when something breaks in production, a small release makes it obvious which change caused the problem. A giant release with 50 commits? Good luck finding the problem.</p><p>Google also tracks velocity in <em>commits per second</em> company-wide. To maintain this, they have invested in CI/CD infrastructure that makes it easy to deploy small changes. Feature flags enable them to separate &#8220;deploying code&#8221; from &#8220;turning on a feature,&#8221; so they can deploy code continuously even if the feature is not ready for end-users.</p><p>The research by <a href="https://dora.dev/">DORA (DevOps Research and Assessment)</a> confirms this with data: teams that perform continuous delivery, with daily or hourly releases, achieve superior results across all fronts: speed, quality, stability, and developer satisfaction.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vV_D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vV_D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!vV_D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!vV_D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!vV_D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vV_D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How To Measure Developer Productivity? | by Dr Milan Milanovi&#263; | Medium&quot;,&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="How To Measure Developer Productivity? | by Dr Milan Milanovi&#263; | Medium" title="How To Measure Developer Productivity? | by Dr Milan Milanovi&#263; | Medium" srcset="https://substackcdn.com/image/fetch/$s_!vV_D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!vV_D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!vV_D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!vV_D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e026c1a-181b-4061-a98f-57cb3e4968e9_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DORA Metrics</figcaption></figure></div><p>Titus Winters explicitly <a href="https://abseil.io/resources/swe-book/html/ch16.html#release_branches">references DORA</a>'s work as providing <em>causal, rather than merely correlative,</em> evidence that trunk-based development and continuous delivery lead to better technical outcomes.</p><h2><strong>7. Upgrade Dependencies Early, Fast, and Often</strong></h2><p>Same thing as releases, but for your third-party code.</p><p>Upgrading from version 4.5.8 to 4.5.9 is no big deal. It&#8217;s a patch version update, a quick test run, and you&#8217;re done. Upgrading from version 4.5.8 to 4.8.0 might need a few changes, some deprecated APIs, and a config change, but it&#8217;s doable in an afternoon.</p><p>But upgrading from 4.5.8 to 7.0.0? Oh boy, it&#8217;s gonna hurt. Even if all the intermediate versions were backward-compatible, the sheer difference can still be huge. The implicit interfaces (Hyrum&#8217;s Law strikes again!) have changed so much that it&#8217;s a project in itself to upgrade.</p><p>The book is clear about this: &#8220;<strong>The hardest unsolved problem in software engineering is dependency management</strong>.&#8221; <a href="https://research.google/pubs/why-google-stores-billions-of-lines-of-code-in-a-single-repository/">Google&#8217;s monorepo system</a> is a big help in this regard, but for the rest of us, the best solution is simple: keep your dependencies as up to date as possible. Smaller, more frequent updates are always cheaper than larger, less frequent migrations.</p><p>One powerful insight from the book: <strong>the expert should make the update, not the consumer</strong>. If you deprecate a function, don't just tell everyone "please upgrade." They won't. You go into their code and make the update yourself. You're the expert on what needs to change; you'll do it fast. Everyone else has to context-switch, read the migration guide, find time in their sprint... it'll never happen.</p><h2>8. Measuring productivity is a must</h2><p><a href="https://abseil.io/resources/swe-book/html/ch07.html">Chapter 11</a> deserves its own section because the framework it introduces is the <strong>Goals/Signals/Metrics (GSM) framework</strong>. This is one of the most immediately useful tools in the entire book.</p><p>Before measuring anything, Google's research team asks a series of triage questions: Is this worth measuring? Will the result change a decision? Does the decision-maker trust the type of data we'll produce? If the answer to any of these is "no," they don't waste the effort. This alone is a radical idea in an industry obsessed with metrics.</p><p><strong>The GSM Framework</strong></p><p>When measurement <em>is</em> worthwhile, they structure it in three layers:</p><ul><li><p><strong>Goal</strong>: The desired end result, phrased without reference to any specific metric. (&#8221;Engineers write higher-quality code.&#8221;)</p></li><li><p><strong>Signal</strong>: How you&#8217;d know you&#8217;ve achieved the goal, what you&#8217;d <em>like</em> to measure, even if you can&#8217;t. (&#8221;Engineers report learning from the process.&#8221;)</p></li><li><p><strong>Metric</strong>: A measurable proxy for the signal, what you <em>actually</em> measure. (&#8221;Proportion of engineers reporting they learned about four relevant topics, via survey.&#8221;)</p></li></ul><p>The power of GSM is that it prevents the <em>streetlight effect</em>, measuring what&#8217;s easy to measure rather than what matters. By starting with goals and working down, you ensure that your metrics trace back to something meaningful.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zDCw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zDCw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 424w, https://substackcdn.com/image/fetch/$s_!zDCw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 848w, https://substackcdn.com/image/fetch/$s_!zDCw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 1272w, https://substackcdn.com/image/fetch/$s_!zDCw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zDCw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png" width="700" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&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_!zDCw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 424w, https://substackcdn.com/image/fetch/$s_!zDCw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 848w, https://substackcdn.com/image/fetch/$s_!zDCw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 1272w, https://substackcdn.com/image/fetch/$s_!zDCw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45c754a-1de2-4a1f-a39c-5b5a5c1a1f80_700x394.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Goals-Signals-Metrics Process</figcaption></figure></div><p><strong>QUANTS: The Five Dimensions</strong></p><p>Google&#8217;s research team divides productivity into five components to ensure that improving one dimension doesn&#8217;t quietly degrade another:</p><ul><li><p><strong>Quality of code</strong>: What is the quality of the code produced?</p></li><li><p><strong>Attention of engineers</strong>: Can engineers reach a flow state? Are they distracted?</p></li><li><p><strong>iNtellectual complexity</strong>: How much cognitive load does a task require?</p></li><li><p><strong>Tempo and velocity</strong>: How fast can engineers complete their work?</p></li><li><p><strong>Satisfaction</strong>: How happy are engineers with their tools, products, and work?</p></li></ul><p>The book's sharpest warning concerns individual measurement: <strong>"If productivity metrics are used for performance reviews, engineers will be quick to game the metrics, and they will no longer be useful." </strong>The only way to make these measurements work is to measure aggregate effects, never individuals. Google's productivity research team includes behavioral economists specifically to understand incentive structures and prevent Goodhart's Law from corrupting their data.</p><p>One surprising finding: "It has routinely been our experience at Google that when the quantitative and qualitative metrics disagree, it was because the quantitative metrics were not capturing the expected result."</p><p>The critical takeaway: <strong>if a measurement isn&#8217;t actionable, it isn&#8217;t worth taking</strong>. After every research study, Google&#8217;s team prepares a list of concrete recommendations: a new tool feature, a documentation improvement, a process change. If the result can&#8217;t drive an action, the measurement was wasted.</p><h2>9. <strong>The Culture Chapters: The Stuff Nobody Wants to Talk About</strong></h2><p>The <a href="https://abseil.io/resources/swe-book/html/part2.html">first several chapters of the book</a> address culture: teamwork, knowledge sharing, psychological safety, and leadership. As Titus Winters noted in his <a href="https://www.youtube.com/watch?v=7zZ0u5aClAg">GOTO talk</a>, software engineering has always been about two things: <strong>time and people</strong>. We teach engineers to code on their own, but once they join a team, it becomes a team sport.</p><div id="youtube2-NNMnbBf0Itw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NNMnbBf0Itw&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/NNMnbBf0Itw?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><p>Some ideas that resonated with me:</p><ul><li><p><strong>The Genius Myth is toxic.</strong> True success is achieved through team effort, not by a single 10x developer. The Genius Myth is just another manifestation of our <strong>insecurity</strong>. The book cites <a href="https://rework.withgoogle.com/intl/en/guides/understanding-team-effectiveness">Project Aristotle</a>, Google&#8217;s famous study that discovered psychological safety is the most critical component of an effective team.&#8203; Read here why and how this impacts engineering teams: </p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:147708312,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/why-do-some-engineering-teams-consistently&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;Why do some engineering teams consistently outperform others?&quot;,&quot;truncated_body_text&quot;:&quot;What makes a great team stand out? It&#8217;s not just technical skills or years of experience&#8212;it&#8217;s something deeper. Over two decades, I&#8217;ve seen how some teams thrive while others struggle, and the difference often comes down to how people interact, communicate, and support each other. Building a high-performing team requires more than just assembling talent&#8230;&quot;,&quot;date&quot;:&quot;2024-12-19T16:03:19.068Z&quot;,&quot;like_count&quot;:44,&quot;comment_count&quot;:3,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3013d0ff-7db5-4a90-91a5-eeaed25e99ba_1042x1040.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, actionable insights on software engineering and leadership. Trusted by engineers at Amazon, Microsoft, and Google, and students at MIT and Stanford.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[64099,458709],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/why-do-some-engineering-teams-consistently?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Why do some engineering teams consistently outperform others?</div></div><div class="embedded-post-body">What makes a great team stand out? It&#8217;s not just technical skills or years of experience&#8212;it&#8217;s something deeper. Over two decades, I&#8217;ve seen how some teams thrive while others struggle, and the difference often comes down to how people interact, communicate, and support each other. Building a high-performing team requires more than just assembling talent&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 44 likes &#183; 3 comments &#183; Dr Milan Milanovi&#263;</div></a></div></li><li><p><strong>&#8220;Because I said so&#8221; is a leadership failure.</strong> If there&#8217;s disagreement, explain your reasoning. Lead people to a change in decision-making through teaching, not authority. As leaders, we always have power and authority, but we should not enforce it. From my experience, knowledgeable people are more likely to work with leaders who are facilitators (<a href="https://newsletter.techworld-with-milan.com/p/are-you-aware-that-you-should-use?utm_source=publication-search">servant leaders</a>) rather than authoritarians.</p></li><li><p><strong>Ask dumb questions.</strong> Titus describes chairing a C++ standards subcommittee and deliberately asking naive questions to ensure everyone in the room had truly re-learned the material before voting. Modeling that it&#8217;s OK to not know things creates a culture where people actually learn.&#8203;</p></li><li><p><strong>Delegate to the most junior person who can handle it</strong> (with appropriate oversight). This is a direct counter to Fred Brooks's &#8220;surgical team&#8221; model. The team grows, and the senior engineers get freed up to tackle the next impossible thing.&#8203;</p></li><li><p><strong>The reason most teams don&#8217;t fail because of bad code is that they lack trust. </strong>We can go back far enough in any team conflict, and you&#8217;ll find a crack in one of three things: <strong>humility</strong> (you believe your way is the only way), <strong>respect</strong> (you stopped caring about the person, not just the work), or <strong>trust</strong> (you&#8217;d rather do it yourself than let someone else drive).</p></li><li><p><strong>Learn from your mistakes by documenting them</strong>. When something bad happens, like an incident, create a postmortem. A postmortem isn&#8217;t about blame, but about recording the truth while it&#8217;s still hot. Inside, we should include the entire timeline, the actual root cause (not something generic like &#8220;human error&#8221;), and finish with action items that have real people and real deadlines. The lessons section is where most teams skimp. That&#8217;s a problem. That&#8217;s the part that makes the next incident shorter.</p></li></ul><p>Taking all of this into account will lay the foundations on which your team can create significant value and not lose control when things get hard.</p><h2>10. What the authors admit doesn't work, even at Google</h2><p>Titus Winters is remarkably clear about the book&#8217;s limitations. In a <a href="https://www.youtube.com/watch?v=7zZ0u5aClAg">GOTO podcast </a>interview, he describes the dependency management chapter as giving him &#8220;literal nightmares&#8221;: there are many ideas about what doesn&#8217;t work, but no clear, cheap, scalable solution. His guiding principle: <strong>&#8220;I prefer any number of version control problems over a single dependency management problem.&#8221;</strong> The book&#8217;s critique of semantic versioning is pointed: <a href="https://semver.org/">SemVer</a> is fundamentally an <em>estimate</em>, not a proof of compatibility. A major version bump due to a breaking change in the function Bar falsely blocks upgrades for consumers who only use the function Foo. And patch versions, supposedly safe, routinely violate Hyrum&#8217;s Law.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P_g7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P_g7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P_g7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P_g7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P_g7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P_g7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg" width="566" height="371.3464837049743" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1166,&quot;resizeWidth&quot;:566,&quot;bytes&quot;:60790,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.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_!P_g7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P_g7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P_g7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P_g7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ca70cbc-3908-45c6-8a3c-99ff282daed4_1166x765.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Semantic Versioning</figcaption></figure></div><p>Winters also admits the culture chapters are &#8220;a little bit aspirational&#8221;; they don&#8217;t perfectly describe Google&#8217;s reality. Critics note the irony of Google recommending &#8220;don&#8217;t release things without a plan to support them long-term&#8221; while maintaining a notorious <a href="https://killedbygoogle.com/">product graveyard</a>. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NKUS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NKUS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 424w, https://substackcdn.com/image/fetch/$s_!NKUS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 848w, https://substackcdn.com/image/fetch/$s_!NKUS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 1272w, https://substackcdn.com/image/fetch/$s_!NKUS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NKUS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png" width="624" height="413.33901918976545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:932,&quot;width&quot;:1407,&quot;resizeWidth&quot;:624,&quot;bytes&quot;:91327,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.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_!NKUS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 424w, https://substackcdn.com/image/fetch/$s_!NKUS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 848w, https://substackcdn.com/image/fetch/$s_!NKUS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 1272w, https://substackcdn.com/image/fetch/$s_!NKUS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8136a13b-37bc-45ec-b27a-e3c28172ac29_1407x932.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://killedbygoogle.com/">Google Graveyard</a></figcaption></figure></div><p>On the <strong>what I missed side</strong>, we can say that one of the book&#8217;s &#8220;real weaknesses&#8221; is its rare provision of empirical evidence for its claims beyond &#8220;it works for Google.&#8221; With this, the book would have had much greater value than it does.</p><h2>11. <strong>Practical Takeaways You Can Apply Tomorrow</strong></h2><p>Not every Google practice translates to every organization. The authors themselves are explicit about this: <em>don&#8217;t blindly copy what Google does</em>. Understand the <em>why</em> behind their methods and adapt the <em>what</em> to your context.</p><p>That said, here&#8217;s what&#8217;s universally actionable:</p><ul><li><p><strong>Write tests for everything you care about.</strong> The Beyonc&#233; Rule works at any scale.</p></li><li><p><strong>Review the process, not just the code.</strong> Define who gives sign-off on correctness, ownership, and readability on your team. If one person is doing all three for every change, that's a bottleneck. </p></li><li><p><strong>Invest in your build system and CI pipeline.</strong> The ROI compounds over time.</p></li><li><p><strong>Ship smaller, more frequently.</strong> Whatever your current release cadence is, try halving it.</p></li><li><p><strong>Keep dependencies fresh.</strong> Set up Dependabot or Renovate and stop ignoring those PRs.</p></li><li><p><strong>Replace mocks with fakes where possible.</strong> Your test suite will thank you.</p></li><li><p><strong>Measure with intent.</strong> Use the GSM framework before creating any new dashboard or metric.</p></li><li><p><strong>Treat documentation like code.</strong> Review it, maintain it, deprecate it when it&#8217;s stale.</p></li><li><p><strong>Create psychological safety on your team.</strong> It&#8217;s the foundation on which everything else is built.</p></li></ul><p>The book is available for free at <strong><a href="https://abseil.io/resources/swe-book/html/toc.html">abseil.io/resources/swe-book</a></strong>, and it&#8217;s one of the best investments of reading time for any software engineer or tech lead.</p><div><hr></div><h2>Bonus: The Top 100 Software Engineering Books on Goodreads</h2><p>I analyzed the top 100 software engineering books on <a href="https://www.goodreads.com/">Goodreads</a>, and here are the results.</p><ul><li><p><strong>The most-read book isn&#8217;t the highest-rated.</strong> The Phoenix Project has 49,000+ ratings at 4.26. Clean Code has 23,000+ at 4.36. &#8220;Designing Data-Intensive Applications&#8221; beats both with a 4.7 and only 10,000 ratings.</p></li><li><p><strong>Old books still deliver.</strong> K&amp;R&#8217;s &#8220;The C Programming Language&#8221; (1978) has a rating of 4.44. &#8220;Structure and Interpretation of Computer Programs&#8221; (1984) scores 4.47. The classics aren&#8217;t nostalgia, they&#8217;re still the standard.</p></li><li><p><strong>System design content is rising fast.</strong> Alex Xu&#8217;s System Design Interview books both rank in the top 15. Five years ago, these didn&#8217;t exist.</p></li><li><p><strong>The bottom of the list is telling.</strong> &#8220;Effective DevOps&#8221; sits at 3.41. Some architecture pattern books hover around 3.7. High expectations, mixed execution.</p></li></ul><p>The full visualization shows all 100 books ranked by rating, color-coded from green (4.7) to red (3.4).</p><p>Here is <strong><a href="https://gist.github.com/milanm/e3394edf78145445cf9f6b85e0e00ea8">the full list</a></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_!HpeW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HpeW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 424w, https://substackcdn.com/image/fetch/$s_!HpeW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 848w, https://substackcdn.com/image/fetch/$s_!HpeW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 1272w, https://substackcdn.com/image/fetch/$s_!HpeW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HpeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png" width="1456" height="974" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/628e4686-672b-47d4-9027-9626da227a98_2340x1566.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1757626,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/147791395?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.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_!HpeW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 424w, https://substackcdn.com/image/fetch/$s_!HpeW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 848w, https://substackcdn.com/image/fetch/$s_!HpeW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 1272w, https://substackcdn.com/image/fetch/$s_!HpeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628e4686-672b-47d4-9027-9626da227a98_2340x1566.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Top 100 Software Engineering Books, Goodreads Ratings</figcaption></figure></div><div><hr></div><h2><strong>More ways I can help you</strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 260K+ followers in under two years, plus a 49K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong>. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a></strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Learn fundamentals, not frameworks]]></title><description><![CDATA[Frameworks have a half-life of 3 years. The fundamentals behind them? Decades. Here's how to spend your learning time wisely.]]></description><link>https://newsletter.techworld-with-milan.com/p/learn-fundamentals-not-frameworks</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/learn-fundamentals-not-frameworks</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 12 Feb 2026 16:02:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9e3c441c-8bd4-4fcd-b1cc-f677340091bd_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We, developers, love new things, and most of us are early adopters. When something emerges, we rush to try it (hello Moltbot). We check tutorials, do &#8220;hello world&#8221; apps, and this feels good because we learned something new.</p><p>The problem is that most knowledge in our industry has a short lifespan. Most frameworks peak between 2 and 5 years. When you become really good at that technology, it could already become a legacy. </p><p>With the rise of AI code generators, it has accelerated much faster than before. People are vibe-coding with technologies they never learned properly.</p><p>On the other hand, people who invest in fundamentals can quickly adopt new technologies because they understand the underlying principles. So, instead of rushing to learn a new framework this month, we should <strong>spend more time learning things that don&#8217;t change.</strong></p><p>In the rest of the article, we are going to talk about:</p><ol><li><p><strong>Framework lifecycles really are short</strong>. If you&#8217;ve been around long enough, you&#8217;ve watched popular frameworks rise, peak, and fade within a few years. The data clearly shows this: Frontend frameworks have a half-life measured in months.</p></li><li><p><strong>Why fundamentals matter</strong>. Programming languages differ, but bad naming is bad everywhere. Frameworks change, but design patterns don&#8217;t. When your app has problems in production, the answer never comes from the docs. It comes from understanding how things actually work and learning from that.</p></li><li><p><strong>AI amplifies fundamentals and exposes their absence</strong>. AI writes 41% of code today, but it can&#8217;t make architectural trade-offs or read between the lines of a business requirement. Without fundamentals, debugging AI-generated code is just guessing.</p></li><li><p><strong>Meet the Expert Generalist.</strong> Every wave of automation was supposed to replace developers: compilers, cloud, and now AI. Instead, each one raised the bar. The developers who thrive aren&#8217;t prompt engineers, but generalists who understand systems, trade-offs, and intent.</p></li><li><p><strong>The 80/20 Rule of Learning</strong>. Spend 80% of your learning time on fundamentals and 20% on frameworks. You&#8217;ll pick up frameworks on the job anyway. Nobody&#8217;s going to teach you distributed systems or clean architecture for you.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="http://qodo.ai/blog/introducing-qodo-2.0-agentic-code-review?utm_source=tech-world-with-milan&amp;utm_medium=newsletter&amp;utm_campaign=qodo-2.0-launch">Multi-Agent Code Review That Catches Real Issues (Sponsored)</a></h2><p><em>Code review's been stuck. Either it's slow (manual), noisy (AI tools), or misses critical things. Qodo 2.0 is different. With the highest precision &amp; recall, it finds critical issues that other code review tools miss, while limiting noise. By learning from your codebase &amp; PR history, Qodo provides fixes that developers actually use.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="http://qodo.ai/blog/introducing-qodo-2.0-agentic-code-review?utm_source=tech-world-with-milan&amp;utm_medium=newsletter&amp;utm_campaign=qodo-2.0-launch" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cKYh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 424w, https://substackcdn.com/image/fetch/$s_!cKYh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 848w, https://substackcdn.com/image/fetch/$s_!cKYh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 1272w, https://substackcdn.com/image/fetch/$s_!cKYh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cKYh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png" width="600" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:180153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;http://qodo.ai/blog/introducing-qodo-2.0-agentic-code-review?utm_source=tech-world-with-milan&amp;utm_medium=newsletter&amp;utm_campaign=qodo-2.0-launch&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.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_!cKYh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 424w, https://substackcdn.com/image/fetch/$s_!cKYh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 848w, https://substackcdn.com/image/fetch/$s_!cKYh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 1272w, https://substackcdn.com/image/fetch/$s_!cKYh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af8aae5-94d7-4213-9abb-cec68fef0890_600x300.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://qodo.ai/blog/introducing-qodo-2.0-agentic-code-review?utm_source=tech-world-with-milan&amp;utm_medium=newsletter&amp;utm_campaign=qodo-2.0-launch&quot;,&quot;text&quot;:&quot;Learn how&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="http://qodo.ai/blog/introducing-qodo-2.0-agentic-code-review?utm_source=tech-world-with-milan&amp;utm_medium=newsletter&amp;utm_campaign=qodo-2.0-launch"><span>Learn how</span></a></p><div><hr></div><h2>1. Framework lifecycles really are short</h2><p>If you&#8217;ve been around this industry long enough, you&#8217;ll have witnessed many a framework come and go. Ever heard of frameworks like GWT, Apache Tapestry, Backbone.js, or Knockout.js? Yes, they were very popular back in the day, and you needed to read a lot of docs to understand them.</p><p>An <a href="https://stackoverflow.blog/2018/01/11/brutal-lifecycle-javascript-frameworks/">analysis by Stack Overflow</a> of JavaScript framework traffic clearly shows this trend. The rise, peak, and gradual decline all occur within a couple of years. Around 2011, Backbone, Knockout, and Ember were the &#8216;it&#8217; frameworks. By 2015, Angular 1.x was no longer supported, and Angular 2.0 required developers to rewrite their applications.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RvDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RvDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 424w, https://substackcdn.com/image/fetch/$s_!RvDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 848w, https://substackcdn.com/image/fetch/$s_!RvDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 1272w, https://substackcdn.com/image/fetch/$s_!RvDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RvDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png" width="625" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:625,&quot;resizeWidth&quot;:null,&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_!RvDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 424w, https://substackcdn.com/image/fetch/$s_!RvDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 848w, https://substackcdn.com/image/fetch/$s_!RvDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 1272w, https://substackcdn.com/image/fetch/$s_!RvDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcc295eb-7be2-49b0-8dae-3d85671db671_625x397.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">% of Stack Overflow questions over the years (Source: <a href="https://stackoverflow.blog/2018/01/11/brutal-lifecycle-javascript-frameworks/">StackOverflow</a>)</figcaption></figure></div><p>There&#8217;s even a hierarchy of technology longevity: language choices last 10+ years, databases 7&#8211;10 years, backend frameworks 3&#8211;5 years, and frontend frameworks around 18 months. If you&#8217;re debating all of those equally, you&#8217;re just wasting time.</p><p>The data on the code half-life also confirms this. Erik Bernhardsson has <a href="https://erikbern.com/2016/12/05/the-half-life-of-code">analyzed 26+ open-source projects</a> and calculated <strong>a median half-life of 3.33 years</strong>. Frontend frameworks such as Angular are at the very short end of this scale, at just 0.32 years, whereas Linux has a figure of 6.6 years. Again, the further up the stack you go, the shorter the lifespan becomes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OPC3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OPC3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 424w, https://substackcdn.com/image/fetch/$s_!OPC3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 848w, https://substackcdn.com/image/fetch/$s_!OPC3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 1272w, https://substackcdn.com/image/fetch/$s_!OPC3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OPC3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png" width="1300" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;git projects survival exp fit&quot;,&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="git projects survival exp fit" title="git projects survival exp fit" srcset="https://substackcdn.com/image/fetch/$s_!OPC3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 424w, https://substackcdn.com/image/fetch/$s_!OPC3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 848w, https://substackcdn.com/image/fetch/$s_!OPC3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 1272w, https://substackcdn.com/image/fetch/$s_!OPC3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61e486ec-6d84-4d2a-9010-f7f8189d9863_1300x800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">% of commits still present in the code base over time (Source: <a href="https://erikbern.com/2016/12/05/the-half-life-of-code">Erik Bernhardsson blog</a>)</figcaption></figure></div><h2>2. Why fundamentals matter</h2><p>When you understand fundamentals, you understand the principles and concepts on which various frameworks and programming languages work. This helps you become adaptable and flexible in programming, using various technologies, or when the framework you&#8217;re using fails to do something.</p><p>Programming languages differ, yet design smells are similar across them. Bad naming is bad in all languages. Frameworks are different, while<em> design patterns are similar</em>. Technological stacks differ, but the principles of concurrency, data structures, distributed systems, and clean architecture are similar.</p><p>A good understanding of fundamentals helps you use these frameworks in a more <em>efficient and effective manner</em>, since you also know how to make those frameworks suitable for what you need. You&#8217;re not just following a tutorial, but you are understanding what is happening under the hood. </p><p>Take, for instance, the web application that allows users to upload/share images. Let's suppose this web application was written using a popular web framework, such as Ruby on Rails. Maybe you vibe-coded it fast, and it works well at the start. But over time, as your user base grows, you hit performance issues. Now, what do you do? Identifying root cause is not easy, as you need to understand how your code works on the infrastructure, what is happening there, how to read logs (and understand them), etc. A developer who knows fundamentals can identify such a bottleneck and propose a solution, e.g., use CDN, optimize image shares, add (proper) caching, use a different kind of storage, etc. </p><p>So, the solution doesn&#8217;t come from the docs or coding agents. It comes from a deep understanding of how things work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uXbw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uXbw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!uXbw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!uXbw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!uXbw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uXbw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1888629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.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_!uXbw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!uXbw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!uXbw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!uXbw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6038866e-b913-48a4-8b3b-ab37dfb9072c_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Algorithms as fundamentals</figcaption></figure></div><blockquote><h3><strong>Can you learn fundamentals through frameworks?</strong></h3><p><em>We should note that frameworks can be a good way to learn basic concepts, like when learning Ruby with Rails, you can learn about ACID, ORMS, etc. Learning a thing or two about functional programming with React too, or learning CSS with Bootstrap. </em></p><p><em>There is also the fact that nobody really does everything from first principles. You didn&#8217;t learn programming by reading papers by Turing. You learned it in a welcoming environment where you can experiment and get immediate feedback. The famous debate between <a href="https://leancrew.com/all-this/2011/12/more-shell-less-egg/">Knuth and McIlroy</a> tells us everything we need to know. Don Knuth wrote a 10-page literate programming document from first principles for a word-frequency counter. Doug McIlroy solved it in a 6-line shell script using Unix tools. &#8220;If we did everything from first principles, then nothing would get done.&#8221;</em></p><p><em>And then of course there&#8217;s the deeper question: what exactly are &#8220;Fundamentals&#8221; anyway? Some will say it&#8217;s algorithms and math, others will point to software engineering, which encompasses design, testing, deployment, and lifecycle issues.</em></p><p><em>The distinction between &#8220;Fundamentals&#8221; and &#8220;Frameworks&#8221; is much less clear than we think.</em></p></blockquote><h2>3. AI amplifies fundamentals and exposes their absence</h2><p>With AI tools generating an <a href="https://www.secondtalent.com/resources/ai-coding-assistant-statistics/">estimated 41% of all code today</a>, you might think the fundamentals matter less. Why would we bother to understand what&#8217;s underneath if AI writes the code?</p><p>Because <em>AI writes code, but you own the responsibility</em>.</p><p>AI coding assistants are great for syntax, boilerplate code, and pattern suggestions. However, they&#8217;re bad with context. They don&#8217;t attend the meetings where the senior leadership team talks about cost vs. performance. They don&#8217;t understand that a customer service system has to be designed for five 9s, whereas the in-house dashboard can tolerate downtime. They can&#8217;t read between the lines when someone says the application has got to be fast, but really they mean &#8220;make it cheap.&#8221; They cannot connect the dots.</p><p>The <a href="https://www.secondtalent.com/resources/ai-coding-assistant-statistics/">statistics</a> show the risks, too: <strong>48% of AI-generated code is at high risk of security vulnerabilities</strong>, and defects are 1.7 times more likely to be found in AI-generated code without proper review. Only 33% of developers trust AI-generated code completely. That means most AI code needs the same scrutiny as junior developer code. Someone has to understand it enough to catch what's wrong.</p><p>Debugging, reviewing, and validating AI code have thus become crucial skills, and you cannot do them without a strong foundation!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vThW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vThW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 424w, https://substackcdn.com/image/fetch/$s_!vThW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 848w, https://substackcdn.com/image/fetch/$s_!vThW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 1272w, https://substackcdn.com/image/fetch/$s_!vThW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vThW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png" width="1024" height="597" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:597,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&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_!vThW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 424w, https://substackcdn.com/image/fetch/$s_!vThW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 848w, https://substackcdn.com/image/fetch/$s_!vThW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 1272w, https://substackcdn.com/image/fetch/$s_!vThW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cccc8c4-7a6d-43e4-9a0f-23859b26b0ed_1024x597.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Security risks in AI-Generated Code and APIs (Source: <a href="https://www.secondtalent.com/resources/ai-coding-assistant-statistics/">Secondtalent</a>)</figcaption></figure></div><p>Without fundamentals, debugging code written by an AI is almost impossible. You won&#8217;t be able to explain why a program is working, when a program will fail, or even be able to adjust a program to work for unknown scenarios. Your AI helper could help, but it also leads you to the wrong road, where the price of fixing it would be too high.</p><p>So, we can say that the most valuable developers in the age of AI are not those who can generate the best prompts. It is someone who knows what is happening behind the scenes. Someone who knows they can take output from AI and improve it, and secure it against long-term failure. </p><p><strong>AI without fundamentals is a liability.</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_!EcK1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EcK1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 424w, https://substackcdn.com/image/fetch/$s_!EcK1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 848w, https://substackcdn.com/image/fetch/$s_!EcK1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 1272w, https://substackcdn.com/image/fetch/$s_!EcK1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EcK1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png" width="668" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:668,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49884,&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://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.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_!EcK1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 424w, https://substackcdn.com/image/fetch/$s_!EcK1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 848w, https://substackcdn.com/image/fetch/$s_!EcK1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 1272w, https://substackcdn.com/image/fetch/$s_!EcK1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F014efd3c-5c09-4a76-94c5-cee645393e44_668x382.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">When focus is on fundamentals vs when focus is on frameworks</figcaption></figure></div><h2>4. Meet the Expert Generalist</h2><p>Every great advance in program development has followed the same pattern. Early assembly-language programmers were told that the existence of compilers would leave them behind. Instead, it enabled them to develop at a much higher level of abstraction. The operations engineer was told that cloud computing would put their profession out of business. Instead, it has enabled an explosion of new projects, companies, and engineering jobs.</p><p>&#8203;This is the same with AI. <strong>Lowering barriers to entry doesn&#8217;t eliminate the need for skills; it increases it.</strong> As AI does more and more of the code, inevitably, there is less and less of the hard work left for humans: &#8220;understanding systems, making architectural decisions, making trade-offs, and expressing intent.&#8221;</p><p>This is well explained by <strong><a href="https://en.wikipedia.org/wiki/Jevons_paradox">the Jevons Paradox</a></strong>. In 1865, economist William Jevons had observed something interesting: as steam engines became more efficient at burning coal, coal consumption went up, not down. Why? Efficiency unlocked new use cases. Suddenly, coal made economic sense for industries that had been unable to afford it before. </p><p>This effect is now showing in tech. As the costs of AI tokens dropped 10x, usage went up 100x. Companies now use more tokens per task because they can afford higher accuracy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hGcy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hGcy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 424w, https://substackcdn.com/image/fetch/$s_!hGcy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 848w, https://substackcdn.com/image/fetch/$s_!hGcy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 1272w, https://substackcdn.com/image/fetch/$s_!hGcy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hGcy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png" width="790" height="791" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:791,&quot;width&quot;:790,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85962,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.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_!hGcy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 424w, https://substackcdn.com/image/fetch/$s_!hGcy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 848w, https://substackcdn.com/image/fetch/$s_!hGcy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 1272w, https://substackcdn.com/image/fetch/$s_!hGcy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dff7e2-e496-4a98-b5dd-d927fc6fe69e_790x791.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Jevons&#8217; Paradox</figcaption></figure></div><p>As Renaissance scholars pioneered the integration of the arts, sciences, and engineering, developers who excel in this AI-enhanced world must reinvent themselves as polymaths, as Werner Vogels notes in his article &#8220;<a href="https://thekernel.news/articles/dawn-of-the-renais">The Dawn of the Renaissance Developer</a>&#8221;. They realize that systems are living, dynamic environments that constantly change, affecting services, APIs, databases, infrastructure, and human interactions. They are masters of what they produce, in terms of quality, safety, and intent. They are also knowledgeable in areas where AI cannot assist.</p><p>That said, we need to become <strong>Expert Generalists</strong> by improving our curiosity, systems thinking, systems design, architecture, communication skills, ownership, business acumen, and more. Also, we need to become good at code verification and review, because when AI makes mistakes, we need to know how to handle them.</p><p>The &#8220;expert generalist&#8221; might be thought of as an engineer who can walk into a messy new problem, quickly understand the system, identify the right levers, and solve it without hand-holding, weeks later. Not a jack-of-all-trades, but a high-agency connector with depth in all the important areas.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Or5G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Or5G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 424w, https://substackcdn.com/image/fetch/$s_!Or5G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 848w, https://substackcdn.com/image/fetch/$s_!Or5G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 1272w, https://substackcdn.com/image/fetch/$s_!Or5G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Or5G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png" width="861" height="487" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:487,&quot;width&quot;:861,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:169285,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.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_!Or5G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 424w, https://substackcdn.com/image/fetch/$s_!Or5G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 848w, https://substackcdn.com/image/fetch/$s_!Or5G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 1272w, https://substackcdn.com/image/fetch/$s_!Or5G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51fe41fb-153a-459f-bd11-f5348cf7571f_861x487.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Expert Generalist</figcaption></figure></div><h2>5. The 80/20 Rule of Learning</h2><p>So, how do you schedule your learning time to accomplish this? Well, there is a powerful heuristic to consider: 80 percent of your learning time should be spent on fundamental topics, and 20 percent on frameworks, libraries, and tools.</p><p>Why? Well, because you&#8217;ll probably end up learning all those frameworks on the job, dealing with real-world problems. Nobody will teach you patterns for distributed computing, clean code, and good system design on the job. That&#8217;s all on you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gJL8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gJL8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 424w, https://substackcdn.com/image/fetch/$s_!gJL8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 848w, https://substackcdn.com/image/fetch/$s_!gJL8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 1272w, https://substackcdn.com/image/fetch/$s_!gJL8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gJL8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png" width="552" height="267.1800467653936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:621,&quot;width&quot;:1283,&quot;resizeWidth&quot;:552,&quot;bytes&quot;:493401,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.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_!gJL8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 424w, https://substackcdn.com/image/fetch/$s_!gJL8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 848w, https://substackcdn.com/image/fetch/$s_!gJL8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 1272w, https://substackcdn.com/image/fetch/$s_!gJL8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ab24aa-b42b-4d4d-8f60-5198860ee0ed_1283x621.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">80% of the time to learn fundamentals, 20% for frameworks (following the Pareto Principle)</figcaption></figure></div><p>When you start to learn something, think about how the <strong>Lindy Effect</strong> affects it. This effect states that&nbsp;the longer something has been in use, the more likely it is to continue being used. C, SQL, HTTP, and REST are decades old, but still everywhere. That hot new framework will probably be gone in two years. So don't rush to learn every new tool. </p><p>Remember, time is your best filter. <strong>Invest in fundamentals that transfer across jobs, teams, and domains</strong>. Let the hype settle. What survives is worth learning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UOUP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UOUP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 424w, https://substackcdn.com/image/fetch/$s_!UOUP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 848w, https://substackcdn.com/image/fetch/$s_!UOUP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 1272w, https://substackcdn.com/image/fetch/$s_!UOUP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UOUP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png" width="1285" height="897" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:897,&quot;width&quot;:1285,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:96393,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.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_!UOUP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 424w, https://substackcdn.com/image/fetch/$s_!UOUP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 848w, https://substackcdn.com/image/fetch/$s_!UOUP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 1272w, https://substackcdn.com/image/fetch/$s_!UOUP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F140fad01-a534-49c9-ad07-e8f7579026d3_1285x897.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Lindy Effect</figcaption></figure></div><p>So, when talking about the fundamentals, these are the basics that are worth your time reading about:</p><ul><li><p><strong>Algorithms</strong>. The fundamentals of problem-solving. One should always be aware of time and space complexity when making trade-offs, whether or not you are coding a sorting algorithm.</p></li><li><p><strong>Data Structures</strong>. Understanding when to use a hash map, a tree, a queue, etc., is like the difference between writing code that works and writing code that works well.</p></li><li><p><strong>Software Design &amp; Architecture</strong>. Patterns such as MVC, microservices versus monoliths, SOLID principles, and clean, modular code guide how to organize a system. A developer who can design clean abstractions and APIs can adopt any framework, since good design logic doesn&#8217;t change.</p></li><li><p><strong>Design Patterns</strong>. Frameworks come and go, but patterns like Observer, Strategy, and Factory seem ubiquitous. Once you recognize these, they seem to pervade all frameworks.</p></li><li><p><strong>Distributed Computing Patterns</strong>. In the age of Microservices and Cloud Native Applications, knowledge of the CAP Theorem, Eventual Consistency, and Fault Tolerance is vital.</p></li><li><p><strong>Testing</strong>. Knowing the ins and outs of writing good tests, the concept of test pyramids, and TDD gives you the courage to refactor and change code without fear.</p></li><li><p><strong>System Design</strong>. Arguably, the biggest value of this skill, and one that cannot be understated, begins at the senior level and beyond.</p></li><li><p><strong>Clean Code</strong>. Writing code that other humans (and future you) can understand. That skill is what compounds most over a career.</p></li></ul><p>If you&#8217;re really serious about investing in fundamentals, the following books have stood the test of time and will continue to do so:</p><ul><li><p><strong><a href="https://amzn.to/4rBxtRp">The Pragmatic Programmer</a></strong> by David Thomas and Andrew Hunt is the classic guide to craftsmanship in software development. It&#8217;s about thinking about how to construct software, not just about writing it.</p></li><li><p><strong><a href="https://amzn.to/45V26ZU">Code Complete 2</a></strong> by Steve McConnell: The bible of software construction. Pretty dense but very practical and applicable for any language and stack.</p></li><li><p><strong><a href="https://amzn.to/4ajYqlU">Designing Data-Intensive Applications</a></strong> by Martin Kleppmann. It explains how distributed systems work, covering storage engines, replication, partitioning, transactions, and consistency models. Here you can learn why your database behaves the way it does and how to build systems that scale without falling apart. Check <a href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing">my detailed review of the book</a>.</p></li><li><p><strong><a href="https://amzn.to/4r5JajH">Design Patterns: Elements of Reusable Object-Oriented Software by the Gang of Four</a></strong>. The original patterns book. Some patterns have fallen out of favor, but understanding them gives you a vocabulary for discussing design across any team or technology.</p></li><li><p><strong><a href="https://amzn.to/4a2DxN5">Introduction to Algorithms</a></strong> by Cormen, Leiserson, Rivest, and Stein (CLRS)- The bible of algorithms. You don&#8217;t have to read it cover to cover, but it is worth keeping on your shelf and referring to it regularly.</p></li><li><p><strong><a href="https://amzn.to/4kGM2kN">Clean Code</a></strong> by Robert C. Martin. Opinionated and sometimes controversial, but its core message about writing readable, maintainable code is universal.</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_!H07p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H07p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H07p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H07p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H07p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H07p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg" width="1456" height="1185" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1185,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&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_!H07p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H07p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H07p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H07p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cb4c1-862b-49ab-b3f1-73b9ce6c2c36_3528x2871.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Check my full book recommendations for the books that learn you fundamentals:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:144462358,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/learn-things-that-dont-change&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;Learn things that don't change &quot;,&quot;truncated_body_text&quot;:&quot;Have you ever wondered why some technologies are still around, and some have disappeared? The Lindy effect tells me developers will still use C# and SQL when I retire. This concept in technology and innovation suggests that the future life expectancy of a non-perishable item is proportional to its current age. In other words,&quot;,&quot;date&quot;:&quot;2024-05-16T15:01:42.364Z&quot;,&quot;like_count&quot;:1127,&quot;comment_count&quot;:24,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3013d0ff-7db5-4a90-91a5-eeaed25e99ba_1042x1040.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, actionable insights on software engineering and leadership. Trusted by engineers at Amazon, Microsoft, and Google, and students at MIT and Stanford.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[64099,458709],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/learn-things-that-dont-change?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Learn things that don't change </div></div><div class="embedded-post-body">Have you ever wondered why some technologies are still around, and some have disappeared? The Lindy effect tells me developers will still use C# and SQL when I retire. This concept in technology and innovation suggests that the future life expectancy of a non-perishable item is proportional to its current age. In other words&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 1127 likes &#183; 24 comments &#183; Dr Milan Milanovi&#263;</div></a></div><p>As well as my short book on <strong><a href="https://newsletter.techworld-with-milan.com/p/100-books-that-changed-my-life">100+ books that changed my life</a></strong>.</p><h2>6. Conclusion</h2><p>The next time you feel tempted to spend your weekend learning the latest &#8220;hot&#8221; framework, take a step back and ask yourself: Will this be relevant in five years&#8217; time?</p><p>Of course, frameworks come and go, and JavaScript has an overfilled graveyard of them. AI is churning out code by the minute, and while some developers are limited to programming strictly within the rules of their specific framework, they will soon be passed by. Not by AI, but by other developers who grasp what is actually happening under the hood.</p><p>Learn your frameworks, as it&#8217;s necessary to ship. But the actual meat should be the fundamentals. That&#8217;s all that carries across companies, teams, and over the decades. And they don&#8217;t expire.&#8221; <strong>In an age when AI writes code for you, fundamentals are the only things that make you adaptable and resilient.</strong></p><p>Remember, frameworks will come and go, but the underlying principles of good design will always stay. Focus on fundamentals. They don't expire, and they make learning new tools much easier.</p><div><hr></div><h2>Bonus: The Missing Semester of Your CS Education by MIT</h2><p>Check this free course at MIT called &#8220;<a href="https://missing.csail.mit.edu/">The Missing Semester of Your CS Education</a>&#8221; that covers topics no one ever tells you about: the shell, Git, debugging, profiling, continuous integration, and setting up a development environment.</p><p>The kind of skills that people use every single day, and that they had to figure out on their own.</p><p>All lectures are available online and have video recordings. It has been translated into 14 language varieties, including Serbian.</p><p>Worth bookmarking, whether you&#8217;re a junior dev or a senior engineer looking to fill in the gaps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://missing.csail.mit.edu/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xBey!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 424w, https://substackcdn.com/image/fetch/$s_!xBey!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 848w, https://substackcdn.com/image/fetch/$s_!xBey!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 1272w, https://substackcdn.com/image/fetch/$s_!xBey!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xBey!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png" width="620" height="427" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:427,&quot;width&quot;:620,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://missing.csail.mit.edu/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180406447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.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_!xBey!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 424w, https://substackcdn.com/image/fetch/$s_!xBey!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 848w, https://substackcdn.com/image/fetch/$s_!xBey!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 1272w, https://substackcdn.com/image/fetch/$s_!xBey!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef436b1a-0a72-4b23-800b-c05e0856d74e_620x427.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://missing.csail.mit.edu/&quot;,&quot;text&quot;:&quot;The Missing Semester&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://missing.csail.mit.edu/"><span>The Missing Semester</span></a></p><div><hr></div><h2><strong>More ways I can help you</strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 260K+ followers in under two years, plus a 49K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong>. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a></strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[You can code only 4 hours per day. Here’s why.]]></title><description><![CDATA[Most of us have felt it: after a few solid hours of coding, your brain starts shutting down.]]></description><link>https://newsletter.techworld-with-milan.com/p/you-can-code-only-4-hours-per-day</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/you-can-code-only-4-hours-per-day</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 29 Jan 2026 16:02:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1Bzx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You probably felt it: after a few hours of coding, your brain isn't as fresh anymore. A good day can give you maybe 3 to 4 hours of deep, focused coding. After that, quality and focus drop. Research in cognitive psychology also supports the pattern.</p><p>Across the teams I&#8217;ve led and coached, the same loop keeps showing up. Developers judge themselves by an eight-hour ideal, then feel behind when only a few hours produce real output. But high-focus work has a ceiling. Treating 3 to 4 hours as the primary objective leads to better software and less burnout.</p><p>In the rest of the article, we are going to talk about:</p><ol><li><p><strong>The cognitive ceiling.</strong> Research by Ericsson, Mark, and Newport shows that 3-4 hours is the daily maximum for concentrated effort. Beyond that, diminishing returns.</p></li><li><p><strong>Where developer time actually goes.</strong> Data reveal that the median coding time is 52 minutes/day. Meetings consume 11+ hours per week, pushing peak coding to the afternoons when mornings should be prime.</p></li><li><p><strong>The cost of interruptions.</strong> 23 minutes to recover from one interruption. For programmers, 30-45 minutes to rebuild the full context. A single meeting can destroy an entire afternoon.</p></li><li><p><strong>Flow as a force multiplier.</strong> Csikszentmihalyi&#8217;s research: 500% increase in productivity in the flow state. But flow requires 15-25 minutes of uninterrupted time just to begin.</p></li><li><p><strong>Strategies for deep work.</strong> There are four strategies of deep work listed by Newport: Monastic, Bimodal, Journalistic, and Rhythmic, and some practical techniques are time-blocking, batch communication, and focusing on</p></li><li><p><strong>Why managers should care.</strong> Protecting manager time is more valuable than adding more processes. No-meeting days, async defaults, and reasonable deadline setting provide big wins for cycle time and quality.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2>1. The cognitive ceiling is real, and lower than you think</h2><p><a href="https://calnewport.com/">Cal Newport</a>, a full-time professor of computer science at Georgetown University and author of the excellent &#8220;<a href="https://amzn.to/46cLRY5">Deep Work</a>&#8221; book [1], describes &#8220;deep work&#8221; as &#8220;<em>professional activities performed in a state of distraction-free concentration that push your cognitive capabilities to their limit</em>&#8221;. When you are in such an optimal state, you&#8217;re not only completing high-leverage work in an efficient way, but it&#8217;s also being done at an optimal quality. It&#8217;s a bit like <em>being in &#8220;<a href="https://en.wikipedia.org/wiki/Flow_(psychology)">flow</a>&#8221; or being &#8220;in the zone&#8221;</em>, a state described in psychological terms as &#8220;Cs&#237;kszentmih&#225;lyi&#8221; (full absorption and energized focus)!</p><p>But here&#8217;s the challenge: such mental strains can be limited. Newport shows us that most individuals should expect that they can perform what Newport refers to as &#8220;deep work&#8221; for an average of four hours per day. </p><p>Of course, this is further substantiated by traditional psychological research by K. Anders Ericsson, one of America&#8217;s most prominent psychological researchers. Ericsson studied competitive violinists [2], showing that they indeed engaged in &#8220;<em>concentrated blocks of practice, or 4 hours of concentrated effort, before they became tired</em>.&#8221; So, despite what certain individuals set as their objective, four hours of concentrated &#8220;deep work&#8221; is obviously an apex after which one&#8217;s performance naturally declines significantly.</p><p>Software development isn&#8217;t any different. Coding, particularly creative problem-solving or architecting systems, is mentally intensive work. Pushing beyond the 3-4 hour mark for sustained, high-concentration coding usually leads to diminishing returns. I&#8217;m sure you&#8217;ve felt it-that late-afternoon slowdown where you&#8217;ve been staring at the screen but not actually producing much. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" width="596" height="399.51866666666666" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2011,&quot;width&quot;:3000,&quot;resizeWidth&quot;:596,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a person sitting at a desk in front of a lamp&quot;,&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="a person sitting at a desk in front of a lamp" title="a person sitting at a desk in front of a lamp" srcset="https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1699430245381-ad5be3690d26?fm=jpg&amp;q=60&amp;w=3000&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Exhausted at the desk (Credits: <a href="https://unsplash.com/photos/a-person-sitting-at-a-desk-in-front-of-a-lamp-Bb_gxpV09qk">Unsplash</a>)</figcaption></figure></div><p>The pattern repeats across different domains. Famous mathematician Henri Poincar&#233; worked 2 hours in the morning and 2 hours in the evening. G.H. Hardy only worked mornings. Charles Darwin, B.F. Skinner and C.S. Lewis both worked in 3-4 hour writing schedules.</p><p>Gloria Mark&#8217;s attention research at UC Irvine [3] paints an even clearer picture. Her findings discovered we now spend an average of just 47 seconds on any screen before shifting attention, down from 2.5 minutes in 2004. &#8220;<em>Our minds are just not equipped to be able to focus for long extended periods of time</em>,&#8221; Mark says. &#8220;We have limited attentional resources or cognitive resources.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Bzx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Bzx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1Bzx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1Bzx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1Bzx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Bzx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg" width="581" height="581" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:1080,&quot;resizeWidth&quot;:581,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No alt text provided for this image&quot;,&quot;title&quot;:&quot;No alt text provided for this image&quot;,&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="No alt text provided for this image" title="No alt text provided for this image" srcset="https://substackcdn.com/image/fetch/$s_!1Bzx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1Bzx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1Bzx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1Bzx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7e443-ef62-4bd8-afa6-462527e06f05_1080x1080.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Deep Work (Source: <a href="https://sketchingdev.co.uk/sketchnotes/deep-work.html">SketchingDev.co.uk</a>)</figcaption></figure></div><h2>2. What developers actually do with their time</h2><p>The difference between perceived and actual coding time is interesting. An analysis by Software.com of more than 250,000 developers [4] found that the median developer spends only 52 minutes per day writing or editing code, or about 4 hours 21 minutes per week. Only 10% of developers code for more than 2 hours a day, while 40% code for more than 1 hour. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QzUo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QzUo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 424w, https://substackcdn.com/image/fetch/$s_!QzUo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 848w, https://substackcdn.com/image/fetch/$s_!QzUo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 1272w, https://substackcdn.com/image/fetch/$s_!QzUo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QzUo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png" width="1456" height="367" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:367,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Code time percentiles&quot;,&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="Code time percentiles" title="Code time percentiles" srcset="https://substackcdn.com/image/fetch/$s_!QzUo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 424w, https://substackcdn.com/image/fetch/$s_!QzUo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 848w, https://substackcdn.com/image/fetch/$s_!QzUo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 1272w, https://substackcdn.com/image/fetch/$s_!QzUo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1735fda4-37e6-4930-a6d5-b0e186de192c_1920x484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Code time global percentiles (Source: <a href="https://www.software.com/reports/code-time-report">Global Code Time Report</a> [4])</figcaption></figure></div><p>Where does the time go? Software engineers typically have 10.9 hours of meetings each week, according to an analysis of 1.5 million meetings done by Clockwise [5]. </p><p>Engineering managers spend 18 hours in meetings each week, almost half of a standard 40-hour workweek. Developers at large organizations have 12.2 hours of meeting time each week, whereas developers at smaller organizations have 9.7 hours.</p><p>After a day of &#8220;meetings,&#8221; &#8220;admin,&#8221; &#8220;code reviews,&#8221; and &#8220;collaboration,&#8221; engineers have a mere 19.6 hours of focus left each week, most of it in unusable chunks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PWgS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PWgS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PWgS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PWgS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PWgS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PWgS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Engineers' meeting times&quot;,&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="Engineers' meeting times" title="Engineers' meeting times" srcset="https://substackcdn.com/image/fetch/$s_!PWgS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PWgS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PWgS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PWgS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579a2b98-e249-4983-83df-043c262ee7cf_1200x600.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.getclockwise.com/eng-meeting-benchmarks">Clockwise</a> found that developers spend nearly 11 hours in meetings each week [5]</figcaption></figure></div><p>Peak coding time shows how meetings eat mornings. Software.com found that 45% of all workday coding occurs between 2 pm and 5 pm, while only 10% occurs between 9 am and 11 am. Developers are not naturally afternoon coders. Their mornings are just consumed by standups, syncs, and ceremonies. As the report itself notes, &#8220;<em>If more companies protected mornings, we might see an increase in the global average code time per day</em>.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vRgr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vRgr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 424w, https://substackcdn.com/image/fetch/$s_!vRgr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 848w, https://substackcdn.com/image/fetch/$s_!vRgr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 1272w, https://substackcdn.com/image/fetch/$s_!vRgr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vRgr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png" width="1456" height="1361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1361,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Code time percentiles&quot;,&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="Code time percentiles" title="Code time percentiles" srcset="https://substackcdn.com/image/fetch/$s_!vRgr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 424w, https://substackcdn.com/image/fetch/$s_!vRgr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 848w, https://substackcdn.com/image/fetch/$s_!vRgr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 1272w, https://substackcdn.com/image/fetch/$s_!vRgr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F737ad435-6cd7-476c-bef1-91cdcec34a25_1920x1795.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Code time per day (Source: <a href="https://www.software.com/reports/code-time-report">Global Code Time Report</a> [4])</figcaption></figure></div><h2>3. The high cost of interruptions</h2><p>An interruption, however, comes with a hidden cost. According to <a href="https://ics.uci.edu/~gmark/chi08-mark.pdf">Gloria Mark&#8217;s research</a> [3],<strong> </strong>it takes a person exactly 23 minutes and 15 seconds to fully resume a prior task after an interruption. </p><p>For programmers, however, this cost is much higher. According to research conducted at Georgia Institute of Technology [6], it takes 10-15 minutes for programmers to resume their work by starting to edit their code, but a full rebuilding of their prior mental context takes 30-45 minutes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!khrm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!khrm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 424w, https://substackcdn.com/image/fetch/$s_!khrm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 848w, https://substackcdn.com/image/fetch/$s_!khrm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!khrm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!khrm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png" width="542" height="478.717032967033" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1286,&quot;width&quot;:1456,&quot;resizeWidth&quot;:542,&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_!khrm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 424w, https://substackcdn.com/image/fetch/$s_!khrm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 848w, https://substackcdn.com/image/fetch/$s_!khrm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!khrm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4534ee-9760-470b-9964-b7cf96c5716f_1596x1410.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The 5min meeting with a developer (Y-axis: productivity, X-axis: time)</figcaption></figure></div><p>This dynamic is captured perfectly by Paul Graham in his influential 2009 essay on<a href="https://paulgraham.com/makersschedule.html"> the maker&#8217;s schedule</a>: &#8220;<em>For someone on the maker&#8217;s schedule, having a meeting is like throwing an exception. It doesn&#8217;t merely cause you to switch from one task to another; it changes the mode in which you work</em>.&#8221; </p><p>A single meeting doesn&#8217;t just destroy its allotted time; it &#8220;<em>can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in.</em>&#8221; Even anticipating an afternoon meeting makes developers &#8220;slightly less likely to start something ambitious in the morning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8kef!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8kef!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8kef!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8kef!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8kef!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8kef!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg" width="338" height="478.8333333333333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:540,&quot;resizeWidth&quot;:338,&quot;bytes&quot;:34642,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/156228268?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.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_!8kef!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8kef!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8kef!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8kef!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb35598d7-a4c3-428c-aab4-b6e276b1e415_540x765.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A meeting is much more than the time scheduled for it</figcaption></figure></div><p>Learn more about why context-switching is the main productivity killer:<br></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:147668556,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/context-switching-is-the-main-productivity&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;Context-switching is the main productivity killer for developers&quot;,&quot;truncated_body_text&quot;:&quot;Have you ever wondered what the biggest productivity killer for developers is? There are many, but one stands out&#8212;and it&#8217;s often underestimated.&quot;,&quot;date&quot;:&quot;2025-02-06T16:00:43.376Z&quot;,&quot;like_count&quot;:168,&quot;comment_count&quot;:8,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3013d0ff-7db5-4a90-91a5-eeaed25e99ba_1042x1040.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, actionable insights on software engineering and leadership. Trusted by engineers at Amazon, Microsoft, and Google, and students at MIT and Stanford.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[64099,458709],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/context-switching-is-the-main-productivity?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Context-switching is the main productivity killer for developers</div></div><div class="embedded-post-body">Have you ever wondered what the biggest productivity killer for developers is? There are many, but one stands out&#8212;and it&#8217;s often underestimated&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 168 likes &#183; 8 comments &#183; Dr Milan Milanovi&#263;</div></a></div><h2>4. Flow state: the programmer's force multiplier</h2><p>Mihaly Csikszentmihalyi, in <a href="https://amzn.to/4bdPEYH">his research</a> [7][8] identify flow, which is &#8220;<em>the state of being completely involved in an activity for its own sake, when the ego disappears and time flies by</em>.&#8221; This illustrates the importance of protecting time for deep work. His 10-year study found that people achieved a productivity rate 500% higher when in a flow state than in a normal state. </p><p>Flow, for a software developer, means the difference between tedium and breakthroughs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZBTz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZBTz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZBTz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZBTz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZBTz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZBTz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg" width="380" height="507.18367346938777" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:981,&quot;width&quot;:735,&quot;resizeWidth&quot;:380,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;May be an image of text that says \&quot;'Csikszentmihalyi has done more than anyone else study this state of effortless attending Daniel Kahneman, author of Thinking, Fast and Slow Mihaly Csikszentmihalyi FLOW The classic work on how to achieve happiness\&quot;&quot;,&quot;title&quot;:&quot;May be an image of text that says \&quot;'Csikszentmihalyi has done more than anyone else study this state of effortless attending Daniel Kahneman, author of Thinking, Fast and Slow Mihaly Csikszentmihalyi FLOW The classic work on how to achieve happiness\&quot;&quot;,&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="May be an image of text that says &quot;'Csikszentmihalyi has done more than anyone else study this state of effortless attending Daniel Kahneman, author of Thinking, Fast and Slow Mihaly Csikszentmihalyi FLOW The classic work on how to achieve happiness&quot;" title="May be an image of text that says &quot;'Csikszentmihalyi has done more than anyone else study this state of effortless attending Daniel Kahneman, author of Thinking, Fast and Slow Mihaly Csikszentmihalyi FLOW The classic work on how to achieve happiness&quot;" srcset="https://substackcdn.com/image/fetch/$s_!ZBTz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZBTz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZBTz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZBTz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ab60f0-1517-4493-aff6-dfef1532acc7_735x981.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://amzn.to/4qJh8ub">Flow: The Psychology of Optimal Experience</a>, by Mihaly Csikszentmihalyi</figcaption></figure></div><p>Csikszentmihalyi found that the balance between challenge and skill was the key to flow, or its absence. The absence, in other words, of too much or too little challenge causes one or the other.</p><p>Therefore, it can be stated that Flow, or deep focus, is one of the most powerful predictors of high performance in software teams. Teams that frequently feel they can deliver more value, more quickly, and with greater satisfaction. But most engineers rarely feel it. </p><p>Flow is not something that occurs naturally. It requires protection from the forces that drain 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_!8hjn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8hjn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 424w, https://substackcdn.com/image/fetch/$s_!8hjn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 848w, https://substackcdn.com/image/fetch/$s_!8hjn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!8hjn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8hjn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png" width="560" height="423.46153846153845" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1101,&quot;width&quot;:1456,&quot;resizeWidth&quot;:560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How to Enter Flow State and Lose Yourself in the Moment &#8212; Brian Funk&quot;,&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="How to Enter Flow State and Lose Yourself in the Moment &#8212; Brian Funk" title="How to Enter Flow State and Lose Yourself in the Moment &#8212; Brian Funk" srcset="https://substackcdn.com/image/fetch/$s_!8hjn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 424w, https://substackcdn.com/image/fetch/$s_!8hjn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 848w, https://substackcdn.com/image/fetch/$s_!8hjn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!8hjn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd3aeb5a-439d-4e3d-a341-a675b96cea13_1983x1500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How to enter Flow state (Credits: <a href="https://brianfunk.com/blog/2016/3/15/the">Brian Funk</a>)</figcaption></figure></div><h2>5. <strong>How to get in the flow while coding</strong></h2><p>Given that 3-4 hours of deep coding is probably the most one can hope for, the objective should then be to make every minute of that time count. The key is effective time management and setting boundaries around one&#8217;s schedule. </p><p>Here are some things that have personally worked for me and have also been effective for the teams that I manage:</p><ol><li><p><strong>Create a distraction-free environment</strong>. Close Slack. Silence notifications. Use visible status indicators to signal deep work mode. Even seeing a notification breaks concentration, even when you don&#8217;t respond to 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_!pYe7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pYe7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pYe7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pYe7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pYe7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pYe7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg" width="605" height="403.05631868131866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:605,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How to Create a No Distractions Work Environment - Sunsama Blog&quot;,&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="How to Create a No Distractions Work Environment - Sunsama Blog" title="How to Create a No Distractions Work Environment - Sunsama Blog" srcset="https://substackcdn.com/image/fetch/$s_!pYe7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pYe7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pYe7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pYe7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c616158-0b28-45ce-8c7f-5ac11cf55507_1600x1066.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Distraction-free desk (Source: <a href="https://www.sunsama.com/blog/no-distractions">Sunsama</a>)</figcaption></figure></div></li><li><p><strong>Set clear goals before every coding session</strong>. Not &#8220;work on the backend&#8221; but &#8220;make the authentication endpoint return proper error responses.&#8221; The aspect of specificity allows for clear engagement with what one wants to achieve. Before the actual engagement, one should be clear about what &#8220;done&#8221; means.</p></li><li><p><strong>Tackle hard problems during peak cognitive hours</strong>. The &#8220;<a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC10955027/">research on circadian rhythm</a> [9] reveals that cognitive performance can vary by as much as 9 to 40 percent depending on the time.&#8221; The most relevant fact for programmers is that &#8220;most adults experience their best problem-solving skill during mid-morning to early afternoon (about 10 am-2 pm). Afternoon energy wanes after lunch, but then surges again during late afternoon.&#8221; Evening people, known as &#8220;owls&#8221;, peak at different times than morning people, &#8221;larks.&#8221; Code most intensely at your &#8220;personal cognitive peak&#8221; but protect those times &#8220;ruthlessly.&#8221;</p></li><li><p><strong>Time-block for maker schedules</strong>. Proactively block 2-4 hour chunks on your calendar for deep work. Cluster meetings at the end of the day or on specific days. Set one goal for each work block, and break it into three actionable tasks. Focus on one task at a time. After work sessions reflect, do you need to change the length of time, do some tasks before others, etc. Here is an example of how I structure my day for deep work:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PC2x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PC2x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 424w, https://substackcdn.com/image/fetch/$s_!PC2x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 848w, https://substackcdn.com/image/fetch/$s_!PC2x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 1272w, https://substackcdn.com/image/fetch/$s_!PC2x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PC2x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png" width="220" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50561180-2093-427f-afb1-866ed1f772b4_220x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:220,&quot;resizeWidth&quot;:null,&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_!PC2x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 424w, https://substackcdn.com/image/fetch/$s_!PC2x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 848w, https://substackcdn.com/image/fetch/$s_!PC2x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 1272w, https://substackcdn.com/image/fetch/$s_!PC2x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50561180-2093-427f-afb1-866ed1f772b4_220x424.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Eliminate context switching</strong>. Context switching is the biggest productivity killer. Batch out two communication windows a day rather than trying to be immediate responders. Close browser windows that aren&#8217;t relevant to the current task underway. Treat your attention as the scarce resource it is.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!32j8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!32j8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 424w, https://substackcdn.com/image/fetch/$s_!32j8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 848w, https://substackcdn.com/image/fetch/$s_!32j8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 1272w, https://substackcdn.com/image/fetch/$s_!32j8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!32j8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png" width="1456" height="1130" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1130,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&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_!32j8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 424w, https://substackcdn.com/image/fetch/$s_!32j8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 848w, https://substackcdn.com/image/fetch/$s_!32j8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 1272w, https://substackcdn.com/image/fetch/$s_!32j8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fd7fd86-2327-4da6-b16f-bb1722bd7e9d_1918x1488.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Work in focused sessions, not marathon sprints</strong>. The usual 25-minute pomodoro schedule is entirely inadequate for complex development tasks, just enough time for entering flow state before you are timer-interrupted. Take your breaks between intervals. The aim is for maximum quality, not maximum hours, within your cognitive abilities.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!smkG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!smkG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp 424w, https://substackcdn.com/image/fetch/$s_!smkG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp 848w, https://substackcdn.com/image/fetch/$s_!smkG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp 1272w, https://substackcdn.com/image/fetch/$s_!smkG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!smkG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp" width="352" height="551.4360313315927" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:766,&quot;resizeWidth&quot;:352,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!smkG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp 424w, https://substackcdn.com/image/fetch/$s_!smkG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp 848w, https://substackcdn.com/image/fetch/$s_!smkG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.webp 1272w, https://substackcdn.com/image/fetch/$s_!smkG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f961a8e-955b-4512-a97f-111f0684c6f7_766x1200.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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Reflect and compound your learning</strong>. Ericsson&#8217;s research on deliberate practice attests that it&#8217;s not time on task but reflective thinking that can produce expertise. One can conclude each in-depth coding session by mindful reflection on what worked, what got in my way, and what I will try differently tomorrow.</p></li></ol><blockquote><h3><strong>Four Deep Work Strategies</strong></h3><p><em>In this book, Cal Newport <a href="https://dansilvestre.com/deep-work-strategies/">identifies four methods for incorporating deep work into your schedule</a> [1]. Each depends on how much control you have over your time, and how long you can stay disconnected.</em></p><ul><li><p><em><strong>The Monastic Strategy involves</strong> the effective elimination of shallow work. Consider Donald Knuth, for example, who decided to remove email in 1990 so that he could focus, without distraction, on computer science research.</em></p></li><li><p><em><strong>The Bimodal Strategy</strong> carves your week into deep and shallow days. So, maybe Monday to Wednesday you&#8217;re unreachable, then Thursday and Friday you handle meetings and emails.</em></p></li><li><p><em><strong>Rhythmic Strategy:</strong> Execute deep work at a same hour each day - no exceptions. Jerry Seinfeld uses the &#8220;don&#8217;t break the chain&#8221; approach. </em></p></li><li><p><em><strong>The Journalistic Strategy</strong> means seizing deep work whenever a window opens. Meeting canceled? Thirty free minutes? Drop into focus mode immediately.</em></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_!OohY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OohY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 424w, https://substackcdn.com/image/fetch/$s_!OohY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 848w, https://substackcdn.com/image/fetch/$s_!OohY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 1272w, https://substackcdn.com/image/fetch/$s_!OohY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OohY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png" width="582" height="540.9842041312272" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:823,&quot;resizeWidth&quot;:582,&quot;bytes&quot;:75589,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/156228268?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.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_!OohY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 424w, https://substackcdn.com/image/fetch/$s_!OohY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 848w, https://substackcdn.com/image/fetch/$s_!OohY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 1272w, https://substackcdn.com/image/fetch/$s_!OohY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cace8d-0222-4676-a886-62544b0cb3d8_823x765.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>For most developers, Rhythmic Strategy works the best. Set your mornings aside to code, uncommitted to any of Slack&#8217;s reactive tempts. Most of the people find mornings as the part of the day with the most energy.</em></p><p><em>But the Journalistic approach is interesting too. The idea of moving into deep focus for even 30-45-minute chunks between meetings sounds efficient. The only problem is to convince yourself you&#8217;re doing deep work when you&#8217;re actually just context-switching all day. That&#8217;s not focus-that&#8217;s fragmentation dressed up as productivity.</em></p></blockquote><h2>6. Why engineering managers should care</h2><p>The rationale for &#8220;saving&#8221; developers&#8217; time boils down to simple arithmetic. If developers have an average allocation of only 52 minutes of actual coding per day, but all the interruptions they cause take away an additional 23+ minutes in &#8220;makeup&#8221; time, it means that one message eats nearly half a developer&#8217;s daily allocation just by itself!</p><p><a href="https://assets.techsmith.com/docs/async-first.pdf">TechSmith</a> ran an experiment eliminating meetings entirely, yielding a 15% increase in feeling productive, with 85% of employees stating they would trade meetings for async communication going forward. According to a <a href="https://www.microsoft.com/en-us/worklab/work-trend-index/will-ai-fix-work">Microsoft survey</a> of 31,000 employees, inefficient meetings ranked #1 as a workplace productivity distraction.</p><p>The evidence strongly supports the idea that the best productivity activity for an engineering manager doesn&#8217;t involve adding processes or meetings, but instead removing them. </p><p>Here are a few recommendations for managers:</p><ul><li><p>Fine-tune your schedule so that you can have uninterrupted mornings </p></li><li><p>Schedule no-meeting days (we do no-meeting Wednesdays)</p></li><li><p>Asynchronous should be the default rather than synchronous communication</p></li><li><p>Allow for creative exploration by setting realistic deadlines that allow for it</p></li></ul><p>It&#8217;s necessary to understand that it&#8217;s better to have only 3 or 4 hours of actual, focused work than to fall for the commonly held misconception that one increases productivity with 8 hours, only to do so with interruptions.</p><p>To measure the impact of these actions, one can assess cycle time reduction, team satisfaction, and engagement score, as well as quality metrics such as bug rates and rework percentage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HUbJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HUbJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HUbJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HUbJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HUbJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HUbJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg" width="606" height="367.09615384615387" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1456,&quot;resizeWidth&quot;:606,&quot;bytes&quot;:1509783,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/156228268?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.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_!HUbJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HUbJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HUbJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HUbJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0cfc-a4cf-4dbd-8c25-32127443b0b3_8000x4848.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A team of happy and productive employees (Image by pch.vector on <a href="https://www.freepik.com/free-vector/portrait-team-happy-professional-employees-cartoon-office-workers-corporate-clothes-group-colleagues-work-together-flat-vector-illustration-career-teamwork-startup-concept_28480791.htm">Freepik</a>)</figcaption></figure></div><h2>7. Conclusion</h2><p>The bottom line is this: 3-4 hours per day of real, deep programming is not a problem with your work habits, but a hard limit on how much useful cognitive load you can have in a day. Rather than fighting this, accept it and fit around it. </p><p>Optimize what you can control. You might not control ad-hoc production issues or a customer escalation that wrecks a planned focus block. But you can turn off notifications for a couple of hours, or let your team know you&#8217;ll be available after lunch instead of before. </p><p>You can negotiate with your product manager that the team needs two mornings per week free of meetings to improve output. You can improve your own habits, like not scheduling back-to-back meetings that mentally drain you, so that even when you do get a free hour, you&#8217;re too fried to code.</p><p>Most importantly, you need to change your mindset. Doing &#8220;half focus&#8221; for 8 hours is not better than doing &#8220;deep work&#8221; for 4 hours. Trust me, in any situation, you can guarantee that &#8220;deep work&#8221; will always win in terms of results generated in comparison with &#8220;half focus.&#8221; Once you accept this, you can stop apologizing for &#8220;not being busy&#8221; and stop envying the people who always <em>look</em> productive. </p><p>The objective is, of course, to make every coding work-hour worth more, rather than simply working more hours.</p><p>You will, over time, realize that consistently entering that flow state for a few hours every day leads to higher-quality code, reduced bug risk, and innovative solutions, not to mention a greatly improved work-life balance. </p><p>Remember, folks, coders are marathon runners, not sprinters, and while marathon runners occasionally sprint, that&#8217;s not feasible over 26.2 miles. </p><p>Your energy is one of the most valuable resources on the planet, so conserve it.</p><blockquote><h3>A note on AI coding assistants</h3><p><em>Tools like Copilot, Cursor, and Claude don&#8217;t extend our deep work hours. They just move our focus. Instead of writing code from scratch, you&#8217;re working with an AI assistant and reviewing its output. That&#8217;s still mentally demanding work. You need the same context, the same judgment, and the same focus level to catch the subtle bugs that AI can introduce.</em></p><p><em>AI maybe handles mechanical tasks faster, but the 3-4 hour ceiling isn&#8217;t about typing speed. It&#8217;s about how long your brain can sustain high-quality decision-making under load. That limit doesn&#8217;t change just because the code appears on screen faster.</em></p><p><em>Where AI genuinely helps is during your shallow hours. Drafting documentation, generating boilerplate, answering quick &#8220;how do I do X in this library&#8221; questions, these tasks drain focus when done manually. Offloading them to AI preserves your deep work budget for actual architectural thinking and complex problem-solving.</em></p><p><em>The trap is using AI to produce more code than you can mentally process. More output doesn&#8217;t mean more value if you can&#8217;t reason clearly about what you&#8217;ve built. </em></p><p><em>The goal isn&#8217;t to generate more lines per day. It&#8217;s to spend your limited cognitive resources on the decisions that matter most.</em></p><p><em>Use AI to protect your deep work hours, not to pretend you have more of them.</em></p></blockquote><h2>8. References</h2><ol><li><p>Newport, Cal. <em>Deep Work: Rules for Focused Success in a Distracted World</em>. Grand Central Publishing, 2016. </p></li><li><p>Ericsson, K. Anders. Research on expert performance and deliberate practice.</p></li><li><p>Mark, Gloria. Studies on workplace interruptions (University of California, Irvine). </p></li><li><p>Software.com. <em><a href="https://www.software.com/reports/code-time-report">2021 Global Code Time Report</a></em>. </p></li><li><p>Clockwise 2022 <a href="https://www.getclockwise.com/eng-meeting-benchmarks">Software Engineering Meeting Benchmark Report</a></p></li><li><p>C. Parnin and S. Rugaber, "Resumption strategies for interrupted programming tasks," <em>2009 IEEE 17th International Conference on Program Comprehension</em>, Vancouver, BC, Canada, 2009, pp. 80-89, doi: 10.1109/ICPC.2009.5090030</p></li><li><p>Cs&#237;kszentmih&#225;lyi, Mih&#225;ly. <em>Flow: The Psychology of Optimal Experience</em>. Harper &amp; Row, 1990.</p></li><li><p>Cs&#237;kszentmih&#225;lyi, Mih&#225;ly. <a href="https://www.youtube.com/watch?v=fXIeFJCqsPs">Flow, the secret to happines</a>s, TED Talk.</p></li><li><p>Valdez, P. et al. (2023). <em>Diurnal variation in variables related to cognitive performance: a systematic review</em>. <em>Chronobiology International</em>, 40(8), 1091&#8211;1110</p></li></ol><div><hr></div><h2><strong>More ways I can help you</strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 260K+ followers in under two years, plus a 49K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong>. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a></strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Software Development Waste]]></title><description><![CDATA[Many of us can look back at a completed software project and think, &#8220;If I&#8217;d known then what I know now, I&#8217;d have done much faster.&#8221; This familiar feeling reveals just how much waste creeps into the software development process.]]></description><link>https://newsletter.techworld-with-milan.com/p/software-development-waste</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/software-development-waste</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 15 Jan 2026 16:01:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CvRy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Many of us can look back at a completed software project and think,&nbsp;<em>&#8220;If I&#8217;d known then what I know now, I&#8217;d have done much faster.&#8221;</em> This familiar feeling reveals just how much <strong>waste</strong> creeps into the software development process. </p><p>In lean thinking, <em>waste</em> is essentially any activity or output that adds no value from the customer&#8217;s perspective. In other words, it&#8217;s work that the user wouldn&#8217;t want to pay for. </p><p>Eliminating such waste has been a core principle of lean manufacturing since Toyota&#8217;s rise in the mid-20th century, and pioneers like Mary Poppendieck have shown how these lean principles apply to software development. </p><p>In this post, we&#8217;ll explore the classic &#8220;Seven Wastes&#8221; of software development and go beyond them, drawing on new insights from research and practice. Our goal is to help both engineers and managers identify waste in their workflows and share best practices to eliminate it, thereby improving productivity, quality, and team morale.</p><p>In particular, we are going to talk about:</p><ol><li><p><strong>Seven Wastes of Software Development.</strong> The traditional model of Poppendieck et al.&#8217;s work in Lean for Code. Deals with incomplete work, additional functionality, relearning, handoffs, waits, context switching, and defects.</p></li><li><p><strong>Beyond the Seven.</strong> Sedano et al.&#8217;s work has provided further empirical validation, expanding the taxonomy to include nine types: wrong features, backlog mismanagement, over-engineering, cognitive load, psychological distress, communication, and code waste from AI-generated code.</p></li><li><p><strong>Practices to reduce waste</strong>. How to make the waste visible with value stream mapping, control thrashing with WIP limits, keep from relearning through knowledge-sharing rituals, and eliminate handoffs with cross-functional teams.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2>1. Seven Wastes of Software Development</h2><p>In <strong><a href="https://amzn.to/4q3gN4V">Lean Software Development: An Agile Toolkit</a></strong> (2003) and later in <strong><a href="https://amzn.to/4pGUyRH">Implementing Lean Software Development</a></strong> (2006), Mary and Tom Poppendieck identified seven categories of waste in software projects. These map closely to the original seven manufacturing wastes (like inventory, overproduction, defects, etc.) but are tailored to the realities of software work. <strong>If you&#8217;re not creating real value, chances are you&#8217;re creating waste</strong>. </p><p>The Poppendiecks&#8217; seven wastes are:</p><ol><li><p><strong>Partially done work. </strong>Any work in progress that&#8217;s not usable by customers yet is effectively a&nbsp;<em>software inventory</em>. This could be code that&#8217;s been written but not integrated, tested, documented, or deployed. Such half-done work ties up effort without delivering value, may become obsolete, and creates uncertainty.</p></li><li><p><strong>Extra features.</strong> Building features that aren&#8217;t really needed or used by end users (feature creep). Extra features cost money to develop, test, and maintain, while adding complexity and potential bugs to the system.</p></li><li><p><strong>Relearning.</strong> The waste of knowledge loss when the team needs to relearn something that it previously knew. This usually comes from poor documentation or siloed expertise, where people don&#8217;t share or discuss knowledge. If a developer has to rediscover how to solve a problem that has previously been solved, or if new team members have to figure out what departed team members knew, then that&#8217;s relearning. </p></li><li><p><strong>Handoffs.</strong> Each time work is transitioned from one person to another or from one team to another, there is always a chance that information will be lost or corrupted. This could mean throwing requirements over the wall to development, code to testing, or code to operations. Each time work is transitioned, there is a risk of miscommunication and delays. </p></li><li><p><strong>Delays.</strong> All waiting is simply a waste. Waiting for approvers, for clarification, for a decision, for work from another team, for a build or test environment, for instance, is all delay and therefore waste. Each day a feature takes longer to deliver is a day its value is not delivered to the customer. </p></li><li><p><strong>Context switching.</strong> That&#8217;s the productivity loss when people juggle multiple tasks or projects simultaneously. Every time a developer switches from one project or bugfix to another, there&#8217;s a high cost to getting their mind back into the context of that work. </p></li><li><p><strong>Defects.</strong> Just like in manufacturing, a classic form of waste is defects or bugs, or quality issues. When a defect is noticed late, most likely by users or during a later testing phase, it results in rework: stopping new work, going back, fixing the issue, and likely redoing tests, among other steps. The cost of defects isn&#8217;t just the time to fix, but it is also the disruption to the team&#8217;s flow and, most importantly, the damage to customer trust.</p></li></ol><p>These seven wastes, identified by the Poppendiecks, gave the software community a powerful lens for&nbsp;<strong>seeing inefficiencies</strong>&nbsp;in our processes. By mapping what we do to these categories, engineers and managers can start asking: <em>&#8220;Which of these wastes do we encounter daily, and how can we reduce them?&#8221;</em> </p><p>Once you become familiar with the &#8220;waste checklist,&#8221; you&#8217;ll spot waste everywhere, in unnecessary steps, avoidable rework, and time spent waiting or context-switching. The next step is figuring out how to eliminate 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_!CvRy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CvRy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 424w, https://substackcdn.com/image/fetch/$s_!CvRy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 848w, https://substackcdn.com/image/fetch/$s_!CvRy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 1272w, https://substackcdn.com/image/fetch/$s_!CvRy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CvRy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png" width="635" height="641.8426724137931" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:938,&quot;width&quot;:928,&quot;resizeWidth&quot;:635,&quot;bytes&quot;:116115,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/183355559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.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_!CvRy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 424w, https://substackcdn.com/image/fetch/$s_!CvRy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 848w, https://substackcdn.com/image/fetch/$s_!CvRy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 1272w, https://substackcdn.com/image/fetch/$s_!CvRy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16bf0818-631a-4cbe-950b-e0f0086630fd_928x938.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">7 Wastes of Software Development by Mary and Tom Poppendieck</figcaption></figure></div><blockquote><p>&#8220;<em>The most successful development occurs when developers talk directly to customers or are part of business teams</em>&#8221; - Mary Poppendieck</p></blockquote><h2>2. Beyond the Seven: Modern Insights</h2><p>The original seven wastes are not the only forms of waste in software development. As the industry has evolved, researchers and practitioners have observed <strong>additional types of waste</strong> that hinder software teams. </p><p>An empirical study by <a href="https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/papers/icse17sedano.pdf">Sedano </a><em><a href="https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/papers/icse17sedano.pdf">et al.</a></em><a href="https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/papers/icse17sedano.pdf"> (2017)</a> spent over two years observing eight software projects and uncovered a broader taxonomy of nine wastes. Some overlap with the classic seven, but others extend into new dimensions of inefficiency. </p><p>According to their findings, software projects can waste effort through the following, as shown in the table below:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MGo8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MGo8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 424w, https://substackcdn.com/image/fetch/$s_!MGo8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 848w, https://substackcdn.com/image/fetch/$s_!MGo8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 1272w, https://substackcdn.com/image/fetch/$s_!MGo8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MGo8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png" width="995" height="793" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:793,&quot;width&quot;:995,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:240074,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/183355559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.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_!MGo8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 424w, https://substackcdn.com/image/fetch/$s_!MGo8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 848w, https://substackcdn.com/image/fetch/$s_!MGo8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 1272w, https://substackcdn.com/image/fetch/$s_!MGo8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f57515-2e18-49d6-b723-d7ae4c5eb566_995x793.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Types of Software Development Waste (Source: <a href="https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/papers/icse17sedano.pdf">Sedano et al., 2017</a>)</figcaption></figure></div><p>Let&#8217;s unpack a few of these newer categories. The first and probably the most important one is <strong>building the Wrong Feature/Product. </strong>This is perhaps the ultimate waste of time, delivering something neither users nor the business actually need. It&#8217;s related to &#8220;extra features,&#8221; but goes deeper: it means whole features or even products were the <em>wrong thing</em> to build in the first place. </p><p>The next pressing problem is the <strong>mismanagement of the Backlog</strong>. This waste is associated with poor management of the work backlog. This can be a redundant set of work items, very frequent re-prioritizing of work items (commonly termed backlog thrash), or pursuing multiple tasks at the same time. This can also result from ignoring critical bug fixes.</p><p>One common waste we see in software projects is <strong>over-engineering</strong>. Over-engineering occurs when engineers develop a system that has a more complex architecture than is required to address the problem at hand. Maybe the code has been too abstract, the architecture too complex, or the feature's options too many. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Fu0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Fu0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Fu0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Fu0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Fu0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Fu0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg" width="586" height="328.7317073170732" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:736,&quot;width&quot;:1312,&quot;resizeWidth&quot;:586,&quot;bytes&quot;:216858,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/183355559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.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_!9Fu0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Fu0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Fu0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Fu0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f2eb7c-7a89-47fc-b082-27785b726af9_1312x736.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An over-engineered house</figcaption></figure></div><p>The next important waste is <strong><a href="https://github.com/zakirullin/cognitive-load">Cognitive Load</a></strong>. This is a reference to the effort your brain makes on things that don&#8217;t actually contribute to your project in the future. This is sometimes called &#8220;the tax your brain pays for messy code.&#8221; If a coder has to understand complex code to complete a task, they are using working memory to process it, which is extraneous cognitive load.</p><p><strong>Psychological distress </strong>is a more human-centric type of waste. This one involves high stress and low morale that a team may experience. Some reasons for this type of waste could be unrealistic deadlines, pressure, or conflicts. When team members are demoralized, they become unproductive, which is a complete waste of the talent you have on your hands.</p><p>One of the key factors is <strong>ineffective communication</strong>. This type of waste comes from the cost of miscommunication or a lack of communication within and around the team. This may be a requirement that was not communicated well (resulting in rework) or a lack of communication within a team that works in silos. Sometimes key feedback is lost in asynchronous communication. </p><p>A new and emerging form of code waste over the last two years is&nbsp;<strong>AI-generated code,</strong>&nbsp;which doubles code churn. An analysis of&nbsp;211 million lines of code&nbsp;by <a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research">GitClear</a> found that&nbsp;code churn doubled from 2021 to 2024 as AI coding assistants proliferated. Copy/pasted code increased from 8.3% to 12.3% while refactored/moved code dropped from 25% to under 10%. AI-generated code &#8220;resembles an itinerant contributor, prone to violate DRY-ness.&#8221; </p><p>Also, a <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">2025 METR study</a> found that AI tools <strong>slowed experienced developers by 19%</strong> on familiar codebases.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I7G3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I7G3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 424w, https://substackcdn.com/image/fetch/$s_!I7G3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 848w, https://substackcdn.com/image/fetch/$s_!I7G3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 1272w, https://substackcdn.com/image/fetch/$s_!I7G3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I7G3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png" width="601" height="325.5416666666667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:650,&quot;width&quot;:1200,&quot;resizeWidth&quot;:601,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;AI Copilot Code Quality: 2025 Data Suggests 4x Growth in Code Clones -  GitClear&quot;,&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="AI Copilot Code Quality: 2025 Data Suggests 4x Growth in Code Clones -  GitClear" title="AI Copilot Code Quality: 2025 Data Suggests 4x Growth in Code Clones -  GitClear" srcset="https://substackcdn.com/image/fetch/$s_!I7G3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 424w, https://substackcdn.com/image/fetch/$s_!I7G3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 848w, https://substackcdn.com/image/fetch/$s_!I7G3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 1272w, https://substackcdn.com/image/fetch/$s_!I7G3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96003a3d-f507-4514-8fa9-ee0b67c731b3_1200x650.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI-influenced code churn</figcaption></figure></div><p>It&#8217;s insightful to see how these nine observed wastes relate to the lean wastes. For instance, <em>knowledge loss</em> in this list is essentially the same as &#8220;relearning&#8221;, the loss of tacit knowledge due to team churn or silos.</p><p><em>Waiting/multitasking </em>corresponds to delays. However, the inclusion of new concepts, such as psychological distress or ineffective communication, helps address issues of teamwork and communication that weren&#8217;t necessarily part of the original list of seven. Then the concept of AI-related waste is entirely new to us, and we have never encountered it.</p><p>Combining all frameworks yields an<strong> extended taxonomy</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_!U3KA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U3KA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 424w, https://substackcdn.com/image/fetch/$s_!U3KA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 848w, https://substackcdn.com/image/fetch/$s_!U3KA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 1272w, https://substackcdn.com/image/fetch/$s_!U3KA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U3KA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png" width="1456" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:190717,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/183355559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.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_!U3KA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 424w, https://substackcdn.com/image/fetch/$s_!U3KA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 848w, https://substackcdn.com/image/fetch/$s_!U3KA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 1272w, https://substackcdn.com/image/fetch/$s_!U3KA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c8d9dab-9a83-4c35-ad0e-b946814858f0_1640x665.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Taxonomy of Software Development waste</figcaption></figure></div><p>The takeaway is that <strong>waste hides in many forms</strong>, from technical rework to human factors to process and planning glitches. Modern agile/lean practitioners often compile these into extended lists to help leaders systematically identify and fix waste in their organizations. The key is to continuously refine our awareness of waste and avoid being limited by a single static list.</p><h2>3. Practices to reduce waste in Software Development</h2><p>The challenge of identifying waste begins with waste identification. What must teams do to eliminate, at least minimize, these types of waste?</p><p>One, you want to <strong>make this process visible</strong>. You want to map the process from idea to deployed software and identify where the wait states, rework cycles, and handoffs occur. Where are the wait states in your process? Just like the value-stream mapping in the factories, you can do the same thing in your software process. Your team can look at this map, point to a spot, and say, &#8220;Oh, this step of the process feels like a time suck.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j6YQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j6YQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 424w, https://substackcdn.com/image/fetch/$s_!j6YQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 848w, https://substackcdn.com/image/fetch/$s_!j6YQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 1272w, https://substackcdn.com/image/fetch/$s_!j6YQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j6YQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png" width="615" height="303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:303,&quot;width&quot;:615,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;What is Kanban?&quot;,&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="What is Kanban?" title="What is Kanban?" srcset="https://substackcdn.com/image/fetch/$s_!j6YQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 424w, https://substackcdn.com/image/fetch/$s_!j6YQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 848w, https://substackcdn.com/image/fetch/$s_!j6YQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 1272w, https://substackcdn.com/image/fetch/$s_!j6YQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4eb893-7104-448b-a55e-8a7c08180035_615x303.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Kanban board (Source: Kanban blog)</figcaption></figure></div><p>To prevent spending too much time on the incorrect or additional feature, you should practice rigorous prioritization and validation. <strong>Adopt the MVP mentality</strong>: &#8220;<em>The smallest thing that can deliver value, to get in the hands of the customer.</em>&#8221; Validate your approach through customer interviews, A/B testing, or a prototype to ensure you&#8217;re headed in the right direction before spending too much dev time.</p><p>After that, one would need to <strong>limit multitasking and partially finished work by using WIP</strong> at both the team and individual levels. Kanban boards can be a great tool here. If a column is at its limit, team members swarm to finish what&#8217;s in progress before starting new work. This encourages completion over starting new tasks and reveals bottlenecks (e.g., if &#8220;Waiting for QA&#8221; is always full, you have a quality process issue causing delay). By keeping WIP low, you&#8217;ll shorten delivery times and reduce the mental load on engineers. Little&#8217;s Law tells us that <strong>high utilization creates long queues </strong>(<code>Lead time = WIP / Throughput</code>), so don&#8217;t max people out at 100% all the time.</p><p>Another thing to remember is to prevent relearning and knowledge loss, create a culture of <strong>continuous learning</strong> and sharing. Tactics include:</p><ul><li><p>Pair programming (two heads solve and <strong>remember</strong> problems together)</p></li><li><p>Regular lunch-and-learn sessions or guild meetings</p></li><li><p>Internal wikis or knowledge bases for documentation</p></li><li><p>Post-mortems for major incidents (to capture lessons learned). </p></li></ul><p>When someone discovers an important fix or insight, encourage them to share it widely, perhaps with a quick demo or an internal blog. </p><p>Many handoffs and delays can be eliminated by restructuring teams. Instead of separate departments tossing work over the fence, move toward <strong>cross-functional feature teams</strong> that have all the skills needed (analysis, development, testing, ops) to deliver end-to-end. </p><p>Strive for T-shaped team members who, while having a specialty, can stretch to do basic tasks in other domains to avoid blocking the flow. In today's world, those are mostly full-stack engineers, as deep expertise is now much easier to gain with AI tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0tM6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0tM6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0tM6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0tM6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0tM6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0tM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&#120298;&#120309;&#120326; &#120305;&#120316; &#120324;&#120306; &#120315;&#120306;&#120306;&#120305; &#120295;-&#120320;&#120309;&#120302;&#120317;&#120306;&#120305; &#120305;&#120306;&#120323;&#120306;&#120313;&#120316;&#120317;&#120306;&#120319;&#120320;? Today, we  have different kinds of developers: frontend, backend, mobile, and others.  They are more or fewer specialists in one field in software engineering.  Those engineers&quot;,&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="&#120298;&#120309;&#120326; &#120305;&#120316; &#120324;&#120306; &#120315;&#120306;&#120306;&#120305; &#120295;-&#120320;&#120309;&#120302;&#120317;&#120306;&#120305; &#120305;&#120306;&#120323;&#120306;&#120313;&#120316;&#120317;&#120306;&#120319;&#120320;? Today, we  have different kinds of developers: frontend, backend, mobile, and others.  They are more or fewer specialists in one field in software engineering.  Those engineers" title="&#120298;&#120309;&#120326; &#120305;&#120316; &#120324;&#120306; &#120315;&#120306;&#120306;&#120305; &#120295;-&#120320;&#120309;&#120302;&#120317;&#120306;&#120305; &#120305;&#120306;&#120323;&#120306;&#120313;&#120316;&#120317;&#120306;&#120319;&#120320;? Today, we  have different kinds of developers: frontend, backend, mobile, and others.  They are more or fewer specialists in one field in software engineering.  Those engineers" srcset="https://substackcdn.com/image/fetch/$s_!0tM6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0tM6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0tM6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0tM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d7fd695-033d-4a4d-9395-c7a0078ea66e_1200x675.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Many wastes (backlog, thrash, wrong features, defects, etc.) can be traced to <strong>communication gaps</strong>. This is either with stakeholders or within the team. Invest in practices that tighten feedback loops: </p><ul><li><p>Daily stand-ups to surface impediments</p></li><li><p>Sprint reviews for obtaining feedback from stakeholders</p></li><li><p>Retrospectives to reflect on what&#8217;s not working in the process</p></li></ul><p>Encourage <strong>open communication</strong> so team members can raise issues early. Also, clearly communicate the requirements, for instance, by using acceptance criteria, examples, or prototypes to avoid misinterpretations that require rework.</p><p>When in doubt, a quick face-to-face (or video) conversation can save days of back-and-forth emails.</p><p>Finally, don&#8217;t forget the <strong>human side. </strong>Stop wasting morale and talent. In other words, avoid putting developers into constant context-switching or firefighting in &#8220;rush mode.&#8221; Sustain the pace to keep the team safe from burning out. A steady velocity is better than heroic spurts followed by crashes. </p><p>And don&#8217;t forget to celebrate successes while allowing failures to become learning opportunities (enforcing a no-blame culture).</p><blockquote><p><em>Learn more about context-switching</em>:</p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:147668556,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/context-switching-is-the-main-productivity&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;Context-switching is the main productivity killer for developers&quot;,&quot;truncated_body_text&quot;:&quot;Have you ever wondered what the biggest productivity killer for developers is? There are many, but one stands out&#8212;and it&#8217;s often underestimated.&quot;,&quot;date&quot;:&quot;2025-02-06T16:00:43.376Z&quot;,&quot;like_count&quot;:166,&quot;comment_count&quot;:8,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3013d0ff-7db5-4a90-91a5-eeaed25e99ba_1042x1040.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, actionable insights on software engineering and leadership. Trusted by engineers at Amazon, Microsoft, and Google, and students at MIT and Stanford.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[64099,458709],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/context-switching-is-the-main-productivity?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Context-switching is the main productivity killer for developers</div></div><div class="embedded-post-body">Have you ever wondered what the biggest productivity killer for developers is? There are many, but one stands out&#8212;and it&#8217;s often underestimated&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 166 likes &#183; 8 comments &#183; Dr Milan Milanovi&#263;</div></a></div><p>By keeping your team&#8217;s <strong>psychological well-being</strong> in mind, you are actually protecting productivity: reasonable work hours, support for learning, and psychological safety to speak up. A motivated, engaged team will naturally find and fix more waste in their own work, while a disengaged team might resign themselves to it.</p><h2>4. Conclusion</h2><p>In the end, we should note that <strong>waste will always exist</strong> in some form. We cannot eliminate all of it, but the goal is to hunt it down and remove it continuously.  For software teams, this means periodically reviewing how you work and asking, &#8220;Is this step really adding value? If not, how can we do it better or not do it at all?&#8221; Over time, minor improvements (automation here, a process tweak there, a bit of refactoring over there) compound into significantly faster and smoother delivery. </p><p>As a reminder, waste directly impacts efficiency, even morale. Time spent on non-value-added activities means time that&#8217;s not spent on innovation or on delivering quality. Engineers and managers must work together to help pinpoint areas of waste and prototype a possible solution. Where applicable, data will be used to identify areas that significantly affect productivity.</p><p>Once you know how to identify software development waste, you can apply the proper methods to eliminate it and end up with a better process that delivers value to customers much faster.</p><p>As Mary Poppendieck showed us, <strong>software engineering can&#8217;t be viewed merely as a process of writing software, but as a process of removing the obstacles in the way of software creation.</strong></p><p>And remember not to suspend development for weeks to remove waste, as this could reduce morale and customer satisfaction. Some of the waste may not be worth removing. Stability is often more important than raw speed (unless you&#8217;re a high-growing startup).</p><p>Here&#8217;s to less waste and more value in your development journey!</p><div><hr></div><h2><strong>More ways I can help you</strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 260K+ followers in under two years, plus a 49K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong>. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a></strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[10 software essays that changed how I think]]></title><description><![CDATA[Over the years, I&#8217;ve stumbled upon a handful of software essays that fundamentally altered my engineering approach.]]></description><link>https://newsletter.techworld-with-milan.com/p/the-software-essays-that-changed</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/the-software-essays-that-changed</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 18 Dec 2025 16:02:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/05269823-9bbf-4ed3-b7a6-caa8a338a680_960x1200.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Over the years, I&#8217;ve read a handful of software essays that fundamentally changed my engineering mindset. <strong>Each one delivered a lesson that shifted my perspective, from technology choices, architecture, coding practices, and even my career.</strong> </p><p>Below, I share the most impactful essays I learned from each. These range <strong>from pragmatic engineering advice to philosophical insights</strong>, but all influenced how I think and work as an engineer and leader.</p><p>I hope that by reflecting on what I learned, you might find these lessons helpful too (and perhaps be inspired to read the original essays if you haven&#8217;t). </p><p>Here they are, in no particular order:</p><ol><li><p><strong>Choose Boring Technology</strong> (2015) by Dan McKinley</p></li><li><p><strong>Parse, Don&#8217;t Validate</strong> (2019) by Alexis King</p></li><li><p><strong>Things You Should Never Do, Part I</strong> (2000) by Joel Spolsky</p></li><li><p><strong>The Majestic Monolith</strong> (2016) by David Heinemeier Hansson (DHH)</p></li><li><p><strong>The Joel Test</strong> (2000) by Joel Spolsky</p></li><li><p><strong>How to Design a Good API and Why It Matters</strong> (2007) by Joshua Bloch</p></li><li><p><strong>The Rise of &#8220;Worse is Better&#8221;</strong> (1989) by Richard P. Gabriel </p></li><li><p><strong>The Grug-Brained Developer</strong> (2022) by Carson Gross</p></li><li><p><strong>Software Quality at Top Speed</strong> (1996) by Steve McConnell</p></li><li><p><strong>Don&#8217;t Call Yourself a Programmer</strong> (2011) by Patrick McKenzie</p></li><li><p><strong>Bonus:</strong> <strong>How To Become a Better Programmer by Not Programming</strong> (2007) by Jeff Atwood </p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://fandf.co/3KJu9UB">GitHub Actions analytics - what&#8217;s actually happening (Sponsored)</a></h2><p><em>You&#8217;re running GitHub Actions, but you don&#8217;t know which jobs are slow, why they&#8217;re failing, or if that optimization you shipped actually worked.</em></p><p><em>Depot&#8217;s new GitHub Actions analytics gives you performance trends, resource utilization, and job-level insights across all your workflows. Track duration changes over time, spot jobs maxing out CPU or memory, and get specific recommendations on which runners to upgrade or downgrade.</em></p><p><em>Filter by repo, workflow, or job. Click into individual runs to see logs and metrics. See exactly which jobs waste resources and which ones need more power.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://fandf.co/3KJu9UB" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LAuL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 424w, https://substackcdn.com/image/fetch/$s_!LAuL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 848w, https://substackcdn.com/image/fetch/$s_!LAuL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 1272w, https://substackcdn.com/image/fetch/$s_!LAuL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LAuL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315802,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://fandf.co/3KJu9UB&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180789189?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.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_!LAuL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 424w, https://substackcdn.com/image/fetch/$s_!LAuL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 848w, https://substackcdn.com/image/fetch/$s_!LAuL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 1272w, https://substackcdn.com/image/fetch/$s_!LAuL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a6a70e-1926-4ee8-aeba-d0e8bcced8c7_1638x983.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fandf.co/3KJu9UB&quot;,&quot;text&quot;:&quot;Check out the analytics&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fandf.co/3KJu9UB"><span>Check out the analytics</span></a></p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. <a href="https://mcfunley.com/choose-boring-technology">Choose Boring Technology (2015) by Dan McKinley</a> &#128279;</h2><p>Early in my career, I was easily caught up in the &#8220;next big thing&#8221; or <a href="https://en.wikipedia.org/wiki/Shiny_object_syndrome">shiny object syndrome</a>: the latest frameworks, databases, or tools. <strong><a href="https://mcfunley.com/choose-boring-technology">Dan McKinley&#8217;s </a></strong><em><strong><a href="https://mcfunley.com/choose-boring-technology">Choose Boring Technology</a></strong></em> was a revelation that permitted me<em> to ignore the hype cycle, </em>basically. </p><p>McKinley argues that every team has a limited number of &#8220;<strong>innovation tokens</strong>&#8221; to spend on new technology, so you must spend them wisely. In other words, innovation is a scarce resource; use it where it truly differentiates your product, and <strong>use proven, reliable tech for everything else</strong>.</p><p>McKinley&#8217;s advice is to favor technologies with well-understood failure modes and decades of documentation, the &#8220;boring&#8221; choices like MySQL, Postgres, Cron, etc., which are boring <em>because</em> they work so well. </p><p>He says that when choosing a tool, <em>&#8220;<strong>the best tool is the one that occupies the &#8216;least worst&#8217; position for as many of your problems as possible</strong>,&#8221;</em> since keeping a system running reliably in the long term far outweighs any short-term development convenience.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jvew!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jvew!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 424w, https://substackcdn.com/image/fetch/$s_!Jvew!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 848w, https://substackcdn.com/image/fetch/$s_!Jvew!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 1272w, https://substackcdn.com/image/fetch/$s_!Jvew!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jvew!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png" width="461" height="455" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:455,&quot;width&quot;:461,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133261,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180789189?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.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_!Jvew!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 424w, https://substackcdn.com/image/fetch/$s_!Jvew!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 848w, https://substackcdn.com/image/fetch/$s_!Jvew!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 1272w, https://substackcdn.com/image/fetch/$s_!Jvew!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9679793a-07d7-4a33-963f-986c51f4f0ac_461x455.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Choosing the best tool for the job (Source: <a href="https://mcfunley.com/choose-boring-technology">Dan McKinley&#8217;s </a><em><a href="https://mcfunley.com/choose-boring-technology">Choose Boring Technology</a>)</em></figcaption></figure></div><p>After reading McKinley&#8217;s message, I started to think differently about new tech stacks. I stopped feeling guilty about using &#8220;boring&#8221; languages and frameworks (who said &#8220;legacy&#8221;?). Instead of trying every new JavaScript library or cloud service, I now double down on a few stable choices that I know inside out. </p><p>This has <strong>made me a faster and more effective engineer</strong>. </p><p>My projects have fewer surprise issues, onboarding new team members is easier (because the stack is common and well-documented), and we spend less time fighting our tools. </p><p>&#8220;Choose Boring Technology&#8221; taught me that <em>innovation is a budget; spend it where it counts</em>. Don&#8217;t waste it on reinventing the wheel. Use boring tech for most things so you can <strong>innovate where it truly matters</strong> (in your product&#8217;s unique domain). </p><p>It&#8217;s a lesson in pragmatism that has improved both my productivity and my team&#8217;s.</p><h2>2. <a href="https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/">Parse, Don&#8217;t Validate (2019) by Alexis King</a> &#128279;</h2><p>This essay is about leveraging static types to build more robust software. <strong><a href="https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/">Alexis King&#8217;s </a></strong><em><strong><a href="https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/">Parse, Don&#8217;t Validate</a></strong></em> changed how I think about handling input data in <em>any</em> language. </p><p>The core idea is simple but profound: whenever you validate data, <strong>instead of returning an error or a boolean flag, write a function that </strong><em><strong>parses</strong></em><strong> the data into a richer type</strong>. By doing so, you make invalid states unrepresentable in your program.</p><p>Before this essay, I approached input checking with a defensive mindset.</p><p>For example, a reports endpoint with query params:</p><p><code>GET /reports?from=2025-01-01&amp;to=2025-12-31&amp;limit=500000</code></p><p>In a &#8220;validate&#8221; style, I&#8217;d add helpers like <code>validateRange(from, to)</code> and <code>validateLimit(limit)</code>, then keep passing <code>string</code>/<code>int</code> deeper. One missed guard later, an unbounded <code>limit</code> hits production, and the database eats a massive query. </p><p>King describes this pattern as pushing invalid data forward and relying on repeated checks (&#8220;<strong>shotgun parsing</strong>&#8221;).</p><p>The fix comes from flipping the flow: parse once at the boundary into a richer type, then run the rest of the system on that type.</p><p>So instead of &#8220;validate + keep primitives&#8221;, I parse into a <code>ReportQuery</code> value object:</p><ul><li><p><code>DateRange</code> guarantees <code>from &#8804; to</code> and enforces a maximum span</p></li><li><p><code>PageSize</code> guarantees <code>1&#8230;1000</code></p></li><li><p>Core code accepts only <code>ReportQuery</code>, never raw params</p></li></ul><p>Now invalid states cannot enter the domain model, so a forgotten validation cannot happen, there&#8217;s nowhere for raw <code>limit</code> or raw dates to flow.</p><p>Instead of littering checks everywhere, I now think in terms of designing data types that enforce those checks at construction. </p><h2>3. <a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/">Things You Should Never Do, Part I (2000) by Joel Spolsky</a> &#128279;</h2><p>Early in my career, I fell into the trap Joel Spolsky describes in <strong>&#8220;<a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/">Things You Should Never Do: Part I</a>.&#8221;</strong> Namely, I have wanted to rewrite a messy legacy codebase from scratch, more than once. Spolsky&#8217;s essay stopped me in my tracks and probably saved me from disastrous rewrites. </p><p>The key lesson is: <strong>never throw away working code and start over</strong>. The old code might be ugly, but it includes years&#8217; worth of bug fixes and hard-earned knowledge. </p><p>If you rewrite from scratch, you are <em>throwing away all that knowledge</em> and likely reintroducing bugs that were solved long ago.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t58Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t58Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 424w, https://substackcdn.com/image/fetch/$s_!t58Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 848w, https://substackcdn.com/image/fetch/$s_!t58Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 1272w, https://substackcdn.com/image/fetch/$s_!t58Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t58Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png" width="383" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:383,&quot;resizeWidth&quot;:null,&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_!t58Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 424w, https://substackcdn.com/image/fetch/$s_!t58Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 848w, https://substackcdn.com/image/fetch/$s_!t58Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 1272w, https://substackcdn.com/image/fetch/$s_!t58Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62690937-8bb7-452c-a8b9-12aa1ecf1188_383x758.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Joel Spolsky, Co-founder of Stack Overflow and Trello</figcaption></figure></div><p>Spolsky uses Netscape as the example. They famously decided to rewrite Navigator from the ground up, and in the years it took, Internet Explorer ate their lunch. Joel explains that <em>old code appears messy</em> to new eyes because &#8220;<strong>it&#8217;s harder to read code than to write it</strong>&#8221;. </p><p>Every experienced engineer looks at a large codebase and sees some complex parts and thinks they could do it better. But those parts often exist for very valid reasons: each weird bit might be a fix for a specific user bug, a workaround for an OS quirk, a performance tweak. </p><p>As Joel writes:</p><blockquote><p><em>&#8220;That two-page function that grew warts is full of bug fixes; each fix took weeks of real-world usage to discover and days to fix&#8230; If you throw away the code and start over, you throw away all that knowledge and all those fixes&#8221;</em>. </p></blockquote><p>I realized I had been underestimating the value of legacy code. We can say that <strong>legacy code generates revenue, and that is true</strong>. </p><p>After reading this essay, I changed my approach. When encountering a legacy module, I resist the urge to make big bang changes. Instead, I <strong>refactor iteratively</strong>, improve it piece by piece, write tests around it, and slowly modernize it. </p><p>In this regard, we should not forget also what Fred Brooks taught us in his 1975 book &#8220;<strong><a href="https://amzn.to/3XFvXB6">The Mythical Man Month</a></strong>&#8221;. </p><blockquote><p><em>An architect&#8217;s first work is apt to be spare and clean. He knows he doesn&#8217;t know what he&#8217;s doing, so he does it carefully and with great restraint. As he designs the first work, frill after frill and embellishment after embellishment occur to him. These get stored away to be used &#8216;next time.&#8217; Sooner or later the first system is finished, and the architect, with firm confidence and a demonstrated mastery of that class of systems, is ready to build a second system. </em></p><p><em>This second is the most dangerous system a man ever designs. When he does his third and later ones, his prior experiences will confirm each other as to the general characteristics of such systems, and their differences will identify those parts of his experience that are particular and not generalizable. The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one.</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6DqH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6DqH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6DqH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6DqH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6DqH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6DqH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg" width="292" height="441.08761329305133" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:662,&quot;resizeWidth&quot;:292,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mythical Man-Month, The: Essays on Software Engineering, Anniversary  Edition: Brooks Jr., Frederick: 8580001065793: Amazon.com: Books&quot;,&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="Mythical Man-Month, The: Essays on Software Engineering, Anniversary  Edition: Brooks Jr., Frederick: 8580001065793: Amazon.com: Books" title="Mythical Man-Month, The: Essays on Software Engineering, Anniversary  Edition: Brooks Jr., Frederick: 8580001065793: Amazon.com: Books" srcset="https://substackcdn.com/image/fetch/$s_!6DqH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6DqH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6DqH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6DqH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9146f51-94c3-4c88-a383-ffb1b94991fb_662x1000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://amzn.to/3XFvXB6">The Mythical Man Month</a> by Fred Brooks</figcaption></figure></div><h2>4. <a href="https://signalvnoise.com/svn3/the-majestic-monolith/">The Majestic Monolith (2016) by David Heinemeier Hansson (DHH)</a> &#128279;</h2><p>Around 2015-2016, microservices were all the rage. Everyone was breaking apart monolithic applications into dozens of tiny services. I&#8217;ll admit I was swept up in the &#8220;microservices mania&#8221; for a while, until I read <strong><a href="https://signalvnoise.com/svn3/the-majestic-monolith/">DHH&#8217;s </a></strong><em><strong><a href="https://signalvnoise.com/svn3/the-majestic-monolith/">The Majestic Monolith</a></strong></em>. </p><p>This essay was a contrarian breath of fresh air at a time when it seemed every system <em>had</em> to be as distributed as Netflix or Amazon. </p><p>DHH&#8217;s message: </p><blockquote><p><em>Not every problem needs microservices; in fact, most don&#8217;t.</em> </p></blockquote><p>For the majority of products (especially with small teams), a well-structured&nbsp;<strong>monolith</strong>&nbsp;is not only good enough, but it&#8217;s also actually a&nbsp;<strong>better choice</strong>&nbsp;than a distributed mess of services.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a_VI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a_VI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a_VI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a_VI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a_VI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a_VI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg" width="1280" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&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_!a_VI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a_VI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a_VI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a_VI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b49ad7-97ed-4c41-8b59-e83689d3404e_1280x1012.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Monolith at the Swiss National Expo in 2002, built by Jean Nouvel</figcaption></figure></div><p>One line that stuck with me was DHH&#8217;s reference to the #1 rule of distributed computing: &#8220;<strong>Don&#8217;t distribute your computing if you can avoid it</strong>!&#8221; Every time you split a process into separate services, you introduce a world of complexity, network calls, fallible connections, synchronization challenges, deployment and DevOps overhead, and so on. </p><p>DHH argues (persuasively) that <strong>microservice architectures make sense for huge companies with thousands of engineers working on independent components</strong>,  <em>not</em> for the average product team of 5, 10, or even 50 developers. </p><p>Copying the architecture of Google or Amazon when you&#8217;re not operating at their scale is essentially <strong>cargo culting</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_!TE-x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TE-x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 424w, https://substackcdn.com/image/fetch/$s_!TE-x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 848w, https://substackcdn.com/image/fetch/$s_!TE-x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 1272w, https://substackcdn.com/image/fetch/$s_!TE-x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TE-x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png" width="545" height="265" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:265,&quot;width&quot;:545,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;fig&quot;,&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="fig" title="fig" srcset="https://substackcdn.com/image/fetch/$s_!TE-x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 424w, https://substackcdn.com/image/fetch/$s_!TE-x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 848w, https://substackcdn.com/image/fetch/$s_!TE-x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 1272w, https://substackcdn.com/image/fetch/$s_!TE-x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7964bddd-4e3c-4429-859b-b7265aed3b32_545x265.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DHH in <a href="https://www.youtube.com/watch?v=HDKUEXBF3B4">Ruby on Rails: The Documentary</a></figcaption></figure></div><p>The &#8220;<a href="https://signalvnoise.com/svn3/the-majestic-monolith/">Majestic Monolith</a>&#8221; essay gave me the confidence to push back on reflexive microservices adoption. DHH not only defends monoliths&nbsp;but also&nbsp;<em>celebrates</em>&nbsp;them: he urges embracing the monolith with pride and&nbsp;<em>making it majestic</em>. </p><p>A monolith done right, with clear modular boundaries but deployed as a single integrated system, has enormous advantages for a small team. It&#8217;s simpler to develop, test, deploy, and understand. There&#8217;s one database (usually), one deployable, and one place to look if something goes wrong. </p><p>The essay gave me the phrase <strong>&#8220;You are not Amazon&#8221;</strong> as a gentle reminder, i.e., design for <em>your</em> scale and complexity, not somebody else&#8217;s. </p><blockquote><p>&#10145;&#65039; <em>Read more about <strong>Modular Monoliths</strong>: </em></p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:154485243,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-is-a-modular-monolith&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;What is a Modular Monolith?&quot;,&quot;truncated_body_text&quot;:&quot;Microservices are popular for their scalability but come with complexity and operational overhead. They have become a big hype in the industry, and you can see microservices everywhere. On the other side, modular monolith offers a middle ground&#8212;keeping the simplicity of a monolith while allowing for future scalability. Here&#8217;s why it might be the right c&#8230;&quot;,&quot;date&quot;:&quot;2025-02-13T16:03:16.685Z&quot;,&quot;like_count&quot;:154,&quot;comment_count&quot;:10,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3013d0ff-7db5-4a90-91a5-eeaed25e99ba_1042x1040.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, actionable insights on software engineering and leadership. Trusted by engineers at Amazon, Microsoft, and Google, and students at MIT and Stanford.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[64099,458709],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/what-is-a-modular-monolith?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">What is a Modular Monolith?</div></div><div class="embedded-post-body">Microservices are popular for their scalability but come with complexity and operational overhead. They have become a big hype in the industry, and you can see microservices everywhere. On the other side, modular monolith offers a middle ground&#8212;keeping the simplicity of a monolith while allowing for future scalability. Here&#8217;s why it might be the right c&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 154 likes &#183; 10 comments &#183; Dr Milan Milanovi&#263;</div></a></div><h2>5. <a href="https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/">The Joel Test (2000) by Joel Spolsky</a> &#128279;</h2><p>Sometimes significant insights come in simple packages.<a href="https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/"> </a><strong><a href="https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/">The Joel Test</a></strong> is one of those. In a short blog post, Joel Spolsky presented <em>12 yes-or-no questions</em> to quickly assess the health of a software team and process. </p><p>It&#8217;s basically a checklist:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sHUs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sHUs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 424w, https://substackcdn.com/image/fetch/$s_!sHUs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 848w, https://substackcdn.com/image/fetch/$s_!sHUs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 1272w, https://substackcdn.com/image/fetch/$s_!sHUs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sHUs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png" width="423" height="519" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:519,&quot;width&quot;:423,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57304,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180789189?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.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_!sHUs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 424w, https://substackcdn.com/image/fetch/$s_!sHUs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 848w, https://substackcdn.com/image/fetch/$s_!sHUs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 1272w, https://substackcdn.com/image/fetch/$s_!sHUs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4270d5ec-866f-49e0-aac7-91cf009a53c1_423x519.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s a quick test that takes about 3 minutes and gives you a gut feel for how good a team is. And you know what? It <strong>works.</strong> I&#8217;ve used the Joel Test in every team I&#8217;ve joined (or led) as a starting diagnostic, and it has <em>never</em> failed to identify gaps or dysfunctions almost immediately.</p><p>After using this test multiple times, I&#8217;ve essentially internalized it as a guiding principle for team practices. When I became a team lead, I introduced my team to the Joel Test in one retro. We were about 8/12 at the time; we identified the four &#8220;No&#8221; answers and worked on them over the next quarter. </p><p>The improvement reflected in our output: we had fewer bugs, onboarded new devs faster, and generally felt more in control.</p><p>Joel suggests that a score of 12 is perfect, 11 is acceptable, and any score below 10 indicates serious problems.</p><p>It&#8217;s a quick <strong>litmus test</strong>. Of course, it&#8217;s not complete; there are things it doesn&#8217;t cover (like code quality, architecture, etc.). But it covers the essentials of <em>software engineering hygiene</em>. </p><h2>6. <a href="https://research.google.com/pubs/archive/32713.pdf">How to Design a Good API and Why It Matters (2007) by Joshua Bloch</a> &#128279;</h2><p>As I grew from writing small scripts to designing libraries and services for others to use, I realized how <strong>critical yet complex API design is</strong>. <strong>Joshua Bloch&#8217;s talk/essay </strong><em><strong>&#8220;<a href="https://research.google.com/pubs/archive/32713.pdf">How to Design a Good API and Why it Matters</a>&#8221;</strong></em> became my API design bible. It fundamentally changed how I design and evaluate interfaces. </p><p>Bloch&#8217;s core messages can be distilled into a few rules:</p><ul><li><p><strong>Public APIs, like diamonds, are forever.</strong> You get one chance to get it right, so put in the effort up front. This taught me that once you publish an API (whether a library method, a service endpoint, etc.), it&#8217;s hard to change because users start to depend on it. </p></li><li><p><strong>APIs should be easy to use and hard to misuse.</strong> It means a good API makes the everyday things simple and the wrong things difficult or impossible. For example, if a class shouldn&#8217;t be created directly, provide a factory or builder to guide usage instead of leaving foot-guns lying around. </p></li><li><p><strong>Good naming and documentation are part of API design.</strong> Bloch said &#8220;names matter&#8221; and that every API is a little language on its own. If I can&#8217;t come up with a clear name for a method, that&#8217;s often a sign that the method&#8217;s purpose isn&#8217;t clear, or that it's doing too much.</p></li></ul><p>After reading Bloch&#8217;s guidance, I started doing something new: <strong>API reviews</strong>. Whenever we design a new module or service interface, I&#8217;ll gather a couple of engineers (sometimes from other teams) and simulate API usage before we implement it. </p><p>We basically pretend to be the consumer of our API: is it obvious how to instantiate this? Does the workflow make sense? Are we exposing too much that could be misused? This practice has caught many issues early.</p><p>One more thing Bloch highlighted is thinking about <strong>evolution</strong>: A good API should be extensible in the future (where possible). This influenced me to design with &#8220;future-proofing&#8221; in mind. For example, using interface types instead of concrete classes if I suspect we might want to change the implementation later, or reserving unused enum values for future expansion, etc. </p><p>And critically, it taught me to <strong>avoid breaking changes</strong>. If an API needs to change, try to do so by adding new methods or endpoints rather than changing the contracts of existing ones. Because once people depend on it, breaking it will cause pain. </p><blockquote><p>&#10145;&#65039; Learn more about APIs</p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:149912730,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/how-to-learn-api&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;How to learn API?&quot;,&quot;truncated_body_text&quot;:&quot;Our daily work as software engineers involves creating or utilizing these APIs. Creating well-designed REST APIs is crucial; not only should they be easy to work with and concise, but they should also be well-designed against misuse to prevent future issues.&quot;,&quot;date&quot;:&quot;2024-11-14T16:01:35.909Z&quot;,&quot;like_count&quot;:241,&quot;comment_count&quot;:4,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3013d0ff-7db5-4a90-91a5-eeaed25e99ba_1042x1040.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, actionable insights on software engineering and leadership. Trusted by engineers at Amazon, Microsoft, and Google, and students at MIT and Stanford.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[64099,458709],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/how-to-learn-api?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How to learn API?</div></div><div class="embedded-post-body">Our daily work as software engineers involves creating or utilizing these APIs. Creating well-designed REST APIs is crucial; not only should they be easy to work with and concise, but they should also be well-designed against misuse to prevent future issues&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 241 likes &#183; 4 comments &#183; Dr Milan Milanovi&#263;</div></a></div><h2>7. <a href="https://www.dreamsongs.com/RiseOfWorseIsBetter.html">The Rise of &#8220;Worse is Better&#8221; (1989) by Richard P. Gabriel</a> &#128279;</h2><p>This essay comes from the world of Lisp in the late &#8217;80s. Still,&nbsp;<strong>Richard Gabriel&#8217;s &#8220;<a href="https://www.dreamsongs.com/RiseOfWorseIsBetter.html">The Rise of Worse is Better</a>&#8221;</strong> contains a timeless software philosophy that influenced my approach to architecture and product design. The premise is that <em>&#8220;worse&#8221; solutions often beat &#8220;better&#8221; ones in the real world</em>, where &#8220;worse&#8221; and &#8220;better&#8221; have specific meanings. </p><p>In Gabriel&#8217;s terms, the <strong>&#8220;MIT approach&#8221;</strong> to design (aka <em>&#8220;the Right Thing&#8221;</em>) values completeness, consistency, and correctness, aiming for an ideal system. </p><p>On the other side, the <strong>&#8220;New Jersey approach&#8221;</strong> (<em>&#8220;worse is better&#8221;</em>) values simplicity and practicality, even if the solution is incomplete or slightly less elegant. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ergo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ergo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 424w, https://substackcdn.com/image/fetch/$s_!ergo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 848w, https://substackcdn.com/image/fetch/$s_!ergo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 1272w, https://substackcdn.com/image/fetch/$s_!ergo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ergo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png" width="302" height="359.9178082191781" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:438,&quot;resizeWidth&quot;:302,&quot;bytes&quot;:192327,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180789189?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.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_!ergo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 424w, https://substackcdn.com/image/fetch/$s_!ergo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 848w, https://substackcdn.com/image/fetch/$s_!ergo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 1272w, https://substackcdn.com/image/fetch/$s_!ergo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f74b92-272d-4e75-8f7e-d407f8feb535_438x522.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The interesting claim Gabriel makes is that the New Jersey style (examples are Unix and C) tends to <strong>win in the marketplace</strong> over the MIT style (classic Lisp machines), because simpler systems get adoption and can evolve. In contrast, perfect ones often never leave the lab.</p><p>This was eye-opening for me. It explained many historical outcomes: why C and Unix (with all their flaws) dominated, while more &#8220;perfect&#8221; systems fell by the wayside. Unix/C was simple enough to port to small machines, easy to understand (well, relatively speaking), and satisfied <em>just enough</em> requirements to be useful. </p><p>Once widely adopted, they could be gradually improved. As Gabriel put it, <strong>a software system that&#8217;s 50% ideal but widely used will spread and, over time, maybe grow to 90% of the perfect</strong>. Whereas a system that tries to be 100% ideal from the start often never gets there, or gets there too late, after the &#8220;worst&#8221; solution has eaten the world.</p><p>Understanding &#8220;worse is better&#8221; changed my attitude toward seeking perfection. I am, by nature, someone who likes elegant and perfect solutions. But I&#8217;ve seen in my experience that a simple solution that&#8217;s <em>good enough</em> today beats a perfect solution delivered next year. </p><p>&#8220;<a href="https://www.dreamsongs.com/RiseOfWorseIsBetter.html">The Rise of Worse is Better</a>&#8221; basically taught me that <strong>sometimes, good enough is not just good enough, it&#8217;s actually the optimal strategy</strong> for long-term success. </p><p>Simplicity has its own quality. In a world of limited time and resources, a simple system that people can use and adapt will often outcompete a &#8220;perfect&#8221; system that&#8217;s perpetually in development. </p><h2>8. <a href="https://grugbrain.dev/">The Grug Brained Developer (2022) by Carson Gross</a> &#128279;</h2><p>This one is a bit different. It uses a caveman-style character (&#8220;Grug&#8221;) who shares simple but surprisingly helpful programming advice. <strong>&#8220;<a href="https://grugbrain.dev/">The Grug-Brained Developer</a>&#8221;</strong> might be written in a playfully sarcastic style, but it hit me with some very real truths about over-engineering and complexity. </p><p>The central theme is that<strong> modern developers often make things far too complex for no good reason</strong>, and that a &#8220;grug brain&#8221; (simple, caveman-like thinking focused on fundamentals) can usually produce better outcomes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AHBZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AHBZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 424w, https://substackcdn.com/image/fetch/$s_!AHBZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 848w, https://substackcdn.com/image/fetch/$s_!AHBZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 1272w, https://substackcdn.com/image/fetch/$s_!AHBZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AHBZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png" width="380" height="338.1744966442953" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:663,&quot;width&quot;:745,&quot;resizeWidth&quot;:380,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Grug Brained Developer&quot;,&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="The Grug Brained Developer" title="The Grug Brained Developer" srcset="https://substackcdn.com/image/fetch/$s_!AHBZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 424w, https://substackcdn.com/image/fetch/$s_!AHBZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 848w, https://substackcdn.com/image/fetch/$s_!AHBZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 1272w, https://substackcdn.com/image/fetch/$s_!AHBZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F072f112a-ee84-4807-b475-fd95d5d29f88_745x663.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://grugbrain.dev/">The Grug-Brained Developer</a></figcaption></figure></div><p>One of the funniest and most insightful parts is where Grug identifies the <strong>&#8220;Eternal Enemy&#8221;</strong>: Complexity. <em>&#8220;Complexity </em>is <em>bad. Say again: <strong>complexity is</strong> <strong>terrible</strong>.&#8221;</em> This refrain is both amusing and accurate. It explains in plain language what many of us have learned the hard way - every unit of complexity in your codebase or system is an opportunity for things to go wrong (and for developers to get confused). </p><p>Grug&#8217;s advice often boils down to <em>&#8220;say no&#8221;</em> to unnecessary changes, features, or abstractions. I laughed at how he puts it: &#8220;No, grug not build that abstraction.&#8221; It&#8217;s a caricature, but honestly, it made me more comfortable pushing back. </p><p>As I&#8217;ve grown into senior roles, I&#8217;ve found that one of the most valuable things you can do is <strong>protect the codebase from unnecessary complexity</strong>, whether that means not adopting a trendy new microframework or avoiding a premature microservice split (see <em>Majestic Monolith</em> above). </p><p>Another thing the Grug essay validated is the importance of <strong>iteration and emergent design</strong>. There&#8217;s a section where Grug talks about not factoring or abstracting too early. Instead, build things simply until you truly understand the problem, then refactor as needed. </p><p>The &#8220;grug&#8221; approach is to make something tangible first (even if it's not perfectly abstract), then evolve it as you identify clear pain points. </p><h2>9. <a href="https://stevemcconnell.com/articles/software-quality-at-top-speed/">Software Quality at Top Speed (1996) by Steve McConnell</a> &#128279;</h2><p>Steve McConnell&#8217;s article <strong>&#8220;<a href="https://stevemcconnell.com/articles/software-quality-at-top-speed/">Software Quality at Top Speed</a>&#8221;</strong> changed how I work. It showed me that clean code and fast delivery aren&#8217;t opposites. The usual thinking is that if you want to go fast, you cut corners on quality, skip tests, skip design, crank out code, and fix issues later. </p><p>McConnell (the author of the famous book &#8220;<a href="https://amzn.to/4rEpILD">Code Complete</a>&#8221;), backed by data, argues the opposite: <strong>higher quality leads to faster development</strong>. In his words, projects with the lowest defect rates also have the shortest schedules. When I first read that, it was almost counterintuitive, but the more I thought about it and saw it in real projects, the more it rang true.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aVTO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aVTO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aVTO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aVTO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aVTO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aVTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Code Complete, 2nd Edition [Book]&quot;,&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="Code Complete, 2nd Edition [Book]" title="Code Complete, 2nd Edition [Book]" srcset="https://substackcdn.com/image/fetch/$s_!aVTO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aVTO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aVTO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aVTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa795deb-4aa0-4bdc-b20f-7ce225df34f1_1200x630.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Steve McConnell's book <a href="https://amzn.to/4rEpILD">Code Complete</a> </figcaption></figure></div><p>The article cites studies (such as those from IBM and Capers Jones) showing that <strong>poor quality is a significant cause of schedule overruns</strong> and even project cancellations. </p><p>Basically, every bug is a time thief. When you rush and introduce defects, you will inevitably pay the time back (with interest), debugging, retesting, and firefighting in production. </p><p>McConnell gave concrete examples: a team under pressure might cut design and code review time to &#8220;save time,&#8221; but they end up spending <em>more</em> time later in test/fix cycles or rewriting buggy components. </p><p>One interesting anecdote from the article was the cost of a shortcut, a scenario in which a team hacked in a feature to meet a deadline, only to have it bite them hard a couple of months later, requiring a significant rework. McConnell broke down how the supposed shortcut meant they spent <em>more</em> overall time: first building the hack, then debugging the problems it caused, then ripping it out and doing it properly anyway. </p><p>McConnell also emphasizes practices like <strong>code reviews, design reviews, and automated testing</strong> as high-leverage activities. For example, code inspections can remove a large percentage of defects early, dramatically reducing the test/debug burden. </p><p>As McConnell notes, projects that achieve&gt;95% bug removal before release tend to meet their schedules and keep customers happy. </p><p>That became a sort of quality bar for me: aim to catch everything virtually <em>before</em> it goes out the door.</p><h2>10. <a href="https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/">Don&#8217;t Call Yourself a Programmer (2011) by Patrick McKenzie</a> &#128279;</h2><p>This essay by Patrick McKenzie (better known as patio11) was less about coding and more about how to <strong>frame my career and value</strong> as a software engineer. McKenzie&#8217;s core argument: <em>&#8220;Programmer&#8221; as a job title can pigeonhole you as a commodity in the eyes of businesses.</em> It&#8217;s better to describe yourself in terms of the business value you create, not the specific activities you do. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_P76!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_P76!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 424w, https://substackcdn.com/image/fetch/$s_!_P76!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 848w, https://substackcdn.com/image/fetch/$s_!_P76!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 1272w, https://substackcdn.com/image/fetch/$s_!_P76!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_P76!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png" width="360" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:360,&quot;width&quot;:360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Programmer PNG Transparent Images Free Download | Vector Files | Pngtree&quot;,&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="Programmer PNG Transparent Images Free Download | Vector Files | Pngtree" title="Programmer PNG Transparent Images Free Download | Vector Files | Pngtree" srcset="https://substackcdn.com/image/fetch/$s_!_P76!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 424w, https://substackcdn.com/image/fetch/$s_!_P76!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 848w, https://substackcdn.com/image/fetch/$s_!_P76!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 1272w, https://substackcdn.com/image/fetch/$s_!_P76!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c364dee-86c4-4f4e-b76f-65b3aec882ff_360x360.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>He wrote that calling yourself a programmer sounds to business people like <em>&#8220;anomalously high-cost peon who types some mumbo-jumbo into a computer&#8221;</em>, essentially, someone potentially replaceable or outsourceable. </p><p>That stung, but I realized he was right. Non-technical execs often don&#8217;t understand what coding is; they know it&#8217;s expensive and wish they had less of it. And here we come proudly wearing the label &#8220;Programmer.&#8221;</p><p>McKenzie suggests that instead, you present yourself as <em>&#8220;someone who increases revenue or reduces costs&#8221;</em>, the coding is incidental to that. This was a revelation to me. It shifted my perspective from <strong>skills-centric</strong> (&#8220;I know X language, I can build Y&#8221;) to <strong>value-centric</strong> (&#8220;I solve Z problem for businesses, which saves them $N or helps them gain M customers&#8221;). </p><p>I started rewriting my resume, LinkedIn, and even how I spoke in interviews or performance reviews. For example, instead of saying &#8220;<em>Implemented a .NET service to process e-commerce transactions</em>,&#8221; I would say &#8220;<em>Built an online payment solution that processed $10M in transactions in the first year, increasing our company&#8217;s revenue by 5%.</em>&#8221; </p><p>This essay also introduced me to the concept of&nbsp;<strong>Profit centers vs. cost centers</strong>&nbsp;in a company and helped me understand the kind of company I work for. Programmers are typically seen as cost centers (a necessary expense), whereas roles like sales or trading are profit centers (they directly generate revenue). And this especially holds for service companies.</p><p>McKenzie&#8217;s point is that if you can align yourself with profit by working on projects that directly drive revenue or by being the go-to person for solutions that save money, you put yourself in a much stronger career position. </p><h2>11. Bonus: <a href="https://blog.codinghorror.com/how-to-become-a-better-programmer-by-not-programming/">How To Become a Better Programmer by Not Programming (2007) by Jeff Atwood</a> &#128279;</h2><p>When I first saw the title of Jeff Atwood&#8217;s blog post <strong>&#8220;<a href="https://blog.codinghorror.com/how-to-become-a-better-programmer-by-not-programming/">How To Become a Better Programmer by Not Programming</a>,&#8221;</strong> I did a double-take. Not programming? Isn&#8217;t the whole mantra &#8220;practice, practice, practice&#8221;? But Atwood&#8217;s piece makes an important point: after a certain baseline of coding skill, <em>what differentiates great developers isn&#8217;t just more coding, it&#8217;s the &#8220;everything else&#8221;</em>. </p><p>In other words, <strong>to truly improve, you have to broaden your skills beyond writing code</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_!UfoM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UfoM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 424w, https://substackcdn.com/image/fetch/$s_!UfoM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 848w, https://substackcdn.com/image/fetch/$s_!UfoM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 1272w, https://substackcdn.com/image/fetch/$s_!UfoM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UfoM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png" width="454" height="258.36934673366835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:796,&quot;resizeWidth&quot;:454,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Coding Horror (Page 15)&quot;,&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="Coding Horror (Page 15)" title="Coding Horror (Page 15)" srcset="https://substackcdn.com/image/fetch/$s_!UfoM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 424w, https://substackcdn.com/image/fetch/$s_!UfoM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 848w, https://substackcdn.com/image/fetch/$s_!UfoM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 1272w, https://substackcdn.com/image/fetch/$s_!UfoM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3557ccf0-4f72-4edf-b0dd-114a5dfe0bf7_796x453.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Jeff Atwood blog - aka <a href="https://blog.codinghorror.com/">Coding Horror</a></figcaption></figure></div><p>Bill Gates is quoted as saying that after 3-4 years of programming, you kind of plateau in pure coding ability. Additional years don&#8217;t necessarily make you <em>much</em> better at algorithmically coding.</p><p>Atwood (and Gates) suggest that to get better after that, <strong>you need to understand the context around the code: the users, the domain, the collaboration with others, the design,</strong> etc. Jeff writes, <em>&#8220;the only way to become a better programmer is by not programming&#8221; - put down the IDE and broaden your perspective</em>.</p><p>I used this in a few concrete ways:</p><ul><li><p>I started <strong>learning more about the business domain</strong> I was working in. Instead of seeing that as someone else&#8217;s job, I engaged more with product managers, attended customer feedback sessions, and learned the industry's vocabulary (becoming more <strong>product-minded as an engineer</strong>). </p></li><li><p>I put more effort into <strong>communication and people skills</strong>. Jeff highlights that great engineers often excel at bridging engineering with other areas, such as marketing and customer service. This nudged me to volunteer to present engineering plans to various departments, mentor juniors, or coordinate more with QA and Ops. </p></li><li><p>I <strong>diversified my technical interests</strong>. I started reading more about design, UX, and even fields like graphic design or systems thinking. I&#8217;m a backend engineer primarily, but I've dabbled in front-end work and studied some data science concepts, not to master them all, but to broaden my horizons. </p></li></ul><p>Atwood&#8217;s essay essentially told me: <em>get out of the coding bubble.</em> I can attest that following this advice has made me a much better developer in the holistic sense. I&#8217;ve seen developers who only code and ignore everything else; they often hit a ceiling. </p><p>They might be great at cranking out features, but those features might miss the mark, be hard to integrate, or they might struggle to work in a team. </p><p>On the other hand, developers who spend time not coding, thinking, discussing, and learning about the world end up making more impactful contributions when they do code.</p><blockquote><p><em>&#10145;&#65039; Another great post from Jeff that impacted me is &#8220;<strong><a href="https://blog.codinghorror.com/the-best-code-is-no-code-at-all/">The Best Code is No Code At All</a></strong>&#8221; (2007), where he states what every experienced developer knows but hates admitting: code is a liability, not an asset. Every line you write creates a future maintenance burden. Every new feature multiplies the surface area for bugs.</em></p><p><em>The essay opens with Rich Skrenta&#8217;s observation that code rots, requires maintenance, and has bugs that need to be found. But Atwood goes deeper: <strong>the problem isn&#8217;t the code, it&#8217;s us.</strong> Developers love writing code. We solve every problem with more code. This instinct is our enemy.</em></p><p><em>Wil Shipley&#8217;s framework makes the tradeoffs explicit. Every coding decision balances brevity, features, speed, time spent, robustness, and flexibility. These dimensions oppose each other. The answer? Start with brevity. Increase other dimensions only as testing requires.</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/milan_milanovic/status/1985331129046724618" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U4FY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U4FY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U4FY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U4FY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U4FY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg" width="418" height="481.745" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:922,&quot;width&quot;:800,&quot;resizeWidth&quot;:418,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;As a developer, you're not paid to code You're paid to solve problems The  earlier you get it, the better for you When you get the problem, try to  solve it without&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://x.com/milan_milanovic/status/1985331129046724618&quot;,&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="As a developer, you're not paid to code You're paid to solve problems The  earlier you get it, the better for you When you get the problem, try to  solve it without" title="As a developer, you're not paid to code You're paid to solve problems The  earlier you get it, the better for you When you get the problem, try to  solve it without" srcset="https://substackcdn.com/image/fetch/$s_!U4FY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U4FY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U4FY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U4FY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3609cbda-2e0d-4681-a072-bf2ee7e6cee0_800x922.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">On <a href="https://x.com/milan_milanovic/status/1985331129046724618">X</a></figcaption></figure></div><div><hr></div><h2>12. Conclusion</h2><p>These essays, each in its own way, have shaped my philosophy and approach to software development. If you haven&#8217;t read some of these, I highly recommend them. They might change how you think about software, too.</p><p>Ultimately, the common thread in all of them is a kind of <em>wisdom beyond code</em>: whether it&#8217;s about avoiding hype, making invalid states impossible, learning from old code, right-sizing architecture, managing complexity, investing in quality, or stepping back to see the bigger picture. They speak to the craft and culture of creating good software.</p><p>Each essay gave me insight that I carry into my daily work. Together, they form a toolkit of principles I wish I had known from the start. </p><p>I hope sharing them (and what I learned) gives you something valuable to take away, too.</p><p><strong>Happy coding, and happy not-coding!</strong></p><div><hr></div><h2>&#128240; What I read daily (you can subscribe to it too!)</h2><p>I use Mailbrew to pull my daily reading into one place: Hacker News, Product Hunt, Reddit, and a few tech blogs I follow. It&#8217;s basically my morning scan of what&#8217;s happening in tech.</p><p>I kept it private until now, but figured I&#8217;d open it up for my readers. If you want to see what I&#8217;m reading each day, <a href="https://app.mailbrew.com/milanm/milans-daily-brew-1ByzL1TGwggS">here&#8217;s the link</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gdjs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gdjs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 424w, https://substackcdn.com/image/fetch/$s_!gdjs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 848w, https://substackcdn.com/image/fetch/$s_!gdjs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 1272w, https://substackcdn.com/image/fetch/$s_!gdjs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gdjs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png" width="508" height="594.5986577181208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:872,&quot;width&quot;:745,&quot;resizeWidth&quot;:508,&quot;bytes&quot;:102609,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/180789189?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.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_!gdjs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 424w, https://substackcdn.com/image/fetch/$s_!gdjs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 848w, https://substackcdn.com/image/fetch/$s_!gdjs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 1272w, https://substackcdn.com/image/fetch/$s_!gdjs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb76407-1f29-4e45-84e2-f968edf36133_745x872.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Milan&#8217;s daily brew</figcaption></figure></div><div><hr></div><h2><strong>More ways I can help you </strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 260K+ followers in under two years, plus a 49K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[The Trends #9: TypeScript just became the most used programming language on GitHub]]></title><description><![CDATA[The Trends filter tracks tech trends: what moved, why it matters, and what to watch next.]]></description><link>https://newsletter.techworld-with-milan.com/p/the-trends-9-typescript-just-became</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/the-trends-9-typescript-just-became</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 11 Dec 2025 16:02:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/05451dbb-b540-495d-9c65-e3052518c78a_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>The Trends</strong> filter tracks tech trends: what moved, why it matters, and what to watch next. If you spot a signal I missed, reply with a link and one line of context.</p><p>Today, we cover:</p><ol><li><p><strong>95% of developers use AI, yet 30% don&#8217;t trust the code it writes.</strong> DORA&#8217;s 2025 report reveals that teams are moving faster while breaking more things (hello, <a href="https://newsletter.techworld-with-milan.com/p/how-google-amazon-and-crowdstrike">outages</a>). AI amplifies whatever system you have. Strong teams with good practices get better. Dysfunctional teams with fragmented workflows accelerate the chaos. </p></li><li><p><strong>TypeScript has just become the most used language on GitHub.</strong> It is projected to grow by 1 million contributors in 2025. Also, India has overtaken the US in open-source contributions.</p></li><li><p><strong>89% of developers use AI daily, but only 24% design APIs for it.</strong> The 2025 State of the API Report by Postman exposes a critical gap: developers are AI-native, but APIs aren&#8217;t built for AI agents. Also, 70% are aware of MCP, but only 10% use it.</p></li><li><p><strong>AI is moving from software to the physical world.</strong> InfoQ&#8217;s trends report shows the next frontier: AI entering robotics and real-world systems. Google&#8217;s Gemini Robotics and NVIDIA&#8217;s AI-to-deployment pipeline are bringing language models into physical environments. This isn&#8217;t just software anymore. </p></li><li><p><strong>ThoughtWorks flags the AI antipatterns to avoid.</strong> What&#8217;s working: MCP, agentic workflows, curated shared instructions. What&#8217;s not: AI-accelerated shadow IT, naive API-to-MCP conversion, text-to-SQL failures.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://solutions.cerbos.dev/guide-to-multitenant-authorization?utm_campaign=tech_world_milan_dec_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=">One size does not fit all: A guide to multitenant authorization (Sponsored)</a></h2><p><em>When an enterprise signs up for a SaaS product, the &#8220;Admin, Editor, Viewer&#8221; model breaks. Role explosion follows - thousands of tenant-specific role variants that cripple engineering velocity and stall enterprise deals.</em></p><p><em>Static roles weren&#8217;t designed for the complexity of today&#8217;s multitenant systems. Every enterprise has unique organizational structures, matrix reporting, and regional compliance requirements that demand contextual, granular permissions.</em></p><p><em>This ebook shows you how to implement dynamic, tenant-aware authorization that scales, namely:</em></p><ul><li><p><em>Why fixed roles break at enterprise scale (and what role explosion actually looks like)</em></p></li><li><p><em>How to implement authorization that mirrors each tenant&#8217;s organizational reality</em></p></li><li><p><em>Architecture patterns for separating platform-wide rules from tenant-specific policies</em></p></li><li><p><em>The PEP/PDP/PAP pattern and policy-as-code workflows</em></p></li><li><p><em>Real examples from leading SaaS companies scaling authorization across thousands of tenants</em></p></li></ul><p><em>Get the blueprint to eliminate role explosion before it blocks your enterprise growth.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://solutions.cerbos.dev/guide-to-multitenant-authorization?utm_campaign=tech_world_milan_dec_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!huZx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 424w, https://substackcdn.com/image/fetch/$s_!huZx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 848w, https://substackcdn.com/image/fetch/$s_!huZx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!huZx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!huZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png" width="1456" height="777" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:777,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3679554,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://solutions.cerbos.dev/guide-to-multitenant-authorization?utm_campaign=tech_world_milan_dec_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.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_!huZx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 424w, https://substackcdn.com/image/fetch/$s_!huZx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 848w, https://substackcdn.com/image/fetch/$s_!huZx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!huZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e188ed4-1b69-4a7c-8775-1ba6e4e213d0_2400x1280.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://solutions.cerbos.dev/guide-to-multitenant-authorization?utm_campaign=tech_world_milan_dec_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=&quot;,&quot;text&quot;:&quot;Download FREE eBook&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://solutions.cerbos.dev/guide-to-multitenant-authorization?utm_campaign=tech_world_milan_dec_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term="><span>Download FREE eBook</span></a></p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. DORA 2025 report </h2><p><a href="https://cloud.google.com/dora">DORA&#8217;s 2025 report</a>, based on input from 5,000 professionals, confirms what many suspected: AI adoption is now universal. 95% of developers use AI. </p><p><strong>More than 80% believe it increased their productivity.</strong></p><p><strong>But 30% don&#8217;t trust the code it generates.</strong></p><p>That tension tells the real story. Teams are moving faster while breaking more things. </p><p>AI adoption now improves software delivery throughput, a reversal from 2024 findings. But instability rose alongside 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_!49jX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!49jX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 424w, https://substackcdn.com/image/fetch/$s_!49jX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 848w, https://substackcdn.com/image/fetch/$s_!49jX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 1272w, https://substackcdn.com/image/fetch/$s_!49jX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!49jX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png" width="668" height="315" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:315,&quot;width&quot;:668,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40393,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.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_!49jX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 424w, https://substackcdn.com/image/fetch/$s_!49jX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 848w, https://substackcdn.com/image/fetch/$s_!49jX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 1272w, https://substackcdn.com/image/fetch/$s_!49jX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543911f2-b557-4541-a9cc-02fd0c441bcd_668x315.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The landscape of AI&#8217;s impact (Source: DORA 2025 Report)</figcaption></figure></div><p>Here are the main findings:</p><h3><strong>1. Seven team profiles</strong></h3><p>DORA calls out seven team archetypes, from those still stuck on basics to those it labels &#8220;harmonious high achievers.&#8221; Some teams move fast but can&#8217;t keep systems stable. Others ship less often and sustain quality with lower burnout.</p><p>The key isn&#8217;t tools or process checklists, it&#8217;s how the team performs under stress. Pressure exposes gaps in collaboration, ownership, and culture. DORA&#8217;s data shows AI doesn&#8217;t fix dysfunction; it amplifies what&#8217;s already there. Good teams get stronger. Fragmented ones spin faster and fall apart quicker.</p><p>That&#8217;s why adoption stats alone mean little. They don&#8217;t reflect real impact. The question isn&#8217;t how fast you fold AI into your stack. It&#8217;s whether your team&#8217;s setup and norms let it improve outcomes rather than magnify chaos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QjGE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QjGE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 424w, https://substackcdn.com/image/fetch/$s_!QjGE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 848w, https://substackcdn.com/image/fetch/$s_!QjGE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 1272w, https://substackcdn.com/image/fetch/$s_!QjGE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QjGE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png" width="1035" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:1035,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:192660,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.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_!QjGE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 424w, https://substackcdn.com/image/fetch/$s_!QjGE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 848w, https://substackcdn.com/image/fetch/$s_!QjGE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 1272w, https://substackcdn.com/image/fetch/$s_!QjGE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792c240f-5615-41cc-b14c-4599e2db6d26_1035x780.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"> Performance levels of seven team archetypes (Source: DORA 2025 Report)</figcaption></figure></div><h3>2. The capabilities that matter</h3><p>DORA&#8217;s new AI Capabilities Model identifies seven foundational practices that amplify the positive impact of AI.</p><ul><li><p><strong>Clear and communicated AI stance</strong>. Developers need to know which tools are permitted and how they&#8217;re expected to use them. Ambiguity creates two problems: people either use AI less than they could because they&#8217;re afraid of overstepping, or they overstep boundaries they are unaware of.</p></li><li><p><strong>Healthy data ecosystems</strong>. AI models are only as good as the data they train on. When internal data is high-quality, accessible, and unified rather than siloed, the benefits of AI for organizational performance multiply.</p></li><li><p><strong>AI-accessible internal data</strong>. Generic foundational models are helpful, but AI connected to your repositories and documentation improves effectiveness and code quality. </p></li><li><p><strong>Strong version control practices</strong>. Frequent commits amplify individual effectiveness. Regular use of rollback features amplifies team performance. </p></li><li><p><strong>Working in small batches</strong>. This longstanding DORA capability is even more important in the AI era. Small batches amplify product performance and reduce friction for AI-assisted teams, even if they slightly reduce perceived individual effectiveness.</p></li><li><p><strong>User-centric focus.</strong> The most striking finding in the report. Teams without a user-centric focus experience negative performance impacts from AI adoption. The technology not only fails to help, but it also actively harms team performance.</p></li><li><p><strong>Quality internal platforms</strong>. Platform engineering adoption hit 90%. High-quality platforms serve as the distribution layer, scaling AI benefits from individual productivity gains to organizational advantages. </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_!beqG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!beqG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 424w, https://substackcdn.com/image/fetch/$s_!beqG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 848w, https://substackcdn.com/image/fetch/$s_!beqG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 1272w, https://substackcdn.com/image/fetch/$s_!beqG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!beqG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png" width="1057" height="505" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:505,&quot;width&quot;:1057,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:71123,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.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_!beqG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 424w, https://substackcdn.com/image/fetch/$s_!beqG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 848w, https://substackcdn.com/image/fetch/$s_!beqG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 1272w, https://substackcdn.com/image/fetch/$s_!beqG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F928a39bf-d175-4d3e-a734-fc006775f870_1057x505.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DORA AI Capabilities Model (Source: DORA 2025 Report)</figcaption></figure></div><h3>3. Value Stream Mapping as a force multiplier</h3><p>Value stream management emerged as critical for AI success. Teams that visualize and analyze their workflow from idea to customer can direct AI toward actual constraints.</p><p>Without that systems view, productivity gains get absorbed into downstream bottlenecks. You optimize the wrong step while the fundamental constraint chokes flow. VSM ensures local improvements translate into measurable team and product performance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!suRG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!suRG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 424w, https://substackcdn.com/image/fetch/$s_!suRG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 848w, https://substackcdn.com/image/fetch/$s_!suRG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 1272w, https://substackcdn.com/image/fetch/$s_!suRG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!suRG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png" width="1022" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:1022,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17403,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.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_!suRG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 424w, https://substackcdn.com/image/fetch/$s_!suRG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 848w, https://substackcdn.com/image/fetch/$s_!suRG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 1272w, https://substackcdn.com/image/fetch/$s_!suRG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89863f2d-e3e8-4388-92fc-b630eb95673b_1022x460.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"> VSM moderates AI&#8217;s impact on organizational performance (Source: DORA 2025 Report)</figcaption></figure></div><p><strong>What can we learn from this?</strong></p><p>Stop treating AI adoption as a tools problem. It&#8217;s a systems problem.</p><p>Before purchasing additional AI licenses, ask: Can we visualize our software delivery value stream on a whiteboard? Do our developers know which AI tools are permitted and why? Is our internal data accessible to AI, or locked in silos? Can our platform handle increased velocity without experiencing any issues?</p><p>The organizations winning with AI aren&#8217;t the ones with the best models. They&#8217;re the ones who redesigned their systems to carry the gains.</p><p>Your choice: <strong>Fix the system, or watch AI expose every crack you&#8217;ve been ignoring.</strong></p><div><hr></div><h2>2. ThoughWorks Technology Radar - Volume 33 (November 2025)</h2><p>ThoughtWorks has released <a href="https://www.thoughtworks.com/radar">Volume 33 of its Technology Radar</a>, tracking shifts in AI infrastructure, agentic workflows, and emerging antipatterns.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0fYT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0fYT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 424w, https://substackcdn.com/image/fetch/$s_!0fYT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 848w, https://substackcdn.com/image/fetch/$s_!0fYT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 1272w, https://substackcdn.com/image/fetch/$s_!0fYT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0fYT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png" width="524" height="526.6768837803321" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/920ab695-431f-4973-86b6-f49d168f335f_783x787.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:787,&quot;width&quot;:783,&quot;resizeWidth&quot;:524,&quot;bytes&quot;:237446,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.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_!0fYT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 424w, https://substackcdn.com/image/fetch/$s_!0fYT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 848w, https://substackcdn.com/image/fetch/$s_!0fYT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 1272w, https://substackcdn.com/image/fetch/$s_!0fYT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920ab695-431f-4973-86b6-f49d168f335f_783x787.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">ThoughWorks Technology Radar - Volume 33</figcaption></figure></div><p>What stands out in this edition:</p><h3>1. Infrastructure orchestration of AI</h3><p>AI workloads are pushing teams to orchestrate large <a href="https://www.thoughtworks.com/radar/tools/nvidia-dcgm-exporter">GPU fleets for training and inference</a>. Model sizes now exceed the capacity of a single accelerator, driving distributed training and multi-GPU setups. </p><p>Platform teams are building complex pipelines and tuning for throughput and latency. Kubernetes remains the foundation, but GPU-aware scheduling is becoming essential. </p><p>Tools like <a href="https://www.thoughtworks.com/radar/tools/kueue">Kueue</a>, topology-aware placement, and gang scheduling help co-locate multi-GPU jobs on fast interconnects. Topology is now a first-class scheduling concern.</p><h3>2. Agents elevated by MCP</h3><p>The Model Context Protocol (MCP) and agents dominate this Radar. Major vendors are adding MCP support; it&#8217;s becoming the standard for powering agents and enabling semi-autonomous work. </p><p>Context engineering proves critical for optimizing behavior and resource use. </p><p>New protocols such as <a href="https://www.thoughtworks.com/radar/platforms/agent-to-agent-a2a-protocol">A2A</a> and <a href="https://www.thoughtworks.com/radar/platforms/ag-ui-protocol">AG-UI</a> reduce boilerplate in multi-agent applications. </p><p>Teams are experimenting with <a href="https://www.thoughtworks.com/radar/techniques/agents-md">AGENTS.md</a> files and anchoring coding agents to reference applications. Each Radar brings innovation; last time RAG, this time agentic workflows.</p><h3>3. AI coding workflows</h3><p>AI is embedded across the software value chain, from understanding legacy code to forward engineering. Teams are learning to provide better knowledge to coding agents. </p><p>AGENTS.md files and MCP servers like <a href="https://www.thoughtworks.com/radar/tools/context7">Context7</a> fetch up-to-date documentation. AI must amplify the entire team, not just individual contributors. </p><p>Curated shared instructions and custom commands ensure knowledge diffusion. </p><p>Designers use <a href="https://www.thoughtworks.com/radar/tools/ux-pilot">UX Pilot</a> and <a href="https://www.thoughtworks.com/radar/tools/ai-design-reviewer">AI Design Reviewer</a>; developers prototype with v0 and Bolt. </p><p>But complacency with AI-generated code remains a concern. Human judgment is still indispensable.</p><h3>4. Emerging AI anti-patterns</h3><p>AI adoption surfaces both effective practices and antipatterns. <a href="https://www.thoughtworks.com/radar/techniques/self-serve-ui-prototyping-with-genai">Self-serve UI prototyping with GenAI</a> can lead to AI-accelerated shadow IT. </p><p><a href="https://www.thoughtworks.com/radar/techniques/naive-api-to-mcp-conversion">Naive API-to-MCP conversion</a> is spreading as MCP gains traction. Text-to-SQL solutions haven&#8217;t met expectations. </p><p><a href="https://www.thoughtworks.com/radar/techniques/spec-driven-development">Spec-driven development</a> risks reverting to heavy up-front specification and big-bang releases. </p><p>Teams should watch for patterns that degrade over time, slow feedback, or obscure accountability.</p><p>In more detail:</p><h4><strong>Techniques:</strong></h4><ul><li><p>&#9989; <strong>Adopt</strong>: Continuous compliance, Curated shared instructions for software teams, Pre-commit hooks, Using GenAI to understand legacy codebases</p></li><li><p>&#129514; <strong>Trial</strong>: AGENTS.md, AI for code migrations, Delta Lake liquid clustering, Self-serve UI prototyping with GenAI, Structured output from LLMs, TCR</p></li><li><p>&#128269; <strong>Assess</strong>: AI-powered UI testing, Context engineering, GenAI for forward engineering, LLM as a judge, Small language models, Spec-driven development, Team of coding agents, Topology-aware scheduling</p></li><li><p>&#128721; <strong>Hold</strong>: AI-accelerated shadow IT, Capacity-driven development, Complacency with AI-generated code, Naive API-to-MCP conversion, Text to SQL</p></li></ul><h4><strong>Platforms</strong>:</h4><ul><li><p>&#9989; <strong>Adopt</strong>: Arm in the cloud</p></li><li><p>&#129514; <strong>Trial</strong>: Apache Paimon, DataDog LLM Observability, Delta Sharing, Dovetail, Langdock, LangSmith, Model Context Protocol (MCP), n8n, OpenThread</p></li><li><p>&#128269; <strong>Assess</strong>: AG-UI Protocol, A2A Protocol, Amazon S3 Vectors, Ardoq, CloudNativePG, Karmada, Oxide, Restate, SkyPilot, Uncloud</p></li></ul><h4><strong>Tools:</strong> </h4><ul><li><p>&#9989; <strong>Adopt</strong>: ClickHouse, NeMo Guardrails, pnpm, Pydantic</p></li><li><p>&#129514; <strong>Trial</strong>: AI Design Reviewer, Claude Code, Cleanlab, Context7, Data Contract CLI, Databricks Assistant, NVIDIA DCGM Exporter, UX Pilot, v0</p></li><li><p>&#128269; <strong>Assess</strong>: Augment Code, Azure AI Document Intelligence, Docling, E2B, Kueue, MCP-Scan, Power user for dbt, Serena</p></li></ul><h4><strong>Languages and frameworks:</strong></h4><ul><li><p>&#9989; <strong>Adopt</strong>: Fastify, LangGraph, vLLM</p></li><li><p>&#129514; <strong>Trial</strong>: Crossplane, DeepEval, FastMCP, LiteLLM, MLForecast, Nuxt, Phoenix, Presidio, Pydantic AI, Tauri</p></li><li><p>&#128269; <strong>Assess</strong>: ADK, Browser Use, DeepSpeed, Drizzle, Java post-quantum cryptography, Langflow, Mem0, OSCAL, Vercel AI SDK</p></li></ul><p>This Radar emphasizes managing AI infrastructure at scale while navigating the complexity of agentic systems. Security and governance matter as much as capability.</p><div><hr></div><h2>3. The Octoverse 2025 report</h2><p><a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">The Octoverse 2025 report</a> was released on November 01 and covers GitHub data from September 1, 2024, to August 31, 2025.</p><h3>1. TypeScript takes the crown</h3><p>For the first time, TypeScript overtook both Python and JavaScript to become the most used language on GitHub in August 2025. This marks the most significant language shift in more than a decade.</p><p><strong>TypeScript grew by 1 million contributors in 2025 (+66% YoY).</strong> Modern frameworks now scaffold with TypeScript by default, and AI-assisted development works better with stricter type systems.</p><p><strong>Python remains dominant for AI and data science with 2.6 million contributors (+48% YoY).</strong> JavaScript still has a massive user base (2.15M contributors), but growth slowed as developers moved to TypeScript.</p><p>Nearly 80% of new repositories used just six languages: Python, JavaScript, TypeScript, Java, C++, and C#.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cOpS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cOpS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 424w, https://substackcdn.com/image/fetch/$s_!cOpS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 848w, https://substackcdn.com/image/fetch/$s_!cOpS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 1272w, https://substackcdn.com/image/fetch/$s_!cOpS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cOpS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A chart showing the top 10 programming languages on GitHub from 2023 to 2025. TypeScript rises to #1 in 2025, overtaking Python and JavaScript, which move to #2 and #3 respectively. Other top languages include Java, C#, PHP, Shell, C++, HCL, and Go. The chart tracks ranking changes over time on a dark background with colored lines representing each language.&quot;,&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="A chart showing the top 10 programming languages on GitHub from 2023 to 2025. TypeScript rises to #1 in 2025, overtaking Python and JavaScript, which move to #2 and #3 respectively. Other top languages include Java, C#, PHP, Shell, C++, HCL, and Go. The chart tracks ranking changes over time on a dark background with colored lines representing each language." title="A chart showing the top 10 programming languages on GitHub from 2023 to 2025. TypeScript rises to #1 in 2025, overtaking Python and JavaScript, which move to #2 and #3 respectively. Other top languages include Java, C#, PHP, Shell, C++, HCL, and Go. The chart tracks ranking changes over time on a dark background with colored lines representing each language." srcset="https://substackcdn.com/image/fetch/$s_!cOpS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 424w, https://substackcdn.com/image/fetch/$s_!cOpS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 848w, https://substackcdn.com/image/fetch/$s_!cOpS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 1272w, https://substackcdn.com/image/fetch/$s_!cOpS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ec7155-57a4-4666-a49a-c8b54ffafab7_1728x972.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Top 10 programming languages on GitHub 2023-2025 (Source: <a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">The Octoverse 2025</a>)</figcaption></figure></div><h3>2. Developer growth hits record pace</h3><p>More than 36 million developers joined GitHub this year, over 1 new developer every second. The platform now has 180M+ developers.</p><p>The release of GitHub Copilot Free in late 2024 accelerated this. 80% of new developers use Copilot within their first week. AI is now part of the default developer experience.</p><p>Developers created 230 new repositories every minute, merged 43.2 million pull requests per month (+23% YoY), and pushed nearly 1 billion commits (+25% YoY).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WAvy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WAvy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 424w, https://substackcdn.com/image/fetch/$s_!WAvy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 848w, https://substackcdn.com/image/fetch/$s_!WAvy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 1272w, https://substackcdn.com/image/fetch/$s_!WAvy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WAvy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A line chart showing the number of new developers joining GitHub from 2020 to 2025. The line rises steadily, reaching 36.2 million in 2025, with a sharp increase after the launch of Copilot Free in late 2024. The chart has a dark background with blue data lines and the title &#8216;The number of new developers on GitHub.&#8217;&quot;,&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="A line chart showing the number of new developers joining GitHub from 2020 to 2025. The line rises steadily, reaching 36.2 million in 2025, with a sharp increase after the launch of Copilot Free in late 2024. The chart has a dark background with blue data lines and the title &#8216;The number of new developers on GitHub.&#8217;" title="A line chart showing the number of new developers joining GitHub from 2020 to 2025. The line rises steadily, reaching 36.2 million in 2025, with a sharp increase after the launch of Copilot Free in late 2024. The chart has a dark background with blue data lines and the title &#8216;The number of new developers on GitHub.&#8217;" srcset="https://substackcdn.com/image/fetch/$s_!WAvy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 424w, https://substackcdn.com/image/fetch/$s_!WAvy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 848w, https://substackcdn.com/image/fetch/$s_!WAvy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 1272w, https://substackcdn.com/image/fetch/$s_!WAvy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4dd74-daaf-4749-8945-98ca3c977209_1728x972.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The number of new developers on GitHub (Source: <a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">The Octoverse 2025</a>)</figcaption></figure></div><h3>3. India overtakes the US in open source contributions</h3><p>India now has the most significant public and open-source contributor base in the world. India added 5.2 million developers in 2025 (14% of all new accounts) and is on track to account for one in three new developers by 2030.</p><p>Over the past five years, India, Brazil, and Indonesia have more than quadrupled their developer numbers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wyRK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wyRK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wyRK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wyRK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wyRK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wyRK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A chart ranking the top 10 countries by developer population on GitHub from 2020 to 2025. The United States remains #1 with 10.2 million to 28 million developers, followed by India rising to #2 with 4.5 million to 21.9 million. Other countries in the top 10 include China, Brazil, the United Kingdom, Japan, Germany, Indonesia, Russia, and Canada, each showing their five-year growth trends and compound annual growth rates. Displayed on a blue gradient background with abstract ribbon graphics.&quot;,&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="A chart ranking the top 10 countries by developer population on GitHub from 2020 to 2025. The United States remains #1 with 10.2 million to 28 million developers, followed by India rising to #2 with 4.5 million to 21.9 million. Other countries in the top 10 include China, Brazil, the United Kingdom, Japan, Germany, Indonesia, Russia, and Canada, each showing their five-year growth trends and compound annual growth rates. Displayed on a blue gradient background with abstract ribbon graphics." title="A chart ranking the top 10 countries by developer population on GitHub from 2020 to 2025. The United States remains #1 with 10.2 million to 28 million developers, followed by India rising to #2 with 4.5 million to 21.9 million. Other countries in the top 10 include China, Brazil, the United Kingdom, Japan, Germany, Indonesia, Russia, and Canada, each showing their five-year growth trends and compound annual growth rates. Displayed on a blue gradient background with abstract ribbon graphics." srcset="https://substackcdn.com/image/fetch/$s_!wyRK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wyRK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wyRK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wyRK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f888924-1a26-4e13-9716-9f15e4edd74e_1944x1094.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tracking the top developer populations on GitHub (Source: <a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">The Octoverse 2025</a>)</figcaption></figure></div><h3>4. AI becomes standard infrastructure</h3><p>More than 1.1 million public repositories now use an LLM SDK (+178% YoY). Of these, 693,867 were created in the last 12 months alone.</p><p>The top AI infrastructure projects driving growth:</p><ul><li><p><a href="https://github.com/vllm-project/vllm">vllm-project/vllm</a> (model inference)</p></li><li><p><a href="https://github.com/ollama/ollama">ollama/ollama</a> (local model runner)</p></li><li><p><a href="https://github.com/huggingface/transformers">huggingface/transformers</a> (model loading/fine-tuning)</p></li><li><p><a href="https://github.com/continuedev/continue">continue-dev/continue</a> (AI coding assistant)</p></li><li><p><a href="https://github.com/infiniflow/ragflow">ragflow</a> (AI orchestration)</p></li></ul><p>Coding agents created 1+ million pull requests between May and September 2025. Average fix times for critical vulnerabilities improved by 30%, dropping from 37 to 26 days.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X7Zo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X7Zo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 424w, https://substackcdn.com/image/fetch/$s_!X7Zo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 848w, https://substackcdn.com/image/fetch/$s_!X7Zo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 1272w, https://substackcdn.com/image/fetch/$s_!X7Zo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X7Zo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png" width="1440" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A table listing the fastest-growing open source projects on GitHub in 2025 by contributors. The top ten are zen-browser/desktop, cline/cline, vllm-project/vllm, astral-sh/uv, microsoft/vscode, infiniflow/ragflow, sgl-project/sglang, continuedev/continue, comfyanonymous/ComfyUI, and home-assistant/core. Growth rates range from 2,301% to 6,836%, with most projects marked as AI-focused. Displayed on a blue gradient background with the GitHub Octoverse ribbon graphic.&quot;,&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="A table listing the fastest-growing open source projects on GitHub in 2025 by contributors. The top ten are zen-browser/desktop, cline/cline, vllm-project/vllm, astral-sh/uv, microsoft/vscode, infiniflow/ragflow, sgl-project/sglang, continuedev/continue, comfyanonymous/ComfyUI, and home-assistant/core. Growth rates range from 2,301% to 6,836%, with most projects marked as AI-focused. Displayed on a blue gradient background with the GitHub Octoverse ribbon graphic." title="A table listing the fastest-growing open source projects on GitHub in 2025 by contributors. The top ten are zen-browser/desktop, cline/cline, vllm-project/vllm, astral-sh/uv, microsoft/vscode, infiniflow/ragflow, sgl-project/sglang, continuedev/continue, comfyanonymous/ComfyUI, and home-assistant/core. Growth rates range from 2,301% to 6,836%, with most projects marked as AI-focused. Displayed on a blue gradient background with the GitHub Octoverse ribbon graphic." srcset="https://substackcdn.com/image/fetch/$s_!X7Zo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 424w, https://substackcdn.com/image/fetch/$s_!X7Zo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 848w, https://substackcdn.com/image/fetch/$s_!X7Zo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 1272w, https://substackcdn.com/image/fetch/$s_!X7Zo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c1b033-45fe-4f3c-ad83-5b8283400f22_1440x810.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Fastest&#8209;growing projects by contributors (Source: <a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">The Octoverse 2025</a>)</figcaption></figure></div><div><hr></div><h2>4. 2025 State of the API Report</h2><p><a href="https://www.postman.com/state-of-api/2025/#introduction">Postman surveyed</a> over 5,700 developers, architects, and executives about how APIs are evolving in an AI-driven world. This year&#8217;s report reveals a gap: developers are AI-native, but most APIs aren&#8217;t yet built for AI agents. Organizations that close this gap fast will pull ahead.</p><p>Here are the key findings:</p><h3>1. API-first development jumped 12%</h3><p>82% of organizations now use some level of API-first approach, with 25% fully API-first (up from 13% in 2024). These organizations treat APIs as products, not projects. </p><p>And it shows in revenue: 43% of fully API-first companies generate more than 25% of total revenue from APIs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ClEc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ClEc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 424w, https://substackcdn.com/image/fetch/$s_!ClEc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 848w, https://substackcdn.com/image/fetch/$s_!ClEc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 1272w, https://substackcdn.com/image/fetch/$s_!ClEc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ClEc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png" width="738" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:738,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21448,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.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_!ClEc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 424w, https://substackcdn.com/image/fetch/$s_!ClEc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 848w, https://substackcdn.com/image/fetch/$s_!ClEc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 1272w, https://substackcdn.com/image/fetch/$s_!ClEc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281e060b-dee3-4abb-8309-7a39b579dfa6_738x394.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">API-first development is accelerating (Source: 2025 State of the API Report)</figcaption></figure></div><h3>2. Developers use AI, but APIs aren&#8217;t ready</h3><p>89% of developers use AI tools daily, but only 24% design APIs for AI agent consumption. 60% still designed primarily for humans only. </p><p>This mismatch creates problems: AI agents need machine-readable schemas and predictable patterns that most APIs don&#8217;t provide.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BVjQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BVjQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 424w, https://substackcdn.com/image/fetch/$s_!BVjQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 848w, https://substackcdn.com/image/fetch/$s_!BVjQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 1272w, https://substackcdn.com/image/fetch/$s_!BVjQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BVjQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png" width="732" height="384" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:384,&quot;width&quot;:732,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31261,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.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_!BVjQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 424w, https://substackcdn.com/image/fetch/$s_!BVjQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 848w, https://substackcdn.com/image/fetch/$s_!BVjQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 1272w, https://substackcdn.com/image/fetch/$s_!BVjQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93354376-342a-45d4-bfa0-e29e3bafbe4b_732x384.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI-API gap (Source: 2025 State of the API Report)</figcaption></figure></div><h3>3. AI Agents are the new security threat</h3><p>51% of developers worry about unauthorized or excessive API calls from AI agents, making it the top security concern. Traditional security models weren&#8217;t built for machine-speed exploitation or persistent automated attacks. </p><p>Organizations need dynamic rate limiting, agent identification, and enhanced monitoring.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2TX2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2TX2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 424w, https://substackcdn.com/image/fetch/$s_!2TX2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 848w, https://substackcdn.com/image/fetch/$s_!2TX2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 1272w, https://substackcdn.com/image/fetch/$s_!2TX2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2TX2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png" width="710" height="339" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:339,&quot;width&quot;:710,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40432,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.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_!2TX2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 424w, https://substackcdn.com/image/fetch/$s_!2TX2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 848w, https://substackcdn.com/image/fetch/$s_!2TX2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 1272w, https://substackcdn.com/image/fetch/$s_!2TX2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3bc6a7-36e9-45c6-adfd-f49550d3e798_710x339.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">API security concerns (Source: 2025 State of the API Report)</figcaption></figure></div><h3>4. APIs drive real revenue</h3><p>65% of organizations generate revenue from APIs. Among those, 74% get at least 10% of total revenue from API programs, and 25% generate more than half their revenue from APIs. </p><p>Investment follows: 46% plan to spend more on APIs in the next 12 months.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Btgn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Btgn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 424w, https://substackcdn.com/image/fetch/$s_!Btgn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 848w, https://substackcdn.com/image/fetch/$s_!Btgn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 1272w, https://substackcdn.com/image/fetch/$s_!Btgn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Btgn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png" width="729" height="390" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:390,&quot;width&quot;:729,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28077,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.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_!Btgn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 424w, https://substackcdn.com/image/fetch/$s_!Btgn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 848w, https://substackcdn.com/image/fetch/$s_!Btgn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 1272w, https://substackcdn.com/image/fetch/$s_!Btgn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2625948-73e8-4d7b-a99f-9316f039d6c7_729x390.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generating revenue from APIs (Source: 2025 State of the API Report)</figcaption></figure></div><h3>5. MCP awareness is high, but adoption is low</h3><p>70% of developers are aware of the Model Context Protocol (MCP), but only 10% use it regularly. Another 24% plan to explore it. </p><p>MCP promises to standardize how AI agents discover and invoke APIs, but agents are already calling APIs without it. </p><p>Make your APIs agent-ready now, regardless of which protocol wins.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nwWF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nwWF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 424w, https://substackcdn.com/image/fetch/$s_!nwWF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 848w, https://substackcdn.com/image/fetch/$s_!nwWF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 1272w, https://substackcdn.com/image/fetch/$s_!nwWF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nwWF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png" width="733" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:733,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40875,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.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_!nwWF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 424w, https://substackcdn.com/image/fetch/$s_!nwWF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 848w, https://substackcdn.com/image/fetch/$s_!nwWF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 1272w, https://substackcdn.com/image/fetch/$s_!nwWF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1443c343-63ee-4cd0-b977-11c39c5def10_733x416.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">MCP awareness (Source:  2025 State of the API Report)</figcaption></figure></div><h3>6. Collaboration still breaks down</h3><p>93% of teams face collaboration blockers, which are:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U9fm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U9fm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 424w, https://substackcdn.com/image/fetch/$s_!U9fm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 848w, https://substackcdn.com/image/fetch/$s_!U9fm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 1272w, https://substackcdn.com/image/fetch/$s_!U9fm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U9fm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png" width="699" height="330" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:330,&quot;width&quot;:699,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23716,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/175871275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.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_!U9fm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 424w, https://substackcdn.com/image/fetch/$s_!U9fm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 848w, https://substackcdn.com/image/fetch/$s_!U9fm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 1272w, https://substackcdn.com/image/fetch/$s_!U9fm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1884c8a8-4d10-4253-87ef-bf68caecdecb_699x330.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The most common collaboration failures (Source: 2025 State of the API Report)</figcaption></figure></div><p>All of this slows the teams down. </p><p>And this matters more as APIs become business-critical: when documentation lives everywhere, it becomes unreliable everywhere.</p><div><hr></div><h2>5. <strong>InfoQ AI, ML, and Data Engineering Trends Report - 2025</strong></h2><p>InfoQ&#8217;s <a href="https://www.infoq.com/articles/ai-ml-data-engineering-trends-2025/">latest trends report</a> maps where AI, ML, and data technologies are heading. The shift is clear: AI is moving from software to the physical world.</p><p>Here are the key insights:</p><ul><li><p><strong>Physical AI is the next frontier</strong>. AI is entering robotics. Google&#8217;s Gemini Robotics On-Device and NVIDIA&#8217;s complete AI-to-deployment pipeline are bringing language models into physical systems. This isn&#8217;t just software anymore.</p></li><li><p><strong>AI Agents are evolving fast</strong>. Agents now orchestrate complex workflows, not just single tasks. Amazon Bedrock Agents, Claude Subagents, and OpenAI&#8217;s ChatGPT Agent are making production-ready systems possible without infrastructure headaches.</p></li><li><p><strong>RAG has become a commodity</strong>. Retrieval Augmented Generation is standard in enterprise applications. It&#8217;s no longer experimental; it&#8217;s how companies access and use their knowledge bases.</p></li><li><p><strong>Model Context Protocol (MCP) enables interoperability</strong>. Anthropic&#8217;s new standard lets different AI systems share data without custom integrations. OpenAI, Microsoft, and Google are already adopting it. This makes multi-agent systems practical.</p></li><li><p><strong>AI is now a co-creator, not just an assistant.</strong> Development teams are using AI to build, test, and ship entire applications. The role has shifted from &#8220;help me code faster&#8221; to &#8220;build this with me.&#8221;</p></li><li><p><strong>Multi-modal models are here</strong>. Language models now process text, images, audio, and video together. This enables richer understanding and more accurate outputs across different data types.</p></li><li><p><strong>Human-Computer Interaction is being redesigned</strong>. AI interfaces are changing how we interact with software. The focus is shifting toward embedding information where people actually need it, rather than forcing them to adapt to rigid interfaces.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.infoq.com/articles/ai-ml-data-engineering-trends-2025/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h6fh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h6fh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h6fh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h6fh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h6fh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg" width="1456" height="849" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:849,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.infoq.com/articles/ai-ml-data-engineering-trends-2025/&quot;,&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_!h6fh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h6fh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h6fh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h6fh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34858fba-53ac-47a9-a6a6-681d1d0c3c0c_1800x1050.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">InfoQ AI, ML, and Data Engineering Trends Report - 2025</figcaption></figure></div><div><hr></div><h2><strong>More ways I can help you </strong></h2><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong> &#127381;. The system I used to grow from 0 to 260K+ followers in under two years, plus a 49K-subscriber newsletter. You&#8217;ll transform your profile into a page that converts, write posts that get saved and shared, and turn LinkedIn into a steady source of job offers, clients, and speaking invites. Includes 6-module video course (~2 hours), LinkedIn Content OS with 50 post ideas and templates, swipe files, and a 30-page guide. <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">Join 300+ people</a></strong>.<br><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium resume package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume reality check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">my shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[From invisible engineer to trusted expert on LinkedIn]]></title><description><![CDATA[How I grew from 2k to 260k followers and built a career safety net in two and a half years]]></description><link>https://newsletter.techworld-with-milan.com/p/from-invisible-engineer-to-trusted</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/from-invisible-engineer-to-trusted</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 27 Nov 2025 16:01:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5e4ec028-0082-4ecb-a1b9-330196858bd0_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Three years ago,&nbsp;<a href="https://www.linkedin.com/in/milanmilanovic/">my LinkedIn</a>&nbsp;looked like a static CV, as did most people's (I registered originally on the platform in 2007). Fewer than 2,000 people followed my work, and nothing I posted travelled beyond a small circle of colleagues.</p><p>Fast-forward to today: I&#8217;m a <a href="https://taplio.com/influencers">Top 100 LinkedIn creator</a> with over&nbsp;<strong>264,000 followers</strong>, my posts regularly rack up thousands of reactions, and I&#8217;ve leveraged LinkedIn to become a&nbsp;<strong>recognized authority in tech</strong>. </p><p>How did I transform from an &#8220;invisible&#8221; engineer into a <strong>trusted expert</strong> on the world&#8217;s largest professional network? This story will reveal my path and the playbook for mastering LinkedIn as an engineer, from mindset shifts and profile tweaks to content systems and community engagement.</p><p>In particular, we will talk about:</p><ol><li><p><strong>Why LinkedIn matters for tech people</strong>. LinkedIn isn&#8217;t a resume site anymore. It&#8217;s a publishing platform where your ideas compound over time. Here, we cover why engineers should care about building a presence, from career opportunities to learning and credibility.</p></li><li><p><strong>My story</strong>. How I went from 2,000 to 100,000 followers in six months. We will talk about the two mindset shifts that made it possible.</p></li><li><p><strong>Detailed steps to grow your LinkedIn audience</strong>. Ten concrete steps to build your LinkedIn presence from scratch. Covers profile optimization, content systems, posting frameworks, engagement tactics, and analytics. </p></li><li><p><strong>Common mistakes</strong>. The profile errors, algorithm penalties, and engagement failures that kill reach. What to avoid so your content actually gets seen.</p></li><li><p><strong>The payoff</strong>. What happens when you do this consistently. Recognition, opportunities, improved communication skills, and a community that opens doors you didn&#8217;t know existed.</p></li><li><p><strong>BONUS: Prompt to create a viral LinkedIn post</strong>. You can use this prompt structure to create many viral LinkedIn posts, with different input parameters and styles.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">You Can Build A LinkedIn Audience </a><em><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">(Full Course)</a></em></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yK5b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 424w, https://substackcdn.com/image/fetch/$s_!yK5b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 848w, https://substackcdn.com/image/fetch/$s_!yK5b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 1272w, https://substackcdn.com/image/fetch/$s_!yK5b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yK5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png" width="232" height="333.96178343949043" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1130,&quot;width&quot;:785,&quot;resizeWidth&quot;:232,&quot;bytes&quot;:471340,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.patreon.com/posts/you-can-build-143858069?source=storefront&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.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_!yK5b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 424w, https://substackcdn.com/image/fetch/$s_!yK5b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 848w, https://substackcdn.com/image/fetch/$s_!yK5b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 1272w, https://substackcdn.com/image/fetch/$s_!yK5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d7f324-da64-4f67-ac94-71d068d3eceb_785x1130.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You know your craft. This course helps people know <em>you</em>.</p><p>It shows the system I used to grow from 0 to 100K followers in six months, now 260K+, plus a 49K-subscriber newsletter.</p><p><strong>After this course, you will be able to:</strong></p><ul><li><p>Turn your profile into a page that converts visitors into followers, leads, or offers</p></li><li><p>Write posts that earn saves, comments, and profile views instead of silence</p></li><li><p>Use LinkedIn as a steady source of job offers, clients, and speaking invites</p></li></ul><p><strong>Inside you get:</strong></p><ul><li><p>6-module video course (~2 hours of my best advice) walking through profile, content, engagement, and monetization</p></li><li><p>LinkedIn Content OS (Notion) with 50 post ideas, templates, and an engagement tracker</p></li><li><p>Swipe files, Canva layouts, and a full LinkedIn guide on 30 pages. All you need.</p></li><li><p>Tips and tricks only a few know.</p></li></ul><p><strong>&#128073; Launch price: $79 only this week (then $149)</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.patreon.com/posts/you-can-build-143858069?source=storefront&quot;,&quot;text&quot;:&quot;Start You Can Build A LinkedIn Audience&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront"><span>Start You Can Build A LinkedIn Audience</span></a></p><div><hr></div><h2>1. Why LinkedIn matters for people in Tech</h2><p>If you&#8217;re an engineer or tech leader, you might wonder whether building a presence on LinkedIn is worth it. I once treated LinkedIn like a static online resume, like everyone else, but I learned that <strong>LinkedIn works best when you treat it as a publishing platform where your ideas compound over time</strong>. </p><p>In other words, consistently sharing insights on LinkedIn can create <strong>outsized career leverage</strong>. </p><p>Here&#8217;s why engineers should care about LinkedIn:</p><ul><li><p><strong>Professional network &amp; mentorship.</strong> LinkedIn is the largest professional network. It&#8217;s a place to connect with fellow engineers, mentors, and industry leaders in a professional environment. By engaging on the platform, I met <em>100+ interesting people</em> &#8211; some became friends and collaborators. Your network truly becomes your net worth here.</p></li><li><p><strong>Career opportunities.</strong> A strong LinkedIn presence means recruiters <em>come to you</em>. Whether you&#8217;re hunting for a job, consulting gigs, or speaking opportunities, visibility on LinkedIn leads to inbound offers for roles and projects. </p></li><li><p><strong>Continuous learning.</strong> The platform is rich with content, from engineering best practices to leadership lessons. By curating a quality feed, you can learn from others&#8217; experiences daily. LinkedIn broadened my perspective and even improved how I communicate as an engineering leader. </p></li><li><p><strong>Personal brand &amp; credibility.</strong> Regularly sharing valuable content helps you <strong>gain authority</strong> in your niche. Over time, people begin to associate your name with the topics you post about. I became known for my insights on tech and leadership, giving me credibility that extended beyond LinkedIn. A strong personal brand also gives you <strong>leverage for promotions or negotiations</strong> (you&#8217;re seen as an expert, not just an employee).</p></li><li><p><strong>Career flexibility.</strong> With a broad audience, you have more options. You can pivot careers, launch a side project or startup, or sell a product more easily when <em>thousands of industry people know who you are</em>. An audience makes your career <strong>less dependent on any single employer</strong> and opens doors to new ventures.</p></li></ul><p>In short, <strong>LinkedIn is a high-leverage tool for engineers</strong>. It&#8217;s the only major social network dedicated to professionals (nearly 1 billion users), and great technical content can still reach a massive audience even if you&#8217;re not famous or extroverted. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gDQc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gDQc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gDQc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gDQc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gDQc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gDQc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg" width="864" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:360,&quot;width&quot;:864,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;LinkedIn Profile SEO Tips to Stand Out in 2025&quot;,&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="LinkedIn Profile SEO Tips to Stand Out in 2025" title="LinkedIn Profile SEO Tips to Stand Out in 2025" srcset="https://substackcdn.com/image/fetch/$s_!gDQc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gDQc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gDQc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gDQc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da8be74-4e18-48c9-9c9b-175903b1827d_864x360.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">LinkedIn is the largest professional network</figcaption></figure></div><h2>2. My story</h2><p>My LinkedIn journey truly began in mid-2022. At that time, I was a Principal Engineer <em>offline</em>, but virtually unknown on LinkedIn. As I have always liked learning and sharing my knowledge, my current mentor suggested that I increase my visibility outside my company and start writing more. And of course, one of the first networks for that was LinkedIn.</p><p>Posting felt intimidating; I thought,&nbsp;<em>&#8220;It can feel pointless or self-promotional at first</em>.&#8221; To overcome this, I first made <strong>two key mindset shifts</strong> that set the foundation for my growth.</p><ol><li><p><strong>Mentorship over self-promotion:</strong> Instead of seeing content as bragging, I treated LinkedIn as a chance to <strong>mentor and help others at scale</strong>. I asked myself, <em>&#8220;What knowledge do I have that could help a junior engineer or a past version of me?&#8221; &#8220;What are some pain points developers have in the industry, but don&#8217;t have proper solutions?</em>&#8221; I started sharing tips on system design, career growth, and cloud architecture for developers and architects in my audience.</p></li><li><p><strong>Visibility over perfection:</strong> As an engineer, I initially had perfectionist tendencies, spending days polishing a post that I never actually published. I learned on LinkedIn that <em>&#8220;consistent visibility beats perfect silence.&#8221;</em> In practice, that meant <strong>forcing myself to hit &#8220;Post&#8221; regularly</strong>, even if a piece wasn&#8217;t 100% polished. Each post became a data point to learn from, rather than a masterpiece. This bias for action, quantity leading to quality, was crucial to my  rapid growth.</p></li></ol><p><strong>The results of these mindset shifts were almost immediate.</strong> Once I started sharing value generously and frequently, my network exploded. <strong>In just 6 months, I rocketed from ~2,000 to 100,000 followers</strong>. I had effectively compounded years&#8217; worth of career learnings into a growing library of LinkedIn posts, and the community took notice. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KhxH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KhxH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 424w, https://substackcdn.com/image/fetch/$s_!KhxH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 848w, https://substackcdn.com/image/fetch/$s_!KhxH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 1272w, https://substackcdn.com/image/fetch/$s_!KhxH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KhxH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png" width="1230" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/551bd0ae-f511-4089-a579-605560be51d4_1230x641.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1230,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121261,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.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_!KhxH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 424w, https://substackcdn.com/image/fetch/$s_!KhxH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 848w, https://substackcdn.com/image/fetch/$s_!KhxH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 1272w, https://substackcdn.com/image/fetch/$s_!KhxH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F551bd0ae-f511-4089-a579-605560be51d4_1230x641.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Follower growth</figcaption></figure></div><p>Yet, the follower count was less important than the <strong>impact</strong>, opportunities, and connections that I created along the way.</p><h2><strong>3. Steps to grow a LinkedIn audience from scratch</strong></h2><p>Here are the steps you can follow to grow your audience from scratch.</p><h3>Step 1: Positioning</h3><p><strong>Positioning</strong> was the foundation of all this profile work. I defined <em>exactly who</em>&nbsp;I wanted to serve and&nbsp;<em>the problem</em> I would solve for them. In my case, I help software engineers advance their careers (the <em>who</em>) by sharing proven insights on tech leadership and architecture (the <em>what</em> and <em>how</em>). This clarity made my profile <em>cohesive</em>; every element (headline, about, posts) told a consistent story of &#8220;CTO who mentors engineers.&#8221; </p><p>For your profile, ask yourself the same four questions: </p><ol><li><p><strong>What problem do I solve? </strong></p></li><li><p><strong>Who has that problem? </strong></p></li><li><p><strong>What makes my perspective different? </strong></p></li><li><p><strong>What do I want to be known for?</strong></p></li></ol><p>Answering these will give you a positioning line and content focus that sets you apart.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jklO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jklO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 424w, https://substackcdn.com/image/fetch/$s_!jklO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 848w, https://substackcdn.com/image/fetch/$s_!jklO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 1272w, https://substackcdn.com/image/fetch/$s_!jklO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jklO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png" width="1149" height="370" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:370,&quot;width&quot;:1149,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41787,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.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_!jklO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 424w, https://substackcdn.com/image/fetch/$s_!jklO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 848w, https://substackcdn.com/image/fetch/$s_!jklO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 1272w, https://substackcdn.com/image/fetch/$s_!jklO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59e55d7d-1002-4627-8eeb-be716f530f14_1149x370.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Positioning steps</figcaption></figure></div><p>When you make it, then you define your concrete goals, pick 2-3 topics you want to be known for, and define your audience. This will help you later to identify their pain points and write about how to solve them.</p><h3><strong>Step 2: Set up your profile</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jD3J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jD3J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 424w, https://substackcdn.com/image/fetch/$s_!jD3J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 848w, https://substackcdn.com/image/fetch/$s_!jD3J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 1272w, https://substackcdn.com/image/fetch/$s_!jD3J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jD3J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png" width="777" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:777,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:227934,&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://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.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_!jD3J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 424w, https://substackcdn.com/image/fetch/$s_!jD3J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 848w, https://substackcdn.com/image/fetch/$s_!jD3J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 1272w, https://substackcdn.com/image/fetch/$s_!jD3J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c5caceb-7a3d-4ed8-9212-25a2d054c7c9_777x394.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.linkedin.com/in/milanmilanovic/">My profile</a></figcaption></figure></div><p>Now, when we properly position ourselves, we need to do the profile optimization steps that make a difference:</p><ol><li><p><strong>Crystal-clear headline.</strong> Most people just list their job title, but the headline should <strong>state their value proposition</strong>. Craft a 220-character headline that combines what you do, who you help, and how you help them. (Formula: <strong>&#8220;What you do | Who you help | Outcome&#8221;</strong>). For example, rather than &#8220;CTO at TechCorp&#8221;, a headline could be <em>&#8220;CTO mentoring developers into architects | Writing about cloud &amp; leadership | 20+ engineers coached.&#8221;</em> This tells people exactly why they should follow or connect with you. </p></li><li><p><strong>Branded banner.</strong> Instead of the default blue background, create a simple graphic with a tagline about you and a URL. The banner is prime real estate to visually convey who you are, whether it&#8217;s <em>&#8220;Cloud Architect | Speaker | Helping you master AWS&#8221;</em> or highlighting a key achievement. Don&#8217;t leave it blank. Use it to instantly communicate your brand or direct viewers to something valuable (like your blog or course).</p></li><li><p><strong>Storytelling &#8220;About&#8221; section.</strong>  A structure that works is: <strong>Present &#8211; Past &#8211; Value &#8211; Call to Action</strong>. For example, I opened with what I do now (&#8220;CTO and writer helping engineers grow&#8221;), then told a brief story of feeling invisible despite 15 years in tech, and how sharing on LinkedIn changed my career. I conclude with how I can help others do the same, and a call to action to join my newsletter. The key was a <strong>hook in the first two lines</strong> (since that&#8217;s what shows before &#8220;see more&#8221;), and an authentic tone. Try to<em> keep paragraphs short and skimmable.</em></p></li><li><p><strong>Featured and extras:</strong> Use the <strong>Featured</strong> section to showcase your best products, posts, and articles. Here I added links to my newsletter and course landing page. Additionally, I updated the Experience section to focus on accomplishments and the&nbsp;<em>unique credentials</em>&nbsp;that give me authority (e.g., by mentioning that&nbsp;I led cloud migrations impacting millions of users). This is what <em>gives</em> you credibility: a big company you worked at, a PhD, a major project, or even a personal story that shows your expertise. </p></li><li><p>And also don&#8217;t forget to <strong>enable Creator mode</strong>. When you enable it, the Follow button will be the default, and people will be able to follow you without connecting.</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_!PtF6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PtF6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 424w, https://substackcdn.com/image/fetch/$s_!PtF6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 848w, https://substackcdn.com/image/fetch/$s_!PtF6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 1272w, https://substackcdn.com/image/fetch/$s_!PtF6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PtF6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png" width="710" height="305" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:305,&quot;width&quot;:710,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21583,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.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_!PtF6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 424w, https://substackcdn.com/image/fetch/$s_!PtF6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 848w, https://substackcdn.com/image/fetch/$s_!PtF6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 1272w, https://substackcdn.com/image/fetch/$s_!PtF6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0761158-9ac7-44b6-9edb-b099a37821d6_710x305.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Make follow primary</figcaption></figure></div><h3>Step 3: Defining your content pillars</h3><p>With the profile in shape, the next challenge is <strong>showing up consistently</strong> on the feed. Occasional posting will not move the needle, so we need a sustainable <strong>Content System</strong> (sometimes dubbed a &#8220;Content OS&#8221;).</p><p>To this end, I designed a system that enables publishing <strong>3-5 times per week without burning out</strong>. But before we start writing, we need to decide on our topics or content pillars first.</p><p>The suggestion is to choose 2-3 core themes to write about repeatedly. These were the topics you want to be <strong>known for</strong>. For me, the pillars were <em>software engineering/architecture</em>, <em>engineering leadership/career growth</em>, and <em>cloud computing</em>. </p><p>Sticking to a few pillars helps ensure that content is relevant to our target audience (developers and tech leads) and also makes idea generation easier. </p><p>With pillars set, you have a <strong>filter for your content</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_!qn-O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qn-O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 424w, https://substackcdn.com/image/fetch/$s_!qn-O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 848w, https://substackcdn.com/image/fetch/$s_!qn-O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 1272w, https://substackcdn.com/image/fetch/$s_!qn-O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qn-O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png" width="512" height="515.7855822550832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1090,&quot;width&quot;:1082,&quot;resizeWidth&quot;:512,&quot;bytes&quot;:454751,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.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_!qn-O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 424w, https://substackcdn.com/image/fetch/$s_!qn-O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 848w, https://substackcdn.com/image/fetch/$s_!qn-O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 1272w, https://substackcdn.com/image/fetch/$s_!qn-O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139a035f-ef78-48b4-92b5-176806a4ad8c_1082x1090.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">What should you post (Credits: Shlomo Genchin)</figcaption></figure></div><h3>Step 4: Brainstorm a Content Matrix</h3><p>To generate a flood of post ideas, you can use a simple but powerful technique: a grid of <em>topics</em> vs <em>formats</em>. For example, you can list your content pillars and a handful of effective post <strong>formats/angles</strong> (e.g., how-to guides, inspirational stories, contrarian takes, comparisons, &#8220;X vs Y&#8221;, present vs future trends, etc.). </p><p>Here is one example:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nzNN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nzNN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 424w, https://substackcdn.com/image/fetch/$s_!nzNN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 848w, https://substackcdn.com/image/fetch/$s_!nzNN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 1272w, https://substackcdn.com/image/fetch/$s_!nzNN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nzNN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png" width="1296" height="648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:648,&quot;width&quot;:1296,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111982,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.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_!nzNN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 424w, https://substackcdn.com/image/fetch/$s_!nzNN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 848w, https://substackcdn.com/image/fetch/$s_!nzNN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 1272w, https://substackcdn.com/image/fetch/$s_!nzNN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01957730-c782-4e1d-855c-1eeac67c7844_1296x648.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Content matrix</figcaption></figure></div><p>The content matrix ensures you never run out of content and keeps your feed varied. </p><blockquote><p><em>In <strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">my course</a></strong> we learn how to make this matrix by using AI tools.</em></p></blockquote><h3>Step 5: Use a Content Framework </h3><p>Consistency isn&#8217;t just about posting often; it&#8217;s also about <strong>format consistency</strong>. I use a few proven post structures that make writing easier and ensure my content is engaging. </p><p>We&#8217;ll dive into these in the next section (Storytelling Frameworks), but having go-to templates (like a story post format, a list post format, etc.) lets me draft posts faster. </p><p>For instance, if today is a &#8220;technical tips&#8221; post, we might default to a list of do&#8217;s and don&#8217;ts with a quick intro and summary (framework: Hook &#8594; List &#8594; Summary &#8594; CTA). If tomorrow is a narrative, we would use this Story &#8594; Lesson template.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C4He!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C4He!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 424w, https://substackcdn.com/image/fetch/$s_!C4He!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 848w, https://substackcdn.com/image/fetch/$s_!C4He!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 1272w, https://substackcdn.com/image/fetch/$s_!C4He!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C4He!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png" width="1229" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1229,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118755,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.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_!C4He!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 424w, https://substackcdn.com/image/fetch/$s_!C4He!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 848w, https://substackcdn.com/image/fetch/$s_!C4He!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 1272w, https://substackcdn.com/image/fetch/$s_!C4He!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d43a2a6-2a22-49b8-b532-5e89daece5ab_1229x764.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.patreon.com/posts/linkedin-content-144022137?source=storefront">LinkedIn Content OS</a></figcaption></figure></div><blockquote><p><em>All of these templates are available in my <strong><a href="https://www.patreon.com/posts/linkedin-content-144022137?source=storefront">LinkedIn Content OS</a></strong>.</em></p></blockquote><h3>Step 6: Storytelling and post frameworks </h3><p>Technical folks often struggle with <strong>storytelling</strong>, but I found it to be a superpower on LinkedIn. <em>People love stories,</em> <em>so tell one story with one clear lesson.</em> </p><p>Early on, I shifted from just sharing tips in a dry manner to wrapping them in relatable anecdotes &#8211; essentially turning my posts into mini case studies or personal stories. Each story post followed a simple structure: <strong>Story &#8594; Lesson &#8594; CTA</strong>. </p><p>For example, I wrote about a time I <em>turned down a $200K job offer</em> (story) and what it taught me about aligning career moves with personal values (lesson), then invited others to share if they&#8217;ve faced similar decisions (call-to-action). This post got massive engagement because it was human and specific, not just &#8220;advice in a vacuum.&#8221;</p><p>Beyond stories, I rotate through several <strong>post frameworks</strong>. These are like templates that make your content punchier and help you avoid staring at a blank page. </p><p>Here are a few <strong>go-to LinkedIn post types</strong> (and how you can use them as an engineer):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0Qkh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0Qkh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 424w, https://substackcdn.com/image/fetch/$s_!0Qkh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 848w, https://substackcdn.com/image/fetch/$s_!0Qkh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 1272w, https://substackcdn.com/image/fetch/$s_!0Qkh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0Qkh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png" width="1300" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92196,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.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_!0Qkh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 424w, https://substackcdn.com/image/fetch/$s_!0Qkh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 848w, https://substackcdn.com/image/fetch/$s_!0Qkh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 1272w, https://substackcdn.com/image/fetch/$s_!0Qkh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe869c1ee-8c25-4585-b57f-4c830f2e8bcd_1300x600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Notice how each framework delivers value or insight <em>and</em> often includes a story or example. I cycle through these to keep my feed fresh. </p><p>One day, I would drop a <strong>list of actionable dev tips;</strong>&nbsp;another day, a&nbsp;<strong>personal story about a mistake;</strong> then a <strong>contrarian take on a popular tech practice</strong>. This mix prevents audience fatigue and positions you as a multidimensional thinker.</p><p>Importantly, I always <strong>write in a conversational, first-person tone</strong>, as if mentoring a colleague over coffee. No corporate jargon or &#8220;resume speak.&#8221; Engineers appreciate candor and clarity. </p><p>My posts often include little storytelling details (to paint a scene) and then break down the takeaways. I also make my content <strong>skimmable</strong>, using short paragraphs, bullet points, or emojis to create visual breaks. </p><p>Finally, I almost always end posts with a&nbsp;<strong>CTA (Call to Action)</strong>&nbsp;&#8211; a question or prompt that invites the audience to engage. Something like &#8220;<em>Have you experienced this?</em>&#8221;, &#8220;<em>Agree or disagree?</em>&#8221;, or &#8220;<em>What would you have done?</em>&#8221;. This not only drives huge comment threads (boosting the post in the algorithm) but also turns posts into conversations where everyone can learn.</p><h3>Step 7: Establish a posting cadence</h3><p>You should treat LinkedIn like a publication with a regular schedule and be committed to posting nearly every weekday. In fact, my <strong>weekly content calendar</strong> often looked like this: </p><ul><li><p><strong>4 technical/industry posts</strong></p></li><li><p><strong>1 fun/relatable post </strong></p></li><li><p><strong>1 personal development/leadership post,</strong></p></li><li><p><strong>1 &#8220;promo&#8221; or community post</strong> (e.g., inviting people to my newsletter). </p></li></ul><p>For example: Monday to Thursday, I share tech insights or stories; Friday, something light or humorous about work culture; Saturday, a deeper personal growth lesson; and maybe Sunday, a short motivational note. This mix kept different segments of my audience engaged and showcased multiple sides of my personality. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jUKB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jUKB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 424w, https://substackcdn.com/image/fetch/$s_!jUKB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 848w, https://substackcdn.com/image/fetch/$s_!jUKB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 1272w, https://substackcdn.com/image/fetch/$s_!jUKB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jUKB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png" width="1251" height="482" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:1251,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66941,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.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_!jUKB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 424w, https://substackcdn.com/image/fetch/$s_!jUKB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 848w, https://substackcdn.com/image/fetch/$s_!jUKB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 1272w, https://substackcdn.com/image/fetch/$s_!jUKB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ade1d93-afcb-4568-aa82-f2859f0b9bf4_1251x482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Weekly calendar example</figcaption></figure></div><p>You don&#8217;t <em>have</em> to post daily, but consistency is key, whether it&#8217;s twice a week or five times. Choose a sustainable rhythm. Tools like scheduling software (Typefully, Buffer, etc.) can help you queue posts in advance.</p><h3>Step 8: Batch and reuse content</h3><p>An efficiency hack you can employ is <strong>batch-creating content</strong>. Instead of writing every morning under pressure, you can set aside a block of time to draft multiple posts at once (when ideas are flowing). Many top creators use this batching method to stay ahead. </p><p>You should also not be shy about repurposing: a tweet that performed well on X (Twitter) might be expanded into a LinkedIn post, a LinkedIn post that resonated might be repurposed as a newsletter section, and so on. This &#8220;create once, publish everywhere&#8221; mindset means each idea works harder for you. </p><p>In fact, one of my writing tricks (called Lean writing) is to <strong>test ideas on Twitter first</strong> (where the bar for virality is high and feedback is instant) and then bring the best ones to LinkedIn with more polish.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ESq7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ESq7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 424w, https://substackcdn.com/image/fetch/$s_!ESq7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 848w, https://substackcdn.com/image/fetch/$s_!ESq7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 1272w, https://substackcdn.com/image/fetch/$s_!ESq7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ESq7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png" width="549" height="935" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb1ff845-183e-4420-9365-fcb577738ae5_549x935.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:935,&quot;width&quot;:549,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112168,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.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_!ESq7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 424w, https://substackcdn.com/image/fetch/$s_!ESq7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 848w, https://substackcdn.com/image/fetch/$s_!ESq7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 1272w, https://substackcdn.com/image/fetch/$s_!ESq7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb1ff845-183e-4420-9365-fcb577738ae5_549x935.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An example of lean writing</figcaption></figure></div><h3>Step 9: Engaging with the Tech community</h3><p>Posting great content is only half of the LinkedIn game. The other half, which many engineers overlook, is <strong>actively engaging with others</strong>. This means commenting on others&#8217; posts, replying to every comment on your own posts, and generally being visible in the community. </p><p>In the early days, before you get a large audience, you can <strong>grow by commenting on influential people&#8217;s posts</strong>. You should follow top voices in tech leadership and be one of the first to leave a meaningful comment when they post. <strong>This tactic is golden for newcomers.</strong> By engaging on popular posts (authentically, not spammy), you <em>&#8220;borrow&#8221;</em> the poster&#8217;s audience,  people see your comment, and if it&#8217;s insightful, they visit your profile.</p><p>Another engagement routine you should follow is <strong>being active on your own posts</strong>. When you do post, don&#8217;t drop it and disappear. The first hour after posting is <strong>&#8220;golden hour&#8221;</strong>, so you need to be online to reply to comments, answer questions, and encourage discussion. </p><p>This early engagement signals to LinkedIn that the post is interesting, thereby amplifying its reach. In fact, the LinkedIn algorithm heavily favors posts that get engagement in the first 60-90 minutes. Data shows <strong>every comment you receive can increase the post&#8217;s reach by about 4% in your network</strong> (and ~3% in the commenter&#8217;s network). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AU-I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AU-I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AU-I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AU-I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AU-I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AU-I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1354444,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.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_!AU-I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AU-I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AU-I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AU-I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff78f06b1-0ea8-4dff-a43f-3886854b3df6_5157x3438.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Engaging with others is a big win (Image: <a href="https://www.freepik.com/">Freepik</a>) </figcaption></figure></div><p>You should treat the comment section like a forum, responding, asking follow-up questions, and even debating politely. This dedication helped foster a loyal community. People know you&#8217;ll actually read and respond, so they&#8217;re more likely to comment. And <strong>more comments = more visibility</strong>. It&#8217;s a virtuous cycle.</p><p>Another growth move you can take is to <strong>collaborate with other creators</strong>. You can join a few Slack/Discord groups of content-creating professionals where they informally support each other (NOT engagement pods in the spammy sense, but real peers giving feedback and sometimes boosting each other&#8217;s posts). By engaging in these communities, you can expand your reach beyond your immediate followers. </p><p>If you get the chance, <strong>appear on webinars, podcasts, or LinkedIn Live sessions with others in your niche</strong>. </p><blockquote><p><em>&#128161; One specific tip for busy engineers: <strong>schedule some &#8220;LinkedIn time&#8221; for engagement</strong> just as you would for coding or emails. I spend about 20-30 minutes each morning and again in the evening on LinkedIn, not mindlessly scrolling, but engaging with intent. In those windows, I&#8217;ll comment on a few posts from people I follow, respond to DMs, and review any interesting discussions. </em></p></blockquote><p>Consistency here matters too. <strong>The algorithm notices when you&#8217;re active and will start surfacing your name more often.</strong> Plus, people you regularly interact with are more likely to see <em>your</em> posts (LinkedIn&#8217;s feed shows content from those who have engaged with each other before). So yes, <strong>being social pays off.</strong></p><h3>Step 10: Track analytics</h3><p>Posting and engaging with people isn't enough; you need to track the results of your work. Your Analytics section shows three numbers: profile views (your CTR), post impressions (your reach), and search appearances (your SEO). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uKWW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uKWW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 424w, https://substackcdn.com/image/fetch/$s_!uKWW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 848w, https://substackcdn.com/image/fetch/$s_!uKWW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 1272w, https://substackcdn.com/image/fetch/$s_!uKWW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uKWW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png" width="778" height="271" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99687af1-8303-48b8-9594-01306efde9a8_778x271.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:271,&quot;width&quot;:778,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17927,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.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_!uKWW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 424w, https://substackcdn.com/image/fetch/$s_!uKWW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 848w, https://substackcdn.com/image/fetch/$s_!uKWW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 1272w, https://substackcdn.com/image/fetch/$s_!uKWW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99687af1-8303-48b8-9594-01306efde9a8_778x271.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The main Analytics dashboard</figcaption></figure></div><p>If profile views are low, your headline is probably wrong. People see your content, but don&#8217;t click your name. Test a clearer, more specific version, not &#8220;Software Engineer,&#8221; but make a position statement in terms of: <strong>I help [WHO] achieve [WHAT] using [HOW]</strong>. In the technology space, this could be anything from &#8220;<strong>Get insights into AI daily</strong>&#8221; to &#8220;<strong>I teach you to TDD in React.</strong>&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!skFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!skFG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 424w, https://substackcdn.com/image/fetch/$s_!skFG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 848w, https://substackcdn.com/image/fetch/$s_!skFG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 1272w, https://substackcdn.com/image/fetch/$s_!skFG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!skFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png" width="727" height="221" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:221,&quot;width&quot;:727,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13171,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.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_!skFG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 424w, https://substackcdn.com/image/fetch/$s_!skFG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 848w, https://substackcdn.com/image/fetch/$s_!skFG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 1272w, https://substackcdn.com/image/fetch/$s_!skFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c06a8bf-618e-48bb-863c-565cede171e2_727x221.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Profile views</figcaption></figure></div><p>Check <strong>engagement types</strong> next. Reactions are dopamine. Comments mean you sparked a thought. Saves mean you taught something. End posts with specific questions: &#8220;Have you dealt with this database scaling issue?&#8221; beats &#8220;What do you think?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CPCi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CPCi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 424w, https://substackcdn.com/image/fetch/$s_!CPCi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 848w, https://substackcdn.com/image/fetch/$s_!CPCi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 1272w, https://substackcdn.com/image/fetch/$s_!CPCi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CPCi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png" width="777" height="447" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:447,&quot;width&quot;:777,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33406,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.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_!CPCi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 424w, https://substackcdn.com/image/fetch/$s_!CPCi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 848w, https://substackcdn.com/image/fetch/$s_!CPCi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 1272w, https://substackcdn.com/image/fetch/$s_!CPCi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8db1767-3c58-4789-9bb9-22f34ccc8174_777x447.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Engagement content performance</figcaption></figure></div><p>Also, look at <strong>audience demographics</strong>. If 90% of your followers are entry-level but you want a senior role, your content is too basic. Shift to architectural trade-offs and system design. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gdZt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gdZt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 424w, https://substackcdn.com/image/fetch/$s_!gdZt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 848w, https://substackcdn.com/image/fetch/$s_!gdZt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 1272w, https://substackcdn.com/image/fetch/$s_!gdZt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gdZt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png" width="781" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d876245-51b8-4b69-b705-374c89319e84_781x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:781,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16691,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.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_!gdZt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 424w, https://substackcdn.com/image/fetch/$s_!gdZt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 848w, https://substackcdn.com/image/fetch/$s_!gdZt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 1272w, https://substackcdn.com/image/fetch/$s_!gdZt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d876245-51b8-4b69-b705-374c89319e84_781x300.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NBEf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NBEf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 424w, https://substackcdn.com/image/fetch/$s_!NBEf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 848w, https://substackcdn.com/image/fetch/$s_!NBEf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 1272w, https://substackcdn.com/image/fetch/$s_!NBEf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NBEf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png" width="776" height="299" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:299,&quot;width&quot;:776,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12733,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/179637543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.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_!NBEf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 424w, https://substackcdn.com/image/fetch/$s_!NBEf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 848w, https://substackcdn.com/image/fetch/$s_!NBEf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 1272w, https://substackcdn.com/image/fetch/$s_!NBEf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db6a569-3f6d-4cdc-b26b-78f042be2c00_776x299.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Audience demographics</figcaption></figure></div><p><strong>Measure monthly</strong>. If impressions are low, fix your hooks. If demographics are wrong, increase technical depth. If growth is flat, connect with people who engage with your posts. </p><p>Treat your profile like a product, measure, ship improvements, and check the logs. Double down on what works.</p><h2>4. Common mistakes </h2><p>Profile optimization failures remain shockingly common despite a dramatic impact on visibility. Profiles with photos receive&nbsp;<strong>9x more connection requests,</strong>&nbsp;and users are&nbsp;<strong>7x more likely</strong>&nbsp;to have profiles viewed with photos,&nbsp;yet many engineers still use low-quality images or skip photos entirely. </p><p>Algorithm penalties destroy reach for specific behaviors. More than five hashtags trigger spam filters, external links in the post body reduce reach by&nbsp;<strong>25-40%</strong>&nbsp;(always place in the first comment instead), AI-generated content faces&nbsp;<strong>30% less reach and 55% less engagement</strong>, and posting multiple times within 24 hours reduces the newest post&#8217;s reach. </p><p>Engagement bait phrases like &#8220;Like if you agree&#8221; or &#8220;Comment YES&#8221; are now systematically deprioritized. Overly promotional content, product or service sales, or face-to-face selling&nbsp;<strong>can result in a 70%</strong>+<strong>&nbsp;reduction in reach;</strong>&nbsp;the platform explicitly penalizes active selling.</p><p>Engagement mistakes include posting without engaging with others&#8217; content (you should comment on others&#8217; posts <strong>80% more</strong> than posting your own), not responding to comments on your posts during the critical first hour, and organizing engagement pods where people agree to like each other&#8217;s posts (LinkedIn detects and devalues this 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_!djO2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!djO2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!djO2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!djO2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!djO2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!djO2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg" width="1456" height="831" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:831,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Learning from Mistakes&quot;,&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="Learning from Mistakes" title="Learning from Mistakes" srcset="https://substackcdn.com/image/fetch/$s_!djO2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!djO2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!djO2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!djO2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26663207-02ea-45ad-824e-5c0bda279a6e_1594x910.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Wrong target</figcaption></figure></div><h2>5. The Payoff</h2><p>All this effort, optimizing your profile, pumping out content, and engaging with the community, will pay off in the end. It is not just about vanity metrics; it can change your career trajectory.</p><p>The most visible result, of course, is the follower count. I grew from essentially zero audience to 260k+ followers in about 2.5 years. This made me one of the most-followed engineering voices on LinkedIn. That kind of reach means whenever I post, <strong>tens of thousands</strong> of people see it,  a powerful position to be in for spreading ideas. Even if your goal isn&#8217;t 200k followers, the point is that <strong>steady posting and improvement lead to a compounding audience</strong>.</p><p>As your follower count grows, so does your <strong>industry recognition</strong>. You will start getting tagged in others' posts as an expert, invited to speak at virtual conferences, and interviewed on tech podcasts. I became known for &#8220;that CTO who shares great and free advice on LinkedIn.&#8221; This authority can be self-reinforcing: being chosen as one of the&nbsp;<em><a href="https://taplio.com/influencers">Top 100 LinkedIn creators in the world</a></em>&nbsp;(per a Taplio ranking over the last three years) further boosts my credibility. </p><p>Even if you&#8217;re not aiming for &#8220;LinkedIn influencer&#8221; status, being recognized as a <strong>thought leader in your niche</strong> (even on a small scale) can lead to opportunities like guest blogging, panel invitations, or being consulted for advice. It&#8217;s a great feeling when peers at other companies have <em>heard of you</em> because of your content.</p><p>Perhaps the most tangible benefit: your LinkedIn presence&nbsp;<strong>becomes a magnet for opportunities</strong>. You will begin receiving weekly messages about job openings. Additionally, your consulting sideline will take off, inbound leads from people who enjoy your content and want your help with their tech strategy. </p><p>If you ever decide to change jobs or launch a startup, you now have a huge platform to tap into for hiring or marketing. <strong>Your LinkedIn audience is like a career safety net and launchpad in one.</strong> </p><p>Also, an often-overlooked benefit: <strong>creating content forces you to clarify your thinking and communicate more effectively</strong>. Explaining complex tech concepts in simple LinkedIn posts improved my ability to get to the point, useful when briefing executives or writing design docs. </p><p>Also, engaging with diverse commenters gave me empathy for perspectives outside my immediate bubble. This showed up in my leadership style, making me more patient and open to feedback. </p><p>In a sense, <strong>writing online regularly is like training in public speaking or teaching</strong>; you get more articulate over time. So even aside from the external wins, you <em>personally grow</em> through the process.</p><p>Perhaps the most rewarding aspect for me has been the community I cultivated. I essentially created a <strong>tribe of engineers and techies</strong> who interact not just with me but with each other. My comment sections have become mini-forums where people exchange ideas. </p><p>I mentored dozens of engineers through comments and DMs, and even launched a newsletter and Discord group off the back of my LinkedIn following, where deeper discussions happen. </p><p>For someone who started out feeling &#8220;invisible&#8221; in the industry, this sense of <em>belonging and contributing</em> is a huge personal win. Some of the folks I met via LinkedIn have become business partners and close friends. You can&#8217;t put a price on that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kc6x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kc6x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Kc6x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Kc6x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Kc6x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kc6x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg" width="1456" height="672" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:672,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;SpaceX - Launches&quot;,&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="SpaceX - Launches" title="SpaceX - Launches" srcset="https://substackcdn.com/image/fetch/$s_!Kc6x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Kc6x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Kc6x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Kc6x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c68a1c-948e-45dd-b7eb-00ee6b30c64c_2600x1200.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Launching your LinkedIn journey</figcaption></figure></div><div><hr></div><h2>&#127873; Bonus: <strong>Prompt to create a viral LinkedIn post</strong></h2><p>This prompt makes ChatGPT follow a clear flow: hook &#8594; story &#8594; lesson &#8594; CTA, with clean spacing and punchy emphasis. Copy it, fill the blanks, and publish.</p><pre><code><strong>ROLE</strong>: You are a seasoned LinkedIn thought leader and professional copywriter, writing posts earning comments, saves, shares.

<strong>TASK</strong>: Ghostwrite one text-only LinkedIn post using the inputs below. Optimise for comments and shares, while staying credible.

<strong>INPUTS</strong> (fill in; facts only):
- <strong>Topic / core insight</strong>:
- <strong>Target reader</strong>:
- <strong>Credibility</strong> (facts only; bullets):
- <strong>Proof points</strong> (numbers + time window):
- <strong>Stakes</strong> (what ignoring costs):
- <strong>CTA</strong> (pick 1: Comment / Share / Follow / DM):
- <strong>Tone</strong> (pick 1: Educational / Storytelling / Data-driven / Debate-starting):
- <strong>Voice</strong>: swearing (yes/no), directness (low/med/high), humor (low/med/high):
- <strong>Personal story</strong> (optional, 3&#8211;6 lines):

<strong>HARD RULES</strong>:
- No invented metrics, clients, employers, credentials, timelines, outcomes.
- No hashtags, links, or AI mentions.
- No mention of AI. No mention of instructions.
- No ALL CAPS.
- 1&#8211;2 sentences per paragraph, frequent line breaks.
- First-person &#8220;I&#8221;, address &#8220;you&#8221;.

<strong>ENGAGEMENT CHECKLIST</strong> (must hit all):
- First 2 lines create curiosity + tension.
- Include one quotable &#8220;save/share&#8221; line (standalone line).
- Ask one comment question forcing a specific example:
  &#8220;X vs Y &#8212; which do you pick, and why? Give one real example.&#8221;
- Include 3 concrete specifics (numbers, timeframes, tools, mistakes, before/after).
- Deliver 1&#8211;3 takeaways as bullets or numbered lines.

<strong>FORMAT + FLOW</strong>:
Hook &#8594; story/problem &#8594; takeaways &#8594; CTA.

<strong>CTA FORMAT:
</strong>- Comment: ask for a word or short phrase.
- DM: &#8220;DM me the word: KEYWORD.&#8221;
- Follow/Share: one line, direct.

<strong>ANTI-FLUFF BLACKLIST</strong> (avoid):
game-changer, leverage, crush it, authenticity, unlock, synergy, &#8220;nobody talks about&#8221;, ever-changing, cutting-edge, dive deep, robust, seamless, empower, at the end of the day

<strong>QUALITY LOOP</strong> (internal; do not output steps):
1) Draft 2 hook options, each &#8804; 210 characters. Pick the stronger hook.
2) Draft the full post.
3) Edit pass: cut repeats, vague claims, filler.
4) Final scan: &#8804; 1,600 characters; checklist passes.

<strong>OUTPUT RULE</strong>:
- If inputs missing, list them as bullets and stop.
- Else return only the final post text.</code></pre><div><hr></div><h2><strong>More ways I can help you (Including Black Friday discount of 30% until the end of this week):</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[How to run exceptional 1:1 for Engineers ]]></title><description><![CDATA[You know that recurring 30-minute block on your calendar?]]></description><link>https://newsletter.techworld-with-milan.com/p/how-to-run-exceptional-11-for-engineers</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/how-to-run-exceptional-11-for-engineers</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 13 Nov 2025 16:01:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/97c37085-5812-4567-9106-c1e2dfbb1230_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You know that recurring 30-minute block on your calendar? The one labeled &#8220;1:1 with [Manager Name]&#8221;? Most engineers treat it like a necessary evil, a status update between a performance review that neither party really wants to attend.</p><p>I&#8217;ve sat through hundreds of these meetings from both sides. As an engineer, I dreaded the awkward silences and forced small talk. As a manager, I watched talented developers zone out while I asked generic questions about their week. We were all doing it wrong.</p><p>The turning point came when I realized something fundamental: <strong>we&#8217;d been treating 1:1s like project management meetings when they&#8217;re actually relationship and career accelerators.</strong> This isn&#8217;t about tracking tickets or reviewing code. It&#8217;s about the conversations that shape careers, build trust, and solve the human problems that no amount of documentation can fix.</p><p><a href="https://graduateschool.charlotte.edu/new-approach-promote-employee-engagement-one-one-meetings-between-managers-and-direct-reports/">Research backs this up dramatically</a>. <strong>Teams with regular, well-run 1:1s show engagement rates that are triple the average.</strong> They ship better code, have lower turnover, and handle conflict before it explodes. Yet most engineering organizations run these meetings on autopilot, wasting many hours per year per person on conversations that could&#8217;ve been emails.</p><p>The difference between exceptional 1:1s and terrible ones isn&#8217;t complicated. It comes down to understanding who owns the meeting, what belongs in it, and how to make the awkward parts productive. Once you get these fundamentals right, everything else follows.</p><p>In particular, we will talk about:</p><ul><li><p><strong>Why 1:1s matter</strong>. How 1:1s differ from other meetings and why they&#8217;re critical for engineer retention and team performance. The real purpose behind these meetings that most people miss.</p></li></ul><ul><li><p><strong>This is your meeting, not your manager&#8217;s</strong>. Who owns what in a 1:1 and why treating it like a status update kills its value. How both engineers and managers should prepare and show up.</p></li><li><p><strong>Agenda: Use a flexible framework</strong>. The People/Product/Process framework and how to apply it without becoming rigid. Structure as a safety net, not a script.</p></li><li><p><strong>Great questions lead to great answers</strong>. Questions that unlock real conversations versus ones that get you nowhere. Specific examples and the 70/30 listening rule that changes everything.</p></li><li><p><strong>Have the awkward conversations</strong>. Creating psychological safety and bringing up the topics you can&#8217;t discuss anywhere else. Why discomfort signals you&#8217;re doing it right.</p></li><li><p><strong>Make the logistics matter</strong>. The practical details that make or break 1:1s: frequency, duration, documentation, and pre-work.</p></li><li><p><strong>For managers: Stop talking and start coaching</strong>. Shifting from problem-solver to coach. How to develop decision-makers instead of creating dependencies on you.</p></li><li><p><strong>What to avoid</strong>. Common mistakes that destroy the unique value of 1:1 time.</p></li><li><p><strong>Start simple, then iterate</strong>. Evaluating whether your 1:1s work and how to improve them over time.</p></li></ul><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://fandf.co/4qMjGYD">Master Protobuf: Build APIs That Don&#8217;t Break (Sponsored)</a></h2><p><em>Your API works perfectly. Then someone adds a field. Half of your services break in production.</em></p><p><em>This free workshop shows you how to build APIs that evolve without exploding. </em></p><p><em>In 1 hour, you&#8217;ll learn:</em></p><ul><li><p><em>How to catch breaking changes at compile time, not in production, validation patterns that actually prevent incidents</em></p></li><li><p><em>Battle-tested API design patterns from teams handling billions of requests</em></p></li><li><p><em>Why Protobuf matters beyond gRPC, event streaming, data pipelines, and anywhere you need consistent data types</em></p></li><li><p><em>Real answers to your specific Protobuf challenges, interactive Q&amp;A throughout</em></p></li></ul><p><em>Skip years of painful lessons. Learn what works from engineers who&#8217;ve already been through it.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://fandf.co/4qMjGYD" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vmbs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 424w, https://substackcdn.com/image/fetch/$s_!vmbs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 848w, https://substackcdn.com/image/fetch/$s_!vmbs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 1272w, https://substackcdn.com/image/fetch/$s_!vmbs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vmbs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png" width="427" height="426" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:426,&quot;width&quot;:427,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64343,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://fandf.co/4qMjGYD&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/142261686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.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_!vmbs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 424w, https://substackcdn.com/image/fetch/$s_!vmbs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 848w, https://substackcdn.com/image/fetch/$s_!vmbs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 1272w, https://substackcdn.com/image/fetch/$s_!vmbs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b5752-dc7b-480c-8aee-8320071ffd36_427x426.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Join the live workshop on November 19th at 9:00 AM PDT | 12:00 PM EDT | 5:00 PM BST.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fandf.co/4qMjGYD&quot;,&quot;text&quot;:&quot;Register free&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fandf.co/4qMjGYD"><span>Register free</span></a></p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>Why 1:1s matter</h2><p>A 1:1 isn&#8217;t just another meeting. It&#8217;s dedicated <strong>personal time</strong> with your direct report. In fact, 1:1s aren&#8217;t about the work itself; they&#8217;re about the person who does the work. When you treat 1:1s as optional or purely tactical check-ins, you lose one of your best chances to build trust, surface issues early, coach growth, and retain great engineers. Consistent, well-run 1:1s can transform a team&#8217;s performance and morale.</p><p>Think of a 1:1 as a <strong>safety valve and springboard</strong>: a place to catch problems before they explode, and to nurture an engineer&#8217;s development before they stagnate. It&#8217;s <em>their</em> time to talk freely, and your time to listen and support. Keep that purpose in mind at all times.</p><h2>This is your meeting, not your manager&#8217;s</h2><p>First-time managers obsess over task management in 1:1s. They open Jira, review tickets, and turn the entire session into a status sync. This is the cardinal mistake. Your manager already has dashboards, standups, and async updates for tracking work. The 1:1 exists for things that don&#8217;t fit anywhere else.</p><ul><li><p><strong>For engineers</strong>: Come prepared with what matters to you (have an <strong>agenda</strong>!). It could be: career goals, work priorities, or personal development. The meeting should cover your career growth, relationships with teammates, obstacles blocking your work, and feedback in both directions.</p></li><li><p><strong>For managers</strong>: Your job is to empower employees to solve their problems and help them navigate roadblocks. Remember, the 1:1 is their forum; encourage them to add to the agenda. But as the manager, you should have a few prompts ready to kindle a meaningful discussion.</p></li></ul><p>Finally, <strong>set a welcoming tone</strong>. I like to begin with a bit of genuine small talk: ask about their weekend, their new house plant, or how their life&#8217;s been lately. <em>Be personable.</em> <strong>Showing that you care about them as a human (not just a coder) helps build the trust needed for candid conversations.</strong></p><p>The ownership distinction matters. As the engineer, you own the agenda and pre-work. As the manager, you&#8217;re ultimately responsible for the relationship and outcomes. This tension is intentional.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4hv1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4hv1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4hv1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4hv1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4hv1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4hv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg" width="668" height="389.9725274725275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:850,&quot;width&quot;:1456,&quot;resizeWidth&quot;:668,&quot;bytes&quot;:1233115,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/142261686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.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_!4hv1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4hv1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4hv1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4hv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd88a073-f8e4-42b8-bbdd-72f23df57c79_8000x4669.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Powerful one-to-one isn&#8217;t what we expect (Image: <a href="https://www.freepik.com/">Freepik</a>)</figcaption></figure></div><h2>Agenda: Use a flexible framework (not a status checklist)</h2><p>The 1:1 is a <strong>higher-leverage conversation</strong>. As one seasoned engineering manager told me, <em>&#8220;The 1:1 should focus on the employee&#8217;s needs, not just status updates</em>.&#8221; In other words, it&#8217;s a forum for topics that don&#8217;t fit neatly into Jira tickets or team meetings.</p><p>That said, having a <strong>loose structure or framework</strong> can ensure you cover important ground. One effective format I&#8217;ve used is the classic <strong>&#8220;People, Product, Process&#8221;</strong> approach</p><ul><li><p><strong>People (5min):</strong> How are team dynamics and relationships? (e.g., &#8220;How are things going with the team?&#8221;). This can reveal interpersonal issues or successes.</p></li><li><p><strong>Product (10min)</strong>: What&#8217;s the focus of their work? (e.g., &#8220;What have you been working on lately?&#8221;). Not a detailed status, but a high-level view of progress, victories, or blockers.</p></li><li><p><strong>Process (10min)</strong>: Are there any tools, process issues, or general improvements that would make their work life better? (e.g., &#8220;Anything we can do to make your day-to-day easier or happier?&#8221;).</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_!8I3H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8I3H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 424w, https://substackcdn.com/image/fetch/$s_!8I3H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 848w, https://substackcdn.com/image/fetch/$s_!8I3H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 1272w, https://substackcdn.com/image/fetch/$s_!8I3H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8I3H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png" width="482" height="619.2624671916011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:979,&quot;width&quot;:762,&quot;resizeWidth&quot;:482,&quot;bytes&quot;:74143,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/142261686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.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_!8I3H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 424w, https://substackcdn.com/image/fetch/$s_!8I3H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 848w, https://substackcdn.com/image/fetch/$s_!8I3H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 1272w, https://substackcdn.com/image/fetch/$s_!8I3H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e0a947-36b5-4279-b174-e7cb2c7ef970_762x979.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">People, process, product framework</figcaption></figure></div><p>This structure is just a guide &#8211; adapt it to what works for you. The goal is to touch on <strong>the person, their work, and the environment</strong>. Often, I won&#8217;t even formally announce these sections; I keep them in mind to steer the conversation. If the discussion naturally dives deep into one area, that&#8217;s fine. You don&#8217;t need to cover every category every time, as long as the conversation is valuable.</p><p>Throughout the 1:1, <strong>let the employee lead</strong> as much as possible. If they come in with something pressing to discuss, run with that. Your framework is a safety net to ensure you don&#8217;t miss topics that matter, not a rigid script.</p><h2><strong>Great questions lead to great answers</strong></h2><p>Great 1:1s are driven by <strong>open-ended, thought-provoking questions</strong> - and a lot of listening on your part. If you&#8217;re doing most of the talking, something&#8217;s off. A good rule of thumb is to <strong>let the direct report talk ~70% of the time, with you talking 30%</strong> (mostly asking questions, guiding gently, and clarifying). </p><p>Resist any urge to dominate the conversation or fill every silence. <strong>Silence can be golden. It often means the other person is thinking.</strong> Give them space to reflect and respond.</p><p>When you do ask questions, avoid the generic and shallow. &#8220;<em>How&#8217;s it going?</em>&#8221; will usually get you &#8220;<em>Good, you?</em>&#8221; and then awkward silence. Instead, ask <strong>deeper questions</strong> that encourage reflection and honesty.</p><p>For example, instead of &#8220;<em>Everything on track?</em>&#8221;, you might ask, &#8220;<em>What&#8217;s been the most challenging part of this project for you?</em>&#8221; Compare &#8220;<em>How&#8217;s the team?</em>&#8221; to &#8220;<em>Who&#8217;s someone on the team you&#8217;ve enjoyed working with lately &#8211; and anyone who&#8217;s been hard to work with?</em>&#8221; </p><p>The latter invites a meaningful answer. Dig past the surface: if they give a short, safe answer, follow up with <strong>&#8220;Why?&#8221;</strong> or <strong>&#8220;Tell me more about that.&#8221;</strong></p><p>And remember: <strong>listen actively.</strong> Show you&#8217;re listening by maintaining eye contact (or active engagement on video calls), nodding, and occasionally paraphrasing what you heard. This is <em>their time</em> to be heard. Your job is mostly to listen, understand, and ask the right follow-up questions.</p><blockquote><p><strong>Examples of great 1:1 questions:</strong></p><ul><li><p>What&#8217;s something you&#8217;re <strong>proud of</strong> this week? (Or something that frustrated you?)</p></li><li><p><strong>Is anything blocking</strong> your progress or draining your energy lately?</p></li><li><p>How do you <strong>feel about the team&#8217;s</strong> collaboration and communication recently?</p></li><li><p><strong>What skills</strong> or areas do you want to grow in over the next few months?</p></li><li><p>What&#8217;s one thing I could do <strong>better to support you</strong> or make your job easier?</p></li></ul></blockquote><p>These kinds of questions spark dialogue beyond &#8220;everything&#8217;s fine.&#8221; They can uncover hidden issues or aspirations. As the manager, <strong>pay attention</strong> to both what&#8217;s said and what isn&#8217;t. If a report consistently says &#8220;All good&#8221; but seems hesitant, gently probe further or rephrase the question next time. Over time, as trust grows, they&#8217;ll open up 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_!k7TO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k7TO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k7TO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k7TO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k7TO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k7TO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg" width="430" height="430" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:430,&quot;bytes&quot;:939318,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/142261686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.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_!k7TO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k7TO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k7TO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k7TO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa74738bd-5cfb-429a-96da-280f3ce5c2d4_3000x3000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><h3><strong>How to listen properly?</strong></h3><p><em>&#128066; In general, there are three levels of listening:</em></p><ol><li><p><em><strong>We listen for content</strong>. Here, we notice what is said, words, facts, etc.</em></p></li><li><p><em><strong>We listen for structure</strong>. Here, we notice behavior, emotions, and so on.</em></p></li><li><p><em><strong>We listen deeply</strong>. Here, we notice the whole picture, including values, beliefs, motivation, etc.</em></p></li></ol><p><em>Combining all this, we will connect with people on a deeper level, so they feel like: &#8220;Wow, this person understands me, this person values me, I can talk to this person&#8230;&#8221;.</em></p><p><em>And remember that <strong>you have two ears and one mouth</strong>. This is not a coincidence!</em></p><p><em>Think about this before your next conversation.</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_!ksNq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ksNq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 424w, https://substackcdn.com/image/fetch/$s_!ksNq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 848w, https://substackcdn.com/image/fetch/$s_!ksNq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 1272w, https://substackcdn.com/image/fetch/$s_!ksNq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ksNq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png" width="458" height="521.5750708215297" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85d1b643-77e1-455a-9f60-92222640d693_706x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:706,&quot;resizeWidth&quot;:458,&quot;bytes&quot;:42258,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/142261686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.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_!ksNq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 424w, https://substackcdn.com/image/fetch/$s_!ksNq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 848w, https://substackcdn.com/image/fetch/$s_!ksNq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 1272w, https://substackcdn.com/image/fetch/$s_!ksNq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1b643-77e1-455a-9f60-92222640d693_706x804.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><h2>Have the awkward conversations</h2><p>The best 1:1s include <strong>topics you couldn&#8217;t discuss openly in Slack or standup</strong>. This is where you commit to saying the <strong>awkward things</strong>. &#8220;<em>I&#8217;m confused about our team&#8217;s direction</em>.&#8221; &#8220;<em>Working with John has been frustrating</em>.&#8221; &#8220;<em>I don&#8217;t think I&#8217;m growing here</em>.&#8221;</p><p>These conversations <strong>require psychological safety</strong>, which you build through consistent follow-through. When your manager commits to removing a blocker, they must actually do it. When you raise concerns, they should acknowledge them rather than getting defensive. <strong>Trust accumulates through dozens of small promises kept</strong>. </p><p>Share what motivates you and what drains you. Talk about areas where you want to grow. Express gratitude for what&#8217;s working and confusion about what isn&#8217;t. The vulnerability feels uncomfortable, but it&#8217;s precisely what makes 1:1s valuable.</p><p><strong>For managers</strong>: Ask directly for feedback on how you&#8217;re doing. &#8220;<em>What can I do better?</em>&#8221; and &#8220;<em>How are these 1:1s working for you?</em>&#8221; are the fastest ways to improve. Most engineers won&#8217;t volunteer this feedback unless you explicitly request it.</p><h2>Make the logistics matter</h2><p><strong>Consistency is non-negotiable</strong>. Weekly meetings give you 4x as many opportunities to catch problems early as monthly meetings do. Every canceled 1:1 without immediate rescheduling chips away at your relationship. Engineers judge managers by how they treat these meetings. Treat them as your highest priority calendar item. </p><p>Next, set up a <strong>shared document</strong>. Notion, Google Docs, whatever, with reverse-chronological entries. Each week gets a date header with the three sections underneath. This running history creates mutual accountability. Write things down visibly during the meeting, notes, and action items. When your manager types &#8220;Finished database migration&#8221; while you&#8217;re talking, it shows they&#8217;re paying attention.</p><p>Here you can check out my&nbsp;<a href="https://www.patreon.com/posts/1-1-full-for-142980773">Notion template - 1:1s for Engineering leaders</a>, which you can use immediately.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QDrz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QDrz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 424w, https://substackcdn.com/image/fetch/$s_!QDrz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 848w, https://substackcdn.com/image/fetch/$s_!QDrz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 1272w, https://substackcdn.com/image/fetch/$s_!QDrz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QDrz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png" width="604" height="760.5135453474676" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1069,&quot;width&quot;:849,&quot;resizeWidth&quot;:604,&quot;bytes&quot;:291003,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/142261686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.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_!QDrz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 424w, https://substackcdn.com/image/fetch/$s_!QDrz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 848w, https://substackcdn.com/image/fetch/$s_!QDrz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 1272w, https://substackcdn.com/image/fetch/$s_!QDrz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc14eab3c-98da-469f-8988-28ea52cb4227_849x1069.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.patreon.com/posts/1-1-full-for-142980773">1:1s for Engineering Leaders Template</a></figcaption></figure></div><p>So, <strong>start the week with your 1:1 early enough to surface blockers,</strong> but not at 8 am when nobody wants to discuss career growth. Thirty minutes is the right default. If you&#8217;re consistently running over, extend to 45. If you finish early regularly, the meeting probably isn&#8217;t serving its purpose.</p><p><strong>The pre-work matters enormously.</strong> Engineers should send a brief weekly wrap-up the day before: current priorities, any blockers, and what&#8217;s on their mind. Managers must read this before the meeting. Showing up unprepared signals disrespect more than anything you could say.</p><h2>For managers: Stop talking and start coaching</h2><p>Most engineering managers talk too much in 1:1s. They solve problems that engineers could solve themselves. They give advice before understanding the real issue. They fill silences that would&#8217;ve led to breakthrough conversations.</p><p>I&#8217;ve learned this from my experience, but when I learned more about <a href="https://newsletter.techworld-with-milan.com/p/coaching-services">coaching</a> and how powerful it is, I realized that it is more than just managing people. </p><p>What we want to achieve:</p><ul><li><p><strong>Create psychological safety first</strong>. Your engineer needs to know they can say &#8220;<em>I&#8217;m struggling</em>&#8221; or &#8220;<em>I disagree with our technical direction</em>&#8221; without consequences. Build this by asking real questions and actually listening to the answers. &#8220;<em>What&#8217;s on your mind?</em>&#8221; beats &#8220;<em>How&#8217;s everything going?</em>&#8221; every time. The second question invites &#8220;fine.&#8221; The first invites truth.</p></li><li><p><strong>Wear your coaching hat, not your solving hat</strong>. When an engineer brings you a problem, resist the urge to fix it immediately. Ask &#8220;<em>What have you already tried?</em>&#8221; and &#8220;<em>What would you do if you had to decide right now?</em>&#8221; You&#8217;re developing decision-makers, not creating dependencies on you. The hardest part is staying quiet when you know the answer. Do it anyway.</p></li><li><p><strong>Make room for the messy stuff</strong>. Engineers often need to process emotions before they can solve problems. When someone vents about a frustrating code review or difficult teammate, don&#8217;t jump to solutions. Let them talk it out. Say &#8220;<em>Tell me more</em>&#8221; or just nod. Sometimes the venting itself is the solution. They&#8217;ll often talk themselves into clarity without you saying a word.</p></li><li><p><strong>Hold people accountable without micromanaging</strong>. End each topic with &#8220;<em>What&#8217;s your next step?</em>&#8221; not &#8220;Here&#8217;s what you should do.&#8221; Write it down. Follow up next week. If they didn&#8217;t do it, ask &#8220;<em>What got in the way?</em>&#8221; not &#8220;<em>Why didn&#8217;t you do this?</em>&#8221; The first question uncovers systemic blockers. The second creates defensiveness.</p></li><li><p><strong>Ask for reverse feedback every month</strong>. &#8220;<em>What could I do differently to support you better?</em>&#8221; works better than generic &#8220;<em>How am I doing?</em>&#8221; questions. Be specific: &#8220;<em>Was there a moment this month where I could&#8217;ve handled something better?</em>&#8221; When they give you feedback, say thank you and act on it. Nothing builds trust faster than changing behavior based on their input.</p></li></ul><p>Remember: <strong>your success is measured by your team&#8217;s growth, not by how many problems you personally solve.</strong> The best engineering managers leave 1:1s having said less than 30% of the words. If you&#8217;re doing more than that, you&#8217;re probably managing too much and coaching too little.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mfHo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mfHo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mfHo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mfHo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mfHo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mfHo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2506398,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/142261686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.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_!mfHo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mfHo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mfHo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mfHo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916384ae-520f-45bd-8348-e42211c8a3a9_5905x3937.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One-to-one meeting (Image: <a href="https://unsplash.com/">Unsplash</a>)</figcaption></figure></div><blockquote><p>Learn more about how to be accountable: </p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:139504445,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/how-to-be-accountable&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;How to be Accountable?&quot;,&quot;truncated_body_text&quot;:&quot;This week&#8217;s issue brings to you the following:&quot;,&quot;date&quot;:&quot;2024-01-18T16:00:28.213Z&quot;,&quot;like_count&quot;:47,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 48K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, actionable insights on software engineering and leadership. Trusted by engineers at Amazon, Microsoft, and Google, and students at MIT and Stanford.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;paidPublicationIds&quot;:[458709,64099],&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;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/how-to-be-accountable?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How to be Accountable?</div></div><div class="embedded-post-body">This week&#8217;s issue brings to you the following&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 47 likes &#183; Dr Milan Milanovi&#263;</div></a></div><h2>What to avoid</h2><p>Here are a few things you should avoid in 1:1s:</p><ul><li><p><strong>Don&#8217;t use 1:1s only for status updates</strong>. If you&#8217;re spending 25 minutes reviewing what shipped, you&#8217;re wasting the unique value of dedicated one-on-one time. Handle that async or in team meetings. </p></li><li><p><strong>Don&#8217;t dominate the conversation as a manager</strong>. If you&#8217;re talking more than 50% of the time, you&#8217;re doing it wrong. The engineer should drive the agenda and the discussion. </p></li><li><p><strong>Don&#8217;t skip the follow-through</strong>. Dropped commitments erode trust faster than anything else. If you said you&#8217;d investigate the CI pipeline issues, do it before the next 1:1 and report back.</p></li><li><p><strong>Don&#8217;t share notes or gossip</strong>. What&#8217;s said in a 1:1 stays private. The moment engineers think you&#8217;re repeating their concerns to others, they&#8217;ll stop being candid. </p></li><li><p><strong>Don&#8217;t cancel without immediate rescheduling</strong>. This signals that the meeting, and, by extension, the engineer, is not a priority. Protect this time fiercely.</p></li></ul><p>Most of these were mistakes I made during my 1:1s when I started working with people. Taking this into account will greatly improve your 1:1s with your people.</p><h2>Start simple, then iterate</h2><p>Good 1:1s feel like good product-market fit. Are you both excited for the meeting? Is the structure delivering increasing value? Would you be disappointed if you couldn&#8217;t have them anymore?</p><p>If the answer is no, ask for feedback on the 1:1s themselves. Try the People/Product/Process framework for a month. Write things down. Show up consistently. Listen more than you talk. Most importantly, remember these meetings exist to make engineers more effective and fulfilled in their work.</p><p>The best 1:1s are the ones where difficult topics surface early, small problems stay small, and trust compounds week after week. They&#8217;re not always comfortable, but they&#8217;re always worth it. Engineers who master 1:1s, from either side of the table, accelerate their careers and build stronger teams.</p><p>Weekly 1:1s are 30 minutes that determine whether engineers stay or leave, whether they grow or stagnate. Run them like they matter, because they do.</p><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[How Google, Amazon, and CrowdStrike broke millions of systems]]></title><description><![CDATA[What we can learn from the three biggest incidents in the software industry, this year.]]></description><link>https://newsletter.techworld-with-milan.com/p/how-google-amazon-and-crowdstrike</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/how-google-amazon-and-crowdstrike</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 30 Oct 2025 16:02:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0a9eb7cd-58bb-44aa-8b2f-f8159078a0e6_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Three companies control most of the internet. When they break, millions of systems fail at once.</p><p>In October 2025, a race condition in AWS&#8217;s DNS automation caused a regional endpoint to be emptied. 113 services crashed. Recovery took 15 hours. Two months earlier, a null pointer in Google Cloud caused Service Control, the gatekeeper for every API request, to crash. 50+ services went dark for seven hours. </p><p>And in July 2024, CrowdStrike deployed a bad configuration file to kernel-mode drivers worldwide. 8.5 million Windows machines are locked in boot loops. Airlines grounded flights, and hospitals canceled surgeries.</p><p>These weren&#8217;t sophisticated attacks or infrastructure failures. They were simple bugs: a race condition, a missing null check, a bad config file. But at this scale, simple bugs become catastrophic.</p><p>This post breaks down what actually happened in each incident. </p><p>In particular, we will talk about:</p><p><strong>1. DNS race condition caused the large AWS outage. </strong>How a time-of-check-to-time-of-use bug emptied DynamoDB&#8217;s endpoint and took down 113 services for 15 hours</p><p><strong>2. How a null pointer at Google Cloud crashed the Internet. </strong>Why a missing null check in Service Control brought down 50+ services across 40+ regions for seven hours</p><p><strong>3. A single deployment that made the whole world stop. </strong>How CrowdStrike&#8217;s kernel driver update locked 8.5 million Windows machines in boot loops</p><p><strong>4. Bonus: When Azure&#8217;s safety checks failed.</strong> How a config change bypassed validation and took down Azure Front Door, and dozens of Microsoft services, for 8 hours.</p><p>So, let&#8217;s dive in.</p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. DNS race condition caused the large AWS outage</h2><p>At 2:50 AM Eastern <a href="https://aws.amazon.com/message/101925/">on October 20, 2025</a>, a DNS race condition in DynamoDB&#8217;s automation caused the us-east-1 regional endpoint (in the northern Virginia cluster) to be emptied. Within minutes, 113 AWS services began to fail. Ring cameras lost recordings, banking apps crashed, and Snapchat, Fortnite, and Slack went dark. </p><p>The outage began at 11:48 PM PDT (2:48 AM EDT) on October 20. <strong>DynamoDB DNS was restored at 2:25 AM PDT, roughly 3 hours after the outage. But cascading failures kept services down for 12 more hours.</strong></p><p>For engineers building resilient systems, this incident reveals uncomfortable truths about race conditions, dependency chains, and the hidden fragility of cloud-native architectures.</p><blockquote><p><a href="https://aws.amazon.com/message/101925/">The full AWS report can be read here.</a></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yPGd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yPGd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yPGd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yPGd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yPGd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yPGd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Massive Global AWS Outage - Here's What We Know So Far&quot;,&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="Massive Global AWS Outage - Here's What We Know So Far" title="Massive Global AWS Outage - Here's What We Know So Far" srcset="https://substackcdn.com/image/fetch/$s_!yPGd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yPGd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yPGd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yPGd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dadf12b-636e-4531-b7f6-86c973836cd1_1280x720.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Different services at the <a href="https://downdetector.com/">Downdetector</a> on the day of the outage</figcaption></figure></div><h3>The root cause: a race condition</h3><p><a href="https://aws.amazon.com/dynamodb/">AWS&#8217;s DynamoDB</a> uses an automated DNS management system split into two components. <strong>The DNS Planner</strong> monitors load balancer health and generates DNS configuration plans. Three <strong>DNS Enactor</strong> instances (one per availability zone) independently apply these plans to <a href="https://aws.amazon.com/route53/">Route 53</a>. The design assumed <strong>race conditions were acceptable due to eventual consistency</strong>.</p><p>On October 20, this assumption proved to be wrong. DNS Enactor #1 experienced unusual delays applying an old plan. Meanwhile, the DNS Planner continued generating new plans. DNS Enactor #2 raced through these newer plans and executed a cleanup process, deleting &#8220;stale&#8221; plans just as Enactor #1 completed its delayed run. </p><p>The staleness check, performed hours earlier at the start of processing, was now meaningless. Enactor #1 overwrote Route 53 with outdated data. Enactor #2 detected the &#8220;old&#8221; plan and triggered deletion, emptying all IP addresses from dynamodb.us-east-1.amazonaws.com. The regional DynamoDB endpoint vanished from DNS entirely.</p><p>This is a classic <strong><a href="https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use">time-of-check-to-time-of-use (TOCTOU) vulnerability</a></strong>. The staleness check occurred when processing started, but the actual write happened hours later. In distributed systems with high latency, checking the state at the beginning but applying changes at the end creates a massive window for inconsistency.</p><p>AWS recognized the severity immediately. They disabled the DNS Planner and Enactor automation globally, not just in us-east-1, pending fixes. This revealed an uncomfortable truth: <strong>the race condition existed in all regions but had only been triggered in one.</strong></p><blockquote><p>This is not the first time that <a href="https://aws.amazon.com/message/680587/">incident happens in this region</a>. There were outages in 2021, 2020, and even in 2012 too.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OmlY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OmlY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 424w, https://substackcdn.com/image/fetch/$s_!OmlY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 848w, https://substackcdn.com/image/fetch/$s_!OmlY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 1272w, https://substackcdn.com/image/fetch/$s_!OmlY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OmlY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png" width="1096" height="851" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:851,&quot;width&quot;:1096,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!OmlY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 424w, https://substackcdn.com/image/fetch/$s_!OmlY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 848w, https://substackcdn.com/image/fetch/$s_!OmlY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 1272w, https://substackcdn.com/image/fetch/$s_!OmlY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59cac393-d0e2-4fbb-85e4-17a4a9a583d1_1096x851.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DynamoDB DNS management and the race removing the regional endpoint in us-east-1</figcaption></figure></div><h3>The cascading problem</h3><p>DynamoDB recovered at 2:25 AM PDT, just under 3 hours after the incident began. But this is where the story gets worse.</p><p><strong>The DropletWorkflow Manager (DWFM)</strong>, which manages leases for physical hosts (droplets) and orchestrates state changes across the EC2 fleet, lost connectivity to DynamoDB. When DNS failures prevented health checks, leases across the entire fleet timed out. EC2 marked servers as unavailable and blocked new instance launches due to &#8220;InsufficientCapacity&#8221; errors.</p><p>After DynamoDB recovered, DWFM attempted to re-establish leases for the entire EC2 fleet at once. At AWS&#8217;s scale, processing took longer than the lease timeout periods. Work completed, then immediately timed out, queuing more work in an infinite loop. DWFM entered a <strong>death spiral, unable to make forward progress</strong>. Engineers required 3 additional hours of manual intervention to break the cycle.</p><p>This reveals a fundamental pattern: <strong>lease-based systems work perfectly under normal load but collapse under stress when processing time exceeds timeout periods</strong>. Your recovery automation can become the failure mode.</p><h3>The dependency multiplier</h3><p>With EC2 launches impaired, Lambda couldn&#8217;t create execution environments. ECS, EKS, and Fargate couldn&#8217;t start containers. Network Load Balancers experienced a different problem: health checks flapped on newly launched instances due to network state lag in the Network Manager, which was processing a massive backlog of delayed state changes. </p><p>These flapping health checks triggered <strong>automatic DNS failover across availability zone</strong>s. AWS disabled automatic failover at 9:36 AM PDT to stabilize the system, then re-enabled it at 2:09 PM PDT once backlogs cleared.</p><p>Amazon Connect failed because it depends on Lambda and NLBs. Redshift queries broke. STS authentication failed. CloudWatch degraded. The dependency chain looked like this: <strong>DynamoDB DNS &#8594; DynamoDB APIs &#8594; DWFM &#8594; EC2 launches &#8594; Network Manager &#8594; NLB health checks &#8594; Lambda, ECS, EKS, Fargate &#8594; 100+ dependent services.</strong></p><p>One empty <strong>DNS record brought down 113 services</strong>. The root cause was fixed in roughly 3 hours. Cascading failures took an additional 12 hours to resolve. Full EC2 recovery happened at 1:50 PM PDT, with most services returning to normal by 2:20 PM PDT.</p><blockquote><h3>How AWS outage made water beds stuck</h3><p><em>One of the interesting incidents relating to this outage, was the problem with <a href="https://t.co/lg6mxNDj8W">The Eight Sleep</a> smart beds. These smart beds use water-based thermal regulation controlled entirely through cloud infrastructure. When AWS failed, beds continued executing their last program, typically preheat routines for morning wake-up, with no ability to accept new commands. No local control existed. Users described sleeping in a sauna as beds locked at 110&#176;F, some stuck in inclined positions unable to flatten.</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_!H7Aw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H7Aw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H7Aw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H7Aw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H7Aw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H7Aw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg" width="560" height="376.9230769230769" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:980,&quot;width&quot;:1456,&quot;resizeWidth&quot;:560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Eight Sleep Pod 2 Pro Cover review: a pricey way to end night sweats | The  Verge&quot;,&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="Eight Sleep Pod 2 Pro Cover review: a pricey way to end night sweats | The  Verge" title="Eight Sleep Pod 2 Pro Cover review: a pricey way to end night sweats | The  Verge" srcset="https://substackcdn.com/image/fetch/$s_!H7Aw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H7Aw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H7Aw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H7Aw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad17778-6889-4683-b782-1567532776a8_2010x1353.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><a href="https://x.com/m_franceschetti">CEO Matteo Franceschetti </a>apologized and quickly shipped &#8220;Outage Access&#8221;, direct local app-to-device communication via Bluetooth when cloud infrastructure is unavailable. </em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/m_franceschetti/status/1980419272766583262" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cyPx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 424w, https://substackcdn.com/image/fetch/$s_!cyPx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 848w, https://substackcdn.com/image/fetch/$s_!cyPx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 1272w, https://substackcdn.com/image/fetch/$s_!cyPx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cyPx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png" width="583" height="380" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:380,&quot;width&quot;:583,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45727,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/m_franceschetti/status/1980419272766583262&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/176989738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.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_!cyPx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 424w, https://substackcdn.com/image/fetch/$s_!cyPx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 848w, https://substackcdn.com/image/fetch/$s_!cyPx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 1272w, https://substackcdn.com/image/fetch/$s_!cyPx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72941ae-12ed-41a4-bf23-8a555f6c1913_583x380.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><h3>Takeaways for building resilient systems</h3><p>Even though we miss details from the <a href="https://aws.amazon.com/message/101925/">AWS post-mortem</a>, especially why DNS Enactors slowed down and deleted all DNS records, there are a few lessons we can learn from:</p><ul><li><p><strong>Audit your staleness checks for <a href="https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use">TOCTOU vulnerabilities</a>.</strong> Any pattern where you check the state at the beginning but apply changes at the end creates race condition windows. Use atomic operations, compare-and-swap at write time, optimistic locking with version numbers, or distributed consensus protocols for critical state changes.</p></li><li><p><strong>Your recovery automation needs circuit breakers.</strong> Monitor recovery process queue depths, implement exponential backoff, add rate limiters that account for queue depth rather than just throughput, and test recovery under production-scale load. </p></li><li><p><strong>Map your dependency chains and identify blast radius multipliers.</strong> Draw the actual dependency graph for your critical services. Where does one foundational service failure cascade? Implement bulkheads between service layers, add timeout and retry budgets at each layer.</p></li><li><p><strong>Test when recovery and failure happen simultaneously.</strong> Most chaos engineering tests individual component failures or clean recovery scenarios. The AWS outage became catastrophic because recovery systems continued to run while failures persisted. Test what happens when automated cleanup runs while delayed operations are still in flight.</p></li><li><p><strong>Rethink what multi-region actually means.</strong> AWS disabled DNS automation globally after a failure in us-east-1, proving the bug existed everywhere. Ensure control planes are truly independent within each region, without hidden dependencies on a primary region. Test complete region isolation, including management operations. </p></li></ul><h3>What can we conclude from this</h3><p>The uncomfortable truth: even with world-class talent, formal verification methods, extensive chaos engineering, and decades of operational experience, distributed systems remain fundamentally hard. The complexity of hyperscale creates emergent failure modes that are nearly impossible to predict or fully test.</p><p>The question isn&#8217;t &#8220;could this happen to us?&#8221; The question is, when it happens to you, will you survive it? The next outage is already brewing somewhere in your stack. Your job is to ensure you&#8217;ve designed enough redundancy, eliminated enough tight coupling, and built enough circuit breakers so that when a latent race condition triggers, your systems degrade gracefully.</p><h2>2. <strong>How a Null pointer at Google Cloud crashed the Internet</strong></h2><p>On&nbsp;<a href="https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW">June 12, 2025, at 10:45 AM PD</a>T, a policy change with blank fields was entered into&nbsp;<a href="https://cloud.google.com/spanner">Google&#8217;s Spanner database</a>&nbsp;and replicated globally within seconds. <strong>Service Control</strong>, the gatekeeper for every Google Cloud API request, processed this corrupted data, encountered a&nbsp;<strong>null pointer exception</strong>, and crashed. Within minutes, Spotify, Discord, Gmail, Drive, Vertex AI, and hundreds of other services went down. Recovery took seven hours.</p><p>A missing null check caused 50+ services across 40+ regions to crash. </p><blockquote><p><a href="https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW">The full Google report can be read here.</a></p></blockquote><h3>Service Control - Google Cloud&#8217;s single point of failure</h3><p>Every API call to Google Cloud passes through <strong>Service Control</strong>. Provisioning a VM, querying BigQuery, uploading to Cloud Storage, etc. Service Control validates authorization, enforces quotas, checks policies, and logs audits. This centralized architecture creates efficiency but also a critical vulnerability: <strong>when Service Control fails, Google Cloud fails </strong>(single point of failure).</p><p>The system runs as a distributed control plane with regional instances sharing policy metadata through global Spanner replication. Policy updates propagate worldwide within seconds. Under normal conditions, this provides consistent authorization decisions with minimal latency. During this outage, it distributed failure at the speed of light.</p><p>Service Control&#8217;s responsibilities, quota enforcement, policy validation, audit logging, and usage metering make it essential for everything. Google Workspace products depend on it. Third-party apps depend on it. Google&#8217;s own services depend on it. Distributed systems engineers call this &#8220;fate-sharing&#8221; architecture. Hundreds of services are tied to the health of a single component.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zd0p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zd0p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 424w, https://substackcdn.com/image/fetch/$s_!Zd0p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 848w, https://substackcdn.com/image/fetch/$s_!Zd0p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 1272w, https://substackcdn.com/image/fetch/$s_!Zd0p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zd0p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png" width="753" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:753,&quot;resizeWidth&quot;:null,&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_!Zd0p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 424w, https://substackcdn.com/image/fetch/$s_!Zd0p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 848w, https://substackcdn.com/image/fetch/$s_!Zd0p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 1272w, https://substackcdn.com/image/fetch/$s_!Zd0p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b51211-79b5-4e6a-9502-0ffc52fa1848_753x702.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Google Service Control</figcaption></figure></div><h3>The hidden bug</h3><p>On May 29, Google deployed new quota policy checking code to Service Control. The code contained <strong><a href="https://en.wikipedia.org/wiki/Null_pointer">a null-pointer vulnerability</a></strong>&nbsp;in a path that was&nbsp;never exercised during testing. No feature flag protected it, no mechanism to disable the logic without redeploying a new binary.</p><p>The bug was simple. The new code failed to validate policy fields before processing them: </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nSVK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nSVK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 424w, https://substackcdn.com/image/fetch/$s_!nSVK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 848w, https://substackcdn.com/image/fetch/$s_!nSVK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 1272w, https://substackcdn.com/image/fetch/$s_!nSVK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nSVK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png" width="522" height="98.95054945054945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:276,&quot;width&quot;:1456,&quot;resizeWidth&quot;:522,&quot;bytes&quot;:81987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/176989738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.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_!nSVK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 424w, https://substackcdn.com/image/fetch/$s_!nSVK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 848w, https://substackcdn.com/image/fetch/$s_!nSVK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 1272w, https://substackcdn.com/image/fetch/$s_!nSVK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc64bddda-9c80-42f0-a094-bfe61cf57543_1773x336.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p> instead of </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MsS7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MsS7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 424w, https://substackcdn.com/image/fetch/$s_!MsS7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 848w, https://substackcdn.com/image/fetch/$s_!MsS7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 1272w, https://substackcdn.com/image/fetch/$s_!MsS7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MsS7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png" width="1456" height="145" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8981b294-6521-4128-b011-664f32f0bf33_2388x237.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:145,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60195,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/176989738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.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_!MsS7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 424w, https://substackcdn.com/image/fetch/$s_!MsS7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 848w, https://substackcdn.com/image/fetch/$s_!MsS7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 1272w, https://substackcdn.com/image/fetch/$s_!MsS7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8981b294-6521-4128-b011-664f32f0bf33_2388x237.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Encountering blank values triggered an unhandled exception that crashed the entire Service Control process.</p><p>The <strong>bug remained dormant for 14 days</strong>&nbsp;because the policy structure that would have triggered it hadn&#8217;t appeared in testing or production. The regional rollout gave false confidence; the code was successfully deployed everywhere because it wasn&#8217;t being used. </p><p>It is interesting that static analysis missed it, but also code reviews and testing.</p><h3>When speed becomes a problem</h3><p><a href="https://cloud.google.com/spanner">Spanner</a> replicates data globally within seconds for strong consistency. This normally ensures authorization decisions remain coherent worldwide. During this outage, it became the mechanism for distributing failure at the speed of light.</p><p>The corrupted policy data entered Spanner and reached every region before engineers could intervene. No validation checkpoints existed before global distribution, no schema validation, and no content checks. </p><p>The system prioritized consistency and speed over safety, assuming data entering the pipeline would always be valid. This created what ThousandEyes called an &#8220;<strong><a href="https://www.thousandeyes.com/blog/google-cloud-outage-analysis-june-12-2025">unintentional failure vector</a></strong>&#8221;, a resilience feature that became a pathway for amplifying disruption.</p><p>The diagram below shows why instant global replication became a failure amplifier. Note that the same consistency mechanism that makes Google Cloud reliable under normal conditions guaranteed that a single bad data commit would corrupt every region simultaneously.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CMMI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CMMI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 424w, https://substackcdn.com/image/fetch/$s_!CMMI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 848w, https://substackcdn.com/image/fetch/$s_!CMMI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 1272w, https://substackcdn.com/image/fetch/$s_!CMMI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CMMI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png" width="1258" height="639" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:639,&quot;width&quot;:1258,&quot;resizeWidth&quot;:null,&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_!CMMI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 424w, https://substackcdn.com/image/fetch/$s_!CMMI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 848w, https://substackcdn.com/image/fetch/$s_!CMMI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 1272w, https://substackcdn.com/image/fetch/$s_!CMMI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6abb549b-5118-4f07-a483-fc4d0dd9217a_1258x639.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Spanner replication</figcaption></figure></div><h3>The error signature</h3><p><a href="https://www.thousandeyes.com/blog/google-cloud-outage-analysis-june-12-2025">ThousandEyes monitoring </a>revealed that different services and regions experienced different error types, and the same request could produce different errors in rapid succession.</p><p>HTTP 401 Unauthorized hit Spotify hardest; <strong>authentication succeeded, but authorization failed because corrupted policy data read as &#8220;no permissions.&#8221;</strong> HTTP 403 Forbidden meant Service Control misinterpreted blank fields as explicit denials. HTTP 500 Internal Server Error indicated mid-authorization crashes. HTTP 503 Service Unavailable was caused by a complete system overload due to crash loops. Timeouts meant instances were completely unresponsive.</p><p>The most diagnostic pattern was <strong>error cycling</strong>. Identical requests returned timeouts, then 403s, then 500s, then 401s, with no pattern. This occurred when load balancers distributed requests across Service Control instances that failed independently, each in a different state. The randomness proved this was a distributed authorization problem, not an infrastructure failure.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VaPE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VaPE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 424w, https://substackcdn.com/image/fetch/$s_!VaPE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 848w, https://substackcdn.com/image/fetch/$s_!VaPE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 1272w, https://substackcdn.com/image/fetch/$s_!VaPE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VaPE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png" width="1000" height="526" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:526,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107365,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/176989738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.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_!VaPE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 424w, https://substackcdn.com/image/fetch/$s_!VaPE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 848w, https://substackcdn.com/image/fetch/$s_!VaPE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 1272w, https://substackcdn.com/image/fetch/$s_!VaPE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10aee367-6d2d-4226-80e1-4c35bfe3db8b_1000x526.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Error response cycling across regions for Spotify during the Google Cloud outage (source: <a href="https://www.thousandeyes.com/blog/google-cloud-outage-analysis-june-12-2025">ThousandEyes</a>)</figcaption></figure></div><h3>The cascading impact</h3><p>More than 50 Google Cloud services failed across 40+ regions. Google Workspace products went down. Hundreds of third-party applications stopped working.</p><p><strong>Core infrastructure services failed immediately</strong>; IAM couldn&#8217;t authorize operations; Cloud Storage denied API access; and Compute Engine&#8217;s management plane became unavailable. Running VMs continued because they didn&#8217;t need fresh API calls, but nothing new could be created.</p><p>Data services saw comprehensive failures. BigQuery couldn&#8217;t authorize dataset access. Cloud SQL connections failed. Firestore operations stopped. These failures halted analytics pipelines and prevented applications from reaching their databases.</p><p>Vertex AI was completely<strong>&nbsp;halted for over six hours due to complex dependencies. </strong>Developer tools and serverless platforms failed, Cloud Run deployments, Cloud Functions execution, and App Engine access all stopped. These failures hit hundreds of millions of users.</p><p>Spotify reported 46,000+ outages, with HTTP 401 errors consistently returned. Discord went down, Shopify degraded, Snapchat couldn&#8217;t authenticate, and GitLab CI/CD pipelines stopped. The downstream impact revealed the deep dependency chains in modern cloud architecture.</p><p>This was fundamentally an authorization failure, not an authentication failure. Users&#8217; identities verified successfully. Corrupted policy data prevented systems from determining what authenticated users could do.</p><h3>What went wrong</h3><p>Here are some critical failures:</p><ul><li><p><strong>No feature flag.</strong> The new quota-checking logic was deployed actively across all regions with no gradual enablement, no canary testing, and no ability to disable it without emergency redeployment. A feature flag could have enabled it for internal projects first, then gradually increased the canary percentages with monitoring. </p></li><li><p><strong>No null check.</strong> The bug was trivial, a missing null check that any programmer could write in seconds. But the consequences were catastrophic because the code assumed data would always be valid. </p></li><li><p><strong>No replication validation.</strong> Spanner&#8217;s instantaneous replication had no validation checkpoints. Metadata updates need schema validation, automated smoke tests in canary regions, health checks between propagation stages, and rollback mechanisms. Consistency doesn&#8217;t require instant propagation. A staged rollout over minutes, with validation gates, reduces the blast radius.</p></li><li><p><strong>No graceful degradation.</strong> Service Control crashed instead of degrading when it encountered unexpected data. Resilient design would log warnings, fall back to previous known-good policy versions, or implement &#8220;fail-open&#8221; mode. Circuit breakers could have detected repeated failures and prevented the processing of corrupted data.</p></li><li><p><strong>No randomized backoff.</strong> The us-central1 &#8220;herd effect&#8221; showed what happens when thousands of instances restart simultaneously. Exponential backoff with jitter is standard: delay = base_delay * 2^attempt + random(0, jitter). This prevents thundering herds and distributes the load during recovery. Its absence turned recovery from minutes into hours.</p></li></ul><h3>The lesson</h3><p>Distributed systems break globally in seconds but take hours to repair. Breaking is passive; failures cascade automatically. Recovery is active; it requires human intervention, careful coordination, staged rollouts, monitoring at each step, and defensive measures to prevent recovery from causing secondary failures.</p><p>The concentration of critical functions in Service Control created a single point of failure despite massive investment in redundancy.<strong> Horizontal scaling means nothing if all instances fail simultaneously from a corrupted global state.</strong> True resilience requires diversity, different systems with different dependencies, different code paths, and different failure modes.</p><p>For software engineers, this outage reinforces the basic principles, null checks, error handling, feature flags, and comprehensive testing, which are not optional. The most sophisticated distributed database, the largest cloud infrastructure, and decades of collective engineering experience couldn&#8217;t prevent catastrophic failure from a missing null check.</p><p><strong>Reliability is built on layers of defensive practices, each simple in itself but essential when combined. </strong>Skip any one of them, and a minor bug becomes a global disaster.</p><h2>3. A single deployment that made the whole world stop</h2><p>On July 19, 2024, at 4 AM, our customers started reporting errors. We checked Azure, and SQL databases weren&#8217;t responding. The status page showed Central US was down across all three availability zones. Then we realized: this wasn&#8217;t just Azure.</p><p>8.5 million Windows machines worldwide were stuck in boot loops. <a href="https://edition.cnn.com/2024/07/18/business/frontier-airlines-microsoft-outage/index.html">Airlines grounded flights</a>. Hospitals canceled surgeries, and emergency services went offline. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XtgF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XtgF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XtgF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XtgF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XtgF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XtgF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg" width="1200" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:186941,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/176989738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.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_!XtgF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XtgF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XtgF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XtgF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876ab269-7611-474e-b990-9063b60b0080_1200x900.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">CrowdStrike BSOD at LaGuardia airport, New York (19 July 2024)</figcaption></figure></div><h3><strong>What actually happened</strong></h3><p><a href="https://www.crowdstrike.com/en-us/products/trials/try-falcon/">CrowdStrike&#8217;s Falcon Sensor</a> runs in kernel mode. That means it operates at the same privilege level as device drivers, below the operating system, with direct hardware access. This positioning lets it detect threats that normal applications can&#8217;t see. But kernel code has no safety net. One error crashes the entire system.</p><p>Windows requires certification for kernel drivers, but that process takes weeks. CrowdStrike built a workaround: <strong>Channel Files that update threat detection logic without touching the driver itself</strong>. Fast updates, no recertification needed. Channel File 291 was supposed to improve behavioral protection.</p><p>Instead,<strong> it tried to read from a NULL memory pointer.</strong></p><p>In C# or Java, this throws an exception that the runtime catches. In C++, running in kernel mode, it triggers an immediate system crash. The machine reboots, loads the driver, hits the same error, and crashes again. Infinite loop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eRiE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eRiE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 424w, https://substackcdn.com/image/fetch/$s_!eRiE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 848w, https://substackcdn.com/image/fetch/$s_!eRiE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 1272w, https://substackcdn.com/image/fetch/$s_!eRiE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eRiE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png" width="582" height="357" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:357,&quot;width&quot;:582,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51190,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/176989738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.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_!eRiE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 424w, https://substackcdn.com/image/fetch/$s_!eRiE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 848w, https://substackcdn.com/image/fetch/$s_!eRiE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 1272w, https://substackcdn.com/image/fetch/$s_!eRiE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3864bd18-5b8d-4266-8486-0f87ad81412e_582x357.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">CrowdStrike CEO <a href="https://x.com/george_kurtz/status/1814235001745027317?s=61&amp;t=ZwQ3qcmNUcYGEhKedfSy2g">statement on X</a></figcaption></figure></div><blockquote><p><a href="https://www.crowdstrike.com/en-us/blog/falcon-update-for-windows-hosts-technical-details/">The full CrowdStrike report can be read here.</a></p></blockquote><h3><strong>The Timeline</strong></h3><ol><li><p>04:09 UTC: CrowdStrike deploys the update globally. Within minutes, machines start crashing. Because Falcon is a boot-start driver, it loads before Windows; affected machines can&#8217;t boot into the OS to receive a fix.</p></li><li><p>05:27 UTC: CrowdStrike identifies the problem. 78 minutes after deployment.</p></li><li><p>06:27 UTC: They roll back the update.</p></li></ol><p>But the damage is done. IT teams have to manually fix each machine: boot into Safe Mode, navigate to <code>C:\Windows\System32\drivers\CrowdStrike</code>, delete the file matching <code>C-00000291*.sys</code>, reboot. For organizations with thousands of machines, this takes days.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O2rt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O2rt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 424w, https://substackcdn.com/image/fetch/$s_!O2rt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 848w, https://substackcdn.com/image/fetch/$s_!O2rt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 1272w, https://substackcdn.com/image/fetch/$s_!O2rt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O2rt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png" width="769" height="333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:333,&quot;width&quot;:769,&quot;resizeWidth&quot;:null,&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_!O2rt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 424w, https://substackcdn.com/image/fetch/$s_!O2rt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 848w, https://substackcdn.com/image/fetch/$s_!O2rt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 1272w, https://substackcdn.com/image/fetch/$s_!O2rt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a73611-aa41-4a9e-b2f0-e9515dc40467_769x333.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Boot Loop Cycle</figcaption></figure></div><h3><strong>The bigger problems</strong></h3><p>This exposed three systemic issues.</p><ol><li><p>First, <strong>the kernel-mode trap</strong>. Security software needs deep system access to catch sophisticated threats. But that access creates fragility. Microsoft pushes vendors toward user-space solutions, but effective endpoint protection still requires kernel privileges. The industry hasn&#8217;t solved this tension.</p></li><li><p>Second, <strong>the certification bypass</strong>. Windows driver certification exists to prevent exactly this kind of failure. But it&#8217;s too slow for security software that needs daily updates. CrowdStrike&#8217;s Channel Files were a pragmatic workaround that backfired.</p></li><li><p>Third, <strong>the deployment model</strong>. CrowdStrike pushed this update to millions of machines simultaneously, without a gradual rollout. In cloud infrastructure, this would be unthinkable. But endpoint security treats every machine as critical; you can&#8217;t leave some exposed while testing. This creates pressure to deploy fast and broadly.</p></li></ol><h3><strong>What can we learn from this</strong></h3><ul><li><p><strong>Test configuration like code.</strong> CrowdStrike&#8217;s error wasn&#8217;t in their driver; it was in a configuration file. Many teams skip rigorous testing for config because it seems less risky. Wrong. Treat config as code. Run it through the same validation, testing, and review. Write automated tests that catch type mismatches and NULL references.</p></li><li><p><strong>Use staged rollouts everywhere.</strong> Deploy to 1% of machines first. Monitor for crashes. CrowdStrike could have caught this in minutes with a proper canary. The delay would have been hours. The alternative was a global outage.</p></li><li><p><strong>Build an automatic rollback.</strong> When deployment causes crashes, the system should detect the pattern and revert without human intervention. CrowdStrike identified the problem in 78 minutes, but manual intervention was still required on millions of machines.</p></li><li><p><strong>Avoid unmanaged languages when you can</strong>. C and C++ give you control but require perfect discipline. A single NULL check would have prevented this incident. Managed languages like Rust, C#, or Java make entire classes of errors impossible. If you must use C++, run static analyzers that catch NULL dereferences. Use address sanitizers in testing. Require multiple reviews for any pointer operations.</p></li><li><p><strong>Design for recovery.</strong> If your software can brick a system so thoroughly that someone needs physical access to fix it, you&#8217;ve created a support nightmare. Build remote recovery mechanisms. Implement version pinning. Create fallback modes that disable problematic components without taking down the entire system.</p></li></ul><h3><strong>The reality</strong></h3><p>CrowdStrike fixed its code, <strong>but the architecture that enabled the failure remains. </strong>Kernel-mode drivers will continue to cause system-wide crashes. Fast-update mechanisms will continue to bypass safety checks. And somewhere, another NULL pointer is waiting.</p><p>This wasn&#8217;t incompetence. CrowdStrike employs talented engineers.<strong> It was the result of competing pressures: ship fast, maintain security, and work within architectural constraints that make testing hard.</strong> Those pressures haven&#8217;t changed.</p><p>You can&#8217;t eliminate all risks. But you can reduce them. Test everything, including config. Deploy gradually. Use languages that prevent common errors. And when you&#8217;re writing code that touches millions of systems, remember:<strong> the cost of being wrong is measured in billions.</strong></p><blockquote><p>Check the <strong><a href="https://www.thevoid.community/database">VOID Database of many other incident reports</a></strong>.</p></blockquote><h2>Bonus: When Azure&#8217;s safety checks failed</h2><p>A single configuration mistake took down Azure Front Door for over 8 hours and dragged down dozens of Microsoft services with it.</p><p>Yesterday, on October 29, 2025, an invalid config change slipped past Azure&#8217;s safety checks and corrupted AFD nodes globally. As nodes failed, traffic shifted to healthy ones, but that overloaded them too. The cascade hit everything from Azure Portal to Entra ID to Databricks.</p><p><strong>15:45 UTC</strong> &#8211; Impact begins. AFD nodes start failing.</p><p><strong>16:04 UTC</strong> &#8211; Monitoring alerts fire. Investigation starts.</p><p><strong>17:30 UTC</strong> &#8211; Microsoft blocks all new config changes.</p><p><strong>17:40 UTC</strong> &#8211; Rollback to last known good config begins.</p><p><strong>18:45 UTC</strong> &#8211; Manual node recovery starts. Traffic gradually reroutes.</p><p><strong>00:05 UTC</strong> &#8211; Incident mitigated. 8 hours, 20 minutes total.</p><p>We saw that <a href="https://x.com/AlaskaAirNews/status/1983583903064715468">Alaska Airlines and Hawaiian Airlines</a> said they were currently experiencing disruptions to key systems, including our websites, due to Azure. If passengers are unable to check in online, the airlines encourage them to visit an agent at the airport to obtain their boarding pass.</p><p>The root cause wasn&#8217;t human error. A <strong>software defect let the bad config bypass validation entirely.</strong> Microsoft caught it within 20 minutes, blocked all new changes, and started rolling back. But recovery took hours because they had to reload configs across thousands of nodes without triggering another overload.</p><p>The incident exposed a gap in Azure&#8217;s deployment pipeline. <strong>Their guardrails were in place, but didn&#8217;t fire.</strong> Microsoft says they&#8217;ve added validation layers and rollback controls, but this is the kind of failure that shouldn&#8217;t happen at cloud scale.</p><p>Customer config changes are still blocked as of this report. If you&#8217;re running production workloads on AFD, that&#8217;s worth noting.</p><p>Here is <strong><a href="https://azure.status.microsoft/en-us/status/history/">the preliminary report</a></strong>, a full one to follow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hUWM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hUWM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hUWM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hUWM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hUWM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hUWM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg" width="1456" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!hUWM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hUWM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hUWM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hUWM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0649c1d2-79f4-49a2-9524-b1135dde9782_1497x563.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Dashboard at the time of the outage</figcaption></figure></div><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[What is a Principal Engineer at Microsoft?]]></title><description><![CDATA[With Dejan Dundjerski, Principal Software Engineer.]]></description><link>https://newsletter.techworld-with-milan.com/p/what-is-a-principal-engineer-at-microsoft</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/what-is-a-principal-engineer-at-microsoft</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 16 Oct 2025 15:02:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/60b265b9-6548-46aa-a8d1-3b2fb3517426_1456x989.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The <a href="https://www.microsoft.com/en-rs/mdcs">Microsoft Development Center in Belgrade</a> (MDCS) recently marked its 20th anniversary. Two decades of building systems that run at a global scale, from Azure SQL to AI-powered troubleshooting platforms.</p><p><strong><a href="https://rs.linkedin.com/in/dejandundjerski">Dejan Dunjerski</a></strong>&nbsp;is one of those who built the MDCS into what it is today. He&#8217;s a Principal Software Engineer who successfully replatformed Azure SQL Managed Instance without customers noticing, while scaling the service by a factor of 10. </p><p>Before that, he created an AI expert system for troubleshooting millions of databases, back when no one in academia had researched the problem.</p><p>This interview breaks down how he thinks about problems, makes architectural decisions, and what actually separates senior engineers from principal ones.</p><p>In particular, we will talk about:</p><ul><li><p><strong>Who is Dejan.</strong> From building his first program in high school to selling electronic logbooks, the path wasn&#8217;t linear. </p></li><li><p><strong>What is his career journey.</strong> Three pivotal projects at Microsoft: building the first open-source database in Azure SQL, creating an AI troubleshooting system that had not been researched, and replatforming a live service with 10 times the growth. </p></li><li><p><strong>What were the biggest challenges in advancing to Principal Engineer.</strong> POCs, research in uncharted territory, and managing dependencies that don&#8217;t respect your timeline. The technical challenges that force you to negotiate, influence, and solve problems no one else figured out.</p></li><li><p><strong>What separates a senior from a principal engineer.</strong> Seniors identify problems and propose solutions. Principals implement them and get others to join. </p></li><li><p><strong>How to balance technical depth and breadth.</strong> Know the details of what you own. Windows codebase analysis, log mining, and dashboard patterns that help you focus. Breadth matters, but depth in your domain prevents surprises.</p></li><li><p><strong>How to make proper architectural decisions.</strong> Start with the simplest solution, then figure out what needs to change and where. Workarounds compound. </p></li><li><p><strong>What early challenges shape system design.</strong> Building an OS from scratch at the university, designing for 8 billion users before having any, and implementing open-source databases in Azure SQL. Each one forced a different kind of thinking.</p></li><li><p><strong>How Dejan's problem-solving evolved over time. </strong>Still chasing simplicity and making changes at the right level. The difference now: planning beyond sprints and avoiding short-term workarounds when dependencies slip. Sometimes, helping the dependency team delivers faster than waiting.</p></li><li><p><strong>How does he manage productivity with multiple responsibilities.</strong> Don&#8217;t procrastinate on 30-second tasks. Block time for deep focus. </p></li><li><p><strong>How does he stay current with AI.</strong> Understand the essence of new technology, then use it for its intended purpose. LLMs are a library you can query; no need to read every book. </p></li></ul><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://solutions.cerbos.dev/zero-trust-for-ai-securing-mcp-servers?utm_campaign=tech_world_milan_oct_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=">Zero Trust for AI: Securing MCP Servers eBook (Sponsored)</a></h2><p><em>MCP servers are becoming critical components in AI architectures, but they are creating a fundamental new risk that traditional security controls weren&#8217;t designed to address.</em></p><p><em>Left unsecured, they&#8217;re a centralized point of failure for data governance.</em></p><p><em>This eBook will show you how to secure MCP servers properly, using externalized, fine-grained authorization. Inside the ebook, you will find:</em></p><ul><li><p><em>How MCP servers fit into your broader risk management and compliance framework</em></p></li><li><p><em>Why MCP servers break the traditional chain of identity in enterprise systems</em></p></li><li><p><em>How role-based access control fails in dynamic AI environments</em></p></li><li><p><em>Real incidents from Asana and Supabase that demonstrate these risks</em></p></li><li><p><em>The externalized authorization architecture (PEP/PDP) that enables Zero Trust for AI systems</em></p></li></ul><p><em>Get the practical blueprint to secure MCP servers before they become your biggest liability.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://solutions.cerbos.dev/zero-trust-for-ai-securing-mcp-servers?utm_campaign=tech_world_milan_oct_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ioXr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 424w, https://substackcdn.com/image/fetch/$s_!ioXr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 848w, https://substackcdn.com/image/fetch/$s_!ioXr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 1272w, https://substackcdn.com/image/fetch/$s_!ioXr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ioXr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2664306,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://solutions.cerbos.dev/zero-trust-for-ai-securing-mcp-servers?utm_campaign=tech_world_milan_oct_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/167931896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.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_!ioXr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 424w, https://substackcdn.com/image/fetch/$s_!ioXr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 848w, https://substackcdn.com/image/fetch/$s_!ioXr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 1272w, https://substackcdn.com/image/fetch/$s_!ioXr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb410b2-e4ba-448c-9494-4cc3711f5bbc_3600x1881.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://solutions.cerbos.dev/zero-trust-for-ai-securing-mcp-servers?utm_campaign=tech_world_milan_oct_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term=&quot;,&quot;text&quot;:&quot;Download free eBook&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://solutions.cerbos.dev/zero-trust-for-ai-securing-mcp-servers?utm_campaign=tech_world_milan_oct_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=&amp;utm_term="><span>Download free eBook</span></a></p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. Who is Dejan?</h2><p>Who am I? That is a question I also ask myself from time to time &#128512;. I was born in Belgrade in 1987 as the third child in my family (I have two older sisters). I had the privilege to learn a lot from my family (sisters, parents, and grandparents). </p><p>Being surrounded by engineers and professors, and having my sisters' patience to take their little brother to see the world, was essential to who I am today.</p><p>In the meantime, I have completed my studies at <a href="https://www.mg.edu.rs/">Mathematical Grammar School</a> and earned a PhD in the <a href="https://www.etf.bg.ac.rs/en">School of Electrical Engineering</a>. Very keen on sailing and skiing, and passionate about photography.</p><p>Most recently, I have become a husband and father, so in all the free time I can get, I am trying to pass the family tradition and knowledge to the young ones :)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ilDl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ilDl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 424w, https://substackcdn.com/image/fetch/$s_!ilDl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 848w, https://substackcdn.com/image/fetch/$s_!ilDl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 1272w, https://substackcdn.com/image/fetch/$s_!ilDl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ilDl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png" width="1200" height="655" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:655,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:400428,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/167931896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.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_!ilDl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 424w, https://substackcdn.com/image/fetch/$s_!ilDl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 848w, https://substackcdn.com/image/fetch/$s_!ilDl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 1272w, https://substackcdn.com/image/fetch/$s_!ilDl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993fa4b6-6688-4652-9641-a3711abf9fa1_1200x655.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong><a href="https://www.linkedin.com/in/dejandundjerski">Dejan Dundjerski</a></strong> - Principal Software Engineer @ Microsoft</figcaption></figure></div><h2>2. What is your career journey?</h2><p>I built the first program in the 2nd grade of high school. I have also successfully sold electronic logbooks for airplanes to several companies on a few occasions.</p><p>From that day to this, I have been <strong>focused on problem-solving and understanding the essence of the problem</strong>.</p><p>During my tenure at Microsoft, I have consistently been driven by a&nbsp;<strong>hunger for knowledge and a desire to accomplish tasks effectively</strong>. When you are done with one thing, there will be another from which you can learn even more.</p><p>I must admit that I have had a very interesting ride within MSFT so far. From the early days of the Azure SQL team in Serbia, where I had the opportunity to build the proof of concept for the first open-source database in Azure SQL, to creating an AI-powered expert system for troubleshooting millions of databases, I have been involved in significant projects. </p><p>Over the last five years, I have been <strong>responsible for the entire <a href="https://azure.microsoft.com/en-us/products/azure-sql/managed-instance">Azure SQL Managed Instance</a> platform</strong>, where we successfully replatformed the compute, networking, and storage layers without customers noticing the change, while achieving a 10x increase in service growth in parallel. Tons and tons of learning.</p><p>The role of Principal Engineer is just a title. What is more important is the mindset. <strong>Focusing on the problem and its essence, trying to find creative solutions, and having a 'get-the-stuff-done' mentality</strong> is what has brought me to where I am now.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yGlB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yGlB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 424w, https://substackcdn.com/image/fetch/$s_!yGlB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 848w, https://substackcdn.com/image/fetch/$s_!yGlB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!yGlB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yGlB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png" width="978" height="1198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1198,&quot;width&quot;:978,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:183941,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/167931896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.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_!yGlB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 424w, https://substackcdn.com/image/fetch/$s_!yGlB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 848w, https://substackcdn.com/image/fetch/$s_!yGlB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!yGlB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F050687ba-a086-469a-9d59-2a2d12d54511_978x1198.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Microsoft Engineering Career Ladder</figcaption></figure></div><h2>3. What were some of the biggest challenges you faced while advancing to a Principal Engineer position?</h2><p>I had three big challenges:</p><ol><li><p>First, I had the opportunity to build the POC in 2015. of the <a href="https://azure.microsoft.com/en-us/products/mysql">Azure MySQL service</a> on the Azure SQL platform. In two months, <strong>I have gained a comprehensive understanding of the entire <a href="https://azure.microsoft.com/en-us/products/azure-sql/database">Azure SQL</a> architecture</strong>, from the connectivity, provisioning, and data plane perspectives.</p></li><li><p>Second, building an <strong>AI expert system for DB troubleshooting that, at the time, no one in the world (even in academia) had researched</strong>. This was challenging from the perspective of what we should do, and the usual approach of building a small POC to achieve value didn&#8217;t work well. For this one, we had to conduct extensive research in both related and unrelated fields to make progress.</p></li><li><p>Third, again, the non-technical challenge is running a generally available service, performing a replatforming effort with numerous dependencies, where, for each and every dependency, you cannot rely on the timeline that partner teams provide to you. Here <strong>I had to learn how to negotiate, ask for support, go with the flow</strong>, etc :)</p></li></ol><p>Whether these three learnings brought me to the Principal level position, I don&#8217;t know, but these were the challenges that, if I hadn&#8217;t solved, I wouldn&#8217;t be where I am today.</p><h2>4. What&#8217;s the most important difference between senior and principal engineers?</h2><p>It is the scope and the desire to lead and change the stuff. When you encounter a problem, the mindset of a senior engineer is to share the problem and propose a solution, while <strong>a person with a principal-level mindset will identify the problem, devise solutions, and attempt to implement one</strong>. </p><p>As part of this process, the leading aspect is evident in practice when the person asks others to join the party and starts influencing the larger group of people (more than 10) in a formal or informal manner.</p><p>Additionally, <strong>a Principal Engineer must possess strong communication and presentation skills.</strong> Usually, people have full context in their minds; however, very few are good at transferring that context to others. </p><p>For success and advancement in a career, understanding the other side and finding ways to explain and present your ideas to others so that they can understand you is essential.</p><p>So, for the principal level is important:</p><ol><li><p><strong>Focus on the tech and building the right pieces at the right level of the tech stack,</strong></p></li><li><p><strong>Focus on the essence of the problem and not on the form,</strong></p></li><li><p><strong>Don&#8217;t give up easily</strong> </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_!9P7-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9P7-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 424w, https://substackcdn.com/image/fetch/$s_!9P7-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 848w, https://substackcdn.com/image/fetch/$s_!9P7-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 1272w, https://substackcdn.com/image/fetch/$s_!9P7-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9P7-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png" width="585" height="668.9732142857143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1665,&quot;width&quot;:1456,&quot;resizeWidth&quot;:585,&quot;bytes&quot;:5050725,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/167931896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.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_!9P7-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 424w, https://substackcdn.com/image/fetch/$s_!9P7-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 848w, https://substackcdn.com/image/fetch/$s_!9P7-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 1272w, https://substackcdn.com/image/fetch/$s_!9P7-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b2b51-4b46-43d5-bdc9-6d524e85a5c3_1652x1889.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Microsoft Development Center in Belgrade</figcaption></figure></div><h2>5. How should Principal Engineers balance technical depth and breadth?</h2><p>Both breadth and depth are important; it certainly depends on the project you are working on. There is no silver bullet. However, <strong>what is very important is that for the area you own or are responsible for, you need to be aware of all those small details</strong>. The devil is usually in the details, and those details will bite you, so better for you to know about them proactively.</p><p>To illustrate, on one of the projects, before making a decision, I examined the Windows codebase and determined how Windows containers work. This understanding helped me influence my team and other teams.</p><p>When I realized that this approach could speed us up and that it worked, I continued using it every time I was unsure about something.</p><p>Other useful practices include <strong>data science analysis of the logs</strong>. Alternatively, when discussing the service, dashboards provide a broad view, helping you focus on and investigate the depth of the most important aspects.</p><h2>6. How do you make architectural decisions in complex projects?</h2><p><strong>Simplicity is the king!</strong> I start by searching for the simplest possible solution and then examining what we need to change and at what level to achieve it.</p><p>That approach helps avoid the usual pitfall where we start from what we have now and how we can slightly modify it, and then, after the third iteration, you end up with a 10 times more complex code/architecture/system that no one knows how to deal with. </p><p>Instead, <strong>it is better to understand what the problem is, where the best possible place to solve it is</strong>, and why it cannot be solved immediately (if it cannot be solved there).</p><p>Although it may seem easier and faster to create a workaround, with a bit of extra effort, making a change in the right place or resolving the blocker that prevented you from making a change will definitely pay off.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZBXg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZBXg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!ZBXg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!ZBXg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBXg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZBXg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0061714-037b-4ab7-a119-47f3871f3027_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Documenting Software Architectures - by Dr Milan Milanovi&#263;&quot;,&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="Documenting Software Architectures - by Dr Milan Milanovi&#263;" title="Documenting Software Architectures - by Dr Milan Milanovi&#263;" srcset="https://substackcdn.com/image/fetch/$s_!ZBXg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!ZBXg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!ZBXg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBXg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0061714-037b-4ab7-a119-47f3871f3027_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Software Architectures</figcaption></figure></div><h2>7. What early-career technical challenge shaped your system-design approach?</h2><p>There are a few projects that helped me understand the system design and architecture. First of all, at the faculty, we had a class where we had to&nbsp;<a href="http://os.etf.rs/">develop an operating system from scratch</a>, which helped me understand why, on certain occasions,<strong> a sandglass spins while you are doing something with your machine</strong>.</p><p>Then I attempted to build a simple game, imagining that the entire world would play it (8 billion users), and I tried to put the necessary architecture in place.</p><p>As I mentioned, I was one of two individuals tasked with implementing an open-source database in the existing <a href="https://azure.microsoft.com/en-us/products/azure-sql/database">Azure SQL</a> architecture, which motivated me to learn the details down to the lowest level.</p><p>At a later stage,&nbsp;<strong>I read two books on <a href="https://amzn.to/4h5PfbO">System Design Interview</a> and <a href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing">Designing Data-Intensive Applications,</a>&nbsp;which helped me understand that all the knowledge</strong>&nbsp;I had acquired over the years is actually described in those books in a very detailed way.</p><h2>8. How has your technical problem-solving evolved since your senior engineer days?</h2><p>Not that much; I used to strive for simplicity and make changes at the right level. One change that is evident is that <strong>I now make plans for a longer period, rather than just for a single sprint.</strong> </p><p>It is quite often that teams and individuals optimize for the short term and 6-month sprints. On one of the projects, since the dependency was not ready at the time, we opted for a short-term implementation that was more complex. </p><p>Since the dependency was not delivered on time, we ended up with a more complex solution than we would have had if we had accounted for the delay or just planned a longer delivery. </p><p>Hence, <strong>I am avoiding workarounds as much as possible and striving to offer help to the dependency teams and the delivery in their code base</strong>, if that will expedite the end-to-end story.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wmbd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wmbd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wmbd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wmbd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wmbd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wmbd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3811338,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/167931896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.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_!wmbd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wmbd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wmbd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wmbd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21cd690c-f31b-4920-b8fe-0f6dcef4ed3c_4896x3264.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Problem-solving (image: <a href="https://www.freepik.com/">Freepik</a>)</figcaption></figure></div><h2>9. How do you manage your day-to-day productivity, given multiple responsibilities?</h2><p>Do not procrastinate! <strong>Whatever can be done in under 30 seconds, do it immediately</strong>. </p><p>Yes, that can bring a lot of distraction, but then you have to dedicate a certain period of time to focusing on just a few very important topics or decisions that you need to make. I have also tended to spend some time working on things that are important but not critical in terms of time.</p><p>Also, when motivated, <strong>I do not quit that easily</strong>, and I am willing to push things through till the very end. When it comes to practices, <strong>meditation has helped me achieve superb focus on certain things.</strong> </p><p>Sailing, another hobby I truly enjoy, helped me build endurance and taught me that in life, sometimes when there are strong winds, it's best to lower your sails and wait for the storm to pass.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G53E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G53E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G53E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G53E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G53E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G53E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg" width="1200" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&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_!G53E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G53E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G53E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G53E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93197c1b-7ff9-4dbe-8870-deb0d32de716_1200x720.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Working and sailing</figcaption></figure></div><h2>10. How do you stay current with rapid technological advancements, such as AI?</h2><p>Things may be evolving at a rapid pace; however,<strong> a basic set of problems that needs a solution remains. </strong>I tend to understand the essence of the new technology and how it works in practice. Then I am using these new tools for their intended purpose.</p><p>For example, I have been approaching LLMs as one big library that is being read by the models; hence, I do not need to lend the book and read it one by one, but I have a single book that I can ask any type of question I might need. </p><p>On a day-to-day basis, I use it for basic tasks and to remind myself of certain topics in a  more efficient manner.</p><h2>11. Do you have any recommended learning resources to share with us?</h2><p>Here are a few books I can recommend:</p><ul><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing">Designing Data-Intensive Applications</a></strong>, Martin Kleppmann (O&#8217;Reilly, 2017): patterns for reliability, scalability, and consistency.</p></li><li><p><strong><a href="https://amzn.to/4h5PfbO">System Design Interview</a></strong>, Alex Xu (ByteByteGo, 2020): concise system patterns and trade-offs for interviews.</p></li><li><p><strong><a href="https://amzn.to/4mTBAWw">Leadership and Self-Deception</a></strong>. The Arbinger Institute (Berrett-Koehler, 2015)- Mindset shifts for leading engineers.</p></li><li><p><strong><a href="https://amzn.to/4o1cSUQ">The Mom Test</a></strong>, Rob Fitzpatrick (2013): Extracting Honest Signals from Customer Conversations.</p></li><li><p><strong><a href="https://amzn.to/42xtICB">Thinking, Fast and Slow</a></strong>, Daniel Kahneman (FSG, 2011): biases and heuristics that shape decisions.</p></li><li><p><strong><a href="https://amzn.to/4nFBIda">Zero to One</a></strong>, Peter Thiel with Blake Masters (Crown Business, 2014): monopoly design and contrarian bets.</p></li><li><p><strong><a href="https://amzn.to/48fEe5d">Sapiens</a></strong>, Yuval Noah Harari (Harper, 2015): long-view context for products and behavior.</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_!CEAv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CEAv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 424w, https://substackcdn.com/image/fetch/$s_!CEAv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 848w, https://substackcdn.com/image/fetch/$s_!CEAv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 1272w, https://substackcdn.com/image/fetch/$s_!CEAv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CEAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png" width="676" height="624" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1344,&quot;width&quot;:1456,&quot;resizeWidth&quot;:676,&quot;bytes&quot;:3486565,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/167931896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.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_!CEAv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 424w, https://substackcdn.com/image/fetch/$s_!CEAv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 848w, https://substackcdn.com/image/fetch/$s_!CEAv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 1272w, https://substackcdn.com/image/fetch/$s_!CEAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf80f36f-cb15-4a7f-9342-66ed6481ea52_3359x3100.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Book recommendations by <a href="https://rs.linkedin.com/in/dejandundjerski">Dejan Dundjerski</a></figcaption></figure></div><div><hr></div><p><strong>Milan</strong> here again. Thank you, Dejan, for your time and a great overview of the Principal Engineer role at Microsoft.</p><blockquote><p>&#10145;&#65039;<em> Here you can read my full review of the book &#8220;<strong>Designing Data-Intensive Applications</strong>&#8221;.</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;6f18ce46-141d-406e-b668-77373bb75fd0&quot;,&quot;caption&quot;:&quot;After two decades in software engineering, I thought I had a solid understanding of various topics, including NoSQL, Big Data, transactions, sharding, and more.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;What I learned from the book Designing Data-Intensive Applications&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-19T15:02:29.686Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4e86145-fe31-4864-92ac-de925c992903_2836x2993.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:158354418,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:807,&quot;comment_count&quot;:39,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></blockquote><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching an audience of founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Advanced Document Processing using AI]]></title><description><![CDATA[The trucking industry processes millions of rate confirmations daily, critical documents that lock in freight rates between shippers, brokers, and carriers.]]></description><link>https://newsletter.techworld-with-milan.com/p/advancing-document-processing-using-ai</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/advancing-document-processing-using-ai</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 02 Oct 2025 15:02:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3a5dbada-c64b-4ab9-bf04-8fe8fe504a90_1200x1200.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The trucking industry processes millions of rate confirmations daily, critical documents that lock in freight rates between shippers, brokers, and carriers. These documents arrive in numerous formats, ranging from professional PDFs to scanned faxes, each requiring rapid processing to keep freight moving. The manual handling of this volume creates bottlenecks that are difficult to rectify.</p><p><strong><a href="https://www.truckinghub.com/">Trucking Hub</a></strong> tackled the challenge with <strong>DocuSense</strong>&#8482;, our GenAI-driven intelligent document processing platform. In just a few months, we&#8217;ve successfully processed over 100,000 documents with unprecedented accuracy and speed, setting a new standard for document automation in logistics.</p><p>In this article, we will talk particularly about:</p><ol><li><p><strong>The Rate confirmation problem.</strong> Manual processing breaks down when freight volumes explode and document formats vary wildly across thousands of brokers.</p></li><li><p><strong>Understanding the workflow.</strong> Rate confirmations are sent via email attachments, broker portals, fax-to-email systems, and mobile uploads. Each channel creates unique processing challenges, from multiple attachments to poor image quality.</p></li><li><p><strong>Business and technical hurdles.</strong> High manual costs and error-prone data entry drain resources. Technically, we face diverse document formats, including scanned versus digital PDFs, which require different approaches, as well as complex multi-field extraction at scale. Performance demands near real-time processing without sacrificing accuracy.</p></li><li><p><strong>Architecture principles.</strong> We built for accuracy, scalability, and flexibility with a modular pipeline. The system adapts to new document types through configuration changes, not code rewrites. Core design separates ingestion, OCR, AI understanding, and post-processing into independent, scalable components.</p></li><li><p><strong>Azure AI implementation.</strong> Direct OpenAI SDK integration gives us precise control over model interactions and error handling. We enforce structured JSON responses, externalize prompts for rapid iteration, and track performance metrics across the entire pipeline.</p></li><li><p><strong>Production results.</strong> 90% accuracy, 70% faster processing, 2x reduction in manual work. We&#8217;ve processed over 100,000 documents, achieving 25-30% cost savings and seamless scaling to new broker formats.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://www.parlant.io/?utm_source=creators&amp;utm_campaign=milan">Control AI agents with conversation modeling, not prompt engineering (Sponsored)</a></h2><p><em>Most developers attempt to control AI agents by crafting more effective prompts. It doesn&#8217;t scale. Add more rules, and the model forgets earlier ones. Add complexity, and behavior becomes unpredictable.<br><br><strong><a href="https://www.parlant.io/?utm_source=creators&amp;utm_campaign=milan">Parlant</a></strong> takes a different approach: it defines journeys, guidelines, and tools in natural language and dynamically manages context, ensuring your agent knows exactly which rules apply at each conversation point. Think declarative conversation modeling instead of wrestling with prompts. </em></p><p><em>Already running in production for financial services and healthcare.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.parlant.io/?utm_source=creators&amp;utm_campaign=milan" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VRYI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 424w, https://substackcdn.com/image/fetch/$s_!VRYI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 848w, https://substackcdn.com/image/fetch/$s_!VRYI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 1272w, https://substackcdn.com/image/fetch/$s_!VRYI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VRYI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png" width="581" height="504.0175" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1041,&quot;width&quot;:1200,&quot;resizeWidth&quot;:581,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.parlant.io/?utm_source=creators&amp;utm_campaign=milan&quot;,&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_!VRYI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 424w, https://substackcdn.com/image/fetch/$s_!VRYI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 848w, https://substackcdn.com/image/fetch/$s_!VRYI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 1272w, https://substackcdn.com/image/fetch/$s_!VRYI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c4ce2cc-0e41-41c7-ab3c-838d21c4bbed_1200x1041.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.parlant.io/?utm_source=creators&amp;utm_campaign=milan&quot;,&quot;text&quot;:&quot;Build your agent now!&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.parlant.io/?utm_source=creators&amp;utm_campaign=milan"><span>Build your agent now!</span></a></p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. Introduction</h2><p>A <strong>rate confirmation</strong> is a formal document outlining the costs associated with transporting goods that is provided by a carrier to a shipper or their broker. The rate confirmation will include information about the particular goods being transported, the shipment&#8217;s origin and destination, the shipment&#8217;s date range, and the relevant rates. </p><p>Because it clarifies the fees that will be incurred for a shipment, a rate confirmation is crucial. The parties involved in the cargo may be able to avoid miscommunications and disagreements thanks to this document.</p><p>Rate confirmation processing in trucking has <strong>traditionally relied on manual data entry, basic OCR tools, or rigid RPA systems.</strong> While these approaches were effective when document volumes were manageable and formats predictable, today&#8217;s freight market demands a better solution. </p><p>The explosion of digital freight matching, spot market volatility, and the sheer variety of document formats from thousands of brokers and shippers have pushed traditional systems to a breaking point.</p><p>Manual processing isn&#8217;t just slow, it&#8217;s expensive and error-prone. A single misread rate or incorrect pickup time can result in thousands of dollars in detention fees or lost loads. Meanwhile, existing automation tools struggle with the diverse range of formats that trucking companies encounter daily.</p><p><strong>DocuSense</strong>&#8482; emerged from the need for intelligent, adaptable document processing that could handle the chaos of real-world trucking documentation, which is built natively into <strong><a href="https://www.truckinghub.com/">Trucking Hub</a></strong>.</p><h2>2. Rate Confirmation Process</h2><p>A typical workflow begins when a carrier accepts a load from a broker or shipper. The broker sends a rate confirmation detailing pickup/delivery locations, dates, commodity information, and agreed rates. Carriers must review, acknowledge, and often countersign these documents before dispatching trucks.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Igoq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Igoq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 424w, https://substackcdn.com/image/fetch/$s_!Igoq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 848w, https://substackcdn.com/image/fetch/$s_!Igoq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 1272w, https://substackcdn.com/image/fetch/$s_!Igoq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Igoq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png" width="1456" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44358,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.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_!Igoq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 424w, https://substackcdn.com/image/fetch/$s_!Igoq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 848w, https://substackcdn.com/image/fetch/$s_!Igoq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 1272w, https://substackcdn.com/image/fetch/$s_!Igoq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d0a944-5c70-4db7-86b4-d5b7b8857057_1614x310.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Rate confirmation workflow diagram</figcaption></figure></div><p>The complexity multiplies when carriers handle hundreds of loads daily from dozens of different brokers, each using their own document formats and systems. Some send structured PDFs, others use image-based documents, and many still rely on faxed confirmations that arrive as low-quality scans.</p><p>Rate confirmations reach carriers through multiple channels, creating a complex ingestion challenge:</p><ol><li><p><strong>Email attachments</strong>. The majority arrive as PDF attachments to designated email addresses</p></li><li><p><strong>Broker portals</strong>. Direct downloads from TMS (Transportation Management System) integrations</p></li><li><p><strong>Fax-to-email</strong>. Legacy systems still send faxed documents converted to email attachments</p></li><li><p><strong>Mobile uploads</strong>. Drivers photographing and uploading physical documents from the field</p></li></ol><p>Each channel presents unique challenges. Emails may contain multiple attachments, with only one being the actual rate confirmation. Portal downloads often include supplementary documents, and mobile uploads frequently suffer from poor image quality or orientation issues.</p><h2>3. Challenges</h2><p>Implementing an advanced document processing solution for trucking presented both business and technical challenges.</p><h3>Business challenges</h3><p>Despite many brokers using digital documents, a substantial portion of rate confirmations were effectively handled in a manual or semi-manual way. This led to several business pain points:</p><ul><li><p><strong>High manual effort and inefficiency:</strong> Human staff had to open emails or portals, download PDF rate confirmations, and transcribe numerous fields into our systems. This manual data extraction was slow and introduced delays in the dispatch and billing process.</p></li><li><p><strong>Operational cost:</strong> The more time employees spend on low-level data entry, the higher the operational cost. As load volumes grew, scaling the process meant either hiring more staff or risking backlogs &#8211; both undesirable outcomes.</p></li><li><p><strong>Error-prone process:</strong> Manual entry is inevitably prone to errors &#8211; a misplaced decimal in a rate or a wrong pickup date can lead to financial discrepancies or service failures. </p></li></ul><p>Overall, the business needed a solution to speed up document handling, lower costs, and improve accuracy &#8211; thereby freeing our team to focus on higher-value tasks, such as exception handling and customer service.</p><h3>Technical challenges</h3><p>Processing rate confirmation documents at scale comes with significant technical hurdles, too:</p><ul><li><p><strong>Diverse document formats:</strong> We receive rate confirmations from countless brokers and shippers, each using their own template or layout. There is no single standard. Some are one-page documents with a simple table, others are multi-page contracts with terms and conditions. Key information (locations, prices, dates, etc.) can appear in different positions or formats across documents.</p></li><li><p><strong>Scanned vs. digital PDFs:</strong> Some documents are digitally generated PDFs (which contain text that can be extracted directly), while others are scanned images or fax printouts embedded in PDFs. The latter requires reliable Optical Character Recognition (OCR) to convert images to text. Low-resolution scans, noise, or poor print quality can all hinder text extraction.</p></li><li><p><strong>Complex data to extract:</strong> Each rate confirmation typically contains 10-15 key fields we need to capture (load number, pickup location, delivery location, pickup date/time, delivery date/time, rate amount, weight, truck type, etc.), sometimes along with a list of line items or stops. Capturing all this accurately is non-trivial, especially when a document spans multiple pages or has extensive fine print. </p></li><li><p><strong>Volume and performance:</strong> At our peak, we might process dozens of documents per hour. The solution must handle spikes and volume gracefully. We needed to evaluate the trade-off between accuracy and speed in our choice of technologies, so that we could process documents in near real-time without sacrificing quality.</p></li></ul><h2>4. Design</h2><p>We sought a system that could accurately handle a wide range of documents at scale. But also, to adapt quickly to new formats without heavy coding, and fit into our users&#8217; workflow (providing a good experience for any human reviewer). </p><h3>Principles</h3><p>So, our design philosophy centers on the following core principles:</p><ul><li><p><strong>Accuracy.</strong> At the heart of DocuSense<strong>&#8482;</strong> is the goal of high precision in data extraction. We leverage proven OCR technology and advanced GenAI models to ensure that each field (e.g., load number, addresses, rates) is identified correctly from the document.</p></li><li><p><strong>Scalability.</strong> DocuSense is built to handle large volumes of documents in a pipeline fashion. The architecture enables the horizontal scaling of OCR and LLM processing tasks, allowing us to add more processing workers as the document inflow grows without requiring a redesign of the system. We also utilize asynchronous workflows to manage high-throughput operations. </p></li><li><p><strong>Flexibility.</strong> A key design aim was to make the platform adaptable to new document types, formats, and use cases with minimal code changes. Instead of hardcoding for &#8220;rate confirmations&#8221; only, DocuSense was designed in a <strong>modular</strong> way, with components for ingestion, OCR, parsing, etc., that could be reconfigured or extended. </p><p></p><p>For example, we can define new data extraction templates via configuration or prompt changes, rather than writing new code, to onboard a different document type (like bills of lading or invoices). </p></li></ul><h3>The product</h3><p>To meet these principles, at <a href="https://www.truckinghub.com/">Trucking Hub</a>, we developed<strong> DocuSense&#8482;</strong> as a modular pipeline for document processing. The figure below shows what the UI of our solution looks like.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qnjm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qnjm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 424w, https://substackcdn.com/image/fetch/$s_!Qnjm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 848w, https://substackcdn.com/image/fetch/$s_!Qnjm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 1272w, https://substackcdn.com/image/fetch/$s_!Qnjm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qnjm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png" width="1049" height="482" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:1049,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182828,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.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_!Qnjm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 424w, https://substackcdn.com/image/fetch/$s_!Qnjm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 848w, https://substackcdn.com/image/fetch/$s_!Qnjm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 1272w, https://substackcdn.com/image/fetch/$s_!Qnjm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d201219-e01f-436f-b7b6-efb3bb62cc73_1049x482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Rate Confirmation import in <a href="https://www.truckinghub.com/">Trucking Hub</a> via DocuSense<strong>&#8482;</strong></figcaption></figure></div><p>The high-level <strong>document processing pipeline</strong> for DocuSense&#8482;, from ingestion to data output, is as follows. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZcIY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZcIY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 424w, https://substackcdn.com/image/fetch/$s_!ZcIY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 848w, https://substackcdn.com/image/fetch/$s_!ZcIY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 1272w, https://substackcdn.com/image/fetch/$s_!ZcIY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZcIY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png" width="1456" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:174751,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.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_!ZcIY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 424w, https://substackcdn.com/image/fetch/$s_!ZcIY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 848w, https://substackcdn.com/image/fetch/$s_!ZcIY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 1272w, https://substackcdn.com/image/fetch/$s_!ZcIY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a904d7-74fa-4d2d-b821-fbd4823e0866_1669x504.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">TruckingHub DocuSense&#8482; document processing pipeline</figcaption></figure></div><p><strong>DocuSense</strong>&#8482; builds on a generalized document processing pipeline, adapted from successful patterns in financial document processing but optimized for logistics requirements. </p><h3>Rate Confirmation Workflow with DocuSense&#8482;</h3><p>To better understand how DocuSense&#8482; operates in context, let&#8217;s walk through how a rate confirmation document flows through the system, from the perspective of our operations:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zi51!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zi51!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 424w, https://substackcdn.com/image/fetch/$s_!zi51!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 848w, https://substackcdn.com/image/fetch/$s_!zi51!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 1272w, https://substackcdn.com/image/fetch/$s_!zi51!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zi51!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png" width="1456" height="421" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:421,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:223639,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.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_!zi51!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 424w, https://substackcdn.com/image/fetch/$s_!zi51!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 848w, https://substackcdn.com/image/fetch/$s_!zi51!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 1272w, https://substackcdn.com/image/fetch/$s_!zi51!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba476677-3cd7-4ed1-bceb-210cbc96fead_2477x717.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Trucking Hub DocuSense&#8482; architecture for the rate confirmation processing</figcaption></figure></div><p>The pipeline processes documents through distinct stages:</p><h4><strong>1. Document Ingestion</strong></h4><p>The journey begins when a rate confirmation document is received. DocuSense&#8482; can ingest documents from multiple sources. For example, an email listener can detect incoming emails with PDF attachments from brokers, or users can upload PDFs through a web dashboard. </p><p>Once received, the document file is stored securely (in an object storage or database), and a processing workflow is triggered. </p><h4><strong>2. Pre-processing</strong></h4><p>Before extracting text, DocuSense&#8482; performs various pre-processing steps. If the document is a PDF, we determine whether it contains a text layer; if not (i.e., it&#8217;s essentially an image scan), we convert each page into high-resolution images for OCR. </p><p>We may perform image cleaning or augmentation to improve OCR results, for instance, by enhancing contrast or resolution if a scan is of low quality, as these enhancements can improve OCR accuracy. </p><h4>3. <strong>OCR (Optical Character Recognition)</strong></h4><p>In this stage, the goal is to extract all text content from the document. After evaluating multiple options, we integrated a dual OCR approach:</p><ul><li><p>For digital PDF text extraction, we use <strong><a href="https://github.com/UglyToad/PdfPig">UglyToad.PdfPig</a></strong>, an open-source .NET library specialized in reading text from PDFs. PDFPig allows us to extract text along with its position on the page, which can be useful for layout-aware parsing. It has no external dependencies and is optimized for performance, which makes it a great fit for our pipeline. We also experimented with <a href="https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/overview?view=doc-intel-4.0.0">Azure AI Document Intelligence</a>, but it proved to be less flexible for us and had lower performance compared to performing a local OCR.</p></li><li><p>For scanned images, faxes, or parts of documents that are images, we use <strong><a href="https://github.com/tesseract-ocr/tesseract">Tesseract OCR</a></strong> via a <a href="https://github.com/charlesw/tesseract/">.NET wrapper</a>. Tesseract is a widely used open-source OCR engine recognized for its high accuracy in recognizing printed text. This combination, PdfPig for native PDF text and Tesseract for images, proved to be the fastest and most reliable solution in our tests. It significantly outperformed trying to use an LLM for raw text extraction, which, as noted, was too slow. </p><p></p><p>By leveraging these OCR tools, we get <strong>exact text</strong> from the documents efficiently, forming the foundation for the next step.</p></li></ul><h4>4. <strong>AI Understanding (GenAI Model)</strong></h4><p>Once we have the raw text of the document (often just a blob of text or a list of lines, possibly out of order), the next challenge is to <em>understand</em> it and extract the structured fields we care about. This is where we incorporate <strong>GenAI</strong>. </p><p>We integrated an <strong>OpenAI GPT-4</strong> model (via <a href="https://learn.microsoft.com/en-us/azure/ai-foundry/openai/overview">Azure OpenAI Service</a>) into our pipeline. The raw text and layout information from OCR are fed into a carefully crafted <strong>prompt</strong> that asks the model to identify specific fields. We include sample formatting for the answer (such as JSON or XML) so that the output is structured. </p><p>Initially, we experimented with smaller models and even fine-tuned an open-source model for this task. </p><blockquote><p><strong>&#128200; Model evaluation</strong></p><p><em>Our model selection process evaluated both open-source and commercial options across multiple dimensions:</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_!7VDQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7VDQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 424w, https://substackcdn.com/image/fetch/$s_!7VDQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 848w, https://substackcdn.com/image/fetch/$s_!7VDQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 1272w, https://substackcdn.com/image/fetch/$s_!7VDQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7VDQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png" width="601" height="388.4210164835165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:601,&quot;bytes&quot;:109024,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.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_!7VDQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 424w, https://substackcdn.com/image/fetch/$s_!7VDQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 848w, https://substackcdn.com/image/fetch/$s_!7VDQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 1272w, https://substackcdn.com/image/fetch/$s_!7VDQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebe632c-d928-42f3-b2ec-57f9c70d09a0_1545x998.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>GPT-4o emerged as our primary model due to its superior accuracy and acceptable speed. However, the real breakthrough came from <strong>prompt optimization</strong>. </em></p><p><em>We discovered that including example extractions in our prompts improved accuracy by 15%, while explicit instructions about common trucking terminology reduced errors in specialized fields by 30%. </em></p></blockquote><p>We iteratively refined the prompt based on the model's outputs. For instance, if we noticed that the model sometimes confused the pickup and delivery addresses, we adjusted the prompt to clarify the expected format or added an example. </p><h4>5. Post-processing</h4><p>The raw output from the GenAI model (typically in JSON form with field values) is next fed into a post-processing module. This module applies business rules and sanity checks to further improve accuracy. </p><h4>6. <strong>Integration and output</strong></h4><p>Finally, the extracted and processed data is delivered to where it&#8217;s needed. In our case, that could be an internal TMS, a database, or a system that triggers automated actions. </p><p>For example, once a rate confirmation&#8217;s details are extracted, we can automatically create a load entry in our TMS with all the pertinent information, send notifications to dispatchers or drivers, and queue the invoice generation.</p><h4>7. Monitoring and feedback</h4><p>Taking into account all these steps, we developed monitoring for key metrics, including processing time per document, extraction confidence scores, accuracy on test sets, and throughput. We also log model outputs and any manual corrections made by humans. </p><p>These logs form a&nbsp;<strong>feedback loop.</strong>&nbsp;By analyzing where the model made mistakes or needed assistance, we can determine whether to refine our prompts, add a new rule, or, in some cases, provide an example to the model for future reference.</p><p>This feedback loop has driven steady improvements in accuracy, from 82% at launch to 96% after three months. More importantly, we&#8217;ve reduced catastrophic failures (completely misread documents) from 5% to under 0.1%, building user trust in the system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XZ3s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XZ3s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 424w, https://substackcdn.com/image/fetch/$s_!XZ3s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 848w, https://substackcdn.com/image/fetch/$s_!XZ3s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!XZ3s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XZ3s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png" width="647" height="837.6339285714286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1885,&quot;width&quot;:1456,&quot;resizeWidth&quot;:647,&quot;bytes&quot;:292767,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.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_!XZ3s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 424w, https://substackcdn.com/image/fetch/$s_!XZ3s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 848w, https://substackcdn.com/image/fetch/$s_!XZ3s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!XZ3s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe86c7b3f-52d4-4d41-85ba-507ec128a936_1545x2000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DocuSense&#8482; Document Processing Workflow</figcaption></figure></div><h2>5. Implementation</h2><p>The implementation leverages <strong><a href="https://azure.microsoft.com/en-us/products/ai-foundry">Azure AI Foundry</a></strong> and <strong><a href="https://learn.microsoft.com/en-us/azure/ai-foundry/openai/overview">Azure OpenAI</a></strong> services to deliver enterprise-grade document processing. Rather than using higher-level abstractions, <strong>DocuSense</strong>&#8482; integrates directly with the <a href="https://learn.microsoft.com/en-us/dotnet/api/overview/azure/ai.openai-readme?view=azure-dotnet">OpenAI .NET SDK</a> for maximum control over model interactions, response handling, and error recovery.</p><p><strong><a href="https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry">Azure AI Foundry</a></strong> provides the foundational platform for model hosting, while Azure OpenAI Service delivers enterprise-grade access to GPT-4 with built-in compliance and data residency guarantees.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Voft!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Voft!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 424w, https://substackcdn.com/image/fetch/$s_!Voft!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 848w, https://substackcdn.com/image/fetch/$s_!Voft!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 1272w, https://substackcdn.com/image/fetch/$s_!Voft!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Voft!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png" width="1456" height="636" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:636,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Build your code-first agent with Azure AI Foundry&quot;,&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="Build your code-first agent with Azure AI Foundry" title="Build your code-first agent with Azure AI Foundry" srcset="https://substackcdn.com/image/fetch/$s_!Voft!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 424w, https://substackcdn.com/image/fetch/$s_!Voft!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 848w, https://substackcdn.com/image/fetch/$s_!Voft!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 1272w, https://substackcdn.com/image/fetch/$s_!Voft!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F821fcb16-4f41-4f70-a4b3-519376803e5d_2467x1078.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Direct OpenAI SDK Integration</h3><p>DocuSense&#8482; integrates directly with the <a href="https://learn.microsoft.com/en-us/dotnet/api/overview/azure/ai.openai-readme?view=azure-dotnet">OpenAI .NET SDK</a>, rather than using higher-level abstractions, providing precise control over model interactions and response handling, which is essential for production reliability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XJHb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XJHb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 424w, https://substackcdn.com/image/fetch/$s_!XJHb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 848w, https://substackcdn.com/image/fetch/$s_!XJHb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!XJHb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XJHb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png" width="1456" height="577" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:577,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:306304,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.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_!XJHb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 424w, https://substackcdn.com/image/fetch/$s_!XJHb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 848w, https://substackcdn.com/image/fetch/$s_!XJHb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!XJHb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dfce1d-2bd2-4ca8-a207-9bc6b26e4eb4_2724x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">OpenAI SDK Integration</figcaption></figure></div><p>And the service registration looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PZNS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PZNS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 424w, https://substackcdn.com/image/fetch/$s_!PZNS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 848w, https://substackcdn.com/image/fetch/$s_!PZNS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 1272w, https://substackcdn.com/image/fetch/$s_!PZNS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PZNS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png" width="1456" height="529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:360038,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.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_!PZNS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 424w, https://substackcdn.com/image/fetch/$s_!PZNS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 848w, https://substackcdn.com/image/fetch/$s_!PZNS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 1272w, https://substackcdn.com/image/fetch/$s_!PZNS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4cad97-4120-4ac9-8399-f41980a9a586_2724x990.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Service registration</figcaption></figure></div><p>This direct integration enables fine-tuned control over model parameters, structured response formatting, and comprehensive error handling that higher-level abstractions might obscure.</p><h3>Structured response enforcement</h3><p>The foundation of reliable AI extraction rests on eliminating response parsing ambiguity. <strong>DocuSense</strong>&#8482; enforces JSON responses at the API level using OpenAI&#8217;s structured output feature.</p><p>An AI extraction operation is structured and deterministic. Each extraction request consists of:</p><ul><li><p><strong>Messages</strong>: A conversation context with system instructions and user content</p></li><li><p><strong>Options</strong>: Model parameters that control response behavior and format</p></li><li><p><strong>Response processing</strong>: Structured parsing with error handling and token tracking</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_!ol_F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ol_F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 424w, https://substackcdn.com/image/fetch/$s_!ol_F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 848w, https://substackcdn.com/image/fetch/$s_!ol_F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 1272w, https://substackcdn.com/image/fetch/$s_!ol_F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ol_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png" width="1456" height="993" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:993,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:816773,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.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_!ol_F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 424w, https://substackcdn.com/image/fetch/$s_!ol_F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 848w, https://substackcdn.com/image/fetch/$s_!ol_F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 1272w, https://substackcdn.com/image/fetch/$s_!ol_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f92e9bd-8ee6-4b79-ba08-8a7241823f2e_3096x2112.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Structured response</figcaption></figure></div><p>The <code>SystemChatMessage</code> contains the prompt template with few-shot examples and field definitions, while <code>UserChatMessage</code> contains only the raw document text. This separation enables prompt optimization without affecting the document processing pipeline.</p><p>Our model also includes a <strong>confidence score</strong>, which enables intelligent downstream processing:</p><ul><li><p><strong>High confidence (90-100%)</strong>: Auto-approve and process</p></li><li><p><strong>Medium confidence (70-89%</strong>): Flag for human review</p></li><li><p><strong>Low confidence (&lt;70%)</strong>: Requires manual intervention</p></li></ul><h3>External Prompt management</h3><p>Prompt engineering drives extraction accuracy, but hard-coded prompts prevent rapid iteration. <strong>DocuSense</strong>&#8482; externalizes prompt templates for hot-swapping without deployments.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Xg1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Xg1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 424w, https://substackcdn.com/image/fetch/$s_!4Xg1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 848w, https://substackcdn.com/image/fetch/$s_!4Xg1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 1272w, https://substackcdn.com/image/fetch/$s_!4Xg1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Xg1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png" width="1456" height="246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:246,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163574,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.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_!4Xg1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 424w, https://substackcdn.com/image/fetch/$s_!4Xg1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 848w, https://substackcdn.com/image/fetch/$s_!4Xg1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 1272w, https://substackcdn.com/image/fetch/$s_!4Xg1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f261f8c-ff92-40ae-963b-07f9ad962ca9_2775x468.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Prompt management</figcaption></figure></div><p>This pattern reduced optimization cycles from days to minutes. When accuracy dropped for a new broker&#8217;s document format, we updated the prompt template with additional examples and saw improvements within hours, not release cycles.</p><p>The prompt includes few-shot examples, explicit field definitions, and trucking-specific terminology guidance. This engineering approach achieved 96% accuracy without requiring model fine-tuning, thereby maintaining flexibility across various document types while keeping costs under control.</p><h3>Monitoring and error handling</h3><p>Production AI systems require specialized error handling that accounts for unique failure modes, including token limits, rate limiting, model unavailability, and response parsing errors.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uvr0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uvr0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 424w, https://substackcdn.com/image/fetch/$s_!Uvr0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 848w, https://substackcdn.com/image/fetch/$s_!Uvr0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 1272w, https://substackcdn.com/image/fetch/$s_!Uvr0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uvr0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png" width="1456" height="478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:478,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:462298,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.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_!Uvr0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 424w, https://substackcdn.com/image/fetch/$s_!Uvr0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 848w, https://substackcdn.com/image/fetch/$s_!Uvr0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 1272w, https://substackcdn.com/image/fetch/$s_!Uvr0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7b94f0-8972-4caf-a36d-9471934db818_3681x1209.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Error handling</figcaption></figure></div><p>And also, we track performances in this way:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fkkD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fkkD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 424w, https://substackcdn.com/image/fetch/$s_!fkkD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 848w, https://substackcdn.com/image/fetch/$s_!fkkD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 1272w, https://substackcdn.com/image/fetch/$s_!fkkD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fkkD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png" width="1456" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:267623,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/163694512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.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_!fkkD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 424w, https://substackcdn.com/image/fetch/$s_!fkkD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 848w, https://substackcdn.com/image/fetch/$s_!fkkD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 1272w, https://substackcdn.com/image/fetch/$s_!fkkD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b59c808-d0dc-4dec-baee-a2ff28fad66a_2574x762.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Performance tracking</figcaption></figure></div><p>These metrics reveal that AI transformation typically takes 10-20x longer than text extraction, and that faster AI models may cost more or be less accurate</p><h3>Lessons learned</h3><p>Here are some important lessons learned from our work on the <strong>DocuSense</strong>&#8482; solution:</p><ol><li><p><strong>Separate concerns. </strong>The two-stage pipeline (text extraction &#8594; AI transformation) allows independent optimization and testing of each stage.</p></li><li><p><strong>Measure everything</strong>. Without metrics, you&#8217;re flying blind. Track not just success/failure, but processing times, token usage, and confidence scores.</p></li><li><p><strong>Design for failure</strong>. AI services will fail. Network calls will timeout. Design your system to handle these gracefully with circuit breakers, retries, and fallbacks.</p></li><li><p><strong>Abstract AI providers. </strong>An AI provider interface allows swapping between OpenAI, Azure, Google, or custom models without changing business logic.</p></li><li><p><strong>Cache intelligently</strong>. AI calls are expensive. Cache responses for identical or similar documents, but be smart about cache invalidation.</p></li><li><p><strong>Version prompts</strong>. Treat prompts as code. Version them, test them, and roll them back if needed.</p></li><li><p><strong>Monitor costs continuously</strong>. AI token usage can spiral quickly. Implement cost tracking and alerts before going to production.</p></li><li><p><strong>Build feedback loops</strong>. Track confidence scores and allow users to correct extractions. Use this data to improve your prompts or fine-tune models.</p></li></ol><h2>6. Results</h2><p>After processing over 100,000 documents in production, <strong>DocuSense</strong>&#8482; has delivered transformative results. Here are the most important ones:</p><ul><li><p><strong>Major reduction in manual work.</strong> We&#8217;ve seen a roughly&nbsp;<strong>2-fold reduction in manual document processing</strong> needs for rate confirmations. Tasks that used to require two full-time staff can now be handled by one (who mainly just reviews flagged items). Many documents go through completely automatically. </p></li><li><p><strong>Faster turnaround times.</strong> The average handling time for a rate confirmation (from reception to being ready in the system) has dropped by about <strong>70%</strong>. What might have taken, say, 10-15 minutes or more between reading, interpreting, and typing into systems now takes just a couple of minutes or less with automation. </p></li><li><p><strong>High accuracy and reduced errors.</strong> Our automated extraction achieves an<strong>&nbsp;overall accuracy</strong>&nbsp;of around 90% in a fully automated process. Moreover, ~one-third of documents are processed with near-perfect accuracy (~99% field accuracy), requiring no corrections. For the remaining errors, they are usually minor (such as a formatting detail) and are caught in the review stage. Compared to previous manual error rates, this represents a significant improvement in data quality. </p></li><li><p><strong>Cost savings.</strong> By automating previously manual tasks, we are achieving notable cost savings. We estimate <strong>a 25-30% reduction in processing costs</strong>&nbsp;for these documents compared to the manual approach alone. </p></li><li><p><strong>Improved user experience.</strong> For our internal users (dispatchers and billing clerks), DocuSense&#8482; has made their lives easier. Instead of juggling between an email, a PDF viewer, and a TMS screen to enter data, they either get the data automatically or have a single interface to verify it. The intuitive UI, featuring side-by-side comparison and alerts, significantly accelerates the verification process.</p></li><li><p><strong>Scalability.</strong> Over the months, DocuSense&#8482; has seamlessly scaled to process <strong>over 100,000 documents</strong> and counting. When a new broker or document format is introduced, we haven&#8217;t had to write custom code; at most, we adjust the prompt or add a post-processing tweak. This agility validates our design goal of a flexible platform. </p></li></ul><p>Overall, DocuSense&#8482; has transformed the rate confirmation process from a manual bottleneck into a streamlined, largely automated pipeline. The combined power of OCR and GenAI has delivered both speed and accuracy, and the numbers reflect that success. </p><h2>7. Conclusion</h2><p>The development and deployment of Trucking Hub DocuSense&#8482;, our GenAI-powered document processing platform, have revolutionized how we handle critical operational documents in the trucking industry. By overcoming the challenges of manual data entry and rigid automation, we&#8217;ve achieved significant gains in efficiency, accuracy, and scalability. </p><p>This project illustrates a broader point: the combination of natural language understanding with domain-specific processing can automate complex tasks that were previously only solvable through human intuition. DocuSense&#8482; doesn&#8217;t just read text; it <em>interprets</em> documents much like a human would, but at superhuman speed and consistency. </p><p>And by smartly integrating human-in-the-loop checks, we ensure that the system remains reliable and accountable, meeting the high accuracy our business requires.</p><p>The success of DocuSense&#8482; has set a new benchmark internally, prompting us to explore other areas where AI can bring similar leaps in productivity. From invoices to bills of lading, the possibilities are vast. </p><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong>. Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching an audience of founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[How to Scale an App up to 10 Million Users on Azure]]></title><description><![CDATA[A deep-dive.]]></description><link>https://newsletter.techworld-with-milan.com/p/scale-from-zero-to-million-users</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/scale-from-zero-to-million-users</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 18 Sep 2025 15:02:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fbb6a7be-b907-4a4b-8ca0-3ba9afcb1c00_1200x1200.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Growing an application from a small user base to a large one is a challenging task. The requirements for a system for a single user differ significantly from those serving millions. </p><p>How can we transition from a basic application to a service that can serve the globe? This article outlines the steps involved in scaling up an Azure-based system, starting from a single user and progressing to over 1 million users. </p><p>We will examine key principles, including statelessness, caching, auto-scaling, decoupling, observability, and database scaling, and demonstrate how Azure's cloud services are integrated at each stage. </p><p>By the end, you will have a clear roadmap for expanding a system using practical architectural strategies and proper decisions based on real-world expertise.</p><p>In particular, we will talk about scaling on Azure, stage by stage:</p><ol><li><p><strong>Understanding Azure's Global Infrastructure</strong>. Let&#8217;s start by understanding what Azure can offer to us.</p></li><li><p><strong>Single-user start.</strong> A modular monolith on App Service + SQL, why to avoid premature microservices, and the importance of stateless code from day one.</p></li><li><p><strong>1,000 users.</strong> Vertical scaling for quick wins, adding redundancy with multiple instances, introducing Redis + CDN for hot reads, and keeping latency predictable.</p></li><li><p><strong>10,000+ users.</strong> Horizontal scaling with App Service autoscale, load balancing options (LB vs App Gateway vs Front Door), externalized session state, and first steps into read replicas.</p></li><li><p><strong>100k-500k users.</strong> Designing for resilience with multi-AZ deployments, async messaging (Service Bus, Functions), selective microservice extraction, advanced caching patterns, and cost optimization.</p></li><li><p><strong>1M+ users.</strong> Multi-region active-active with Front Door, trade-offs in consistency vs availability, sharding and polyglot persistence, full microservices orchestration, and event-driven architecture.</p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><h2><a href="https://coderabbit.link/techwithmilan">CodeRabbit: Free AI Code Reviews in CLI</a></h2><p><em><a href="https://coderabbit.link/techwithmilan">CodeRabbit CLI</a> is an AI code review tool that runs directly in your terminal. It provides intelligent code analysis, catches issues early, and integrates seamlessly with AI coding agents like Claude Code, Codex CLI, Cursor CLI, and Gemini to ensure your code is production-ready before it ships.</em></p><ul><li><p><em>Enables pre-commit reviews of both staged and unstaged changes, creating a multi-layered review process.</em></p></li><li><p><em>Fits into existing Git workflows. Review uncommitted changes, staged files, specific commits, or entire branches without disrupting your current development process.</em></p></li><li><p><em>Reviews specific files, directories, uncommitted changes, staged changes, or entire commits based on your needs.</em></p></li><li><p><em>Supports programming languages including JavaScript, TypeScript, Python, Java, C#, C++, Ruby, Rust, Go, PHP, and more.</em></p></li><li><p><em>Offers free AI code reviews with rate limits, allowing developers to experience senior-level reviews at no cost.</em></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://coderabbit.link/techwithmilan" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t1YM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 424w, https://substackcdn.com/image/fetch/$s_!t1YM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 848w, https://substackcdn.com/image/fetch/$s_!t1YM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 1272w, https://substackcdn.com/image/fetch/$s_!t1YM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t1YM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png" width="1200" height="649" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:649,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://coderabbit.link/techwithmilan&quot;,&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_!t1YM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 424w, https://substackcdn.com/image/fetch/$s_!t1YM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 848w, https://substackcdn.com/image/fetch/$s_!t1YM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 1272w, https://substackcdn.com/image/fetch/$s_!t1YM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c060f-1e0b-451d-a1ec-c64e9044fb83_1200x649.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderabbit.link/techwithmilan&quot;,&quot;text&quot;:&quot;Get started today&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderabbit.link/techwithmilan"><span>Get started today</span></a></p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. Understanding Azure's Global Infrastructure</h2><p>Before diving into architecture, you need to understand what Azure gives you in 2025. Azure operates <strong>in over 70 regions worldwide and 400+ datacenters</strong>, more than 400 data centers, surpassing&nbsp;any other cloud provider. Each region is a set of data centers deployed in a specific geographic location, such as Central US or Western Europe.</p><p>Each region contains <strong>multiple availability zones</strong> (more than 120), which are physically separate data centers within a 2ms latency of each other. This matters because your architecture decisions depend on these building blocks.</p><p>Azure's backbone network carries <strong>200+ Tbps of traffic globally</strong>. When you deploy in multiple regions, your traffic rides Microsoft's private network, not the public internet. </p><p>This difference alone can <strong>cut latency by 30-50ms between regions</strong>. Understanding this helps you make proper decisions about where to place services and how to route traffic.</p><p>The real power comes from <strong>Azure's managed services</strong>. Unlike 2010, when companies ran everything on VMs, modern Azure provides services that abstract away the complexity. <a href="https://azure.microsoft.com/en-us/products/azure-sql/database">Azure SQL Database</a> handles replication, backups, and failover automatically, while <a href="https://azure.microsoft.com/en-us/products/cosmos-db">Cosmos DB</a> guarantees 99.999% availability with single-digit millisecond latency globally. </p><p>These scaling decisions align with <strong><a href="https://learn.microsoft.com/en-us/azure/well-architected/">Azure's Well-Architected Framework</a></strong>: reliability, performance, cost, operations, and security. We'll touch on each pillar throughout this journey, but focus on<strong> practical implementation over theory</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_!zyWr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zyWr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 424w, https://substackcdn.com/image/fetch/$s_!zyWr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 848w, https://substackcdn.com/image/fetch/$s_!zyWr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 1272w, https://substackcdn.com/image/fetch/$s_!zyWr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zyWr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png" width="1222" height="831" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:831,&quot;width&quot;:1222,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118585,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.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_!zyWr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 424w, https://substackcdn.com/image/fetch/$s_!zyWr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 848w, https://substackcdn.com/image/fetch/$s_!zyWr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 1272w, https://substackcdn.com/image/fetch/$s_!zyWr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bdb437-a2e7-42c7-9554-bc15ad8fe2b3_1222x831.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The five pillars of the Azure Well-Architected Framework</figcaption></figure></div><p>Every architecture choice involves trade-offs: redundancy improves reliability but increases cost, and caching boosts performance but adds complexity.</p><p>Also, when we talk about Azure infrastructure, it&#8217;s useful to view the map of all <strong>Azure regions</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_!2W7k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2W7k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 424w, https://substackcdn.com/image/fetch/$s_!2W7k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 848w, https://substackcdn.com/image/fetch/$s_!2W7k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 1272w, https://substackcdn.com/image/fetch/$s_!2W7k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2W7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png" width="1205" height="595" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:595,&quot;width&quot;:1205,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Microsoft Azure Global Infra&quot;,&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="Microsoft Azure Global Infra" title="Microsoft Azure Global Infra" srcset="https://substackcdn.com/image/fetch/$s_!2W7k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 424w, https://substackcdn.com/image/fetch/$s_!2W7k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 848w, https://substackcdn.com/image/fetch/$s_!2W7k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 1272w, https://substackcdn.com/image/fetch/$s_!2W7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8bf1c5-9e04-423b-8ecc-7f9a43d6bfcd_1205x595.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure <a href="https://azure.microsoft.com/en-us/explore/global-infrastructure/geographies/">regions</a></figcaption></figure></div><blockquote><p>&#8505;&#65039; <em><a href="https://datacenters.microsoft.com/globe/explore/">Microsoft Datacenters</a>, as the animated globe.</em></p></blockquote><p>Also, Azure provides <strong>services</strong> that are inherently scalable. Here are the key services you'll use:</p><ul><li><p><strong>Compute</strong>: <a href="https://azure.microsoft.com/en-us/products/app-service">App Services</a> with autoscaling, <a href="https://azure.microsoft.com/en-us/products/kubernetes-service">AKS clusters</a>, <a href="https://azure.microsoft.com/en-us/products/functions">Azure Functions</a> for serverless</p></li><li><p><strong>Storage</strong>: <a href="https://azure.microsoft.com/en-us/products/storage/blobs">Blob Storage</a> for static content, <a href="https://azure.microsoft.com/en-us/products/azure-sql/database">Azure SQL Database</a> with serverless scaling</p></li><li><p><strong>Networking</strong>: <a href="https://azure.microsoft.com/en-us/products/application-gateway">Application Gateway</a>, <a href="https://azure.microsoft.com/en-us/products/frontdoor">Front Door</a>, <a href="https://azure.microsoft.com/en-us/products/cdn">CDN</a></p></li><li><p><strong>Caching</strong>: <a href="https://azure.microsoft.com/en-us/products/cache">Azure Cache for Redis</a></p></li><li><p><strong>Messaging</strong>: <a href="https://azure.microsoft.com/en-us/products/service-bus">Service Bus</a> for asynchronous processing</p></li><li><p><strong>Monitoring</strong>: <a href="https://azure.microsoft.com/en-us/products/monitor">Azure Monitor,</a> <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/visualize/insights-overview">Application Insights</a></p></li><li><p><strong>Security</strong>: <a href="https://azure.microsoft.com/en-us/products/web-application-firewall">Azure WAF</a> (Front Door/Application Gateway) and <a href="https://learn.microsoft.com/en-us/azure/ddos-protection/ddos-protection-overview">DDoS Protection</a>   (P1/P2)</p></li></ul><p>Note that some services scale automatically (such as&nbsp;<a href="https://azure.microsoft.com/en-us/products/functions">Azure Functions</a>), others require configuration (like&nbsp;<a href="https://learn.microsoft.com/en-us/azure/aks/cluster-autoscaler-overview">AKS autoscaling</a>), and some necessitate architectural changes (moving from a&nbsp;monolith to microservices).</p><blockquote><p><em>&#128073; Learn more about Azure here:</em></p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:106633135,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/how-to-learn-azure&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;How to learn Microsoft Azure&quot;,&quot;truncated_body_text&quot;:&quot;This week, we talk about the following:&quot;,&quot;date&quot;:&quot;2023-03-09T16:01:21.119Z&quot;,&quot;like_count&quot;:10,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, practical insights on software engineering and leadership. Read by engineers across startups and big tech every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/how-to-learn-azure?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How to learn Microsoft Azure</div></div><div class="embedded-post-body">This week, we talk about the following&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; 10 likes &#183; Dr Milan Milanovi&#263;</div></a></div><h2>2. Single User - Simple beginning</h2><p>So, let&#8217;s start from the simplest case, we have only one user (or close to that). The biggest mistake engineers make in this case is <strong>building it for an imagined scale</strong>, such as millions of users. And this is very wrong. </p><p><strong>You don't need microservices for your first thousand users</strong>. You don't need Kubernetes when a simple App Service works. Every architectural decision should be reversible and made based on actual, measured pain points.</p><p>Think of scaling like rebuilding a ship while sailing. You can't stop redesigning everything. You measure what's failing, fix that specific problem, then measure again. This iterative approach means you're always solving real problems, not imagined ones.</p><p>So, at the very start, <strong>simplicity rules.</strong> Especially if you&#8217;re a startup and want to go fast. With minimal load, you can run everything on a single server: the web application, database, and even a basic in-memory cache all live together. </p><p>For example, you might deploy an <strong><a href="https://azure.microsoft.com/en-us/products/app-service">Azure App Service</a></strong> instance connected to a lightweight <strong><a href="https://azure.microsoft.com/en-us/products/azure-sql/database">Azure SQL Database</a></strong> on the same machine or use an all-in-one VM. This monolithic setup is easy to develop and deploy, with no distributed complexities, no network calls between tiers.</p><p>However, a single-server design has obvious limitations. It&#8217;s a <strong>single point of failure</strong> &#8211; if that server goes down, your entire app goes offline. It also has a <strong>fixed capacity</strong>: one machine can handle only a limited number of requests and a finite amount of CPU/RAM. </p><p>In this early stage, these constraints are usually acceptable. The priority is rapid development and validation of the product, rather than over-engineering for scale.</p><p>That said, it&#8217;s still wise to code with an eye on future growth. <strong>Statelessness</strong> is key from day one, which means that we want to ensure the web server doesn&#8217;t store user session data or other persistent state locally. Instead, even with one server, plan to keep state in the database or a shared store. </p><p>This way, <strong>adding more servers later won&#8217;t break user sessions</strong>. Likewise, abstract your data access and use caching in code (e.g., in-memory objects) where sensible, knowing you can upgrade to a distributed cache later.</p><p>Regarding your first solution architecture, we will follow an approach called&nbsp;<strong><a href="https://www.thoughtworks.com/insights/decoder/e/evolutionary-architecture">Evolutionary Architecture</a></strong>, which is a method of building software that evolves over time as business priorities change.</p><p>By following this approach, our initial app architecture should be a <strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-a-modular-monolith">Modular Monolith</a></strong>. This architecture allows us to create natural boundaries while keeping related code together. This will enable us to split and grow in the future.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EVWn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EVWn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 424w, https://substackcdn.com/image/fetch/$s_!EVWn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 848w, https://substackcdn.com/image/fetch/$s_!EVWn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 1272w, https://substackcdn.com/image/fetch/$s_!EVWn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EVWn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png" width="1456" height="737" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:737,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&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_!EVWn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 424w, https://substackcdn.com/image/fetch/$s_!EVWn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 848w, https://substackcdn.com/image/fetch/$s_!EVWn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 1272w, https://substackcdn.com/image/fetch/$s_!EVWn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a0e8e9-9f9b-43de-b067-bad366303919_1994x1010.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Modular Monolith Architecture</figcaption></figure></div><p>Such an app can be deployed to one Azure App Service B2 instance ($55/month) running your application, one Azure SQL Database S1 tier (20 DTUs, ~$30/month), and (optionally) Azure Blob Storage for static files. Total monthly cost should be around $100-$200. </p><p><a href="https://newsletter.techworld-with-milan.com/p/stack-overflow-architecture">StackOverflow ran on a single database server</a> until it had 10 million monthly visitors. <strong>Don't over-engineer early.</strong></p><p>The image below shows the simple Azure architecture for a small number of users:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Nal!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Nal!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 424w, https://substackcdn.com/image/fetch/$s_!_Nal!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 848w, https://substackcdn.com/image/fetch/$s_!_Nal!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 1272w, https://substackcdn.com/image/fetch/$s_!_Nal!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Nal!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png" width="743" height="329" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:329,&quot;width&quot;:743,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44035,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.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_!_Nal!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 424w, https://substackcdn.com/image/fetch/$s_!_Nal!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 848w, https://substackcdn.com/image/fetch/$s_!_Nal!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 1272w, https://substackcdn.com/image/fetch/$s_!_Nal!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf29cf82-5d9c-45e6-b0d9-3e97986904fc_743x329.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Basic single-server architecture on Azure</figcaption></figure></div><p>Also, we want to monitor everything, so we recommend adding <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview">Application Insights</a> from day one.</p><p>Move beyond this setup when:</p><ul><li><p>Response times consistently exceed 500ms under normal load</p></li><li><p>Database becomes the bottleneck (high CPU, long query times)</p></li><li><p>You need better fault tolerance than a single region provides</p></li></ul><blockquote><p><em>&#128073; Learn more about <strong>Modular Monolith</strong> architecture:</em></p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:154485243,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-is-a-modular-monolith&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;What is a Modular Monolith?&quot;,&quot;truncated_body_text&quot;:&quot;Microservices are popular for their scalability but come with complexity and operational overhead. They have become a big hype in the industry, and you can see microservices everywhere. On the other side, modular monolith offers a middle ground&#8212;keeping the simplicity of a monolith while allowing for future scalability. Here&#8217;s why it might be the right c&#8230;&quot;,&quot;date&quot;:&quot;2025-02-13T16:03:16.685Z&quot;,&quot;like_count&quot;:154,&quot;comment_count&quot;:10,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, practical insights on software engineering and leadership. Read by engineers across startups and big tech every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/what-is-a-modular-monolith?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">What is a Modular Monolith?</div></div><div class="embedded-post-body">Microservices are popular for their scalability but come with complexity and operational overhead. They have become a big hype in the industry, and you can see microservices everywhere. On the other side, modular monolith offers a middle ground&#8212;keeping the simplicity of a monolith while allowing for future scalability. Here&#8217;s why it might be the right c&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 154 likes &#183; 10 comments &#183; Dr Milan Milanovi&#263;</div></a></div><h2>3. 1,000 Users - Preparing for growth</h2><p>When usage ramps up to hundreds or a few thousand users, problems with the single-server or a basic approach with minimal infrastructure begin to emerge. In particular, when response times exceed 500ms for 95th percentile requests, the database CPU consistently above 70%, or error rates exceed 0.1%. What could happen is that pages might load more slowly under peak load, or the database queries might become slow.</p><p>The first adjustments typically involve <strong>vertical scaling</strong> and basic tier separation, if you were on a one-machine setup.</p><h3>Vertical scaling </h3><p>The quick fix for increased traffic is often to provide your server with more power &#8211; a larger VM size or a higher App Service tier with more CPU/RAM. Vertical scaling is easy; you don&#8217;t have to change your application architecture, just the hardware it runs on. </p><p>In Azure, you can ramp an Azure SQL Database to a higher performance tier or increase an App Service Plan to use more cores and memory, without downtime. And all apps working on that Service Plan will have more power.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YB6f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YB6f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 424w, https://substackcdn.com/image/fetch/$s_!YB6f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 848w, https://substackcdn.com/image/fetch/$s_!YB6f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 1272w, https://substackcdn.com/image/fetch/$s_!YB6f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YB6f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png" width="1167" height="433" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:433,&quot;width&quot;:1167,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42968,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.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_!YB6f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 424w, https://substackcdn.com/image/fetch/$s_!YB6f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 848w, https://substackcdn.com/image/fetch/$s_!YB6f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 1272w, https://substackcdn.com/image/fetch/$s_!YB6f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdf10a30-4a5d-42cc-91b2-ffc85dd3450d_1167x433.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure App Service plan hardware</figcaption></figure></div><p>This can carry you through moderate traffic increases. <strong>However, vertical scaling has its own inherent limitations and drawbacks</strong>. There&#8217;s always a maximum size of machine available, and bigger instances get exponentially more expensive. </p><p>Yet, you still manage your costs easily. </p><blockquote><p><strong>&#8505;&#65039; Horizontal vs Vertical scaling</strong>. <em>Vertical scaling (bigger machines) is simpler and sometimes unavoidable (you can&#8217;t horizontally partition everything easily, e.g., a complex SQL query might need one big DB server). Horizontal scaling (more, smaller machines) is usually the only way to handle truly large scale once vertical limits hit. </em></p><p><em>Horizontal scale gives you redundancy and can be cost-effective using many commodity instances instead of one giant server. But it comes with complexity: you need load balancers, data synchronization, and software to handle distributed work. </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_!7cX-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7cX-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 424w, https://substackcdn.com/image/fetch/$s_!7cX-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 848w, https://substackcdn.com/image/fetch/$s_!7cX-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 1272w, https://substackcdn.com/image/fetch/$s_!7cX-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7cX-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png" width="592" height="465.54945054945057" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1145,&quot;width&quot;:1456,&quot;resizeWidth&quot;:592,&quot;bytes&quot;:404171,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.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_!7cX-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 424w, https://substackcdn.com/image/fetch/$s_!7cX-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 848w, https://substackcdn.com/image/fetch/$s_!7cX-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 1272w, https://substackcdn.com/image/fetch/$s_!7cX-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc337cd81-8e39-41c9-90f5-04a256703bec_2260x1777.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>A rule of thumb:</strong> scale vertically to handle load until it becomes impractical or too expensive, then invest the engineering effort to scale horizontally. </em></p></blockquote><h3>Redundancy</h3><p>At ~1k users, you&#8217;re close to needing redundancy. Here, you should start thinking about <strong>load balancing</strong> and additional instances, even if they are not fully required yet. Consider running two instances of the app behind an <a href="https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-overview">Azure Load Balancer</a> or <a href="https://learn.microsoft.com/en-us/azure/application-gateway/overview">Azure Application Gateway</a> for basic <a href="https://learn.microsoft.com/en-us/azure/well-architected/reliability/highly-available-multi-region-design">active-passive redundancy</a>. </p><p>Many teams at this stage run one active server and keep a second one ready to take over if the first fails (warm standby).<a href="https://azure.microsoft.com/en-us/products/app-service"> Azure App Service</a> can automatically maintain multiple instances and distribute traffic between them, effectively acting as a built-in load balancer.</p><p>You may also consider introducing a&nbsp;<strong>basic cache</strong>&nbsp;at this stage if your database is performing repeated, heavy reads. You can use an in-memory cache, or <a href="https://azure.microsoft.com/en-us/products/cache">Azure Cache for Redis</a>, which could be added to store frequently accessed data, reducing database load. A simple C2 standard instance (2.5GB, ~$160/month) can handle millions of requests.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ypxx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ypxx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 424w, https://substackcdn.com/image/fetch/$s_!ypxx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 848w, https://substackcdn.com/image/fetch/$s_!ypxx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 1272w, https://substackcdn.com/image/fetch/$s_!ypxx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ypxx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png" width="581" height="326.9114441416894" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:413,&quot;width&quot;:734,&quot;resizeWidth&quot;:581,&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_!ypxx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 424w, https://substackcdn.com/image/fetch/$s_!ypxx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 848w, https://substackcdn.com/image/fetch/$s_!ypxx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 1272w, https://substackcdn.com/image/fetch/$s_!ypxx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c0488c-87dc-40c1-b5e9-45d381aeedc7_734x413.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Cache for Redis (source: Microsoft)</figcaption></figure></div><p>For example, if your app displays the same reference data to all users, caching it in Redis means the web app can fetch it from the cache in microseconds instead of querying the database each time. </p><p>Here is the Azure Architecture with <a href="https://learn.microsoft.com/en-us/azure/frontdoor/front-door-overview">Azure Front Door</a> and <a href="https://learn.microsoft.com/en-us/azure/application-gateway/overview">Application Gateway</a> for load balancing between two availability zones, each one holding an instance of an app. The Redis Cache and the database are shared among the instances. Here are are still in the same region, with low latencies.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vIdM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vIdM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 424w, https://substackcdn.com/image/fetch/$s_!vIdM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 848w, https://substackcdn.com/image/fetch/$s_!vIdM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 1272w, https://substackcdn.com/image/fetch/$s_!vIdM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vIdM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png" width="626" height="961" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:961,&quot;width&quot;:626,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78070,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.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_!vIdM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 424w, https://substackcdn.com/image/fetch/$s_!vIdM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 848w, https://substackcdn.com/image/fetch/$s_!vIdM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 1272w, https://substackcdn.com/image/fetch/$s_!vIdM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf183ca-bf94-498c-a2ed-93568ffc2d91_626x961.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure architecture with Redis Cache and two availability zones</figcaption></figure></div><blockquote><p><strong>&#10145;&#65039; </strong><em><strong>Load Balancer</strong> is a service that distributes incoming traffic across many servers or resources. Usually, we have two or more web servers on the backend, and it <strong>distributes network traffic between them</strong>. Its primary purpose is to use resources optimally. </em></p><p><em>A more equal task allocation and increased capacity can enhance the system's responsiveness and reliability. There are three load balancers at a high level: hardware-based, cloud-based, and software-based.</em></p></blockquote><h2>4. 10,000+ Users - Meet Horizontal Scaling</h2><p>When traffic reaches the tens of thousands, you need to <strong>scale out (horizontally)</strong> &#8211; not just up. At this point, a single application server will struggle to keep up with concurrent users, regardless of the size of the VM or App Service Plan. </p><p>The solution is <strong>horizontal scaling</strong>, which means adding more servers to share the load. This is where true <strong>load balancing</strong> becomes critical.</p><p>In Azure, scaling out might mean increasing the instance count of your App Service (e.g., running 4 or 10 instances instead of one) or deploying your app on a cluster of VMs behind an <a href="https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-overview">Azure Load Balancer</a>. </p><p>Azure&#8217;s load balancing options include <a href="https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-overview">Azure Load Balancer</a> at Layer 4 (TCP/SSL),&nbsp;<a href="https://learn.microsoft.com/en-us/azure/application-gateway/overview">Azure Application Gateway</a>&nbsp;at Layer 7 (HTTP with features such as SSL offload and path-based routing), or&nbsp;<a href="https://learn.microsoft.com/en-us/azure/frontdoor/front-door-overview">Azure Front Door</a>&nbsp;if you require global routing. </p><p>At 10k users (likely spread across regions), a typical setup might use an <strong><a href="https://learn.microsoft.com/en-us/azure/application-gateway/overview">Azure Application Gateway</a> or <a href="https://learn.microsoft.com/en-us/azure/frontdoor/front-door-overview">Azure Front Door</a></strong> to distribute incoming HTTP requests to a pool of identical app servers. The load balancer ensures that no single server is overwhelmed and also provides failover &#8211; if one instance goes down, traffic is automatically routed to the others.</p><p>When we discuss the web tier, it must be effectively scaled out to<strong> be stateless</strong>. This means that any given request can be directed to any server without issue. If you were careful in earlier stages, session state and user-specific data are already stored in a shared database or cache, rather than in memory on a single server. </p><p>Now you can run, say, 5 web servers and not care which one handles a login &#8211; they all connect to the same backend stores for data. In contrast, a stateful design (e.g., storing a session in process memory) would require &#8220;sticky sessions&#8221; (pinning a user to the same server), which hurts load distribution and failover. </p><p>With multiple web instances, configure <strong>auto-scale rules</strong> to handle variability. <a href="https://learn.microsoft.com/en-us/azure/app-service/manage-automatic-scaling">Azure App Service Autoscale</a> can add or remove instances based on metrics like CPU usage, memory, or request queue length. For example, you might set it to add an instance if the CPU usage stays above 70% for 5 minutes, and remove one when it drops below 30%. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TdZF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TdZF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 424w, https://substackcdn.com/image/fetch/$s_!TdZF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 848w, https://substackcdn.com/image/fetch/$s_!TdZF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 1272w, https://substackcdn.com/image/fetch/$s_!TdZF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TdZF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png" width="527" height="210.65521978021977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:527,&quot;bytes&quot;:107121,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.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_!TdZF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 424w, https://substackcdn.com/image/fetch/$s_!TdZF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 848w, https://substackcdn.com/image/fetch/$s_!TdZF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 1272w, https://substackcdn.com/image/fetch/$s_!TdZF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca8e06a4-655e-4541-b68c-fe3ce1eb1fd6_1500x600.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Azure CLI: Autoscale App Service Plan</figcaption></figure></div><p>This <strong>elasticity</strong> ensures that you use just the right number of servers for the current load, without the need for constant over-provisioning. And this is one of the main advantages of Cloud.</p><p>Also, if you haven&#8217;t already, <strong>externalize session state</strong> now &#8211; use<a href="https://azure.microsoft.com/en-us/products/cache"> Azure Cache for Redis</a> or a database to store user sessions, shopping carts, or other transient data that previously resided in memory. This way, when server X caches some user data and the next request goes to server Y, it can retrieve that data from the shared cache.</p><p>Here is the updated Azure architecture, which utilizes <a href="https://learn.microsoft.com/en-us/azure/frontdoor/front-door-overview">Azure Front Door</a>, <a href="https://learn.microsoft.com/en-us/azure/application-gateway/overview">Application Gateway</a>, <a href="https://azure.microsoft.com/en-us/products/cache">Redis Cache</a>, multiple app instances, and an <a href="https://learn.microsoft.com/en-us/answers/questions/912341/azure-sql-server-database-read-only-copy">Azure SQL Database read replica</a> for improved read performance. We will explain the details in the next sections.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sctr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sctr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 424w, https://substackcdn.com/image/fetch/$s_!Sctr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 848w, https://substackcdn.com/image/fetch/$s_!Sctr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 1272w, https://substackcdn.com/image/fetch/$s_!Sctr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sctr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png" width="711" height="961" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:961,&quot;width&quot;:711,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94784,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.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_!Sctr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 424w, https://substackcdn.com/image/fetch/$s_!Sctr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 848w, https://substackcdn.com/image/fetch/$s_!Sctr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 1272w, https://substackcdn.com/image/fetch/$s_!Sctr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e562e1-4542-4957-92f2-3561ad6a84b0_711x961.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Load-balanced web tier with multiple stateless app servers behind Azure Load Balancer, shared Redis cache, and primary database with read-replica</figcaption></figure></div><h3>Caching</h3><p>With 10k+ users, read traffic to your database can skyrocket. Every new page view or API call likely hits the database. This is the latest time to introduce a dedicated <strong>caching layer</strong> if you haven&#8217;t already. <a href="https://azure.microsoft.com/en-us/products/cache">Azure Cache for Redis</a> is a natural choice.</p><p>The principle is simple: whenever your app reads some data that is expensive or frequently needed, store it in Redis. Subsequent requests first check the Redis cache: if the data is present (a cache hit), it is served in microseconds; if not, the database is queried (cache miss), and then&nbsp;<strong>the cache</strong>&nbsp;is populated&nbsp;for next time. </p><p>If done well, caching can drastically reduce database load and improve response times (studies show up to <strong>~60% performance improvement from effective caching</strong>).</p><p>Typical data to cache includes: </p><ul><li><p>Results of frequent read queries (e.g., trending items, user profiles)</p></li><li><p>Computed results of expensive operations, and </p></li><li><p>Static reference data. </p></li></ul><p>But, be mindful of <strong><a href="https://en.wikipedia.org/wiki/Cache_invalidation">cache invalidation</a></strong> &#8211; cached data that goes stale should be updated or evicted. <a href="https://azure.microsoft.com/en-us/products/cache">Azure Redis Cache</a> supports features such as key expiration and data change notifications to help manage this.</p><blockquote><p><em>&#8220;There are only two hard things in Computer Science: cache invalidation and naming things.&#8221; - Phil Karlton</em></p></blockquote><h3>Database scaling</h3><p>At 10k+ users, your database might be feeling the pressure, especially for read-heavy workloads. When your database reaches 4TB (Azure SQL's limit), you need&nbsp;<strong>database replication</strong>, which involves either&nbsp;<strong>horizontal sharding&nbsp;</strong>or&nbsp;<strong>vertical partitioning</strong>&nbsp;(splitting&nbsp;the database by function or purpose). </p><p>On Azure, your primary strategy for scaling is to utilize&nbsp;<strong><a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/service-tier-hyperscale?view=azuresql">Azure SQL Hyperscale,</a></strong>&nbsp;which enables high availability prior to sharding. Hyperscale supports very large databases (~100 TB) and read scale-out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FyJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FyJA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 424w, https://substackcdn.com/image/fetch/$s_!FyJA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 848w, https://substackcdn.com/image/fetch/$s_!FyJA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 1272w, https://substackcdn.com/image/fetch/$s_!FyJA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FyJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png" width="1456" height="1145" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1145,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram showing Hyperscale's compute tier.&quot;,&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="Diagram showing Hyperscale's compute tier." title="Diagram showing Hyperscale's compute tier." srcset="https://substackcdn.com/image/fetch/$s_!FyJA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 424w, https://substackcdn.com/image/fetch/$s_!FyJA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 848w, https://substackcdn.com/image/fetch/$s_!FyJA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 1272w, https://substackcdn.com/image/fetch/$s_!FyJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b17e863-1599-469d-94a1-bd78dc7a0fbb_1688x1328.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure SQL Hyperscale Architecture (source: <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/hyperscale-architecture?view=azuresql">Microsoft</a>)</figcaption></figure></div><p>Another strategy is <strong><a href="https://learn.microsoft.com/en-us/answers/questions/912341/azure-sql-server-database-read-only-copy">read replicas</a></strong>. <a href="https://azure.microsoft.com/en-us/products/azure-sql/database">Azure SQL Database</a> offers a <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/read-scale-out?view=azuresql">read scale-out feature</a> in its premium tiers, where you get one or more read-only replicas to offload read queries. It is enabled by default on new Premium, Business Critical, and Hyperscale databases. Be warned here that <strong>read replicas introduce replication lag </strong>(typically 1-5 seconds). Never use them for operations that require immediate consistency, such as payment confirmations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9EK-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9EK-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 424w, https://substackcdn.com/image/fetch/$s_!9EK-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 848w, https://substackcdn.com/image/fetch/$s_!9EK-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!9EK-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9EK-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png" width="540" height="683.8190954773869" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1260,&quot;width&quot;:995,&quot;resizeWidth&quot;:540,&quot;bytes&quot;:185130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.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_!9EK-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 424w, https://substackcdn.com/image/fetch/$s_!9EK-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 848w, https://substackcdn.com/image/fetch/$s_!9EK-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!9EK-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad96f3c-4faf-4354-98cb-b11d4b90098e_995x1260.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Read replicas</figcaption></figure></div><p>Alternatively, you might use <strong><a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview?view=azuresql">Azure SQL&#8217;s Active Geo-Replication</a></strong> to create secondary readable copies in the same or different regions for distributing read traffic. If using <a href="https://azure.microsoft.com/en-us/products/cosmos-db">Cosmos DB</a>, it automatically handles scaling reads across regions. </p><p>The main idea here is to&nbsp;<strong>let the primary database focus on writes, while one or more secondaries handle a significant portion of the read volume</strong>. This improves throughput and provides some resilience (if a primary fails, a secondary can take over). </p><p>At this stage, <strong>vertical scaling</strong> of the database might still be part of the plan as well. You may scale up the Azure SQL instance to a higher tier for increased CPU/IO throughput, in addition to considering replicas.</p><p>The image below shows the difference between Horizontal and Vertical Partitioning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W1sy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W1sy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 424w, https://substackcdn.com/image/fetch/$s_!W1sy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 848w, https://substackcdn.com/image/fetch/$s_!W1sy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 1272w, https://substackcdn.com/image/fetch/$s_!W1sy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W1sy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png" width="1456" height="2375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2375,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1349942,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.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_!W1sy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 424w, https://substackcdn.com/image/fetch/$s_!W1sy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 848w, https://substackcdn.com/image/fetch/$s_!W1sy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 1272w, https://substackcdn.com/image/fetch/$s_!W1sy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe80fd68b-fb92-4f1b-8670-f1e765b5cb85_3517x5738.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><em>&#128073;  Read more on <strong>how to scale databases</strong>: </em></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:143523424,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/how-to-scale-databases&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;How to scale databases&quot;,&quot;truncated_body_text&quot;:&quot;In this issue, we will discuss how to solve one of the most common software bottlenecks in production: database scalability. There are two types of scaling strategies: vertical and horizontal.&quot;,&quot;date&quot;:&quot;2024-04-25T15:01:13.747Z&quot;,&quot;like_count&quot;:33,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, practical insights on software engineering and leadership. Read by engineers across startups and big tech every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/how-to-scale-databases?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How to scale databases</div></div><div class="embedded-post-body">In this issue, we will discuss how to solve one of the most common software bottlenecks in production: database scalability. There are two types of scaling strategies: vertical and horizontal&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 33 likes &#183; Dr Milan Milanovi&#263;</div></a></div></blockquote><h2>5. 100,000-500,000 Users - Distributed systems and resilience</h2><p>Half a million users is a significant scale, which most applications never reach. At this point, you likely have a globally used application or a very popular service in one region. </p><p>The architecture now moves from &#8220;just add more servers&#8221; to <strong>re-architecting components</strong> for scale, performance, and reliability. Several big changes typically occur around this stage:</p><h3>Multi-server and redundancy</h3><p>By 100k users, every tier of the system needs redundancy and scaling. The web tier is already load-balanced &#8211; now you might be running dozens of instances across multiple <strong><a href="https://learn.microsoft.com/en-us/azure/reliability/availability-zones-overview">Availability Zones</a></strong> for higher resiliency (Azure distributes your App Service or VM Scale Set across zones so that one data center outage doesn&#8217;t take out all instances). </p><p>The database tier should not be a single instance either. You need to implement <strong>database replication</strong> if you haven&#8217;t. In Azure SQL, consider adding <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/failover-group-configure-sql-db?view=azuresql">failover groups </a>(with a secondary replica in another region, ready to take over in case the primary fails). </p><p>If you&#8217;re still on a single primary DB server, ensure you have at least one read replica or standby copy. Many applications transition to a&nbsp;<strong>primary-replica</strong>&nbsp;model, where all writes are directed to a single primary database, and multiple read replicas handle read queries. </p><p>This not only improves read throughput but also provides a fallback in case the primary database goes down &#8211; your app can switch to a replica (potentially in read-only mode) rather than experiencing total downtime.</p><p>Here is an example of Azure architecture, including two availability zones, a messaging queue (<a href="https://azure.microsoft.com/en-us/products/service-bus">Service Bus</a>), serverless (<a href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview">Azure Functions</a>) for background processing, and <a href="https://azure.microsoft.com/en-us/products/cache">Redis Cache</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FM7R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FM7R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 424w, https://substackcdn.com/image/fetch/$s_!FM7R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 848w, https://substackcdn.com/image/fetch/$s_!FM7R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 1272w, https://substackcdn.com/image/fetch/$s_!FM7R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FM7R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png" width="1088" height="991" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:991,&quot;width&quot;:1088,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152310,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.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_!FM7R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 424w, https://substackcdn.com/image/fetch/$s_!FM7R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 848w, https://substackcdn.com/image/fetch/$s_!FM7R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 1272w, https://substackcdn.com/image/fetch/$s_!FM7R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce47ab0-9275-4f0d-8638-6bfd4c93b45f_1088x991.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Multi-tier architecture with Azure Front Door and load balancer, multiple web servers across zones, Azure Cache for Redis, and a message queue </figcaption></figure></div><h3>Caching everywhere</h3><p>We introduced a Redis cache earlier for database reads. At 100k+ users, caching extends further:</p><ul><li><p><strong>Content Delivery Network (CDN):</strong> Offload static assets (images, CSS, JavaScript, videos) to a CDN like Azure CDN or Azure Front Door, caching. This serves users content from edge servers globally, reducing the load on your web servers and drastically improving load times for users in far-flung locations. With a CDN, a user in Europe loading your site that&#8217;s hosted in the US can get static files from a European edge node, shaving hundreds of milliseconds off the response. At this scale, <em>every millisecond matters</em> for user experience. The Front Door costs about $35/month, base, plus $0.008 per GB. For a million users, expect to pay $500-$ 1000 per month.</p></li><li><p><strong>Application Cache Patterns:</strong> Beyond simple key-value caching, consider more sophisticated techniques. For example, <strong>distributed output caching</strong> (storing full-rendered pages or API responses) or using an in-memory cache on each application instance for ultra-hot data, combined with a background sync/expiration strategy. Also, <strong>browser caching</strong> and cache headers become important &#8211; ensure your static content is cacheable by browsers and proxies. </p></li></ul><p>To conclude, caching is a good scalability solution for growth, but it is not enough if we have a large number of messages to send or receive between nodes. And here is asynchronous messaging to save us.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hnPO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hnPO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hnPO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hnPO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hnPO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hnPO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg" width="800" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;What is CDN? - by Dr Milan Milanovi&#263;&quot;,&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="What is CDN? - by Dr Milan Milanovi&#263;" title="What is CDN? - by Dr Milan Milanovi&#263;" srcset="https://substackcdn.com/image/fetch/$s_!hnPO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hnPO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hnPO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hnPO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddaa657-6e63-44f9-9daf-4f1ee9e9cf95_800x398.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Content Delivery Network (CDN)</figcaption></figure></div><blockquote><p><em>&#128073;  Lern more about <strong>how CDN works:</strong> </em></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:155157123,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-is-cdn&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;What is CDN?&quot;,&quot;truncated_body_text&quot;:&quot;Have you ever wondered how fast Netflix is when streaming a movie to your house? There is one component that is very important here, and it is called CDN (Content Delivery Network). It is a network of servers that move data fast through the network using cache servers and edge servers in&quot;,&quot;date&quot;:&quot;2025-01-30T16:01:56.297Z&quot;,&quot;like_count&quot;:67,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, practical insights on software engineering and leadership. Read by engineers across startups and big tech every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;color&quot;:null}}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/what-is-cdn?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">What is CDN?</div></div><div class="embedded-post-body">Have you ever wondered how fast Netflix is when streaming a movie to your house? There is one component that is very important here, and it is called CDN (Content Delivery Network). It is a network of servers that move data fast through the network using cache servers and edge servers in&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 67 likes &#183; 2 comments &#183; Dr Milan Milanovi&#263;</div></a></div></blockquote><h3>Decoupling with async messaging</h3><p>Large systems often transition to&nbsp;<strong>decoupled, asynchronous architectures</strong>&nbsp;at this point. The idea is to break up the app&#8217;s functionality into components or services that communicate via messaging rather than direct calls. Why? Because it helps to isolate parts of the system and scale them independently, and it smooths out traffic spikes by queuing work.</p><p>A common approach is to introduce a&nbsp;<strong>message queue or bus</strong>&nbsp;(e.g., <a href="https://azure.microsoft.com/en-us/products/service-bus">Azure Service Bus</a>, <a href="https://azure.microsoft.com/en-us/products/storage/queues">Azure Storage Queues</a>, or&nbsp;<a href="https://azure.microsoft.com/en-us/products/event-hubs">Azure Event Hubs</a>/<a href="https://azure.microsoft.com/en-us/products/event-grid">Event Grid</a> for pub-sub). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z6Ep!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 424w, https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 848w, https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 1272w, https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png" width="600" height="295" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:295,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;QueueConcepts&quot;,&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="QueueConcepts" title="QueueConcepts" srcset="https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 424w, https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 848w, https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 1272w, https://substackcdn.com/image/fetch/$s_!Z6Ep!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c55f4-3566-415e-9d36-6c1765605cd2_600x295.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Service Bus queue (source: <a href="https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-portal">Microsoft</a>)</figcaption></figure></div><p>For example, suppose your app allows users to upload a photo, which you then process (such as resizing or filtering). At 100k+ users, processing that data inline (synchronously when they upload) could slow down response times and tie up web servers. </p><p>Instead, you let the web server quickly upload the photo to storage, drop a message onto a <strong>queue</strong> saying &#8220;<em>process this photo</em>,&#8221; and immediately respond to the user, &#8220;<em>Photo is being processed</em>&#8221;. A separate <strong>worker process</strong> (or <a href="https://azure.microsoft.com/en-us/products/functions">Azure Function</a>) reads from the queue and handles the CPU-intensive image processing asynchronously (serverless). </p><p>This way, your front-end stays snappy even under heavy load &#8211; work is offloaded to background workers that can scale out independently. If processing jobs pile up, you can increase the number of consumers (workers) without affecting the web servers. </p><p>This <strong>decoupling</strong> via a message queue makes the system more resilient and scalable. </p><p>Azure provides multiple options here: </p><ul><li><p><strong><a href="https://azure.microsoft.com/en-us/products/functions">Azure Functions</a> + <a href="https://azure.microsoft.com/en-us/products/storage/queues">Azure Queue storage</a></strong> for simple scenarios, </p></li><li><p><strong><a href="https://azure.microsoft.com/en-us/products/service-bus">Azure Service Bus</a></strong> for more advanced messaging (guaranteed delivery, topics/subscriptions), or </p></li><li><p><strong><a href="https://azure.microsoft.com/en-us/products/event-grid">Azure Event Grid</a></strong> for broadcast-style eventing. </p></li></ul><p>Here is the image that depicts Azure messaging services selection, with typical use cases for each service.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z3yK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z3yK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 424w, https://substackcdn.com/image/fetch/$s_!Z3yK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 848w, https://substackcdn.com/image/fetch/$s_!Z3yK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 1272w, https://substackcdn.com/image/fetch/$s_!Z3yK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z3yK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png" width="1182" height="1242" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1242,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:193336,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.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_!Z3yK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 424w, https://substackcdn.com/image/fetch/$s_!Z3yK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 848w, https://substackcdn.com/image/fetch/$s_!Z3yK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 1272w, https://substackcdn.com/image/fetch/$s_!Z3yK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83768ba3-0f4a-4217-89e5-7818a554407a_1182x1242.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Messaging Service Selection</figcaption></figure></div><p>In general, we should use <strong>queues </strong>for the following scenarios:</p><ul><li><p>Email notifications</p></li><li><p>Processing uploaded files</p></li><li><p>Image processing</p></li><li><p>Report generation</p></li><li><p>Any long-running tasks, such as batch operations</p></li></ul><h3>Microservices and SOA</h3><p>Along with asynchronous processing, many systems start breaking the monolith into <strong>microservices</strong> or at least distinct services around this stage. It might not be a full-fledged microservice architecture yet, but key domains of the application could become separate deployable units (for example, the user authentication service, the billing service, etc.). </p><p>The motivation is both <strong>organizational</strong> (different teams can own different services) and <strong>technical</strong> (each service can scale independently, and a problem in one service will not directly impact another). </p><p>Start by identifying natural boundaries, and Modular Monolith is already helping you with this. User management, product catalog, order processing, and notifications are obvious candidates. But here's the critical part: don't decompose everything at once. Extract one service, run it for a month, learn from the experience, and then extract the next.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!imQB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!imQB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 424w, https://substackcdn.com/image/fetch/$s_!imQB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 848w, https://substackcdn.com/image/fetch/$s_!imQB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 1272w, https://substackcdn.com/image/fetch/$s_!imQB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!imQB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png" width="1456" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:893430,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.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_!imQB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 424w, https://substackcdn.com/image/fetch/$s_!imQB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 848w, https://substackcdn.com/image/fetch/$s_!imQB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 1272w, https://substackcdn.com/image/fetch/$s_!imQB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590c0b42-e6df-4692-8894-3af66b44ebfb_3929x2429.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Microservice Architecture</figcaption></figure></div><p>If you opt for this route on Azure, you have several options, including deploying services as separate Azure App Service applications, containerizing them and using <strong><a href="https://azure.microsoft.com/en-us/products/kubernetes-service">Azure Kubernetes Service (AKS)</a>, <a href="https://azure.microsoft.com/en-us/products/container-instances">Azure Container Instances</a>,</strong> or <strong><a href="https://azure.microsoft.com/en-us/products/container-apps">Azure Container Apps</a></strong>, or writing them as serverless functions. Azure Kubernetes Service in 2025 is mature. A production cluster with 3 nodes costs about $400/month and can run dozens of microservices.</p><p>Here is the short overview of Azure Container Service selection:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uG-4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uG-4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 424w, https://substackcdn.com/image/fetch/$s_!uG-4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 848w, https://substackcdn.com/image/fetch/$s_!uG-4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 1272w, https://substackcdn.com/image/fetch/$s_!uG-4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uG-4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png" width="1122" height="1162" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1162,&quot;width&quot;:1122,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:178211,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.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_!uG-4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 424w, https://substackcdn.com/image/fetch/$s_!uG-4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 848w, https://substackcdn.com/image/fetch/$s_!uG-4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 1272w, https://substackcdn.com/image/fetch/$s_!uG-4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18b8ff6-8bc6-4833-bd5f-594541e28cd1_1122x1162.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Container Service Selection</figcaption></figure></div><p>The right choice depends on the complexity of each service and your team&#8217;s operational maturity with containers versus PaaS, but the key is the <strong>service boundary</strong> itself. </p><p>For instance, at 500k users, you might carve out your search functionality into its own service because it&#8217;s resource-intensive &#8211; that service could use <a href="https://azure.microsoft.com/en-us/products/cosmos-db">Azure Cosmos DB</a> or <a href="https://learn.microsoft.com/en-us/azure/search/search-what-is-azure-search">Azure AI Search</a> behind it.</p><blockquote><p><em>&#128073;  Read more about <strong>Microservices</strong>: </em></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:138695078,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-is-microservice-architecture&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;What is Microservice Architecture?&quot;,&quot;truncated_body_text&quot;:&quot;Microservice architecture has revolutionized how companies build and scale software. Giants like Netflix and Amazon leverage it to deliver new features rapidly and efficiently. But what exactly is microservice architecture, and why does it matter?&quot;,&quot;date&quot;:&quot;2023-11-23T16:00:51.613Z&quot;,&quot;like_count&quot;:42,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, practical insights on software engineering and leadership. Read by engineers across startups and big tech every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;color&quot;:null}}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/what-is-microservice-architecture?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">What is Microservice Architecture?</div></div><div class="embedded-post-body">Microservice architecture has revolutionized how companies build and scale software. Giants like Netflix and Amazon leverage it to deliver new features rapidly and efficiently. But what exactly is microservice architecture, and why does it matter&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 42 likes &#183; 2 comments &#183; Dr Milan Milanovi&#263;</div></a></div></blockquote><h3>Observability and monitoring</h3><p>With many moving parts, <strong>observability</strong> is crucial. At this scale, you should have comprehensive logging, metrics, and tracing in place. Azure&#8217;s <strong><a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview">Application Insights</a></strong> and <strong><a href="https://learn.microsoft.com/en-us/azure/azure-monitor/fundamentals/overview">Azure Monitor</a></strong> become invaluable. </p><p>They can collect logs from all your App Service instances, track metrics such as request rates, CPU, and memory usage, and alert you to issues (e.g., if the 95th percentile response time exceeds a threshold). </p><p>Monitoring isn&#8217;t just for diagnosing outages. It helps you find performance bottlenecks before they impact all users. Organizations that actively monitor see significantly less downtime on average. </p><p>For example, you can set up Application Insights to ping your API endpoints from different regions and alert if the response time or error rate exceeds a specified limit. </p><p>You can also use <strong><a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/distributed-trace-data">distributed tracing</a></strong> (which App Insights supports) to follow how a request flows through multiple services, which becomes important as microservices proliferate.</p><p>The general recommendations are to set up alerts for everything that matters:</p><ul><li><p>P99 latency &gt; 500ms</p></li><li><p>Error rate &gt; 1%</p></li><li><p>Cost anomaly &gt; 20% daily</p></li><li><p>Database DTU &gt; 80%</p></li><li><p>Queue depth &gt; 10,000 messages</p></li></ul><p>Here is the Application map view of the Application Insights.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_6MZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_6MZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 424w, https://substackcdn.com/image/fetch/$s_!_6MZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 848w, https://substackcdn.com/image/fetch/$s_!_6MZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 1272w, https://substackcdn.com/image/fetch/$s_!_6MZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_6MZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png" width="1456" height="1005" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1005,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A screenshot of the Azure Monitor Application Insights user interface displaying an application map.&quot;,&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="A screenshot of the Azure Monitor Application Insights user interface displaying an application map." title="A screenshot of the Azure Monitor Application Insights user interface displaying an application map." srcset="https://substackcdn.com/image/fetch/$s_!_6MZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 424w, https://substackcdn.com/image/fetch/$s_!_6MZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 848w, https://substackcdn.com/image/fetch/$s_!_6MZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 1272w, https://substackcdn.com/image/fetch/$s_!_6MZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6f689c-aeeb-4485-9523-09ad8e81e08b_2401x1658.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Application Insights (source: <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview">Microsoft</a>)</figcaption></figure></div><h3>Cost optimizations</h3><p>At this level, we should also make cost optimizations, as our Cloud bill could be over $ 100,000 per month. Here are a few things you can do in Azure:</p><ol><li><p><strong>Lifecycle policies for storage</strong>. We can migrate old data from storage to lower-cost tiers, such as the Cool tier (which offers a 50% cost reduction) or the Archive tier (which offers a 95% cost reduction).</p></li><li><p><strong>Hybrid licensing benefits</strong>. We can use reserved instances for a 70%+ discount for predictable workloads, or spot VMs for batch processing with a 90% discount.</p></li><li><p><strong>Using mixed compute pools</strong>. Combine reserved instances for steady workloads with spot instances for batch jobs. This keeps critical workloads stable while letting you run flexible jobs at deep discounts.</p></li><li><p><strong>Reduce usage. </strong>Optimize the amount and size of resources while maintaining the application's performance (e.g., trim instances, downsize storage, simplify services).</p></li><li><p><strong>Terminate idle resources</strong>. Determine whether resources, such as instances, databases, or storage volumes, are underused or idle and terminate them.</p></li><li><p><strong>Right-sizing</strong>. Adapt instance sizes to your applications' requirements.</p></li><li><p><strong>Shutdown resources during inactive periods</strong>. Utilize automated procedures or schedules to deactivate non-essential resources when they are not in use.</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_!wRWL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wRWL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 424w, https://substackcdn.com/image/fetch/$s_!wRWL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 848w, https://substackcdn.com/image/fetch/$s_!wRWL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 1272w, https://substackcdn.com/image/fetch/$s_!wRWL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wRWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png" width="1456" height="1943" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1943,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1288421,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.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_!wRWL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 424w, https://substackcdn.com/image/fetch/$s_!wRWL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 848w, https://substackcdn.com/image/fetch/$s_!wRWL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 1272w, https://substackcdn.com/image/fetch/$s_!wRWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062f4423-357f-48a9-b62e-70ebea442cce_3574x4769.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Azure offers different tools that we can use in this regard, such as:</p><ul><li><p><strong><a href="https://azure.microsoft.com/en-us/pricing/calculator/">Azure Pricing Calculator</a></strong> (used to estimate the cost of Azure services). </p></li><li><p><strong><a href="https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/quick-acm-cost-analysis">Azure Cost Analysis</a></strong> (assists you in breaking down the specifics of your Azure spending)</p></li><li><p><strong><a href="https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/cost-mgt-alerts-monitor-usage-spending">Azure Cost Alerts and Budgets</a></strong>, where you can define certain cloud budgets and track expense thresholds. </p></li></ul><p>Also, there is&nbsp;<strong><a href="https://azure.microsoft.com/en-us/products/advisor">Azure Advisor</a></strong>, a tool that examines Azure idle resources and utilizes telemetry to provide helpful, customized recommendations for you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UySc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UySc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 424w, https://substackcdn.com/image/fetch/$s_!UySc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 848w, https://substackcdn.com/image/fetch/$s_!UySc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 1272w, https://substackcdn.com/image/fetch/$s_!UySc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UySc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png" width="1456" height="831" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:831,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Azure Advisor &#8211; Azure Best Practices | Microsoft Azure&quot;,&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="Azure Advisor &#8211; Azure Best Practices | Microsoft Azure" title="Azure Advisor &#8211; Azure Best Practices | Microsoft Azure" srcset="https://substackcdn.com/image/fetch/$s_!UySc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 424w, https://substackcdn.com/image/fetch/$s_!UySc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 848w, https://substackcdn.com/image/fetch/$s_!UySc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 1272w, https://substackcdn.com/image/fetch/$s_!UySc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eba3ada-0f07-4a09-962b-c27d94a4aba3_2000x1142.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Advisor</figcaption></figure></div><p>Ultimately, what is important is to set budget alerts and monitor your spending on a daily basis. Do a review of bills weekly. </p><p>And assign cost centers to teams and <strong>inform engineers of the cost implications of their decisions.</strong></p><h3>Database strategies</h3><p>One hundred to half a million users will push even a beefy relational database. Beyond read replicas, you must be considering <strong>horizontal</strong> <strong>sharding</strong> at this point. This basically means splitting the database into multiple databases, each holding a subset of the data. </p><p>Sharding is a form of horizontal scaling for databases, where user accounts are divided into separate shards. For example, user accounts with IDs ending in 0-3 are assigned to &#8220;DB shard 0,&#8221; 4-7 to &#8220;DB shard 1,&#8221; and so on. </p><p>In particular, we have the following sharding strategies:</p><ul><li><p><strong>Lookup (directory / virtual shards). </strong>Route <code>key &#8594; virtual shard &#8594; physical shard</code>. You can rebalance by remapping virtual shards without touching application code. Ideal for multi-tenant SaaS where a tenant&#8217;s data stays together. Cost: an extra hop and a directory that must stay highly available.</p></li><li><p><strong>Range. </strong>Group sequential keys on the same shard (time, alphabet, numeric ranges). Range scans and &#8220;last N&#8221; queries remain local and fast; cold ranges are archived cleanly. But it comes with a risk: hot ranges and heavier split/merge operations when the load bunches up.</p></li><li><p><strong>Hash. </strong>Hash the shard key to spread writes and storage evenly. Routing is deterministic and simple at the client or gateway. Yet, there is a tradeoff: related keys scatter, so ranges and joins fan out. Use consistent hashing with many virtual nodes to soften the rebalancing pain.</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_!CbBu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CbBu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 424w, https://substackcdn.com/image/fetch/$s_!CbBu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 848w, https://substackcdn.com/image/fetch/$s_!CbBu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 1272w, https://substackcdn.com/image/fetch/$s_!CbBu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CbBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png" width="1456" height="1282" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1282,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:658184,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.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_!CbBu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 424w, https://substackcdn.com/image/fetch/$s_!CbBu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 848w, https://substackcdn.com/image/fetch/$s_!CbBu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 1272w, https://substackcdn.com/image/fetch/$s_!CbBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a7d0c7a-80ac-4b66-9a45-ced6aef151f1_2291x2017.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Sharding strategies (source: <a href="https://learn.microsoft.com/en-us/azure/architecture/patterns/sharding">Microsoft</a>)</figcaption></figure></div><p>Azure doesn&#8217;t automatically shard your SQL DB (except in Cosmos DB, which has partitioning built in), so you&#8217;d implement this at the application level or use libraries to help, which is not an easy task. </p><p>Note that sharding <strong>adds complexity</strong> (you have to route queries to the right shard, and you lose the ability to easily join across all data), so it&#8217;s usually a last resort when a single database can&#8217;t handle the write load or total data volume. </p><p>Another strategy is to <strong>offload specific data</strong> to specialized stores: For example, move user session storage or audit logs to a <strong>NoSQL database</strong> so they don&#8217;t burden your primary relational DB. <strong><a href="https://learn.microsoft.com/en-us/azure/cosmos-db/partitioning-overview">Azure Cosmos DB</a></strong> can be utilized for tasks such as activity feeds, caching user profile copies globally, metadata/lookup tables, or storing large JSON documents, while orders and transactions are maintained in Azure SQL. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g08d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g08d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 424w, https://substackcdn.com/image/fetch/$s_!g08d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 848w, https://substackcdn.com/image/fetch/$s_!g08d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 1272w, https://substackcdn.com/image/fetch/$s_!g08d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g08d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png" width="1072" height="963" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:963,&quot;width&quot;:1072,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:222064,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.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_!g08d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 424w, https://substackcdn.com/image/fetch/$s_!g08d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 848w, https://substackcdn.com/image/fetch/$s_!g08d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 1272w, https://substackcdn.com/image/fetch/$s_!g08d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b809310-9991-48d4-bf2f-156fb5ced860_1072x963.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Partitioning in Cosmos DB</figcaption></figure></div><blockquote><p><strong>&#128256; Trade-off: SQL vs NoSQL (Relational vs Non-Relational):</strong> <em>At this scale, your choice of database starts to matter for future growth. Traditional <strong>SQL databases</strong> (Azure SQL, PostgreSQL, etc.) are excellent for structured data and complex queries. They have decades of tooling and familiarity behind them and often suffice for a long time. </em></p><p><em><strong>NoSQL databases</strong> (Azure Cosmos DB, Cassandra, MongoDB, etc.) offer schema flexibility and horizontal scaling from the get-go, but often at the cost of losing JOINs and sometimes consistency guarantees. </em></p><p><em>Many successful systems (even at millions of users) still rely on sharded or heavy-duty relational databases. </em></p><p><em>However, keep an eye on your <strong>data access patterns</strong>. If you foresee needing massive scale or have highly unstructured data, starting with a NoSQL service for certain parts (such as using Cosmos DB for a JSON document store) could pay off. </em></p><p><em>Often, a mix-and-match approach (<strong>polyglot persistence</strong>) is the healthiest: use SQL where data integrity and relationships are key, and NoSQL where you need big scale or schemaless flexibility. </em></p><p><em>To understand this topic better, read <strong><a href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing">my review of the DDIA book</a></strong>: </em></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:158354418,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;What I learned from the book Designing Data-Intensive Applications&quot;,&quot;truncated_body_text&quot;:&quot;After two decades in software engineering, I thought I had a solid understanding of various topics, including NoSQL, Big Data, transactions, sharding, and more.&quot;,&quot;date&quot;:&quot;2025-06-19T15:02:29.686Z&quot;,&quot;like_count&quot;:661,&quot;comment_count&quot;:27,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, practical insights on software engineering and leadership. Read by engineers across startups and big tech every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">What I learned from the book Designing Data-Intensive Applications</div></div><div class="embedded-post-body">After two decades in software engineering, I thought I had a solid understanding of various topics, including NoSQL, Big Data, transactions, sharding, and more&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">10 months ago &#183; 661 likes &#183; 27 comments &#183; Dr Milan Milanovi&#263;</div></a></div></blockquote><h2>6. 1,000,000+ Users &#8211; Global scale</h2><p>Reaching a million users is a hallmark of a truly large-scale system. At this stage, you&#8217;re likely serving users globally, and the architecture must handle&nbsp;<strong>high concurrency, large data volumes, and multi-region deployments</strong>. </p><p>The focus shifts to <strong>globally distributed architecture</strong> and fine-grained scaling of services.</p><h3>Multi-region deployment</h3><p>With a million users (especially if many are active concurrently), a single region may not be sufficient for either capacity or latency. You&#8217;ll start deploying your system to <strong>multiple Azure regions</strong> (e.g., one in the Americas, one in Europe, one in Asia) to bring the service closer to users and provide redundancy. </p><p><strong><a href="https://learn.microsoft.com/en-us/azure/frontdoor/front-door-overview">Azure Front Door</a></strong> becomes extremely useful now. It&#8217;s a global entry point that can route each user&#8217;s request to the nearest region based on latency or geography. For example, a user in London will access the Europe deployment, someone in California will access the US West deployment, and so on. </p><p>This <strong>significantly reduces latency</strong> and balances the load across regions. </p><blockquote><p>&#10145;&#65039; <em>Check the <strong>modern latency pyramid numbers</strong>:</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_!e15k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e15k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e15k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e15k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e15k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e15k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg" width="680" height="383" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:383,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!e15k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e15k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e15k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e15k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdb98fb5-da88-4cfe-ad9b-8b2138211c7c_680x383.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Modern latency numbers</figcaption></figure></div></blockquote><p><strong><a href="https://learn.microsoft.com/en-us/azure/frontdoor/front-door-overview">Azure Front Door</a></strong> also provides instant failover: if one region goes down, Front Door can automatically direct users to a healthy region. An alternative or complement is <strong><a href="https://learn.microsoft.com/en-us/azure/traffic-manager/traffic-manager-overview">Azure Traffic Manager</a></strong>, which provides DNS-based routing to direct users to different region endpoints (see the bonus section for a better understanding of Azure Load Balancing options).</p><p>The Traffic Manager is slightly slower to fail over (due to DNS caching), but it can still function at other routing levels (e.g., for non-HTTP services). Often, Front Door is sufficient for most web applications, providing global load balancing and serving as a CDN/cache for static content as well. </p><p>Here is the Azure architecture for multi-region, active-active deployment with Azure Front Door routing traffic globally.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0MQ_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0MQ_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 424w, https://substackcdn.com/image/fetch/$s_!0MQ_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 848w, https://substackcdn.com/image/fetch/$s_!0MQ_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 1272w, https://substackcdn.com/image/fetch/$s_!0MQ_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0MQ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png" width="1456" height="1007" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0199af3a-57ec-4654-9340-627507922719_1462x1011.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1007,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:168791,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.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_!0MQ_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 424w, https://substackcdn.com/image/fetch/$s_!0MQ_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 848w, https://substackcdn.com/image/fetch/$s_!0MQ_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 1272w, https://substackcdn.com/image/fetch/$s_!0MQ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0199af3a-57ec-4654-9340-627507922719_1462x1011.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Multi-region active-active deployment with Azure Front Door routing traffic globally</figcaption></figure></div><h3>Data consistency issues</h3><p>However, running in multiple regions introduces <strong>challenges to data consistency</strong>. The ideal scenario is <em>for <strong>active-active</strong></em>&nbsp;regions, where both regions serve read and write traffic. But if you have a single primary database, you can&#8217;t easily write from two places without conflict. </p><p>Here, you face a trade-off in <strong>consistency vs. availability </strong>(more on this later). Azure offers <strong><a href="https://azure.microsoft.com/en-us/products/cosmos-db">Cosmos DB</a>,</strong> which supports multi-region writes with tunable consistency (from strong to eventual). If your application can be built or refactored to use Cosmos DB for its main data, you can achieve multi-master writes. Here, users in each region write to their local Cosmos instance, and Cosmos syncs the data globally with the chosen consistency level. </p><p>This gives low write latency everywhere, at the cost of some complexity (and careful thinking about conflicts if using anything weaker than strong consistency).</p><p>If sticking with a relational database like Azure SQL, a common approach is <em>to use <strong>active-passive</strong></em>&nbsp;with fast failover: for instance, designate one region as the write master (say US-East) and have a readable secondary in Europe (using geo-replication). </p><p>All writes go to US-East, and perhaps most reads as well, but European users read from the local replica for speed. In normal operation, Europe might still experience higher latency on writes (as they must go to the US), but reads are fast. <strong>In the event of a failure of US-East, you can promote the EU replica to primary. </strong></p><p>This scenario is complex to handle in code (suddenly your write endpoint changes), but <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/failover-group-sql-db?view=azuresql">Azure SQL&#8217;s failover groups</a> can automate the connection string routing on failover. The downside is that you&#8217;re not fully utilizing both regions for writes. One is mostly a hot standby for writes.</p><p>Another pattern is <strong>partitioning by region</strong>: essentially, sharding by geography &#8211; e.g., US users&#8217; data is stored in the US database, and EU users&#8217; data is stored in the EU database. The app routes user requests to the database of the relevant region. This avoids cross-region writes entirely. </p><p>However, if a region fails, the users&#8217; data is not accessible until you either restore it from a backup elsewhere or have replication to another region. Often, a hybrid is used: partition data by region, but also replicate to a backup region for disaster recovery.</p><blockquote><p><strong>&#128256;Trade-off: Consistency vs Availability:</strong> <em>A major architectural decision at a global scale is how you balance the CAP theorem concerns. </em></p><p><em>If you use Cosmos DB across regions, you might choose an <strong>eventual consistency</strong> mode to get high availability and partition tolerance, with the trade-off that two regions might see data diverge for a moment. If <strong>strong consistency</strong> is required (e.g., bank account balances), you might sacrifice some availability or route all writes to one region.</em></p><p><em>These are tough choices that architects must make because there&#8217;s no one-size-fits-all. Azure gives you the tools (from strongly consistent databases in one region to eventually consistent multi-region NoSQL) to pick your preference. </em></p><p><em>The guiding principle is to <strong>know your domain</strong>: which data can be eventually consistent and which absolutely cannot. </em></p><p><em>Often, a hybrid approach works (strong consistency for core transactions, eventual consistency for less critical data like analytics or caching).</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_!55BP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!55BP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!55BP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!55BP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!55BP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!55BP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg" width="700" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&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_!55BP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!55BP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!55BP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!55BP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5483163-f3a3-4a26-bf54-71c02e6e7c13_700x394.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><h3>Full microservices &amp; domain decomposition</h3><p>At 1 million users, it&#8217;s very likely that you have broken the system into multiple services. Here, you might be using an orchestrator like <strong><a href="https://azure.microsoft.com/en-us/products/kubernetes-service">Azure Kubernetes Service (AKS)</a></strong> to run dozens of microservice containers. It is an Azure-managed service on top of Kubernetes.</p><p>Or you&#8217;ve gone serverless, with a suite of <a href="https://azure.microsoft.com/en-us/products/functions">Azure Functions</a> and <a href="https://azure.microsoft.com/en-us/products/logic-apps">Logic Apps</a> handling various components. </p><p>The architecture could be an elaborate <strong>SOA (service-oriented architecture)</strong> with APIs orchestrated by an API Gateway (<a href="https://azure.microsoft.com/en-us/products/api-management">Azure API Management</a> service could sit in front of your microservice APIs to unify them and handle cross-cutting concerns like auth, rate limiting, etc.). </p><p><strong>Each service might have its own database</strong> (often recommended to avoid contention and allow independent scaling). For example, the user profile service has its own Cosmos DB container, the orders service has its own SQL database, and the analytics service writes to its own data warehouse, among others. </p><p>This is the <strong>microservices principle of single responsibility</strong>, where each service manages its own data and logic. The benefit is that you remove the previous bottleneck of having a single giant database for everything, and each piece can scale out as needed. </p><p>The challenge is that you now have <strong>distributed transactions</strong> (which you often avoid by using eventual consistency and compensating actions) and a lot more moving parts to monitor.</p><p>Here is the overview of the overall Microservice architecture:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jqcs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jqcs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 424w, https://substackcdn.com/image/fetch/$s_!jqcs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 848w, https://substackcdn.com/image/fetch/$s_!jqcs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 1272w, https://substackcdn.com/image/fetch/$s_!jqcs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jqcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png" width="1456" height="1633" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1633,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2087909,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.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_!jqcs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 424w, https://substackcdn.com/image/fetch/$s_!jqcs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 848w, https://substackcdn.com/image/fetch/$s_!jqcs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 1272w, https://substackcdn.com/image/fetch/$s_!jqcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e4b2d-c260-455b-9f56-efefab160c47_5404x6062.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Complete Microservice Architecture Blueprint</figcaption></figure></div><blockquote><p><em>&#128073; Learn more about <strong>Microservice architectures</strong>: </em></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:138695078,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-is-microservice-architecture&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;What is Microservice Architecture?&quot;,&quot;truncated_body_text&quot;:&quot;Microservice architecture has revolutionized how companies build and scale software. Giants like Netflix and Amazon leverage it to deliver new features rapidly and efficiently. But what exactly is microservice architecture, and why does it matter?&quot;,&quot;date&quot;:&quot;2023-11-23T16:00:51.613Z&quot;,&quot;like_count&quot;:42,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 47K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold a PhD in Computer Science and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Clear, practical insights on software engineering and leadership. Read by engineers across startups and big tech every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&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;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/what-is-microservice-architecture?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">What is Microservice Architecture?</div></div><div class="embedded-post-body">Microservice architecture has revolutionized how companies build and scale software. Giants like Netflix and Amazon leverage it to deliver new features rapidly and efficiently. But what exactly is microservice architecture, and why does it matter&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 42 likes &#183; 2 comments &#183; Dr Milan Milanovi&#263;</div></a></div></blockquote><h3>Event-driven architecture</h3><p>With numerous services and a significant amount of data circulating, a central technique is <strong>event-driven communication</strong>. Instead of all services making synchronous API calls for every interaction (which creates a web of dependencies), services publish events (e.g., &#8220;UserRegistered&#8221;, &#8220;OrderPlaced&#8221;) to a message broker, and other services subscribe if they need to react. </p><p><strong><a href="https://azure.microsoft.com/en-us/products/event-grid">Azure Event Grid</a></strong> or <strong><a href="https://azure.microsoft.com/en-us/products/service-bus">Azure Service Bus</a></strong> topics are great for this publish-subscribe model. For instance, when a new user registers, the user service saves the information to its database, then publishes a &#8220;UserRegistered&#8221; event. Other services, for example, the welcome email service, the analytics service, and perhaps a recommendation engine, all receive that event and perform their respective tasks (sending emails, logging analytics, building recommendations) independently. </p><p>This decoupling means the user service isn&#8217;t waiting on all those actions, and a failure in one doesn&#8217;t affect the main flow. It&#8217;s the logical extension of the async decoupling we started at 100k+ users, but at a wider scale across all microservices.</p><p>Note that event-driven architecture sounds elegant, services react to small &#8220;something happened&#8221; signals instead of direct calls. <strong>But the trade-offs are real.</strong> Message formats evolve over time, and even a tiny schema change can break downstream consumers if not managed carefully. Debugging becomes harder because there&#8217;s no straight call stack to follow; an event may vanish, get delayed, or trigger a cascade you can&#8217;t easily trace. Reliability also brings headaches: events may be lost or duplicated, unless you build for idempotency and dead-letter handling.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_ViB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_ViB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 424w, https://substackcdn.com/image/fetch/$s_!_ViB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 848w, https://substackcdn.com/image/fetch/$s_!_ViB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 1272w, https://substackcdn.com/image/fetch/$s_!_ViB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_ViB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png" width="1064" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b12bd597-f425-4321-ba27-77129907436d_1064x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:1064,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88889,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.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_!_ViB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 424w, https://substackcdn.com/image/fetch/$s_!_ViB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 848w, https://substackcdn.com/image/fetch/$s_!_ViB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 1272w, https://substackcdn.com/image/fetch/$s_!_ViB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12bd597-f425-4321-ba27-77129907436d_1064x460.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Event-Driven Architecture</figcaption></figure></div><h3>Observability at scale</h3><p>Now your monitoring needs to be <strong>smart</strong>. It&#8217;s not feasible to manually watch dozens of dashboards; you need automated anomaly detection and alerting. </p><p><strong><a href="https://learn.microsoft.com/en-us/azure/azure-monitor/fundamentals/overview">Azure Monitor</a></strong> can integrate with Machine Learning to detect unusual patterns (e.g., sudden spikes in 5xx errors in a single service) and alert on call chains that exceed specified latencies. </p><p>Logging should be centralized (using <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/fundamentals/overview">Azure Monitor</a> or a third-party SIEM solution) to enable searching across services. Consider establishing&nbsp;<strong>an SRE (Site Reliability Engineering) regime</strong>&nbsp;of SLOs (Service Level Objectives) for key operations (such as login and checkout) and tracking error budgets. This is essentially a formal process for determining when to halt feature development and address reliability issues. </p><p>The tooling in Azure (<a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview">Application Insights</a>, <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/logs/log-analytics-overview">Log Analytics</a>, etc.) can support this, but it requires effort to configure the right telemetry. At 1 million users, any single-hour outage or performance blip can impact thousands of users and make headlines, so proactivity is crucial.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QaMZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QaMZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 424w, https://substackcdn.com/image/fetch/$s_!QaMZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 848w, https://substackcdn.com/image/fetch/$s_!QaMZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 1272w, https://substackcdn.com/image/fetch/$s_!QaMZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QaMZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg" width="2809" height="1527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1527,&quot;width&quot;:2809,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Azure Monitor overview - Azure Monitor | Microsoft Learn&quot;,&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="Azure Monitor overview - Azure Monitor | Microsoft Learn" title="Azure Monitor overview - Azure Monitor | Microsoft Learn" srcset="https://substackcdn.com/image/fetch/$s_!QaMZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 424w, https://substackcdn.com/image/fetch/$s_!QaMZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 848w, https://substackcdn.com/image/fetch/$s_!QaMZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 1272w, https://substackcdn.com/image/fetch/$s_!QaMZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc71fe27-8120-4d86-b635-8d12365cd273_2809x1527.svg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Monitor (source: <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/fundamentals/overview">Microsoft</a>)</figcaption></figure></div><h2>7. Beyond 1M+ Users</h2><p>Beyond a million users, you&#8217;re operating at <strong>planet scale</strong>. A very few systems reach this on their own (think of apps like Twitter, <a href="https://newsletter.techworld-with-milan.com/p/how-does-netflix-manage-to-show-you">Netflix</a>, or large SaaS platforms). At this level, all the principles discussed earlier become requirements, not options. </p><p>So, let&#8217;s recap and extend what a 1M+ user Azure architecture looks like:</p><ul><li><p><strong>Multi-region active-active architecture. </strong>You will be deployed in multiple Azure regions, serving traffic concurrently. Azure Front Door or Traffic Manager routes users to the nearest region and handles failover in real-time. Every region is a full stack or a shard of your service.</p></li><li><p><strong>Extensive redundancy and fault isolation.</strong> Each service and tier has redundancy. You use Availability Zones within regions and multiple regions for geo-redundancy. You design the system such that even if an entire region or zone is down, the system remains up (possibly in degraded mode). Fault isolation techniques are used, for instance, you might partition users into multiple <strong>scale units</strong> such that each unit serves a subset of users end-to-end (to contain the blast radius of failures)</p></li><li><p><strong>Sharded Data architectures.</strong> If you haven&#8217;t yet, with over 1 million users, you likely need to&nbsp;<strong>shard relational databases</strong>&nbsp;or heavily utilize Cosmos DB. You could have dozens of SQL databases, each holding a slice of your data (e.g., by user ID range or customer tenant). You&#8217;ll need a way to route queries to the right shard (a common approach is a shard map or hashing function). The <strong>complexity of managing many databases is high</strong>, where automation is required (for deployment, migrations, monitoring each shard, etc.). Azure&#8217;s hyperscale and elastic pool features can help manage multiple databases, but application logic is often required as well.</p></li><li><p><strong>Polyglot persistence. </strong>Different data needs different storage. You&#8217;re likely using multiple types of databases: SQL for core business data, NoSQL (Cosmos DB, Table Storage) for big scale and quick lookups, perhaps a graph database for relationship data, a time-series database for analytics, etc. This ensures each part of your workload uses the optimal storage engine.</p></li><li><p><strong>Edge computing and CDNs. </strong>At this scale, even the central cloud regions might not be enough. You might push certain logic to the edge. Azure offers&nbsp;<strong>Azure Edge Functions</strong>&nbsp;(running functions at edge locations) and, of course, CDNs for content delivery. You ensure that as much processing as possible (especially for user experience) happens geographically close to users.</p></li><li><p><strong>Automation and tooling:</strong> Everything is automated: infrastructure-as-code (Azure Resource Manager/Bicep or Terraform templates) is a must to replicate environments across regions. Continuous deployment pipelines are in place for safe, frequent releases. You likely invest in chaos engineering, which is intentionally injecting failures (with tools or custom scripts) to test the system&#8217;s resilience. </p></li></ul><p>Ultimately,&nbsp;<strong>serving over 1 million users is a continuous process</strong>. You don&#8217;t jump to this overnight, because it&#8217;s the accumulation of years of tuning and expanding. There is no &#8220;final architecture&#8221;, as you will continually refine based on new bottlenecks or new features. </p><p>The principles, however, remain consistent. A summary of the core principles that enable scaling into the millions: <strong>keep the web tier stateless, build redundancy at every tier, cache aggressively, support multiple active data centers, offload static content to CDNs, scale databases via sharding or replication, split services by domain, and invest heavily in monitoring/automation.</strong> </p><p>These ideas drive the world&#8217;s biggest architectures.</p><p>Here is the short recap of when you should scale your app:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!erZI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!erZI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 424w, https://substackcdn.com/image/fetch/$s_!erZI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 848w, https://substackcdn.com/image/fetch/$s_!erZI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!erZI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!erZI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png" width="570" height="737.9464285714286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1885,&quot;width&quot;:1456,&quot;resizeWidth&quot;:570,&quot;bytes&quot;:166214,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/155906581?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.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_!erZI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 424w, https://substackcdn.com/image/fetch/$s_!erZI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 848w, https://substackcdn.com/image/fetch/$s_!erZI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!erZI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc84c44f5-4dd8-46eb-9031-4c72da954a2d_1545x2000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">When to scale - a short decision matrix</figcaption></figure></div><h2>8. Conclusion</h2><p>We can say that the journey from one user to millions on Azure is about <strong>evolution, not revolution</strong>. At the start, simplicity and speed are your friends, which means a basic design to get you up and running. </p><p>As usage grows, you gradually <strong>layer in complexity</strong>: first separating concerns, then scaling out, then distributing across the globe and splitting into specialized components. </p><p>The art of architecture is about adding only what is needed, when it is needed, while keeping future needs in mind. Key milestones prompt key changes: a load balancer here, a cache there, partitioning data here, a new service there.</p><p>Through each stage, we applied fundamental design principles: </p><ul><li><p><strong>Statelessness</strong> for web scalability </p></li><li><p><strong>Horizontal scaling</strong> for resilience</p></li><li><p><strong>Caching</strong> for performance</p></li><li><p><strong>Auto-scaling</strong> for elasticity</p></li><li><p><strong>Decoupling</strong> for independence</p></li><li><p><strong>Observability</strong> for insight, and </p></li><li><p><strong>Data scaling techniques</strong> (replication, sharding, NoSQL) for throughput. </p></li></ul><p>Azure&#8217;s platform provides building blocks at every step, from App Service and Azure SQL for easy starts, to Azure Front Door and Cosmos DB for planetary scale. But tools alone don&#8217;t magically scale an app; architecture does.</p><p>Designing for millions of users means thinking <strong>in a distributed</strong>&nbsp;and&nbsp;<strong>failure-first manner</strong>: assume things will fail and design with backups and fallbacks. It means <strong>embracing eventual consistency</strong> where necessary and understanding the trade-offs (e.g., consistency vs. availability, simplicity vs. flexibility). </p><p>It also means constantly measuring and tuning. What works for 100k users might break at 1 million, so never stop testing and observing.</p><p>Ultimately, scaling to millions is challenging but achievable with a clear, stage-wise approach. </p><p>By evolving your architecture step by step and adhering to core principles, you can <strong>turn a simple app into a globally scalable service</strong>. The journey is long, but as an architect, it&#8217;s immensely rewarding to see your system handle growth gracefully. </p><p>Most importantly, you don't need hundreds of engineers. Instagram supported 30 million users with 13 engineers. Good architecture beats large teams every time.</p><p><strong>Start simple, measure everything, and scale what breaks.</strong></p><p>That's how you build for millions on Azure.</p><h2>Bonus: <strong>Azure Cloud Services Cheat Sheet</strong></h2><p>The image below provides an overview of the main Azure Cloud services in all key categories.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zwgy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zwgy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 424w, https://substackcdn.com/image/fetch/$s_!Zwgy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 848w, https://substackcdn.com/image/fetch/$s_!Zwgy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 1272w, https://substackcdn.com/image/fetch/$s_!Zwgy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zwgy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png" width="1080" height="1143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1143,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Azure Cloud Services Cheat Sheet&quot;,&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="Azure Cloud Services Cheat Sheet" title="Azure Cloud Services Cheat Sheet" srcset="https://substackcdn.com/image/fetch/$s_!Zwgy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 424w, https://substackcdn.com/image/fetch/$s_!Zwgy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 848w, https://substackcdn.com/image/fetch/$s_!Zwgy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 1272w, https://substackcdn.com/image/fetch/$s_!Zwgy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c266746-3589-46ea-b5a3-b850c941ae60_1080x1143.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Cloud Services Cheat Sheet</figcaption></figure></div><h2>Bonus 2: Azure Load Balancer Cheat Sheet</h2><p>The image below shows a selection algorithm for an Azure Load Balancer solution.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HkD1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HkD1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 424w, https://substackcdn.com/image/fetch/$s_!HkD1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 848w, https://substackcdn.com/image/fetch/$s_!HkD1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 1272w, https://substackcdn.com/image/fetch/$s_!HkD1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HkD1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png" width="1456" height="1854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1854,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Azure Cloud Load Balancer Cheat Sheet&quot;,&quot;title&quot;:&quot;Azure Cloud Load Balancer Cheat Sheet&quot;,&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="Azure Cloud Load Balancer Cheat Sheet" title="Azure Cloud Load Balancer Cheat Sheet" srcset="https://substackcdn.com/image/fetch/$s_!HkD1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 424w, https://substackcdn.com/image/fetch/$s_!HkD1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 848w, https://substackcdn.com/image/fetch/$s_!HkD1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 1272w, https://substackcdn.com/image/fetch/$s_!HkD1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1efd896f-6cbc-4f06-bd57-86b478b08787_2091x2663.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Azure Load Balancer Cheat Sheet</figcaption></figure></div><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong> &#8211; Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching an audience of founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>We are now close to <strong>50k subscribers</strong> (thank you!). Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[How to develop High Agency]]></title><description><![CDATA[What is it, why is it important and how to cultivate it]]></description><link>https://newsletter.techworld-with-milan.com/p/high-agency-what-separates-top-performers</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/high-agency-what-separates-top-performers</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 04 Sep 2025 15:01:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Um0X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever noticed how certain people manage to navigate obstacles with ease while others get stuck at the first sign of resistance? Some people seem to <em>always find a way</em> forward, even in challenging conditions.</p><p>This fundamental difference often boils down to a single trait: <strong>High Agency</strong>. </p><p>High-agency individuals possess a remarkable ability to take control of situations and produce desired outcomes, whereas low-agency individuals often feel at the mercy of circumstances.</p><p>In simple terms, a high-agency person doesn&#8217;t accept &#8220;no&#8221; for an answer &#8211; when told that something is impossible, it <strong>sparks</strong> a second dialogue in their mind about how to overcome the obstacle. </p><p>They believe that the stories others tell them about what can or cannot be done are <em>just stories</em>, not hard limits. Instead of waiting for perfect conditions or permission, they <em>find a way or make a way</em>.</p><p>This is something I knew for a long time myself, but I didn&#8217;t know what this trait is or what it is called. But I knew that when something is &#8220;impossible&#8221; for most people, it is a job for me.</p><p>In this issue, we aim to explore how the most successful people in the world possess a strong sense of agency, and also how you can develop this trait.</p><p>Particularly, we will talk about:</p><ol><li><p><strong>High vs low Agency mindset</strong>. Here we explore the difference between those who say "I can't because..." versus "I'll figure out how to..." when facing challenges. We will introduce the concept of high agency as being relentlessly resourceful and proactive rather than reactive.</p></li><li><p><strong>Why talent isn't enough</strong>. This section breaks down four types of people based on talent and agency levels: Game Changers, Frustrated Geniuses, Go-Getters, and Cogs in the Wheel.</p></li><li><p><strong>Why High Agency is so important</strong>. We examine the real-world impact of high agency in business, leadership, and startups. We will understand why companies actively seek this trait and how it correlates with career success and organizational effectiveness.</p></li><li><p><strong>How to spot High Agency people</strong>. We will provide practical indicators for identifying high agency individuals, including intellectual contradictions, geographic courage, and the "crisis test." It helps you recognize this quality in potential team members and mentors.</p></li><li><p><strong>How to cultivate a High Agency mindset</strong>. This section offers actionable strategies for developing high agency, including focusing on your circle of influence, adopting an ownership mindset, and reframing challenges as opportunities. </p></li></ol><p>So, let&#8217;s dive in.</p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. High vs low agency mindset</h2><p>This concept of &#8220;<strong>high agency</strong>&#8221; was popularized by economist <a href="https://en.wikipedia.org/wiki/Eric_Weinstein">Eric Weinstein</a> (managing director of Thiel Capital), who defined it as <em>&#8220;<a href="https://www.youtube.com/watch?v=8LPwyy4scAc">constantly looking for what is possible, in a kind of MacGyverish sort of way</a>&#8221;</em>. </p><p>In other words, high-agency individuals are <em>relentlessly resourceful</em> &#8211; a term Y Combinator&#8217;s <a href="https://x.com/paulg">Paul Graham</a> uses to describe the best startup founders. The opposite of this, as Graham quips, is simply being &#8220;hapless&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zu1G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zu1G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 424w, https://substackcdn.com/image/fetch/$s_!Zu1G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 848w, https://substackcdn.com/image/fetch/$s_!Zu1G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 1272w, https://substackcdn.com/image/fetch/$s_!Zu1G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zu1G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png" width="592" height="243" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:243,&quot;width&quot;:592,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!Zu1G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 424w, https://substackcdn.com/image/fetch/$s_!Zu1G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 848w, https://substackcdn.com/image/fetch/$s_!Zu1G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 1272w, https://substackcdn.com/image/fetch/$s_!Zu1G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda83cb4e-3599-4051-8b81-20f1454f57b7_592x243.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Paul Graham recently reposted this <a href="https://x.com/paulg/status/1885001767525499301">tweet</a> as the most inspiring sentence he has ever read</figcaption></figure></div><p>To understand high agency, it helps to contrast it with its inverse. How do people with low agency approach challenges compared to those with high agency? </p><p>Consider a simple work scenario:</p><ul><li><p><strong>&#128679; Low-Agency Mike </strong>would say, <em>&#8220;I can&#8217;t do this because&#8230;&#8221;</em> They immediately see reasons it&#8217;s impossible. For example: <em>&#8220;We don&#8217;t have enough resources,&#8221;</em> <em>&#8220;Nobody has ever done this before,&#8221;</em> or <em>&#8220;Management hasn&#8217;t given clear direction.&#8221;</em> </p><p></p><p>All these responses deflect responsibility and <strong>assume the outcome is out of their control</strong>.</p><p></p></li><li><p><strong>&#128640; High-Agency Peter </strong>would say, <em>&#8220;I&#8217;ll figure out how to do this by&#8230;&#8221;</em> They instinctively look for solutions. For instance: <em>&#8220;Maybe I can repurpose some existing resources,&#8221;</em> <em>&#8220;If no one&#8217;s done it before, being first gives us an edge,&#8221;</em> or <em>&#8220;I&#8217;ll draft a plan, then get feedback from the team.&#8221;</em> </p><p></p><p>These responses <strong>focus on actions within their control</strong> to move forward.</p></li></ul><p>Notice the big difference. The low-agency person&#8217;s reflex is to point to external problems; the high-agency person focuses on what <em>they</em> can do (&#8220;<em>focus on what you control&#8221;</em>, based on <a href="https://en.wikipedia.org/wiki/Stoicism">Stoic wisdom</a>). </p><p>The high-agency mindset is fundamentally <strong>proactive</strong>, not reactive: it speaks the language of <em>&#8220;I will&#8221;</em> rather than <em>&#8220;I can&#8217;t because.&#8221;</em></p><p>We can even define levels of proactivity as follows:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sHJi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sHJi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!sHJi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!sHJi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!sHJi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sHJi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:123708,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.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_!sHJi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!sHJi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!sHJi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!sHJi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442fa6f3-cb36-4f6f-bd70-738d55ced82e_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Pyramid of proactivity</figcaption></figure></div><blockquote><p><em>&#128073; Read my review of the book <strong>The 7 Habits of Highly Effective People</strong>, which explores the proactive mindset and other habits of effectiveness:</em></p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:140315417,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/the-habits-of-highly-effective-people&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;The habits of highly effective people&quot;,&quot;truncated_body_text&quot;:&quot;After 25 years of dealing with successful people in business, universities, and relationship settings, Stephen R. Covey noticed that great achievers were frequently troubled by emptiness. To comprehend why, he read self-help, self-improvement, and popular psychology books from the past 200 years. Here, he observed a striking historical disparity between&quot;,&quot;date&quot;:&quot;2024-02-01T16:00:45.779Z&quot;,&quot;like_count&quot;:50,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 46K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold PhD in Computer Sciences and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Actionable insights on software engineering and leadership, read by 400,000+ engineers every week.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/the-habits-of-highly-effective-people?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The habits of highly effective people</div></div><div class="embedded-post-body">After 25 years of dealing with successful people in business, universities, and relationship settings, Stephen R. Covey noticed that great achievers were frequently troubled by emptiness. To comprehend why, he read self-help, self-improvement, and popular psychology books from the past 200 years. Here, he observed a striking historical disparity between&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 50 likes &#183; Dr Milan Milanovi&#263;</div></a></div><h2>2. Why talent is not enough</h2><p>High agency is so critical that it often outweighs talent or intelligence alone. In fact, as product leader <a href="https://www.linkedin.com/pulse/high-agency-its-importance-how-cultivate-shreyas-doshi/">Shreyas Doshi illustrates</a>, we can think of people in four quadrants based on their level of agency and talent (skill/ability):</p><h3><strong>&#127775; Game Changers (High Talent/High Agency)</strong></h3><p>These are the top performers who use both exceptional skill and initiative to drive impact. Game Changers tackle obstacles head-on and often create new opportunities in the process. </p><p>Note that they&#8217;re rare and highly sought-after. As Doshi notes, Game Changers can profoundly elevate teams and companies, and when you find one, <em>&#8220;do whatever you can to get them on your team&#8221;</em>.</p><h3><strong>&#129504; Frustrated Geniuses (High Talent/Low Agency)</strong></h3><p>These people have great talent or knowledge, but, lacking agency, they struggle to apply it effectively. They might have brilliant ideas that never see the light of day because they&#8217;re waiting for permission or perfect conditions. </p><p>In the long run, many of these high-talent, low-agency people <em>&#8220;end up capitulating to &#8216;the system&#8217;&#8221;</em> &#8211; they get bogged down by bureaucracy or their own reluctance to push boundaries. It&#8217;s painful to watch because you can sense their latent potential going untapped.</p><h3><strong>&#128293; Go-Getters (Low Talent/High Agency)</strong></h3><p>Go-Getters may not start with the deepest expertise, but they compensate with initiative, hustle, and a growth mindset. They are <em>action-oriented learners</em>, always looking for ways to contribute and improve. A Go-Getter will take on new challenges, figure things out along the way, and steadily build their skills. </p><p>With time, some Go-Getters <strong>become</strong> Game Changers as they gain experience. Many leaders say they&#8217;d take a high-agency junior person over a passive &#8220;genius&#8221; any day &#8211; <em>because skills can be taught, but mindset is harder to teach</em>.</p><h3><strong>&#9881;&#65039; Cogs in the Wheel (Low Talent/Low Agency)</strong></h3><p>These folks do the bare minimum. They operate strictly within their defined duties, take no initiative, and require constant direction. In essence, they execute tasks without questioning or taking ownership beyond their role<em>.</em> </p><p>They&#8217;re the ones who say, &#8220;<em>I just work here</em>,&#8221; or &#8220;<em>we&#8217;ve always done it like this</em>,&#8221; and stick to the letter of their job description. </p><p>As a result, their contributions (and career growth) remain very limited. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Um0X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Um0X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Um0X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Um0X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Um0X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Um0X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg" width="800" height="649" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:649,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;diagram&quot;,&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="diagram" title="diagram" srcset="https://substackcdn.com/image/fetch/$s_!Um0X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Um0X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Um0X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Um0X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec05b21-eabb-44b9-b99a-1bd85baf0f92_800x649.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">High agency mindset framework (by <a href="https://www.linkedin.com/pulse/high-agency-its-importance-how-cultivate-shreyas-doshi/">Sheryas Doshi</a>)</figcaption></figure></div><p>The takeaway from this framework is clear: If you want to be a top performer, <strong>agency is the X-factor</strong>. High agency paired with talent is a powerful force, and even high potential needs agency to fully materialize. </p><p>Conversely, all the talent in the world won&#8217;t make up for a lack of <strong>ownership and drive</strong>. </p><p>So, we can say that high agency is a prerequisite for making a profound impact in one&#8217;s life and work<em>.</em></p><h2>3. Why High Agency is so important</h2><p>High agency has very real consequences for success in today&#8217;s world. Whether you&#8217;re an individual contributor, a leader, or an entrepreneur, a high-agency mindset can be a game changer (often literally).</p><p>In the tech and business community, <em>&#8220;high agency&#8221;</em> has become a bit of a Holy Grail trait. Companies increasingly seek it out because <strong>a high-agency employee requires much less hand-holding and can multiply an organization&#8217;s effectiveness</strong>. </p><p>In fact, some recruiters now explicitly screen for this quality. As one tech CEO <a href="https://www.businessinsider.com/high-agency-tech-buzzword-silicon-valley-hiring-2025-2#:~:text=Today%2C%20,candidate%20possesses%20more%20intangible%20qualities">explains</a>, <em>&#8220;High agency is [about] someone who can take control of their own destiny. [You look] for whether they take <strong>ownership</strong> or blame others for a project&#8217;s failure.&#8221;</em> </p><p>An experienced candidate who comes into an interview blaming their former team or boss for every past problem sends up red flags &#8211; it signals a low-agency attitude. </p><p>High agency is also <strong>highly correlated with leadership</strong>. Shreyas Doshi <a href="https://www.linkedin.com/pulse/high-agency-its-importance-how-cultivate-shreyas-doshi/">observed</a> that every truly successful manager or executive he has known has had a strong sense of agency &#8211; a bias toward action and problem-solving &#8211; and those who lacked it inevitably plateaued. </p><p>Even without fancy degrees or credentials, <strong>a high-agency person often rises through the ranks by sheer impact</strong>. They become the go-to &#8220;fixers&#8221; and innovators in their organizations.</p><p>From an entrepreneur&#8217;s perspective, high agency is absolutely vital. Startup founder and investor <a href="https://en.wikipedia.org/wiki/Naval_Ravikant">Naval Ravikant</a> says that when building teams, he looks for people who <em>&#8220;just solve problems without even being asked&#8221;</em>. These individuals identify what needs to be done and handle it &#8211; they&#8217;re not constantly asking for permission or basic guidance. </p><p>In a startup, there&#8217;s an &#8220;infinite set of problems&#8221; coming at you, and a leader simply can&#8217;t micromanage them all. Naval cites venture capitalist Vinod Khosla&#8217;s saying: <em>&#8220;The team you build is the company you build, not the plan you make.&#8221;</em> </p><div id="youtube2-RaemwPK0Gr4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RaemwPK0Gr4&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/RaemwPK0Gr4?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><p>Ultimately, what determines your success is having enough&nbsp;<strong>problem solvers</strong> on board. If each teammate needs a lot of managing, you can only take on so many people, but if they operate with autonomy, you can scale much further. </p><p><em>&#8220;If you have somebody who takes 10% of your time and management to solve problems, you can only have 10 of those people... But if somebody takes 5%, you can have 20,&#8221;</em> Naval explains. </p><p>Of course, <strong>agency isn&#8217;t the only trait that matters</strong>. Qualities such as integrity, empathy, and teamwork are also essential. High agency isn&#8217;t about being reckless or trampling others. </p><p>The goal is to pair agency with sound judgment and ethics. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Axw7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Axw7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 424w, https://substackcdn.com/image/fetch/$s_!Axw7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 848w, https://substackcdn.com/image/fetch/$s_!Axw7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 1272w, https://substackcdn.com/image/fetch/$s_!Axw7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Axw7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png" width="593" height="259" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:259,&quot;width&quot;:593,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27570,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.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_!Axw7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 424w, https://substackcdn.com/image/fetch/$s_!Axw7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 848w, https://substackcdn.com/image/fetch/$s_!Axw7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 1272w, https://substackcdn.com/image/fetch/$s_!Axw7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd163307b-7eeb-4925-b12e-9a24e72863bc_593x259.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Andrej Karpathy say that Agency is more important than Intelligence</figcaption></figure></div><h2>4. How to spot high agency people</h2><p>Learning to identify individuals with high agency transforms your ability to build exceptional teams and choose the right mentors. </p><p>After studying hundreds of high performers, certain patterns emerge that reveal this quality:</p><ol><li><p><strong>Look for intellectual contradictions.</strong> High agency people refuse to be one-dimensional. They're the surgeon who performs stand-up comedy, the accountant who builds race cars, and the programmer who studies ancient philosophy. When someone's interests genuinely surprise you, you've likely found someone who thinks independently.</p></li><li><p><strong>Notice who energizes versus drains.</strong> High agency people don't motivate through speeches. They assume problems are solvable. When they encounter a problem, they say "<em>when we solve this</em>," not "<em>if we can solve this</em>." This certainty is contagious.</p></li><li><p><strong>Watch for geographic courage.</strong> Repeated moves signal agency. But the real indicator isn't the move itself, it's the willingness to repeatedly start over, to build new networks from scratch, to thrive without inherited advantages. </p></li><li><p><strong>The crisis test reveals everything.</strong> Ask yourself: who would you call if everything went wrong (as noted by Jeff Bezos)? Not for comfort or money, but for creative problem-solving when conventional options are exhausted. That person is valuable and operates outside standard playbooks.</p></li><li><p><strong>Watch how they handle being wrong.</strong> High agency people change course fast when new data arrives. They don't defend bad decisions or double down on failing approaches. People with low agency get trapped by sunk costs and ego. High agency people treat being wrong as useful information, not personal failure.</p></li><li><p><strong>Notice their default assumption about new challenges</strong>. High agency people assume they can figure it out. People with low agency often assume they need permission, more resources, or someone else to solve the problem first.</p></li><li><p><strong>The ownership test.</strong> High agency people take responsibility for outcomes even when they're not technically responsible. They never say "t<em>hat's not my job</em>." Watch who steps up when nobody's in charge. The person who starts solving the problem without being asked has agency. The one waiting for permission doesn't.</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_!Rw8O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rw8O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 424w, https://substackcdn.com/image/fetch/$s_!Rw8O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 848w, https://substackcdn.com/image/fetch/$s_!Rw8O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 1272w, https://substackcdn.com/image/fetch/$s_!Rw8O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rw8O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png" width="519" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:519,&quot;resizeWidth&quot;:null,&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_!Rw8O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 424w, https://substackcdn.com/image/fetch/$s_!Rw8O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 848w, https://substackcdn.com/image/fetch/$s_!Rw8O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 1272w, https://substackcdn.com/image/fetch/$s_!Rw8O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd637c1-33ed-43d9-95eb-44660990678e_519x522.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">That&#8217;s not my job</figcaption></figure></div><ol start="8"><li><p><strong>Time tells everything.</strong> High agency people treat time differently. Their default deadline is now, not later. They don't believe in "<em>less busy next month</em>." When someone says they'll do something "when things calm down," they've revealed themselves. </p></li><li><p><strong>Frustration as fuel.</strong> Most people complain about problems. High agency people build solutions, then sell them. The entrepreneur who started a company because they couldn't find what they needed? High agency. Is the person still complaining about the same problem five years later? Not.</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_!Hl9n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hl9n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 424w, https://substackcdn.com/image/fetch/$s_!Hl9n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 848w, https://substackcdn.com/image/fetch/$s_!Hl9n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 1272w, https://substackcdn.com/image/fetch/$s_!Hl9n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hl9n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png" width="680" height="411" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d90456b-2809-4129-91fe-55ba7e465651_680x411.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:411,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!Hl9n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 424w, https://substackcdn.com/image/fetch/$s_!Hl9n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 848w, https://substackcdn.com/image/fetch/$s_!Hl9n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 1272w, https://substackcdn.com/image/fetch/$s_!Hl9n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90456b-2809-4129-91fe-55ba7e465651_680x411.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">High agency</figcaption></figure></div><h2>5. How to cultivate a High Agency mindset</h2><p>The big question is: <strong>Can you develop high agency, or is it an innate trait?</strong> The bad news is that low agency is our default behavior. The good news is that high agency can be learned and strengthened. </p><p>Like any mindset, it&#8217;s built through habits and practice. </p><p>Here are some strategies to cultivate a higher-agency approach in your work and life:</p><h3><strong>&#127919; Focus on what you control</strong></h3><p>Stephen Covey, in <em><a href="https://newsletter.techworld-with-milan.com/p/the-habits-of-highly-effective-people">The 7 Habits of Highly Effective People</a></em>, describes a fundamental mindset shift: concentrate on the things you can <strong>influence</strong>, rather than obsessing over things outside your control. </p><p>High-agency individuals intuitively live in that <em>&#8220;Circle of Influence&#8221;</em> rather than the <em>&#8220;Circle of Concern.&#8221;</em> </p><p>They ask, &#8220;<em>What <strong>can</strong> I do?</em>&#8221; in any given situation. </p><p>Make a list of current frustrations. Circle only what you can directly change. Work on those. Ignore the rest.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RISf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RISf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 424w, https://substackcdn.com/image/fetch/$s_!RISf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 848w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RISf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png" width="1456" height="1082" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1082,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&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_!RISf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 424w, https://substackcdn.com/image/fetch/$s_!RISf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 848w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">3 Circles of Influence (inspired by Stephen Covey)</figcaption></figure></div><h3><strong>&#129489;&#8205;&#128188; Take ownership of outcomes</strong></h3><p>Start viewing yourself as the <strong>owner</strong> of your tasks and outcomes, not just a participant. This is about taking responsibility for results. </p><p>If something falls short, a high-agency person asks, <em>&#8220;What could I do differently next time?</em>&#8221; instead of immediately blaming teammates, tools, or circumstances. </p><p>Cultivating this ownership mentality is crucial; in fact, Doshi calls it <em>&#8220;<a href="https://www.linkedin.com/pulse/high-agency-its-importance-how-cultivate-shreyas-doshi/">perhaps the most important</a>&#8221;</em> trait underlying high agency. When you own the outcome, you&#8217;re more likely to find a way to victory. </p><p>Remember, leaders and recruiters notice this trait: do you take accountability, or do you make excuses?</p><p>Start with <strong>small wins</strong>. Fix that broken process everyone complains about. Update the outdated documentation. Volunteer for the task no one wants.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!um2P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!um2P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!um2P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!um2P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!um2P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!um2P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1208cf59-506a-4176-a868-99a70a966744_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116147,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!um2P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!um2P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!um2P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!um2P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1208cf59-506a-4176-a868-99a70a966744_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Two key components to develop an ownership mindset</figcaption></figure></div><h3><strong>&#129300; Change your language</strong></h3><p>Replace "I can't because..." with "How can I...?" Make a habit of rephrasing challenges as questions of <em>how</em> rather than statements of <em>can&#8217;t</em>. </p><p>For example, if you catch yourself thinking, &#8220;<em>I can&#8217;t meet this deadline because the requirements changed</em>,&#8221; reframe it to: &#8220;<em>How can I still meet the deadline despite the changes?</em>&#8221; </p><p>This slight change in language nudges your brain toward solutions. </p><p>High-agency thinking often starts with phrases like &#8220;<em>What if we&#8230;</em>&#8221;, &#8220;How might I&#8230;&#8221;, &#8220;<em>Is there a way to&#8230;?</em>&#8221;. By contrast, low-agency thinking defaults to &#8220;<em>I can&#8217;t</em>&#8221; or &#8220;<em>We&#8217;re stuck.</em>&#8221; </p><p>Consciously monitor your self-talk and casual remarks &#8211; are they reactive or proactive? </p><p>Refer to the table below for examples of how to reframe challenges into questions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nQ9R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nQ9R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 424w, https://substackcdn.com/image/fetch/$s_!nQ9R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 848w, https://substackcdn.com/image/fetch/$s_!nQ9R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 1272w, https://substackcdn.com/image/fetch/$s_!nQ9R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nQ9R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png" width="1456" height="1237" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1237,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:171477,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.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_!nQ9R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 424w, https://substackcdn.com/image/fetch/$s_!nQ9R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 848w, https://substackcdn.com/image/fetch/$s_!nQ9R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 1272w, https://substackcdn.com/image/fetch/$s_!nQ9R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a638f-7b0f-498b-b0c9-925193851066_1545x1313.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>&#128640; Take initiative without permission</strong></h3><p>High agency is built through&nbsp;<strong>action</strong>, not just thought. Look for opportunities to step up without being asked. </p><p>This could be as simple as fixing a minor bug that has been annoying everyone, creating a new spreadsheet to streamline a process, or volunteering to do glue work (work that needs to be done but no one is doing it). </p><p>As one leadership coach puts it, <em>credibility (and agency) comes from doing work that no one explicitly asked you to do</em> &#8211; identifying needs and addressing them. If you always wait for assignments, you&#8217;re exercising zero agency. </p><p>So, start&nbsp;<strong>small</strong>: pick something in your realm that could be improved and take the initiative to enhance it. Not only does this build your &#8220;agency muscle,&#8221; it also signals to others that you&#8217;re a proactive problem-solver.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pXyR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pXyR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pXyR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pXyR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pXyR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pXyR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg" width="472" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:472,&quot;bytes&quot;:2548847,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.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_!pXyR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pXyR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pXyR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pXyR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479277cb-1365-4c91-9447-5b4ac26fd849_7730x7730.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Taking initiative (Image: <a href="http://www.freepik.com/">Freepik</a>)</figcaption></figure></div><h3><strong>&#129309; Build alliances</strong></h3><p>Having agency doesn&#8217;t mean &#8220;go it alone&#8221; &#8211; in fact, high-agency people often excel at rallying support and influencing stakeholders so they <em>can</em> move forward. If one approach isn&#8217;t working, who else could help, or what angle might persuade? </p><p>Rather than throwing up your hands, consider&nbsp;<strong>who</strong>&nbsp;you need to convince or collaborate with to resolve the situation. </p><p>This could mean <strong>cultivating relationships with mentors, finding allies in other departments, or simply communicating your ideas more effectively</strong>. </p><p>High agency includes the skill of bringing others along, so your initiatives don&#8217;t exist in a vacuum. </p><p>Influence is a force multiplier for agency &#8211; it helps turn your personal drive into organizational momentum.</p><p>Find one person this week who could help with your current challenge. Take them to coffee. Listen more than you talk.</p><p>One of the good starts in this direction is the material from the book &#8220;<strong><a href="https://amzn.to/3UFQ1BQ">How to Win Friends &amp; Influence People</a></strong>&#8221; by Dale Carnegie.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LTiy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LTiy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LTiy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LTiy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LTiy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LTiy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg" width="526" height="526" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:720,&quot;resizeWidth&quot;:526,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How to Win Friends and Influence People by Dale Carnegie is still 100%  applicable today even though it was originally published in 1936. And if  everyone took the time to read this&quot;,&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="How to Win Friends and Influence People by Dale Carnegie is still 100%  applicable today even though it was originally published in 1936. And if  everyone took the time to read this" title="How to Win Friends and Influence People by Dale Carnegie is still 100%  applicable today even though it was originally published in 1936. And if  everyone took the time to read this" srcset="https://substackcdn.com/image/fetch/$s_!LTiy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LTiy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LTiy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LTiy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469b3c9b-161d-4a86-9aaf-db52aaeba2bc_720x720.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://amzn.to/3UFQ1BQ">How to Win Friends and Influence People</a> by Dale Carnegie</figcaption></figure></div><h3><strong>&#127793; Embrace a growth mindset</strong></h3><p>Finally, remember that the agency itself can grow. If you&#8217;ve been operating in a low-agency way, it&#8217;s not a fixed identity &#8211; <strong>it&#8217;s a set of habits that you can change</strong>. </p><p>Begin with the conviction that your actions matter and that you&nbsp;<em>can</em>&nbsp;develop the skills to be more proactive. <strong>Challenge the limiting stories you&#8217;ve internalized </strong>(&#8220;I&#8217;m new,&#8221; &#8220;I&#8217;m not in charge,&#8221; &#8220;failure would be disastrous,&#8221; etc.). </p><p>High-agency people often share an outlook that every problem has a solution, or at least a valuable lesson. <strong>They view setbacks as feedback and skill gaps as temporary opportunities for growth</strong>. </p><p>By cultivating resilience and continuously building your skills, you expand the scope of what you&#8217;re capable of influencing. In short, <strong>high agency is a practice</strong> &#8211; the more you exercise it, the stronger it gets.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5uSX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5uSX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 424w, https://substackcdn.com/image/fetch/$s_!5uSX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 848w, https://substackcdn.com/image/fetch/$s_!5uSX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 1272w, https://substackcdn.com/image/fetch/$s_!5uSX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5uSX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png" width="558" height="603.9833333333333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1169,&quot;width&quot;:1080,&quot;resizeWidth&quot;:558,&quot;bytes&quot;:96746,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.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_!5uSX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 424w, https://substackcdn.com/image/fetch/$s_!5uSX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 848w, https://substackcdn.com/image/fetch/$s_!5uSX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 1272w, https://substackcdn.com/image/fetch/$s_!5uSX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8ca0406-f9d8-4187-813b-49b88a204a64_1080x1169.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">From comfort zone to growth zone</figcaption></figure></div><h2>6. Conclusion</h2><p>Developing high agency won&#8217;t be easy &#8211; it involves pushing yourself out of comfort zones and persisting where others give up. But it <em>is</em> learnable. </p><p>As Doshi encourages, &#8220;<em>it&#8217;s not inscrutable magic; you can learn it, and becoming a high-agency individual will be profoundly rewarding for you and those you work with&#8221;</em>. </p><p>So, how can you start? <strong>Start with small change</strong>s: speak up with a solution in the next meeting, volunteer for that tough task nobody wants, or revisit a stalled project and see if you can revive it. </p><p>Every time you choose to act rather than excuse, you&#8217;re building your agency.</p><p><strong>Imagine what you could achieve if you operated with 10&#215; more agency?</strong> High agency is the trait that can take you farther than talent alone ever will. When you cultivate it, you won&#8217;t just unlock new opportunities for yourself &#8211; you&#8217;ll inspire your colleagues and maybe even change &#8220;the system&#8221; around you. </p><p>The mindset of <em>&#8220;I will find a way&#8221;</em> is powerful and contagious. So start where you are, with what you have, and experience how much farther you can go when you decide to be <em>&#8220;relentlessly resourceful.&#8221;</em></p><p>In a world of increasing uncertainty and rapid change, high agency provides the ultimate competitive advantage: <strong>the confidence and capability to shape your own reality rather than simply accepting whatever circumstances arise</strong>. </p><p>The question isn't whether you can develop it&#8212;the question is whether you'll choose to start today.</p><div><hr></div><h2>&#129309; How can I help you become a high agency person</h2><p>I&#8217;m offering <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">two coaching slots</a></strong> in <strong>September</strong>.</p><p>I work with mid-career individuals in tech, product, engineering, design, operations, and data, who want to stop waiting for permission and start owning their outcomes.</p><p>If you're tackling tough, often-untold challenges, such as building trust in leadership conversations, navigating office power dynamics, making a fast impact in a new role, reclaiming energy in your career, or managing self-worth under AI pressure, I&#8217;d love to help.</p><p><strong>What I do:</strong></p><ul><li><p>One-on-one, audio-only 45-minute coaching</p></li><li><p>Confidential and anonymized sessions</p></li><li><p>You review before anything is shared</p></li><li><p>You leave with clear, actionable next steps and insight into your own mindset</p></li></ul><p>Interested? <strong>Please complete this brief form</strong>&nbsp;to help me better&nbsp;understand your challenge.</p><p>I&#8217;ll reach out if it looks like a fit.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/forms/d/e/1FAIpQLSemlZDWppO370uxZfrVAHSmZowe8BazfWdAWMf3T7Qz0TycKg/viewform?usp=sharing&amp;ouid=111954354459901627789&quot;,&quot;text&quot;:&quot;Apply for coaching&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/forms/d/e/1FAIpQLSemlZDWppO370uxZfrVAHSmZowe8BazfWdAWMf3T7Qz0TycKg/viewform?usp=sharing&amp;ouid=111954354459901627789"><span>Apply for coaching</span></a></p><p>&#8212;Milan</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://newsletter.techworld-with-milan.com/p/coaching-services" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_X9A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!_X9A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!_X9A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!_X9A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_X9A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://newsletter.techworld-with-milan.com/p/coaching-services&quot;,&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_!_X9A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!_X9A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!_X9A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!_X9A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e19af93-410f-408c-8bfe-80e25d4a6132_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a> with Dr. Milan Milanovic</figcaption></figure></div><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong> &#8211; Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching an audience of founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[The Trends #8: Developers use AI more, but they trust it much less]]></title><description><![CDATA[And what are six architectural shifts are reshaping how teams build software.]]></description><link>https://newsletter.techworld-with-milan.com/p/trends-8-developers-use-ai-more-but</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/trends-8-developers-use-ai-more-but</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 28 Aug 2025 15:02:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f3a67f9c-64df-43e8-a156-c6eea98790a3_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Trends covers the signals that matter in software development and AI adoption. Spot something worth sharing? Send me a message.</em></p><p>In today&#8217;s issue, we cover:</p><ol><li><p><strong>84% of developers use AI, but trust is plummeting.</strong> Stack Overflow's 2025 survey reveals the paradox: AI usage jumped 8% while trust dropped 10 points. The "almost right" code problem is creating a hidden productivity tax that's worse than broken code.</p></li><li><p><strong>LLMs hit mainstream adoption faster than expected.</strong> InfoQ's latest trends report shows large language models jumped from early adopter to late majority in just 18 months. Six architectural shifts are reshaping how teams build software.</p></li><li><p><strong>GenAI tools have matured beyond code generation.</strong> ThoughtWorks' Technology Radar shows coding assistants now drive full implementations through chat interfaces. But they're warning against replacing human oversight with AI confidence.</p></li><li><p><strong>AI's biggest use case isn't what you'd expect.</strong> Harvard research reveals therapy and companionship topped coding as GenAI's primary application in 2025. The shift from technical to emotional needs signals something deeper about human nature.</p></li><li><p><strong>Which jobs will be affected by AI.</strong>&nbsp;A study from Microsoft shows the 40 jobs most affected by AI and the 40 least affected.</p></li></ol><p>So let&#8217;s dive in.</p><div><hr></div><h2><a href="https://jb.gg/junie-in-rider-252">JetBrains Junie is your coding agent designed to handle tasks autonomously (Sponsored)</a></h2><p><em>Meet Junie, your new AI coding agent, now available in JetBrains Rider, the world&#8217;s most loved IDE for .NET and game development. Junie doesn&#8217;t just assist &#8212; it works alongside you. Use Code mode for delegating coding tasks or Ask mode for brainstorming features or new solutions.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://jb.gg/junie-in-rider-252" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q4_H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!q4_H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!q4_H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!q4_H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q4_H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1615131,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://jb.gg/junie-in-rider-252&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.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_!q4_H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!q4_H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!q4_H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!q4_H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a42c41-bcee-4324-a4ee-247ef5adaa39_2560x1440.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://jb.gg/junie-in-rider-252&quot;,&quot;text&quot;:&quot;Download Junie for Rider here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://jb.gg/junie-in-rider-252"><span>Download Junie for Rider here</span></a></p><div><hr></div><p><strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">Sponsor this newsletter</a></strong></p><h2>1. 84% of developers use AI, yet most don&#8217;t trust it</h2><p>The recent <strong><a href="https://survey.stackoverflow.co/2025/">Stack Overflow 2025 survey</a></strong> reveals some interesting trends in software development. Over 49,000 programmers from 177 countries voted this year.</p><p>The majority of developers <strong>now use or plan to use AI tools (84%), jumping from 76% in 2024</strong>. Half of all professional developers use AI daily. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gn_D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gn_D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 424w, https://substackcdn.com/image/fetch/$s_!Gn_D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 848w, https://substackcdn.com/image/fetch/$s_!Gn_D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!Gn_D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gn_D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png" width="1456" height="673" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:673,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132906,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.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_!Gn_D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 424w, https://substackcdn.com/image/fetch/$s_!Gn_D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 848w, https://substackcdn.com/image/fetch/$s_!Gn_D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!Gn_D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a05067-6c6f-4527-936e-8ba86bddba00_2400x1110.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI tools in the development process (Source: <a href="https://survey.stackoverflow.co/2025">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><p>But the trust numbers tell a different story. <strong>Only 33% trust AI accuracy, down from 43% last year.</strong> Just 3% report "high trust" in AI output. </p><p>Professional developers are the most skeptical; only 2.6% highly trust AI results, while 20% actively distrust 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_!lsAq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lsAq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 424w, https://substackcdn.com/image/fetch/$s_!lsAq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 848w, https://substackcdn.com/image/fetch/$s_!lsAq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!lsAq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lsAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png" width="1456" height="619" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108314,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.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_!lsAq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 424w, https://substackcdn.com/image/fetch/$s_!lsAq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 848w, https://substackcdn.com/image/fetch/$s_!lsAq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!lsAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a6a5ad-2e0c-4d46-9dd0-9da5d78b51fd_2400x1020.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Accuracy of AI tools (Source: <a href="https://survey.stackoverflow.co/2025">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><p>Positive sentiment dropped from over 70% in 2023-2024 to just 60% this year.</p><p><strong>So, we can say that developers use AI because it's everywhere, not because they believe in it.</strong></p><h3>Python accelerates while JavaScript stays at the top</h3><p>Python saw <strong>a massive 7% increase from 2024 to 2025</strong>, continuing over a decade of steady growth. This surge reflects Python's dominance in AI, data science, and backend development.</p><p>JavaScript remains the most-used language, but Python is closing the gap fast. </p><p>The shift shows how AI development is reshaping language preferences across the industry.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xt3p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xt3p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 424w, https://substackcdn.com/image/fetch/$s_!Xt3p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 848w, https://substackcdn.com/image/fetch/$s_!Xt3p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 1272w, https://substackcdn.com/image/fetch/$s_!Xt3p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xt3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png" width="1456" height="2694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:378317,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.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_!Xt3p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 424w, https://substackcdn.com/image/fetch/$s_!Xt3p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 848w, https://substackcdn.com/image/fetch/$s_!Xt3p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 1272w, https://substackcdn.com/image/fetch/$s_!Xt3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66552581-2dec-4ce2-a5cd-6f09245d72b2_2400x4440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Programming, scripting, and markup languages (Source: <a href="https://survey.stackoverflow.co/2025">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><h3>PostgreSQL and Docker dominate infrastructure choices</h3><p>PostgreSQL tops both "worked with" and "want to work with" database categories, cementing its position as the go-to choice for serious development work. </p><p>MySQL and SQLite follow, but PostgreSQL's momentum is clear.</p><p>SQLite is in 3rd place as one of the most popular embedded databases.</p><p>Oracle is used by only 10% of developers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!91Bp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!91Bp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 424w, https://substackcdn.com/image/fetch/$s_!91Bp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 848w, https://substackcdn.com/image/fetch/$s_!91Bp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 1272w, https://substackcdn.com/image/fetch/$s_!91Bp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!91Bp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png" width="1456" height="2038" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2038,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:318573,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.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_!91Bp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 424w, https://substackcdn.com/image/fetch/$s_!91Bp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 848w, https://substackcdn.com/image/fetch/$s_!91Bp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 1272w, https://substackcdn.com/image/fetch/$s_!91Bp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c338472-b918-42f4-a0fd-f52c55c4f9ef_2400x3360.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Databases (Source: <a href="https://survey.stackoverflow.co/2025">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><p><strong>Docker leads the tooling pack at 71%</strong>, showing containerization is now standard practice. AWS, Azure, and Google Cloud remain the big-three platforms, with no significant shifts in cloud dominance.</p><p>The data shows infrastructure choices are stabilizing around proven, reliable technologies rather than chasing the latest trends.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bu8k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bu8k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 424w, https://substackcdn.com/image/fetch/$s_!bu8k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 848w, https://substackcdn.com/image/fetch/$s_!bu8k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 1272w, https://substackcdn.com/image/fetch/$s_!bu8k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bu8k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png" width="1456" height="2694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:402203,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.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_!bu8k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 424w, https://substackcdn.com/image/fetch/$s_!bu8k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 848w, https://substackcdn.com/image/fetch/$s_!bu8k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 1272w, https://substackcdn.com/image/fetch/$s_!bu8k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97cf93fe-95ca-41f3-abe2-b4f66c3f867a_2400x4440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Cloud Development (Source: <a href="https://survey.stackoverflow.co/2025">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><h3>AI code that is &#8220;almost right&#8221; creates a hidden productivity tax</h3><p>66% of developers struggle with AI solutions that are close but miss the mark. </p><p>This creates a worse problem than broken code, as it requires plausible solutions that require significant developer intervention to become production-ready.</p><p>45% say debugging AI-generated code takes more time than writing it themselves.</p><p><strong>The "almost right" phenomenon disrupts workflows more than obviously broken code because developers must analyze what's wrong and how to fix it.</strong></p><p>We can see that AI tools promise productivity gains but create new categories of technical debt.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ubMx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ubMx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 424w, https://substackcdn.com/image/fetch/$s_!ubMx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 848w, https://substackcdn.com/image/fetch/$s_!ubMx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!ubMx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ubMx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png" width="1456" height="783" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:783,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:153674,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.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_!ubMx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 424w, https://substackcdn.com/image/fetch/$s_!ubMx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 848w, https://substackcdn.com/image/fetch/$s_!ubMx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!ubMx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F813f12b1-c3f3-40a5-aa88-034ce3df89a3_2400x1290.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI tools frustrations (Source: <a href="https://survey.stackoverflow.co/2025/">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><blockquote><p><em>We could saw that recently when folks from Microsoft enabled Copilot AI agent on the .NET runtime project, creating a PR, but there seem to be <a href="https://t.co/tOOAzlBllt">many errors and misunderstandings</a>. Read the discussion on <a href="https://t.co/T7PR3AtYCP">Reddit</a>.</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_!443r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!443r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!443r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!443r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!443r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!443r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg" width="680" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!443r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!443r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!443r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!443r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af7191-098b-4aea-898c-c1d43df532d0_680x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><p>The most commonly used AI models are OpenAI with 81% and Claude Sonnet with 43%.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2WLY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2WLY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 424w, https://substackcdn.com/image/fetch/$s_!2WLY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 848w, https://substackcdn.com/image/fetch/$s_!2WLY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 1272w, https://substackcdn.com/image/fetch/$s_!2WLY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2WLY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png" width="1456" height="1329" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1329,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:238730,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.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_!2WLY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 424w, https://substackcdn.com/image/fetch/$s_!2WLY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 848w, https://substackcdn.com/image/fetch/$s_!2WLY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 1272w, https://substackcdn.com/image/fetch/$s_!2WLY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff928b2e-242b-4c32-9520-90dc83f4e678_2400x2190.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Large Language Models in use (Source: <a href="https://survey.stackoverflow.co/2025/">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><blockquote><p>&#8505;&#65039; <em>What we find that Claude Sonnet 4 models works better for coding in the most cases than OpenAI models currently.</em></p></blockquote><h3>Security and privacy concerns kill adoption faster than anything else</h3><p>Privacy and security concerns rank as the top reason developers abandon technologies, followed by prohibitive pricing and better alternatives. This applies universally across all developer segments.</p><p>The data shows developers prioritize trust over features. Lack of AI features ranks dead last (9th) in reasons to reject a technology. </p><p>Security beats shiny new capabilities every time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eiqc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eiqc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 424w, https://substackcdn.com/image/fetch/$s_!eiqc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 848w, https://substackcdn.com/image/fetch/$s_!eiqc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 1272w, https://substackcdn.com/image/fetch/$s_!eiqc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eiqc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png" width="986" height="399" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:399,&quot;width&quot;:986,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27480,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.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_!eiqc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 424w, https://substackcdn.com/image/fetch/$s_!eiqc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 848w, https://substackcdn.com/image/fetch/$s_!eiqc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 1272w, https://substackcdn.com/image/fetch/$s_!eiqc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95ece52b-ca37-475a-8e59-73d9bd3bac8d_986x399.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How you lose interest in tech tools (Source: <a href="https://survey.stackoverflow.co/2025/">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><h3>Developers&#8217; happiness is barely up</h3><p><strong>24% of developers report being happy at work</strong>, up from 20% last year. The improvement likely stems from targeted salary increases in key roles, though pay gaps persist significantly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rudh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rudh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 424w, https://substackcdn.com/image/fetch/$s_!Rudh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 848w, https://substackcdn.com/image/fetch/$s_!Rudh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 1272w, https://substackcdn.com/image/fetch/$s_!Rudh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rudh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png" width="1456" height="564" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:564,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100217,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.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_!Rudh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 424w, https://substackcdn.com/image/fetch/$s_!Rudh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 848w, https://substackcdn.com/image/fetch/$s_!Rudh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 1272w, https://substackcdn.com/image/fetch/$s_!Rudh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8165337c-ea6c-473e-a83e-d6c78e07b93f_2400x930.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Job satisfaction (Source: <a href="https://survey.stackoverflow.co/2025/">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><p>Senior executives and engineering managers report <strong>median salaries of $130K+</strong>, while founders, architects, and product managers report median salaries of $92K-$104K. </p><p><strong>Experience matters less than title structure.</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_!vfoc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vfoc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 424w, https://substackcdn.com/image/fetch/$s_!vfoc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 848w, https://substackcdn.com/image/fetch/$s_!vfoc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 1272w, https://substackcdn.com/image/fetch/$s_!vfoc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vfoc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png" width="1456" height="2148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2148,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:472005,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.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_!vfoc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 424w, https://substackcdn.com/image/fetch/$s_!vfoc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 848w, https://substackcdn.com/image/fetch/$s_!vfoc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 1272w, https://substackcdn.com/image/fetch/$s_!vfoc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d66022f-9e5a-430b-8dd8-297e95b11892_2400x3540.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Salary by developer type (Source: <a href="https://survey.stackoverflow.co/2025/">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><p>Nearly <strong>one-third of developers work remotely</strong>, with 45% in the US working fully remote. </p><p>Geography still determines access to flexible work arrangements.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xkwb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xkwb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 424w, https://substackcdn.com/image/fetch/$s_!xkwb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 848w, https://substackcdn.com/image/fetch/$s_!xkwb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!xkwb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xkwb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png" width="1456" height="673" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:673,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122564,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.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_!xkwb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 424w, https://substackcdn.com/image/fetch/$s_!xkwb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 848w, https://substackcdn.com/image/fetch/$s_!xkwb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!xkwb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6f95a6-ad13-42f1-9918-d31b809668ec_2400x1110.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Work environment (Source: <a href="https://survey.stackoverflow.co/2025/">Stack Overflow 2025 Developer Survey</a>)</figcaption></figure></div><h2>2. Large language models (LLMs) jumped from early adopter to late majority</h2><p>InfoQ&#8217;s editors mapped sixteen themes onto Moore&#8217;s adoption curve in the latest <strong><a href="https://www.infoq.com/articles/architecture-trends-2025/">Software Architecture InfoQ Trends Report - April 2025</a></strong>. </p><p>Six matters most right now for architects and senior engineers:</p><ol><li><p><strong>Agentic AI &amp; Small Language Models (Innovator)</strong>. Architects are shifting attention from monolithic LLMs to specialised, lighter models that run locally or at the edge. Bundling these models into autonomous &#8220;agents&#8221; lets teams isolate tasks and upgrade components without retraining an entire stack.</p></li><li><p><strong>Retrieval-Augmented Generation (Early Adopter).</strong> RAG has become the default pattern for making AI output from reliable source data. Systems are now designed so that domain data can be indexed, embedded, and refreshed quickly, making contextual retrieval part of the architecture.</p></li><li><p><strong>AI-Assisted Development (Early Majority)</strong>. Coding assistants have overtaken traditional low-code tools. They boost delivery speed, but raise new concerns: prompt quality, API misuse, and code consistency. Architects must embed guidelines and automated checks so AI-generated contributions meet existing standards.</p></li><li><p><strong>Green Software (Innovator)</strong>. Efficiency &#8800; sustainability. Cost reduction alone no longer satisfies sustainability goals. Teams track where and when workloads run, aiming to shift computing to regions and times that favor renewable energy. </p></li><li><p><strong>Privacy Engineering (Innovator)</strong>. Privacy is a central concern in the design process. Before any model or service ships, architects ask what data travels over the wire, how long it is kept, and whether it could feed future models. </p></li><li><p><strong>Socio-Technical Architecture (Early Adopter)</strong>. Complex systems must reflect the people who build and run them. Teams adopt lightweight decision records (ADRs), decentralised ownership, and internal platforms that remove architects as bottlenecks. The result is faster, context-aware decisions and architectures that evolve properly.</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_!rO6u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rO6u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rO6u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rO6u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rO6u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rO6u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg" width="1456" height="770" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:770,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&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_!rO6u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rO6u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rO6u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rO6u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b82412-1af3-477a-8bcf-11826cacbdef_2400x1270.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">InfoQ Software Architecture and Design Trends Report - 2025</figcaption></figure></div><h2>3. GenAI shapes today's software development</h2><p>ThoughtWorks has just released <strong><a href="https://www.thoughtworks.com/en-th/about-us/news/2025/thoughtworks-technology-radar-highlights-genai-s-impact-and-key-">Volume 32 of its Technology Radar</a></strong>, which provides insights into emerging technology trends, techniques, and tools.<br><br>What stands out in this latest report:</p><h3>Supervised agents in coding assistants</h3><p>Coding assistants now go beyond generating snippets, allowing developers to drive implementation directly from AI chat interfaces. Tools like Cursor, Cline, and Windsurf enable developers to modify code, execute commands, and fix errors, all from within their IDE. </p><p>While promising, caution is advised to avoid complacency with AI-generated code. </p><p><strong>Human oversight remains essential despite impressive results.</strong></p><h3>Evolving observability</h3><p>Observability practices are adapting to the complexity of distributed systems. We're seeing dedicated tools for LLM monitoring (Weights &amp; Biases Weave, Arize Phoenix, Helicone), AI-assisted observability, and the growing adoption of OpenTelemetry. </p><p>Primary tools like Alloy, Tempo, and Loki now support <strong>OpenTelemetry</strong>, creating a more standardized landscape for monitoring complex systems.</p><h3>R in RAG</h3><p>The retrieval component of Retrieval-Augmented Generation (RAG) is growing rapidly. </p><p>New approaches include corrective <strong>RAG, Fusion-RAG, Self-RAG, and FastGraphRAG.</strong> </p><p>These innovations improve how LLMs access and leverage relevant information.</p><h2>Taming the data frontier</h2><p>The focus has shifted from the volume of big data to effectively managing rich, complex data.<strong> Data product thinking is emerging as a framework</strong> for applying product management principles to analytics.</p><p>This approach is crucial for organizations that leverage unstructured data for AI applications and analytics.</p><p>In more detail:</p><p><strong>Techniques:</strong></p><ul><li><p>&#9989; <strong>Adopt</strong>: Data product thinking, Fuzz testing, Software Bill of Materials, Threat modeling</p></li><li><p>&#129514; <strong>Trial</strong>: API request collection as API product artifact, Architecture advice process, GraphRAG, Model distillation</p></li><li><p>&#128269; <strong>Assess</strong>: AI-friendly code design, AI-powered UI testing, Structured output from LLMs</p></li><li><p>&#128721; <strong>Hold</strong>: AI-accelerated shadow IT, Complacency with AI-generated code, Replacing pair programming with AI</p></li></ul><p><strong>Platforms</strong>:</p><ul><li><p>&#9989; <strong>Adopt</strong>: GitLab CI/CD, Trino</p></li><li><p>&#129514; <strong>Trial</strong>: ABsmartly, Dapr, Grafana Alloy, Grafana Loki, Grafana Tempo, Railway</p></li><li><p>&#128269; <strong>Assess</strong>: Arize Phoenix, Graphiti, Helicone, Humanloop, Reasoning models, Supabase</p></li></ul><p><strong>Tools:</strong></p><ul><li><p>&#9989; <strong>Adopt</strong>: Renovate, uv, Vite</p></li><li><p>&#129514; <strong>Trial</strong>: Claude Sonnet, Cline, Cursor, D2, Metabase, NeMo Guardrails, Software engineering agents</p></li><li><p>&#128269; <strong>Assess</strong>: AnythingLLM, Gemma Scope, Jujutsu, OpenRouter, System Initiative, Windsurf, YOLO</p></li></ul><p><strong>Languages and Frameworks</strong>:</p><ul><li><p>&#9989; <strong>Adopt</strong>: OpenTelemetry, React Hook Form</p></li><li><p>&#129514; <strong>Trial</strong>: Effect, Hasura GraphQL engine, LangGraph, MarkItDown, Module Federation, Prisma ORM</p></li><li><p>&#128269; <strong>Assess</strong>: .NET Aspire, Browser Use, CrewAI, FastGraphRAG, Gleam, PydanticA</p></li><li><p>&#128721; <strong>Hold</strong>: Node overload</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_!VnBO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VnBO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VnBO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VnBO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VnBO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VnBO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg" width="809" height="974" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:809,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;chart, pie chart&quot;,&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="chart, pie chart" title="chart, pie chart" srcset="https://substackcdn.com/image/fetch/$s_!VnBO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VnBO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VnBO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VnBO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf9ad00-be0c-46af-9e9c-7bdbad141d7f_809x974.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Thoughtworks Technology Radar, <a href="https://www.thoughtworks.com/en-th/about-us/news/2025/thoughtworks-technology-radar-highlights-genai-s-impact-and-key-">Volume 32</a></figcaption></figure></div><h2>4. How are people really using Gen AI in 2025?</h2><p>When we talk about the latest AI adoption, in <a href="https://hbr.org/2025/04/how-people-are-really-using-gen-ai-in-2025">the latest HBR article</a>, we can see that we have moved from primarily technical applications to emotional ones.</p><p><strong>The top use case for</strong> <strong>gen AI in 2025 is therapy/companionship</strong>, with "organizing my life" and "finding purpose" rounding out the top three. This marks a significant shift toward using AI for self-actualization beyond just coding.</p><p>Here are the key takeaways from the research:</p><ol><li><p><strong>Therapy/companionship has become the No. 1 use case</strong>, replacing technical applications. This is primarily visible in China.</p></li><li><p><strong>Personal and professional support represents 31% of all use cases</strong>.</p></li><li><p><strong>Users are developing better prompting skills</strong> and more skepticism about AI ethics.</p></li><li><p><strong>Companies are deploying specialized AI agents</strong> across their workforce.</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_!-2WP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-2WP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-2WP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-2WP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-2WP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-2WP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg" width="540" height="1243.270588235294" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1957,&quot;width&quot;:850,&quot;resizeWidth&quot;:540,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;chart, bubble chart&quot;,&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="chart, bubble chart" title="chart, bubble chart" srcset="https://substackcdn.com/image/fetch/$s_!-2WP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-2WP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-2WP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-2WP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cb2c0d0-847b-4faa-a2ba-f3f5291f5f2d_850x1957.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Top 10 Gen AI Use Cases (source: <a href="https://hbr.org/2025/04/how-people-are-really-using-gen-ai-in-2025">HBR</a>)</figcaption></figure></div><p>This shift reveals something interesting about human nature. When given powerful technology, we ultimately use it to meet our deepest needs: connection, meaning, and self-improvement. </p><p>While we should <strong>remain cautious about AI replacing genuine human interaction</strong>, I'm encouraged by how people find creative ways to use these tools for personal growth.</p><blockquote><p>&#10145;&#65039; <em>One interesting prompt you can try for finding your purpose, if you use the paid version, is: "What are things you think I'm not aware of about myself?".</em></p></blockquote><h2>5. <strong>Which jobs will be affected by AI</strong></h2><p>Microsoft just released <a href="https://arxiv.org/pdf/2507.07935">a study</a> showing the 40 jobs most affected by AI and the 40 least affected.</p><p>They analyzed 200,000 real-world interactions with Bing Copilot AI to identify which occupations AI already affects today, not tomorrow&#8217;s predictions.</p><p><strong>Where AI is already making an impact:</strong></p><ul><li><p>Language and communication roles (translators, writers, editors)</p></li><li><p>Information-focused jobs (sales reps, customer support, PR)</p></li><li><p>Knowledge-intensive tasks (data analysts, historians, political scientists)</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_!GATu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GATu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GATu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GATu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GATu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GATu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg" width="621" height="718.0053404539386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:749,&quot;resizeWidth&quot;:621,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;table&quot;,&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="table" title="table" srcset="https://substackcdn.com/image/fetch/$s_!GATu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GATu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GATu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GATu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a67122-7e9a-4e79-9bc6-e1e3d3fecd91_749x866.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Top 40 occupations with the highest AI applicability score</figcaption></figure></div><p><strong>Jobs AI isn&#8217;t reaching yet:</strong></p><ul><li><p>Physically demanding roles (construction, plant operators)</p></li><li><p>Hands-on health workers (phlebotomists, nursing assistants)</p></li><li><p>Manual labor (roofers, dishwashers)</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_!lw_c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lw_c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 424w, https://substackcdn.com/image/fetch/$s_!lw_c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 848w, https://substackcdn.com/image/fetch/$s_!lw_c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 1272w, https://substackcdn.com/image/fetch/$s_!lw_c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lw_c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png" width="606" height="691.762349799733" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:855,&quot;width&quot;:749,&quot;resizeWidth&quot;:606,&quot;bytes&quot;:244451,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/164290796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.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_!lw_c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 424w, https://substackcdn.com/image/fetch/$s_!lw_c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 848w, https://substackcdn.com/image/fetch/$s_!lw_c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 1272w, https://substackcdn.com/image/fetch/$s_!lw_c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc393d127-8aba-4ab4-9a56-62d442e999d7_749x855.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Bottom 40 occupations with the lowest AI applicability score</figcaption></figure></div><p>AI is strongest at tasks involving writing, information gathering, and communication.</p><p>But it's weaker at handling real-world physical tasks. As the godfather of AI, Geoffrey Hinton recently said, a plumber will be the best job that AI will not replace.</p><p>AI augments far more than it fully automates.</p><p>This is not about complete job loss. However, it demonstrates how activities are already shifting quietly, and if your career relies on language, the transition has already begun.</p><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong> &#8211; Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching an audience of founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Start here for the Tech World With Milan]]></title><description><![CDATA[Insights at the intersection of Software Engineering, Architecture, AI, and Leadership.]]></description><link>https://newsletter.techworld-with-milan.com/p/start-here-for-the-tech-world-with</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/start-here-for-the-tech-world-with</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 21 Aug 2025 15:02:47 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a8de9948-8365-4d5f-995f-7d2fb98befcb_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every day as a developer, architect, or leader, you face a choice:</p><p><strong>Path 1: The Shortcut.</strong> Copy what others do. Follow outdated advice. Patch together &#8220;best practices&#8221; without context. Grind through work without growth.</p><p>Or,</p><p><strong>Path 2: The Craft.</strong> Think deeper. Make better trade-offs. Build systems that last. Lead with clarity. Grow your skills beyond code.</p><p>If you're reading this, you've already chosen. You're not here for surface-level tutorials.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" width="3000" height="2250" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2250,&quot;width&quot;:3000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;brown wooden cross on green grass field under white clouds during daytime&quot;,&quot;title&quot;:&quot;brown wooden cross on green grass field under white clouds during daytime&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="brown wooden cross on green grass field under white clouds during daytime" title="brown wooden cross on green grass field under white clouds during daytime" srcset="https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1625859436660-08e1a5e28684?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@io_exception?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Antonio Feregrino</a> on <a href="https://unsplash.com/photos/brown-wooden-cross-on-green-grass-field-under-white-clouds-during-daytime-L57L1mlKoM8?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure></div><h3>But here&#8217;s the challenge. </h3><p>Most resources online are either shallow (influencers chasing likes) or impractical (advice that only works if you&#8217;re Google). Then there are the coding influencers who've never shipped production code, selling dreams about "10x engineers" and "clean code perfectionism."</p><p>Bottom line? Finding practical engineering wisdom is harder than it should be.</p><h3>That&#8217;s what this newsletter solves.</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ewev!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ewev!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Ewev!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Ewev!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Ewev!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ewev!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1133147,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/171441808?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.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_!Ewev!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Ewev!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Ewev!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Ewev!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55748cbf-43cf-458e-a742-23a5e2f0a574_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m <strong><a href="https://milan.milanovic.org/">Milan</a></strong>, a startup CTO, coach, Microsoft MVP, and author.</p><p>I&#8217;ve spent 20+ years building software and teams, working as a researcher, engineer, architect, manager, and consultant across startups and enterprises. In 2010, I earned a Ph.D. in AI and Computer Science.</p><p>Over the years, I've collected hundreds of tactics while working alongside some of the sharpest CTOs and engineering leaders in the industry.</p><p>I write here every week to share what I&#8217;ve learned and what I&#8217;m still learning, so you don&#8217;t have to repeat the same mistakes.</p><p><strong>&#128175; The mission:</strong></p><p>To help you find those powerful engineering insights that actually work. Here are some ideas you can use in your next sprint. System-designing, career-accelerating, problem-solving tactics you won't find in computer science textbooks. With these in your toolkit, you can take the Craft's Path with confidence.</p><p>"<strong>Tech World With Milan</strong>" is your engineering playbook. Ready to level up? &#128640;</p><blockquote><p>&#128073; <em>&#8220;Subscribe to join 50,000+ engineers and leaders who&#8217;ve chosen the Craft path.&#8221;</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.techworld-with-milan.com/subscribe?"><span>Subscribe now</span></a></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0IjT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0IjT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 424w, https://substackcdn.com/image/fetch/$s_!0IjT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 848w, https://substackcdn.com/image/fetch/$s_!0IjT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 1272w, https://substackcdn.com/image/fetch/$s_!0IjT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0IjT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png" width="1381" height="274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:274,&quot;width&quot;:1381,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288364,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/171441808?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.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_!0IjT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 424w, https://substackcdn.com/image/fetch/$s_!0IjT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 848w, https://substackcdn.com/image/fetch/$s_!0IjT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 1272w, https://substackcdn.com/image/fetch/$s_!0IjT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52c4a2b-fa7c-4126-ab0d-8c713adb6392_1381x274.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>&#129489;&#8205;&#128187; If you are a <strong>software engineer</strong>:</h3><ol><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/books-every-software-engineer-must">Books Every Software Engineer Must Read in 2023</a></strong><a href="https://newsletter.techworld-with-milan.com/p/books-every-software-engineer-must">.</a> (and <strong><a href="https://newsletter.techworld-with-milan.com/p/learn-things-that-dont-change">2024</a></strong>.). Get a curated list of the most impactful reads to stay on top of your craft.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/you-can-code-only-4-hours-per-day">You can code only 4 hours per day. Here&#8217;s why</a>. </strong>And no, AI doesn&#8217;t improve this either.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/learn-fundamentals-not-frameworks">Learn fundamentals, not frameworks</a></strong>. In an age when AI writes code for you, fundamentals are the only things that make you adaptable and resilient.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-distinguishes-a-great-software">What distinguishes great software engineers by Microsoft</a></strong> (and <strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-become-a-great-software-engineer">me</a></strong>). Learn about the traits that separate good coders from great ones.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/context-switching-is-the-main-productivity">Context-switching is the main productivity killer for developers</a>. </strong>Discover strategies to minimize interruptions and stay in a state of flow.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-deal-with-technical-debt">How to deal with Technical Debt</a> </strong>(also read <strong><a href="https://newsletter.techworld-with-milan.com/p/how-google-measures-and-manages-tech">how Google does it</a></strong>, and <strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-deal-with-technical-debt-in">how to handle it in legacy projects</a></strong>). Identify and mitigate the hidden costs of rushing code. </p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/5-books-behind-my-growth-as-a-cto">5 books that changed my engineering career forever</a></strong>. These books significantly impacted my career path.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing">What I learned from the book Designing Data-Intensive Applications</a></strong>. Most engineers skim DDIA. I read it twice, and here&#8217;s why it rewired my mental model.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/my-learnings-from-the-book-a-philosophy">My learnings from the book A Philosophy of Software Design</a></strong>. Probably the best book on software design out there.</p></li><li><p><strong><a href="http://ttps://newsletter.techworld-with-milan.com/p/computer-science-papers-every-developer">Computer Science Papers Every Developer Should Read</a></strong>. The most impactful computer science that every developer needs to read.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/why-csharp">Why C#?</a> </strong>(and <strong><a href="https://newsletter.techworld-with-milan.com/p/recommended-learning-resources-for">recommended learning resources</a></strong>). The answer to the question: <em>Why do you code in C#</em>?</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-learn-api">How to learn API</a></strong>. With the list of all essential resources you will ever need.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-do-code-reviews-properly">How To Do Code Reviews Properly</a></strong>. To improve your software quality process and developer happiness</p></li><li><p><strong><a href="http://ps://newsletter.techworld-with-milan.com/p/why-is-critical-thinking-a-game-changer">Why is critical thinking a game-changer for developers</a></strong>. The single thing that differentiates great developers from others.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-a-single-line-of-code-brought">How a Single Line of Code Brought Down a Billion-Dollar Rocket</a></strong>. Learn more about software bugs that led to catastrophic outcomes.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-are-deployment-patterns">What Are Deployment Patterns</a>.</strong> Learn about popular deployment patterns, from canary releases to dark launches.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/git-branching-strategies">Git Branching Strategies</a></strong><a href="https://newsletter.techworld-with-milan.com/p/git-branching-strategies">.</a> Learn how to choose a proper Git branching strategy.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-cicd-pipeline">What is a CI/CD Pipeline</a></strong>. Understand what CI/CD is and how it shapes modern project delivery.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/the-software-essays-that-changed">10 software essays that changed how I think</a>. </strong>Each one delivered a lesson that shifted my perspective, from technology choices, architecture, coding practices, and even my career.</p></li></ol><h3>&#127959;&#65039; If you are a <strong>software architect</strong>:</h3><ol><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/documenting-software-architectures">Mastering the Art of Software Architecture Documentation</a></strong>. Communicate complex systems clearly and in a structured manner.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-a-modular-monolith">What is a Modular Monolith</a> </strong>(and <strong><a href="https://newsletter.techworld-with-milan.com/p/why-you-should-build-a-modular-monolith">why you should start with it</a></strong>). An in-depth look at designing flexible, maintainable architectures.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-software">What I learned from the book Software Architecture: The Hard Parts</a></strong>. Key takeaways that might shift how you plan and design software systems.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-clean-architecture">What is a Clean Architecture</a></strong>. Establish robust boundaries to keep your codebase organized and maintainable.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-does-netflix-manage-to-show-you">How does Netflix manage to show you a movie without interruptions?</a> </strong>A deep dive into the Netflix systems architecture.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/driving-architectural-decisions-with">Facilitating Software Architectures</a></strong>. A decentralized framework for making architectural decisions.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-do-you-test-your-software-architecture">How to test your software architectures</a></strong>. Use Fitness functions to ensure that our architectural goals are met.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/your-architecture-is-complex-as-your">Your software architecture is as complex as your organization</a></strong>. How Conway&#8217;s Law dictates your software architecture.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/software-architecture-as-code-tools">Software Architecture As Code Tools</a></strong>. An overview of all major architecture/diagrams as code tools.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/airbnb-microservice-architecture">Airbnb Microservice Architecture</a></strong>, <strong><a href="https://newsletter.techworld-with-milan.com/p/stack-overflow-architecture">StackOverflow, Shopify, and Levels.fyi Architecture</a></strong>. Use cases of popular website architectures.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/evolution-of-the-netflix-api-architecture">Evolution of the Netflix API Architecture</a></strong>. How Netflix changed its API architecture through 4 main stages.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/top-10-architectural-patterns">Top 10 Architectural Patterns</a></strong>. Main architectural design patterns everyone needs to know.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/scale-from-zero-to-million-users">How to Scale an App up to 10 Million Users on Azure</a></strong>. A deep dive into an Azure Solution Architecture.</p></li></ol><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.techworld-with-milan.com/subscribe?"><span>Subscribe now</span></a></p><h3>&#129517; If you are a <strong>leader or manager</strong>:</h3><ol><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/building-high-performing-teams">Building High-Performing Teams</a></strong>. Core principles to bring your team to its highest potential.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-delegate">How to delegate efficiently</a></strong>. Simple frameworks for handing off tasks without losing visibility.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-establish-feedback-culture">How to establish a feedback culture</a></strong>. Foster open communication and continuous improvement.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-google-build-great-engineering">How Google builds great engineering teams</a></strong>. Insights from one of the world&#8217;s leading tech organizations.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/15-best-leadership-books">15 Best Leadership Books</a></strong>. That made me a better leader.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-coach-people-through-the-change">How to coach people through the Change Curve</a></strong>. Every change is an opportunity to coach people.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-be-a-multiplier-as-a-leader">How to be a multiplier as a leader</a></strong>. Become a multiplier to your team, not a diminisher.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/are-you-aware-that-you-should-use">Why you should use different leadership styles</a></strong>. Why is no single leadership style good for you.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-measure-developer-productivity">How To Measure Developer Productivity</a></strong>. An overview of different developer productivity frameworks: DevEx, SPACE, DORA, and GSM.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-deal-with-difficult-conversations">How to deal with difficult conversations</a></strong>. Learn to better handle difficult conversations by using two powerful models. </p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/all-estimations-are-wrong-but-none">All Estimations Are Wrong, But None Are Useful</a></strong>. Learn why estimations are not reasonable, but why we still use them.</p></li></ol><h3>&#127919;If you are preparing for tech interviews:</h3><ol><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-does-single-sign-on-sso-work">How SSO (Single Sign-On) actually works</a></strong>. Get how one login unlocks multiple apps with zero extra passwords. </p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-are-the-main-api-architecture">The main API architecture styles: SOAP, REST, GraphQL, WebSocket, Webhooks</a></strong>. See which style fits when, plus a checklist for security risks.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-cdn">What a CDN does and why it matters</a></strong>. How caching and edge servers make your site fast and resilient without new hardware. </p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/when-to-use-graphql-grpc-and-rest">When to use GraphQL, gRPC, or REST</a></strong>. Match the correct protocol to your need: REST simplicity, gRPC speed, or GraphQL flexibility. </p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-does-oauth-20-work">How OAuth 2.0 works under the hood</a></strong>. Learn how apps use tokens, not credentials, to access your data safely. </p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-learn-sql">How to learn SQL effectively</a></strong>. Master queries, joins, and optimizers, and get the top tools to practice.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/api-gateway-vs-load-balancer-vs-reverse">API Gateway vs Load Balancer vs Reverse Proxy</a></strong>. Clarify who does what in your stack, routing, balancing, and securing traffic. </p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-microservice-architecture">What microservice architecture actually is</a></strong>. Break a monolith into small, deployable services that teams can own.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-api-gateway">What an API Gateway is</a></strong>. See how it sits between the client and services, orchestrates APIs, and adds a layer of control.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/what-is-the-difference-between-mvc">What is the difference between MVC, MVP, MVI, MVVM, MVVM-C, and VIPER architecture patterns</a></strong>. Essential differences between the most popular architecture patterns.</p></li></ol><h3>&#127793; If you want to continue with your <strong>personal development</strong>:</h3><ol><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-become-an-expert-in-anything">How to become an expert in anything</a></strong>. Proven methods for skill mastery and steady growth.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-learn-anything-efficiently">How to learn anything efficiently</a></strong>. Learn how to understand things and retain everything you learned deeply.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-fight-impostor-syndrome">How to fight Impostor Syndrome</a></strong>. Practical steps to quiet self-doubt and perform confidently.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-be-10x-more-productive">How to be 10x more productive</a></strong>. Techniques for prioritizing work and cutting busywork.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-make-better-decisions-with">How to make better decisions with Second-Order Thinking</a></strong>. A simple mental model for better decisions.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/some-important-learnings-from-my">Some important learnings from my 20 years of engineering life</a></strong>. That will make you a better developer and leader.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/the-habits-of-highly-effective-people">The habits of highly effective people</a></strong>. 7+1 habit that will make you highly efficient, according to Stephen R. Covey.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/how-to-be-accountable">How to be Accountable?</a> </strong>Why is accountability necessary, and how to be and hold people accountable?</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/high-agency-what-separates-top-performers">How to develop High Agency</a></strong>. The fundamental trait of people who seem to always <em>find a way</em> forward, even in challenging conditions.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/from-invisible-engineer-to-trusted">From invisible engineer to trusted expert on LinkedIn.</a> </strong>How I grew from 2k to 260k followers and built a career safety net in two and a half years</p></li></ol><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.techworld-with-milan.com/subscribe?"><span>Subscribe now</span></a></p><h3>&#128200; If you want to <strong>follow trends in the industry</strong>:</h3><ol><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/trends-8-developers-use-ai-more-but">Trends #8: Developers use AI more, but they trust it much less</a>. </strong>What we learned from the latest trends in AI.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/trends-6-typescript-is-getting-10x">Trends #7: TypeScript is getting 10x faster</a>! </strong>Microsoft's surprising language choice has developers talking, and build times are dropping dramatically.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/trends-6-python-is-the-most-popular">Trends #6: Python is the most popular programming language on GitHub</a>. </strong>For the first time, Python has surpassed JavaScript to become the most widely used and fastest-growing programming language on GitHub.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/chatgpt-is-not-ai">ChatGPT is not AI</a>. </strong>Most people think ChatGPT is AI, but they're wrong.</p></li><li><p><strong><a href="https://newsletter.techworld-with-milan.com/p/70-engineering-blogs-to-follow-in">70+ Engineering Blogs To Follow in 2025.</a> </strong>All you need to know in one place.</p></li></ol><blockquote><p><em>Check all <strong><a href="https://newsletter.techworld-with-milan.com/p/learning-tracks">learning tracks</a></strong> on my newsletter. </em></p></blockquote><div><hr></div><h3>Ways I can help you grow faster</h3><p>Here is the complete list of my products and services:</p><ul><li><p><strong><a href="https://www.patreon.com/posts/you-can-build-143858069?source=storefront">&#128241; You Can Build A LinkedIn Audience</a></strong>. The system I used to grow from 0 to 260K+ followers in under two years, plus a 50K-subscriber newsletter.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#8211; 500+ pages on C#, ASP.NET Core, patterns, best practices.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Packages</a> &amp; <a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Reviews</a></strong> &#8211; Get CTO-level feedback to land interviews.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong> &#8211; The system behind my 270k+ audience.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong> &#8211; Solve your most complex engineering or leadership challenge.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Patreon Community</a></strong> &#8211; Unlock every book, template, and early drop. Read more than 130 of my posts, and some in advance, before publishing.</p></li></ul><div><hr></div><h3><strong>&#127873; But there&#8217;s more!</strong></h3><p>Download my mini-book: <strong><a href="https://newsletter.techworld-with-milan.com/p/100-books-that-changed-my-life">100+ Books That Changed My Life</a></strong> in my book club.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMbC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMbC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 424w, https://substackcdn.com/image/fetch/$s_!aMbC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 848w, https://substackcdn.com/image/fetch/$s_!aMbC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!aMbC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMbC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png" width="282" height="398.86845827439885" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2000,&quot;width&quot;:1414,&quot;resizeWidth&quot;:282,&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_!aMbC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 424w, https://substackcdn.com/image/fetch/$s_!aMbC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 848w, https://substackcdn.com/image/fetch/$s_!aMbC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!aMbC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61778c-a4bb-4329-8064-ed26728e54d9_1414x2000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One-page briefs of the most impactful books across tech, leadership, productivity, and beyond.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/100-books-that-changed-my-life&quot;,&quot;text&quot;:&quot;Download here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.techworld-with-milan.com/p/100-books-that-changed-my-life"><span>Download here</span></a></p><div><hr></div><h3>&#128073; <strong>Subscribe to join 50,000+ engineers and leaders.</strong></h3><p>Every week: one clear, actionable article in your inbox.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.techworld-with-milan.com/subscribe?"><span>Subscribe now</span></a></p><p>See you soon,<br>Milan</p><div><hr></div><p>&#128073; P.S. Please share. Send&nbsp;<a href="https://newsletter.techworld-with-milan.com/">Tech World with Milan</a>&nbsp;to other people who take&nbsp;<strong>the</strong>&nbsp;<strong>Craft&nbsp;</strong>path. Friends always make adventures easier.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p>]]></content:encoded></item><item><title><![CDATA[How to do code reviews with AI tools]]></title><description><![CDATA[Writing code has never been easier, but delivering great software is now more complex than ever.]]></description><link>https://newsletter.techworld-with-milan.com/p/how-to-do-code-reviews-with-ai-tools</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/how-to-do-code-reviews-with-ai-tools</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 14 Aug 2025 15:02:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lUCj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Writing code has never been easier, but delivering great software is now more complex than ever. AI tools have pushed our productivity to new levels, allowing developers to write code much faster, teams to ship more features, and delivery to increase. </p><p>Yet, beneath this shiny productivity spike, a deeper problem began to emerge: Technical Debt started to rise, as quality and maintainability had quietly become the bottleneck.</p><p>Leading engineering teams through the AI-driven shift, I've seen firsthand how easily developers can be overwhelmed by the volume of auto-generated code while vibecoding. Reviewing code thoroughly, spotting bugs, and ensuring architectural rules now set traditional review processes to their limits.</p><p>The old ways: manual, detail-oriented reviews by overloaded engineers, which can no longer scale. However, the same AI revolution that has driven our productivity boost also offers tools that can enable efficient code reviews entirely. </p><p>In this article, I&#8217;ll share how we can leverage AI not only to write more code but to ensure it&#8217;s the correct code: cleaner, simpler, and aligned with long-term technical goals.</p><p>In this article, we will talk about:</p><ol><li><p><strong>How are we writing software in the age of AI. </strong>AI-driven code generation has dramatically increased developer output. Here, we will examine the current state of AI-assisted coding and how teams are integrating these tools into their everyday workflows.</p></li><li><p><strong>What is lacking in the current approach</strong>.<strong> </strong>As we can see, more code does not necessarily equal better code. We'll examine new challenges, like code duplication, increased churn, and lost architectural clarity, that emerge from AI-assisted development.</p></li><li><p><strong>How AI tools can improve code reviews</strong>. AI isn't only useful for generating code; it can help during code reviews. I&#8217;ll show how teams can automate routine checks, catch common pitfalls early, and free human reviewers to focus on what matters most.</p></li><li><p><strong>AI code reviews case study</strong>. We will discuss how a new range ot tools, such as CodeRabbit, can improve the situation with a large amount of generated code.</p></li><li><p><strong>What will be possible?</strong> Looking ahead, AI-powered reviews could fundamentally transform how software development is conducted.</p></li><li><p><strong>Conclusion. </strong>Here we wrap up with actionable steps for engineering leaders and developers to integrate AI-assisted code reviews effectively, and leave you with reflections on how your team can best adapt to these changes.</p></li></ol><p>So, let&#8217;s dive in.</p><blockquote><p><strong>Disclaimer</strong><em>: The article is written in a cooperation with <a href="https://coderabbit.link/milan">CodeRabbit</a>.</em></p></blockquote><div><hr></div><h2>1. How are we writing software in the age of AI?</h2><p>The way we write code has changed so fundamentally in the last two years that most teams are still playing catch-up. AI-powered coding tools such as Cursor, Windsurf, Lovable, and GitHub Copilot have accelerated code generation. New pull requests arrive at a rate that would have been unimaginable just a few years ago.</p><p>When we examine the numbers,<strong> 82% of developers use AI coding tools daily</strong> or weekly (<a href="https://www.qodo.ai/reports/state-of-ai-code-quality/">2025 State of AI code quality</a>), with 41% of all code now generated by AI. <a href="https://blog.google/inside-google/message-ceo/alphabet-earnings-q3-2024/#search">Google reports that 25% of its new code comes from AI assistance</a>, while <a href="https://devblogs.microsoft.com/engineering-at-microsoft/enhancing-code-quality-at-scale-with-ai-powered-code-reviews/">Microsoft's internal AI review system handles over 600,000 pull requests per month</a>.</p><p>This shift happened faster than anyone anticipated. Where developers once carefully crafted each function, <strong>they now prompt, review, and refine</strong>. The old bottleneck, typing speed (remember when we practiced this, right?), vanished overnight. The new bottleneck emerged in an unexpected place:<strong> understanding what the AI produced.</strong></p><p>This explosion in AI-generated code has made <strong>code cheap to create</strong>. Yet, we often forget that <strong>the code is a liability, not an asset</strong>, and the less code we have, the better.</p><p>What we can see is that teams report spending <strong>60% of review time building context</strong> for AI-generated code, 10% verifying accuracy due to hallucinations, and only 20% on the review itself.</p><p>This inversion of effort signals that something fundamental has broken in our development process. <strong>We optimized for speed but compromised on quality.</strong></p><p>The adoption of AI coding tools is shown in the image below (from the <a href="https://www.qodo.ai/reports/state-of-ai-code-quality/">2025 State of AI code quality</a>).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sosq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sosq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 424w, https://substackcdn.com/image/fetch/$s_!Sosq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 848w, https://substackcdn.com/image/fetch/$s_!Sosq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 1272w, https://substackcdn.com/image/fetch/$s_!Sosq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sosq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png" width="585" height="480.04587155963304" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:805,&quot;width&quot;:981,&quot;resizeWidth&quot;:585,&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_!Sosq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 424w, https://substackcdn.com/image/fetch/$s_!Sosq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 848w, https://substackcdn.com/image/fetch/$s_!Sosq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 1272w, https://substackcdn.com/image/fetch/$s_!Sosq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2332565a-a1b4-4b03-a9e8-f1aa66f72fc9_981x805.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Adoption is broad, frequent, and multi-tool (Source:<a href="https://www.qodo.ai/reports/state-of-ai-code-quality/"> 2025 State of AI code quality</a>)</figcaption></figure></div><h2>2. What is lacking in the current approach?</h2><p>What we can see is that writing code faster makes us more productive, but the quality of that code is questionable. The entire story of vibecoding is based solely on sheer code production; <strong>no one is discussing code quality, reviews, potential bugs, problems</strong>, or overall Technical Debt increase.</p><p>A recent analysis of 211 million lines of code revealed several trends as AI coding tools gained popularity (<a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research">GitClear Code Quality Research, 2025</a>). It saw a <strong>17.1% jump in copy-pasted code, and duplicate code blocks</strong> became eight times more common in commits.</p><p><strong>For the first time, copy-pasted (AI-generated) lines outpaced the number of lines being refactored for reuse</strong>. This means developers are adding numerous similar lines of code instead of creating shared functions, resulting in a more bloated codebase and increased difficulty in maintaining it.</p><p>We also saw another red flag: <strong>code churn</strong> spiked by 26% in the same study (as shown in the image below). About 5.7% of all code changes were revised or deleted within two weeks of being written.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!URNc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!URNc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 424w, https://substackcdn.com/image/fetch/$s_!URNc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 848w, https://substackcdn.com/image/fetch/$s_!URNc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!URNc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!URNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg" width="660" height="455.29411764705884" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:748,&quot;resizeWidth&quot;:660,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GitClear Reveals AI's Negative Impact On Code Quality&quot;,&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="GitClear Reveals AI's Negative Impact On Code Quality" title="GitClear Reveals AI's Negative Impact On Code Quality" srcset="https://substackcdn.com/image/fetch/$s_!URNc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 424w, https://substackcdn.com/image/fetch/$s_!URNc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 848w, https://substackcdn.com/image/fetch/$s_!URNc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!URNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0090c704-4679-4fe0-8d75-a23e438647ca_748x516.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Code Operations and Code Churn by Year (Source: <a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research">GitClear Code Quality Research 2025</a>)</figcaption></figure></div><p>In other words, more than one in twenty lines of code gets tossed out almost immediately. This suggests that AI-generated code is often not built to last &#8211; developers have to rework or clean it up shortly after it&#8217;s created.</p><p>Why is this happening? One reason is<strong> that AI doesn&#8217;t inherently understand your project&#8217;s architecture or long-term vision</strong>. LLMs have a short context window, and they struggle with analyzing large codebases. It&#8217;s often easier for an AI to insert new code than to find and use existing code.</p><blockquote><p><em>A <strong>context window</strong> is a textual range around a target token that a large language model (LLM)<strong> </strong>can process when generating the information.</em></p></blockquote><p>So we end up with many near-duplicate functions throughout the codebase (violating the DRY principle). Also, AI-generated code might &#8220;work&#8221; initially but lack a few essential characteristics, such as proper error handling, clear naming, and thorough testing, which a human would add through careful review and refactoring.</p><p>At the same time, <strong>our traditional code review process hasn&#8217;t kept pace with this increase in codebase sizes</strong>. Many teams still conduct classic code reviews: a developer opens a pull request, waits for a colleague to manually inspect it, and no code is merged until it passes review.</p><p>With 10x more code to review, this approach strains both patience and effectiveness. Reviewers are stuck sifting through masses of changes, often bogged down by trivial issues (like syntax or style tweaks) when their attention should be on bigger design or bug risks.</p><p>The result: slower feedback, reviewer fatigue, and sometimes missed problems slipping through.</p><h2>3. How can AI tools improve this?</h2><p>This is where we can also utilize AI tools, not as a code writer, but as a <strong>code reviewer</strong>. Modern AI review tools are designed to catch issues before they slip through and expedite the entire review process. <strong>Could an AI assistant be the cure for our code review problems?</strong></p><p>AI-powered code reviews can tackle the grunt work first. <strong>They automatically flag duplicate code or bad patterns so humans don&#8217;t have to</strong>. For example, an AI reviewer might scan a pull request and point out: &#8220;<em>Hey, these five lines you added look similar to code in Module X &#8211; maybe you should reuse it</em>.&#8221; Additionally, it can perform a preliminary version of self-code reviews. This helps to view it as something "new" and <strong>avoid operational blindness</strong>.</p><p>It can also enforce your<strong> team&#8217;s style guide without a teammate nitpicking line by line</strong>. If you forget to handle a possible null input or misspell a unit test for new logic, the AI can instantly highlight it.</p><p>To make it concrete, imagine opening a pull request with 500 lines of changes (hopefully, this doesn&#8217;t happen often). An AI review assistant kicks in and, within seconds, you get a report: it summarizes the overall changes in a few bullet points, identifies two functions as nearly duplicates of existing ones, notes no new tests were added for a critical module, and even suggests a couple of edge cases likely to break the latest code. And all of this can happen before a human even starts to review.</p><p>By covering these routine checks, AI reviewers <strong>reduce toil</strong> and free up developers to focus on more meaningful feedback. Instead of wasting time on missing semicolons or minor inefficiencies, the human reviewer can focus on whether the solution&#8217;s approach is sound and whether the code fits the requirements.</p><p><strong>This makes code reviews faster and more enjoyable</strong>; you get to talk about architecture and clarity rather than counting spaces or parentheses.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7AQR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7AQR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7AQR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7AQR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7AQR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7AQR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg" width="538" height="424.6421404682274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:897,&quot;resizeWidth&quot;:538,&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_!7AQR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7AQR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7AQR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7AQR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b19ee5-5568-40f2-be89-fedc27a55da9_897x708.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Code reviews can be harsh</figcaption></figure></div><p>AI tools also help <strong>reduce risk</strong> in code reviews. They act as a safety net, especially for teams practicing continuous integration and delivery (CI/CD). Some teams are now comfortable merging code sooner and reviewing it later (&#8220;merge first, review after&#8221;) because an AI did a first-pass review.</p><p>Knowing that an automated assistant checks for obvious mistakes <strong>gives developers</strong> <strong>confidence to deploy faster</strong> &#8211; if a bug slips by, the AI likely flags it or a test catches it, and it can be fixed in a follow-up. This enables trunk-based development, and developer velocity increases when people aren&#8217;t stuck waiting on a manual review for each small change.</p><p>Another benefit is how AI reviews <strong>democratize expertise</strong>. Not all teams have a security guru or performance expert available for each code review; however, an AI model trained on vast code knowledge can identify concerns in those areas. </p><p>For instance, it might warn if a piece of code appears vulnerable to SQL injection or if a particular approach could become a scalability bottleneck. It&#8217;s like having a virtual expert at your code alongside your teammates.</p><p>This doesn&#8217;t replace senior engineers, but it augments the whole team&#8217;s ability to spot issues beyond their specialty.</p><blockquote><h3><strong>&#128221; Accountability in code reviews - what research says</strong></h3><p><em>A <a href="https://arxiv.org/pdf/2502.15963">recent study</a> by researchers at the University of Southern Denmark, Aarhus University, and the University of Victoria tackled this question directly:<strong> what happens to accountability when AI enters the code review process?</strong> </em></p><p><em>The study used a two-phase approach specifically designed to overcome the limitations of self-reported data. Phase I interviews captured engineers' stated motivations, while Phase II focus groups observed actual behavior during simulated code reviews. </em></p><p><em>The researchers configured four different scenarios: testing role hierarchy, public reviews, cross-team reviews, and complex code modules, to understand how accountability persists under various pressures.</em></p><p><em>The results were interesting. <strong>While engineers consistently reported pride and integrity as drivers in one-on-one conversations, the focus groups showed them actively downregulating these same motivations during collaborative reviews. </strong></em></p><p><em>Pride became secondary to consensus. Professional integrity shifted from "doing the right thing" to "avoiding defensiveness and engaging constructively with feedback."</em></p><p><em>This self-regulation process, where individual drivers adapt to enable collective accountability, only happens when humans are watching.</em></p><p><em>The researchers identified a specific breaking point: <strong>reciprocity</strong>. Peer review works because both author and reviewer become mutually accountable for code quality. When someone approves your code, they're "on the line" too. LLMs can't reciprocate this accountability, which eliminates the social contract that drives collective ownership.</em></p><p><em>Engineers praised AI feedback quality but remained fundamentally skeptical of contextual understanding. As one noted: "It has no idea in terms of context what it's predicting... And I'm not accountable to it."</em></p><p><em>From here, the usage of LLM tools for code reviews is suitable in scenarios <strong>to serve as a first-pass reviewer, followed by human input in every review cycle</strong>, especially for larger architectural changes and following team standards.</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_!njzb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!njzb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 424w, https://substackcdn.com/image/fetch/$s_!njzb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 848w, https://substackcdn.com/image/fetch/$s_!njzb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 1272w, https://substackcdn.com/image/fetch/$s_!njzb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!njzb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png" width="1456" height="654" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:654,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!njzb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 424w, https://substackcdn.com/image/fetch/$s_!njzb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 848w, https://substackcdn.com/image/fetch/$s_!njzb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 1272w, https://substackcdn.com/image/fetch/$s_!njzb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb271d1e-e7cc-4c49-9284-92e6f1d75d90_1456x654.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A framework for understanding accountability, based on findings from Phases I and II of the study</figcaption></figure></div></blockquote><h2>4. How to use AI tools for code reviews: An example of CodeRabbit</h2><p>In practice, developers will find AI review tools helpful. My experimentation with using AI tools such as ChatGPT or Copilot for doing code reviews went like this:</p><ul><li><p>Tried using multiple AI models to assist in code reviews on a recent project.</p></li><li><p>Spent roughly <strong>60% of the time</strong> preparing context for the AI: gathering relevant code snippets, documentation, and explaining the change to the model.</p></li><li><p>Spent about <strong>10% of the time</strong> verifying the AI&#8217;s suggestions to filter out any hallucinations or incorrect feedback (the AI sometimes flagged issues that weren&#8217;t real).</p></li><li><p>The remaining <strong>20% of the time</strong> was spent on human code review work, focusing on design decisions, code readability, and final judgment calls.</p></li></ul><p>From here, AI can handle many of the mechanical checks, but it requires setup and oversight. We had to guide the AI and double-check its output, so the process shifted our effort rather than eliminating it.</p><p>Still, the net effect was a more thorough review in roughly the same amount of time.</p><p>We can significantly improve these tasks by utilizing tools like <strong><a href="https://coderabbit.link/milan">CodeRabbit</a></strong> to enhance productivity, as illustrated in the image below, which highlights specific use cases.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lUCj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lUCj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 424w, https://substackcdn.com/image/fetch/$s_!lUCj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 848w, https://substackcdn.com/image/fetch/$s_!lUCj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 1272w, https://substackcdn.com/image/fetch/$s_!lUCj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lUCj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png" width="1456" height="1029" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1029,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!lUCj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 424w, https://substackcdn.com/image/fetch/$s_!lUCj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 848w, https://substackcdn.com/image/fetch/$s_!lUCj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 1272w, https://substackcdn.com/image/fetch/$s_!lUCj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F311b10d8-eb8c-4a33-b2ce-32a58a5e223c_1600x1131.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Traditional vs AI-based code review</figcaption></figure></div><p>Tools like <strong><a href="https://coderabbit.link/milan">CodeRabbit</a></strong> integrate with GitHub or GitLab and generate AI-driven review comments on your pull requests. They might say, &#8220;<em>This function is quite complex - consider refactoring,</em>&#8221; or ask, &#8220;<em>Can we add input validation here?</em>&#8221;</p><p>Having an AI reviewer means you have a tireless assistant who never gets bored with checking even the most minor details.</p><p>Here are a few<strong> notable use cases I found <a href="https://coderabbit.link/milan">CodeRabbit</a> useful</strong>:</p><h3>Use case 1: PR summary</h3><p>One of <a href="https://coderabbit.link/milan">CodeRabbit</a>&#8217;s key features is its ability to generate clear, concise pull request summaries. Now, anyone who needs to check this PR can get out-of-the-box documentation on the work done.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CiYu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CiYu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 424w, https://substackcdn.com/image/fetch/$s_!CiYu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 848w, https://substackcdn.com/image/fetch/$s_!CiYu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 1272w, https://substackcdn.com/image/fetch/$s_!CiYu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CiYu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png" width="1456" height="882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&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_!CiYu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 424w, https://substackcdn.com/image/fetch/$s_!CiYu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 848w, https://substackcdn.com/image/fetch/$s_!CiYu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 1272w, https://substackcdn.com/image/fetch/$s_!CiYu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1db60075-23b3-4b75-948c-6178e6cc24e6_1600x969.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">PR Summaries by <a href="https://coderabbit.link/milan">CodeRabbit</a></figcaption></figure></div><h3>Use case 2: Finding security issues</h3><p>SQL injection is one of the most dangerous security flaws in apps. It happens when attackers trick your database into executing malicious code.</p><p>The fix is to use parameterized queries. However, in large codebases, we can easily overlook this. Thankfully, <a href="https://coderabbit.link/milan">CodeRabbit</a> scans for unsafe query patterns and flags potential issues:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CsXd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CsXd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 424w, https://substackcdn.com/image/fetch/$s_!CsXd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 848w, https://substackcdn.com/image/fetch/$s_!CsXd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 1272w, https://substackcdn.com/image/fetch/$s_!CsXd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CsXd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png" width="912" height="538" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:538,&quot;width&quot;:912,&quot;resizeWidth&quot;:null,&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_!CsXd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 424w, https://substackcdn.com/image/fetch/$s_!CsXd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 848w, https://substackcdn.com/image/fetch/$s_!CsXd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 1272w, https://substackcdn.com/image/fetch/$s_!CsXd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F065be842-f44a-4593-a658-3bc515d7f7e4_912x538.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Finding security issues with <a href="https://coderabbit.link/milan">CodeRabbit</a></figcaption></figure></div><h3>Use case 3: Bad naming</h3><p>We often see in codebases that developers don&#8217;t use different terms for the same concept. For example:</p><ul><li><p>&#10060; createInvoice</p></li><li><p>&#10060; generateBill</p></li><li><p>&#10060; makeReceipt</p></li></ul><p>This makes your code inconsistent, which can confuse you and your colleagues.</p><p><strong>Instead, we want to use one word per concept in the entire codebase, like this:</strong></p><ul><li><p>&#9989; createInvoice</p></li><li><p>&#9989; createBill</p></li><li><p>&#9989; createReceipt</p></li></ul><p><strong><a href="https://coderabbit.link/milan">CodeRabbit</a></strong> flags inconsistent naming, ensuring your code remains clean, consistent, and easy to navigate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!grf3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!grf3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 424w, https://substackcdn.com/image/fetch/$s_!grf3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 848w, https://substackcdn.com/image/fetch/$s_!grf3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 1272w, https://substackcdn.com/image/fetch/$s_!grf3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!grf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png" width="817" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:817,&quot;resizeWidth&quot;:null,&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_!grf3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 424w, https://substackcdn.com/image/fetch/$s_!grf3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 848w, https://substackcdn.com/image/fetch/$s_!grf3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 1272w, https://substackcdn.com/image/fetch/$s_!grf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ca2a35-979e-462b-8dc4-917ff3ab585e_817x456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Flagging bad names with <a href="https://coderabbit.link/milan">CodeRabbit</a></figcaption></figure></div><h3>Use case 4: Missing test cases</h3><p>Most developers test only the happy paths, but the real bugs hide in edge and corner cases.</p><p><a href="https://coderabbit.link/milan">CodeRabbit</a> spots missing edge case tests and even suggests what to add. You can reply and let it generate the missing tests for you. This helps boost both code coverage and behavioral confidence in your project.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RELm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RELm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 424w, https://substackcdn.com/image/fetch/$s_!RELm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 848w, https://substackcdn.com/image/fetch/$s_!RELm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 1272w, https://substackcdn.com/image/fetch/$s_!RELm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RELm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png" width="821" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:821,&quot;resizeWidth&quot;:null,&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_!RELm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 424w, https://substackcdn.com/image/fetch/$s_!RELm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 848w, https://substackcdn.com/image/fetch/$s_!RELm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 1272w, https://substackcdn.com/image/fetch/$s_!RELm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe16cce09-6373-4d84-afbe-a3c33ab57581_821x804.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://coderabbit.link/milan">CodeRabbit</a> finds edge cases</figcaption></figure></div><p>In general, <a href="https://coderabbit.link/milan">CodeRabbit</a> works in both the IDE (VSCode, Cursor, or Winfsurf) and the Git platform. So it is possible to do code reviews on both sides.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SiaE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SiaE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 424w, https://substackcdn.com/image/fetch/$s_!SiaE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 848w, https://substackcdn.com/image/fetch/$s_!SiaE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 1272w, https://substackcdn.com/image/fetch/$s_!SiaE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SiaE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png" width="1456" height="642" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:642,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&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_!SiaE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 424w, https://substackcdn.com/image/fetch/$s_!SiaE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 848w, https://substackcdn.com/image/fetch/$s_!SiaE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 1272w, https://substackcdn.com/image/fetch/$s_!SiaE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2d1072-0928-4d33-a4d0-929752342bcf_1600x706.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">CodeRabbit integration workflow</figcaption></figure></div><h2>5. What will be possible?</h2><p>Taking all into account, the near future of code reviews looks even more interesting. Here are a few things we can expect from AI tools as part of code review in standard development.</p><p>As AI tools, such as <a href="https://coderabbit.link/milan">CodeRabbit</a>, accelerate coding, testing, and reviewing in tandem, <strong>we won&#8217;t have one part of the pipeline lag</strong>. Code generation might be 10x faster, but code reviews and QA will keep pace because AI will assist at each step. This means fewer backlogs of pull requests waiting for human attention.</p><p><strong>AI will soon be trusted to approve specific, low-risk changes automatically. </strong>For example, a simple documentation fix or a minor code refactor could be merged automatically after an AI review checks it, eliminating the need for human intervention. </p><p>Developers can take a leap of faith on these small changes (knowing they can always revert to a bad commit) and save time by not performing detailed reviews.</p><p>As AI takes over writing most routine code, <strong>human developers will shift more into the role of curators and architects.</strong> The real value of a senior engineer lies in defining what the software should do and ensuring that the AI-generated parts fit into the bigger picture. </p><p>In other words, our &#8220;taste&#8221; and judgment, selecting the right approach, maintaining code quality, and aligning implementations with business goals, become our key contributions. <strong>While AI handles the &#8220;how,&#8221; humans will decide the &#8220;what&#8221; and &#8220;why.&#8221;</strong></p><p>We may reach a point where AI is more reliable at reviewing code than at writing it from scratch. Evaluating code (checking for errors and comparing it against best practices) is more straightforward to automate than the creative process of design.</p><p>So we might trust an AI as a strict code quality gatekeeper even if we wouldn&#8217;t trust it to design an entire module solo; in effect, <strong>AI could become the ultimate pair programmer</strong>, becoming very good at catching mistakes and suggesting improvements to whatever code gets written.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oOQQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oOQQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oOQQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oOQQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oOQQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oOQQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg" width="472" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:472,&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_!oOQQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oOQQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oOQQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oOQQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1909ca-6a93-4584-aa0d-3d8cdf8e1d98_1600x1600.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Human and AI work together (Source: Freepik)</figcaption></figure></div><h2>6. Conclusion</h2><p>AI won&#8217;t replace human code reviewers, but it&#8217;s certainly changing their job. We can now offload the significant parts of reviews to machines and focus on insights and decisions only humans can make.</p><p>Code is cheap to produce now, and quality is the new challenge - but with AI&#8217;s help, developers can turn code reviews into a much more efficient process.</p><p>So, how to start from here?<strong> </strong>Pick a small open pull request from your team and run an AI code review tool, such as CodeRabbit, on it. Identify any issues or suggestions that arise, and discuss the findings with your team.</p><p>Track review turnaround time, defect rates reaching production, and developer confidence in shipping changes. These metrics reveal whether AI review truly improves your development process or merely creates the illusion of progress through faster output.</p><p>The future belongs to teams that treat AI tools as specialized team members rather than replacements. AI handles systematic analysis at machine speed and scale. Humans provide architectural vision and business context.</p><p>Together, they create code more efficiently and effectively than either could alone.</p><h2>Bonus: Using a human-in-the-loop approach for reviewing code with AI tools</h2><p>AI transforms code reviews, but alone, it's imperfect, often flooding reviewers with minor or irrelevant suggestions. Human-only reviews don't scale either, as we have seen. The optimal solution is a <strong>human-in-the-loop approach</strong>: AI handles routine checks, freeing humans to apply their judgment on what truly matters.</p><p>This collaboration ensures reviews move quickly without sacrificing quality or context. Humans focus on architectural coherence, strategic alignment, and business logic, while AI rapidly identifies common errors, duplications, and code smells.</p><p>To successfully integrate this approach, consider the following framework:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iXZd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iXZd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 424w, https://substackcdn.com/image/fetch/$s_!iXZd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 848w, https://substackcdn.com/image/fetch/$s_!iXZd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 1272w, https://substackcdn.com/image/fetch/$s_!iXZd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iXZd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png" width="1200" height="486" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:486,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&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_!iXZd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 424w, https://substackcdn.com/image/fetch/$s_!iXZd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 848w, https://substackcdn.com/image/fetch/$s_!iXZd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 1272w, https://substackcdn.com/image/fetch/$s_!iXZd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c9add9-21b7-458a-bf9d-11ebea234e86_1200x486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The human-in-the-loop approach for code reviews</figcaption></figure></div><p>This balanced framework can help teams to integrate AI into code reviews while preserving human judgment and strategic decision-making.</p><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to craft a clear, job-ready resume quickly and efficiently. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong> &#8211; Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching an audience of founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p>]]></content:encoded></item><item><title><![CDATA[5 books that changed my engineering career forever]]></title><description><![CDATA[These five titles rewired how I build software, lead teams, and steer my career.]]></description><link>https://newsletter.techworld-with-milan.com/p/5-books-behind-my-growth-as-a-cto</link><guid isPermaLink="false">https://newsletter.techworld-with-milan.com/p/5-books-behind-my-growth-as-a-cto</guid><dc:creator><![CDATA[Dr Milan Milanović]]></dc:creator><pubDate>Thu, 31 Jul 2025 15:01:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/87a9d937-3b93-4f6e-9618-0fdd4dcbc45a_1559x1518.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I love books. When I look at the 5000 books on my bookshelf, I see more than paper and ink; I see <strong>a personal board of mentors I never had</strong>. Over the years, as an avid reader, I have found that these books have <em>quietly</em> reshaped how I approach coding, leadership, and even thinking itself. </p><p>Early in my career, I assumed improving my skills was all about writing more code or learning the latest framework, like everyone else. But the most significant improvements in my growth came from hours spent&nbsp;<strong>flipping pages in some of the best books out there</strong>.&nbsp;</p><p>There&#8217;s something tactile and deliberate about reading, scribbling notes in the margins, dog-earing pages, that forces me to slow down and reflect. </p><p>In this newsletter, I want to share five books that have influenced my journey from engineer to CTO the most. Each of <strong>these books contributed beyond just technical knowledge</strong>; they challenged my assumptions, introduced new mental models, and ultimately changed how I work and lead teams.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TMUC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TMUC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TMUC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TMUC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TMUC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TMUC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg" width="1456" height="1041" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1041,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:845451,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.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_!TMUC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TMUC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TMUC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TMUC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01c22b39-796c-4ba1-bc45-cf8039816a85_3008x2151.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Books that improved my life (note: <em>note all are in the image</em>)</figcaption></figure></div><p>Here, I&#8217;ll explain <em>why each book mattered to me</em> and <em>how it changed my approach</em> as a technologist and leader, from timeless principles of personal effectiveness to systems architecture. </p><p>Together, these books became my off-hours crash course in becoming a better engineer, architect, and decision-maker. </p><p>So, let&#8217;s dive in.</p><h2>1. <strong><a href="https://amzn.to/3GZ6u0K">The Pragmatic Programmer</a></strong></h2><p><strong>Authors</strong>: <em>David Thomas, Andrew Hunt</em></p><p>One book I always recommend to developers is "<strong><a href="https://amzn.to/3GZ6u0K">The Pragmatic Programmer</a></strong>" by David Thomas and Andrew Hunt. Although it is not new, it builds on a foundation that is important today and will remain so. </p><p>When it was released in 1999, it was revolutionary for me because it wrote about what makes developers professionals in a highly unregulated profession. When I read it, I understand that.</p><p>Here are a few lessons that stayed with me:</p><ol><li><p><strong>Write good enough software</strong>. Striving for perfection can lead to never-ending projects. Instead, aim for "good enough" and iterate quickly. Deliver value early and often (all of this was before Scrum). Write code that works, prove it by writing tests, and ensure they are executed automatically. </p></li><li><p><strong>Use Tracer bullets</strong>. Use tracer code or prototypes to validate your understanding of a problem. This helps in clarifying requirements before fully implementing a feature. This was all before the MVP approach.</p></li><li><p><strong>Don&#8217;t blame, fix!</strong> Sometimes you will find bad code written by someone else. Sometimes, you will find bad code that you wrote some time ago. Pragmatic programmers don't say, "<em>I didn't write this, so I will not fix it</em>," but do something about it and open a team-wide debate about why.</p></li><li><p><strong>Don&#8217;t live with broken windows</strong>. In the book, you will learn about the "<em>Broken Windows Theory</em>," which states that if something is broken, others will break it even more in the future. As a pragmatic programmer, you should try to fix all major problems you find in the system while working on 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_!Did9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Did9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Did9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Did9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Did9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Did9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg" width="521" height="272.70264765784117" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:514,&quot;width&quot;:982,&quot;resizeWidth&quot;:521,&quot;bytes&quot;:191739,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.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_!Did9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Did9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Did9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Did9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f643b-2f67-4992-a710-d0ea4ac413d8_982x514.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://en.wikipedia.org/wiki/Broken_windows_theory">Broken window theory</a> (a term taken from psychology)</figcaption></figure></div></li><li><p><strong>Keep your knowledge up to date, always</strong>. Continuous learning is essential. Stay updated with new tools, technologies, and best practices. Learn at least one programming language or tech stack every year. Read technical and non-technical books every once in a while (yes!). This investment in your skills pays off in your career growth.</p></li><li><p><strong>Be DRY</strong>. Redundant code is more complex to maintain. When you notice duplication, refactor it into a shared function or module. This will promote consistency and reduce errors.</p></li></ol><p>Learn more in the book:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://amzn.to/3GZ6u0K" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CYMd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CYMd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CYMd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CYMd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CYMd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg" width="344" height="448.49" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1043,&quot;width&quot;:800,&quot;resizeWidth&quot;:344,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition  (2nd Edition): Thomas, David, Hunt, Andrew: 9780135957059: Amazon.com: Books&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://amzn.to/3GZ6u0K&quot;,&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="The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition  (2nd Edition): Thomas, David, Hunt, Andrew: 9780135957059: Amazon.com: Books" title="The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition  (2nd Edition): Thomas, David, Hunt, Andrew: 9780135957059: Amazon.com: Books" srcset="https://substackcdn.com/image/fetch/$s_!CYMd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CYMd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CYMd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CYMd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4972f90b-e492-4ba1-9f53-3b35dde50959_800x1043.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;<a href="https://amzn.to/3GZ6u0K">The Pragmatic Programmer</a>&#8221;, 20th anniversary edition, released in 2019.</figcaption></figure></div><p><em>The Pragmatic Programmer</em>&nbsp;taught me that sound engineering isn&#8217;t just about writing code that works; it&#8217;s about building code that&nbsp;<strong>stays</strong>&nbsp;working, adaptable, and clean for years to come.</p><p>Here is <strong>the unified mind map</strong> of the whole book with chapters and tips:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lNTh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lNTh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 424w, https://substackcdn.com/image/fetch/$s_!lNTh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 848w, https://substackcdn.com/image/fetch/$s_!lNTh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 1272w, https://substackcdn.com/image/fetch/$s_!lNTh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lNTh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png" width="1456" height="1066" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1066,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1731423,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.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_!lNTh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 424w, https://substackcdn.com/image/fetch/$s_!lNTh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 848w, https://substackcdn.com/image/fetch/$s_!lNTh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 1272w, https://substackcdn.com/image/fetch/$s_!lNTh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b7b226f-7bc5-4a6d-b848-d6d89c3f034d_5682x4160.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;The Pragmatic Programmer&#8221;, the unified mind map</figcaption></figure></div><blockquote><p>&#8505;&#65039;<em> A similar book to &#8220;The Pragmatic Programmer&#8221; is &#8220;<strong><a href="https://amzn.to/458Ziag">Code Complete</a></strong>&#8221;. This book provides similar valuable tips, but is a bit longer and harder to follow. </em></p><p><em>The third book in this group is &#8220;<strong><a href="https://amzn.to/4mkP8dt">The Clean Coder</a></strong>&#8221;, a manifesto of professionalism in software development by Robert Martin.</em></p></blockquote><h2>2. <a href="https://amzn.to/41bWQ1u">Designing Data-Intensive Applications</a></h2><p><strong>Author</strong>: <em>Martin Kleppman</em></p><p>Even with two decades in software, I found <a href="https://martin.kleppmann.com/">Martin Kleppmann</a>&#8217;s <em>Designing Data-Intensive Applications (DDIA)</em> a humbling and <strong>mind-expanding</strong> read. It&#8217;s often dubbed the <em>encyclopedia of modern data systems</em>, and for good reason. </p><p>Before DDIA, terms like <em>replication</em>, <em>partitioning</em>, and <em>CAP theorem</em> were things I thought I understood. Reading this book (twice) was like getting a masterclass in how data systems work. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j8gn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j8gn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!j8gn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!j8gn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!j8gn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j8gn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:184606,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.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_!j8gn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!j8gn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!j8gn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!j8gn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c35f5-dde3-4f3a-b113-ee74868a1d22_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The CAP Theorem</figcaption></figure></div><p>We can say that it is one of <strong>the most influential books in backend engineering</strong>, and I can see why. </p><p>Here are a few things I learned in the book:</p><ol><li><p>One key takeaway was learning to <strong>recognize trade-offs</strong> in any architectural decision. For example, the book discusses how specific databases favor consistency over availability (and vice versa), and how <em>there&#8217;s no free lunch</em>; you must choose based on your requirements. This helped me understand that there is no single best choice to use for everything. Instead, I started asking &#8220;<em>What problem are we solving, and what trade-off fits best here</em>?&#8221; </p></li><li><p><strong>Focus on fundamentals</strong>. I also appreciated how DDIA emphasized the fundamentals: storage engines, indexing, and distributed consensus, which remain unchanged even when new products come along. Concretely, after reading, I revisited our data architecture and improved how we handle data replication and consistency in our systems. For instance, we had a microservice that occasionally served stale data under high load. Applying principles from DDIA, we refined our approach to <strong>replication lag and read replicas</strong>&nbsp;to enable the service to scale without sacrificing data freshness. </p></li><li><p><strong>Evaluating databases</strong>. I also became more rigorous in assessing databases: instead of going by vendor hype, I&#8217;d map each option to the use case (does it need transactions? horizontal scaling? etc.). Then, select the proper database type and vendor.</p></li><li><p><strong>Deep dive into distributed transactions</strong>. Kleppmann&#8217;s detailed explanation of concepts such as&nbsp;<strong>distributed transactions and log-based streaming</strong>&nbsp;provided insights into&nbsp;diagnosing system behavior in complex distributed systems. </p></li></ol><p>More than anything, this book taught me to think in terms of <em>reliability, scalability, and maintainability</em> as first-class design goals. It shifted my mindset to see system design as about making clear-headed trade-offs, not just following trends. </p><p>The result is I now approach new architecture decisions with far more confidence and clarity. DDIA truly &#8220;bridged the gap&#8221; between what I thought I knew and how things work under the hood.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://amzn.to/41bWQ1u" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg" width="344" height="451.2637362637363" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:344,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Designing Data-Intensive Applications: The Big Ideas Behind Reliable,  Scalable, and Maintainable Systems: Kleppmann, Martin: 9781449373320:  Amazon.com: Books&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://amzn.to/41bWQ1u&quot;,&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="Designing Data-Intensive Applications: The Big Ideas Behind Reliable,  Scalable, and Maintainable Systems: Kleppmann, Martin: 9781449373320:  Amazon.com: Books" title="Designing Data-Intensive Applications: The Big Ideas Behind Reliable,  Scalable, and Maintainable Systems: Kleppmann, Martin: 9781449373320:  Amazon.com: Books" srcset="https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q3Xq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb97123-a2ac-47a8-b8ef-084932c15d15_1951x2560.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;<a href="https://amzn.to/41bWQ1u">Designing Data-Intensive Applications</a>&#8221;, Martin Kleppman</figcaption></figure></div><p>It is worth mentioning that DIA isn't light reading; it's 500 pages of dense material. People who should read it include mid-career engineers designing systems and anyone preparing for systems design interviews. </p><p>Still, I consider it not suitable for junior developers or those looking for quick tutorials.</p><p>Here are my notes from the book:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GKmH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GKmH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 424w, https://substackcdn.com/image/fetch/$s_!GKmH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 848w, https://substackcdn.com/image/fetch/$s_!GKmH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 1272w, https://substackcdn.com/image/fetch/$s_!GKmH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GKmH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png" width="1241" height="950" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49052127-c868-4522-b120-f8a81995065b_1241x950.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:950,&quot;width&quot;:1241,&quot;resizeWidth&quot;:null,&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_!GKmH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 424w, https://substackcdn.com/image/fetch/$s_!GKmH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 848w, https://substackcdn.com/image/fetch/$s_!GKmH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 1272w, https://substackcdn.com/image/fetch/$s_!GKmH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49052127-c868-4522-b120-f8a81995065b_1241x950.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://milan-milanovic.notion.site/Designing-Data-Intensive-Applications-Notes-by-Dr-Milan-Milanovic-1ac22f7b9a5f80eda8a0ebff46919989">Notes</a> from the book &#8220;<a href="https://amzn.to/3ZX4uMv">Designing Data-Intensive Applications</a>&#8221; by <a href="https://martin.kleppmann.com/">Martin Klepmann</a></figcaption></figure></div><p>&#10145;&#65039; Read my <strong>full book review</strong>:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:158354418,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;What I learned from the book Designing Data-Intensive Applications&quot;,&quot;truncated_body_text&quot;:&quot;After two decades in software engineering, I thought I had a solid understanding of various topics, including NoSQL, Big Data, transactions, sharding, and more.&quot;,&quot;date&quot;:&quot;2025-06-19T15:02:29.686Z&quot;,&quot;like_count&quot;:421,&quot;comment_count&quot;:21,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 46K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold PhD in Computer Sciences and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Insights into the world of Software Engineering, simplified. \n\nJoin Milan's community of over 400,000 readers across various media platforms.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/what-i-learned-from-the-book-designing?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">What I learned from the book Designing Data-Intensive Applications</div></div><div class="embedded-post-body">After two decades in software engineering, I thought I had a solid understanding of various topics, including NoSQL, Big Data, transactions, sharding, and more&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">10 months ago &#183; 421 likes &#183; 21 comments &#183; Dr Milan Milanovi&#263;</div></a></div><h2>3. <strong><a href="https://amzn.to/3IwzyK8">A Philosophy of Software Design</a></strong></h2><p><strong>Author:</strong> <em>John Ousterhout</em></p><p>As an engineer, I&#8217;ve seen how <strong>code complexity</strong> can become the silent killer of productivity (and projects). Prof. John Ousterhout&#8217;s <em><a href="https://amzn.to/3IwzyK8">A Philosophy of Software Design</a></em> gave me a vocabulary and mindset to attack this problem at the source. </p><p>The book is relatively short but packed with wisdom on breaking down systems into simpler, more manageable modules and&nbsp;<strong>on designing for readability and maintainability</strong>. Ousterhout defines complexity as anything related to code that makes it harder to modify or reason about, and then systematically shows how to reduce it. </p><p>He argues that code should be written for <strong>ease of human reading</strong>, not just for ease of compilation. This gave me a new lens for code reviews. I now ask,&nbsp;<em>Will someone understand this in a year?</em> - and if not, we need to simplify.</p><p>One of the most powerful concepts I learned was the idea of&nbsp;<strong>&#8220;deep modules&#8221;</strong>: modules with simple interfaces but rich functionality under the hood (the opposite of Clean Code). If an interface hides a lot of complexity, the module is doing its job well. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VEV5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VEV5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 424w, https://substackcdn.com/image/fetch/$s_!VEV5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 848w, https://substackcdn.com/image/fetch/$s_!VEV5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 1272w, https://substackcdn.com/image/fetch/$s_!VEV5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VEV5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png" width="641" height="331.0659340659341" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:752,&quot;width&quot;:1456,&quot;resizeWidth&quot;:641,&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_!VEV5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 424w, https://substackcdn.com/image/fetch/$s_!VEV5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 848w, https://substackcdn.com/image/fetch/$s_!VEV5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 1272w, https://substackcdn.com/image/fetch/$s_!VEV5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336838cd-f236-49e4-8883-a0b7801d7bf3_2015x1041.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This was eye-opening; it flipped my approach to abstraction. Instead of pushing complexity onto callers (shallow modules), I now try to have more complexity inside modules, exposing only what&#8217;s necessary. This concept of <strong>deep vs. shallow modules</strong> fundamentally changed how I structure libraries and services, encouraging me to&nbsp;<em>invest more effort in designing clean interfaces</em>&nbsp;up front.</p><p>The book also provides a list of <em><strong>red flags</strong></em> for bad design, things like &#8220;classes that are too big&#8221; or &#8220;primitive obsession,&#8221; which I began using as an early warning system in code reviews. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uEqg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uEqg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 424w, https://substackcdn.com/image/fetch/$s_!uEqg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 848w, https://substackcdn.com/image/fetch/$s_!uEqg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 1272w, https://substackcdn.com/image/fetch/$s_!uEqg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uEqg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png" width="583" height="807.5429234338748" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1791,&quot;width&quot;:1293,&quot;resizeWidth&quot;:583,&quot;bytes&quot;:454392,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.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_!uEqg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 424w, https://substackcdn.com/image/fetch/$s_!uEqg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 848w, https://substackcdn.com/image/fetch/$s_!uEqg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 1272w, https://substackcdn.com/image/fetch/$s_!uEqg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f39b0a8-8179-49b7-95fa-9546d3ffa3b4_1293x1791.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I remember after reading Ousterhout&#8217;s philosophy, I went back to one of our core projects and refactored a tangle of classes into a few modules with clearer APIs. The result was that onboarding new developers became easier, and the number of bugs dropped because the code&#8217;s intent was more explicit. </p><p>Another quote from the book stayed with me: <em>&#8220;<strong>complexity is incremental</strong>,&#8221; creeping in a little at a time</em> through small decisions. This prompted me to be more vigilant; I now tackle potential complexity at the design stage before it becomes larger. </p><p>In short, this book taught me that <strong>working code isn&#8217;t enough</strong>; if the code isn&#8217;t clean and simple, it&#8217;s a liability. That perspective has made me a more pragmatic architect who values quality over quick fixes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MHbe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MHbe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 424w, https://substackcdn.com/image/fetch/$s_!MHbe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 848w, https://substackcdn.com/image/fetch/$s_!MHbe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 1272w, https://substackcdn.com/image/fetch/$s_!MHbe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MHbe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png" width="379" height="454.22733516483515" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1745,&quot;width&quot;:1456,&quot;resizeWidth&quot;:379,&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_!MHbe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 424w, https://substackcdn.com/image/fetch/$s_!MHbe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 848w, https://substackcdn.com/image/fetch/$s_!MHbe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 1272w, https://substackcdn.com/image/fetch/$s_!MHbe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdc5809b-903e-4202-9124-2e189fa85703_1567x1878.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>&#8220;</strong><a href="https://amzn.to/3IwzyK8">A Philosophy of Software Design</a>&#8221; by John Ousterhout</figcaption></figure></div><p>&#10145;&#65039; Read my <strong>full book review</strong>:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:142395646,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/my-learnings-from-the-book-a-philosophy&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;My learnings from the book \&quot;A Philosophy of Software Design\&quot;&quot;,&quot;truncated_body_text&quot;:&quot;I recently read \&quot;A Philosophy of Software Design\&quot; 2nd Edition by Prof. John Ousterhout, and this is my review.&quot;,&quot;date&quot;:&quot;2024-03-14T16:00:45.784Z&quot;,&quot;like_count&quot;:48,&quot;comment_count&quot;:1,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 46K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold PhD in Computer Sciences and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Insights into the world of Software Engineering, simplified. \n\nJoin Milan's community of over 400,000 readers across various media platforms.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/my-learnings-from-the-book-a-philosophy?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">My learnings from the book "A Philosophy of Software Design"</div></div><div class="embedded-post-body">I recently read "A Philosophy of Software Design" 2nd Edition by Prof. John Ousterhout, and this is my review&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 48 likes &#183; 1 comment &#183; Dr Milan Milanovi&#263;</div></a></div><h2>4. <a href="https://amzn.to/41e3yUJ">Thinking, Fast and Slow</a></h2><p><strong>Author:</strong> <em>Daniel Kahneman</em></p><p><a href="https://en.wikipedia.org/wiki/Daniel_Kahneman">Daniel Kahneman</a> showed the world that we don&#8217;t think as rationally as we believe, and won a Nobel Prize for that (in behavioral economics).</p><p>His book&nbsp;<em><a href="https://amzn.to/41e3yUJ">Thinking, Fast and Slow</a></em>&nbsp;turned decades of research into a global bestseller, making his ideas accessible to everyone, not only to scientists.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JWj7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JWj7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 424w, https://substackcdn.com/image/fetch/$s_!JWj7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 848w, https://substackcdn.com/image/fetch/$s_!JWj7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 1272w, https://substackcdn.com/image/fetch/$s_!JWj7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JWj7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png" width="1000" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Renowned Nobel Laureate in behavioural economics Daniel Kahneman has recently passed away at 90 on 27 March 2024. (image source: Kurzweil)&quot;,&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="Renowned Nobel Laureate in behavioural economics Daniel Kahneman has recently passed away at 90 on 27 March 2024. (image source: Kurzweil)" title="Renowned Nobel Laureate in behavioural economics Daniel Kahneman has recently passed away at 90 on 27 March 2024. (image source: Kurzweil)" srcset="https://substackcdn.com/image/fetch/$s_!JWj7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 424w, https://substackcdn.com/image/fetch/$s_!JWj7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 848w, https://substackcdn.com/image/fetch/$s_!JWj7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 1272w, https://substackcdn.com/image/fetch/$s_!JWj7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5024630d-38ef-47e0-bf75-5c9987c63206_1000x484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Daniel Kahneman passed away in 2024. (Image: <a href="https://www.thekurzweillibrary.com/book-thinking-fast-and-slow">Kurzweil</a>)</figcaption></figure></div><p>This is one of the books that improved my critical thinking the most. Kahneman&#8217;s research focuses on how our minds operate in two modes: </p><ul><li><p><strong>System 1 (Fast)</strong>. Intuitive, automatic, emotional, our default setting. We use it for quick judgments and everyday decisions.</p></li><li><p><strong>System 2 (Slow)</strong>. Analytical, effortful, and deliberate, the system we use consciously for critical thinking. We use it for complex problems that require focused effort.</p></li></ul><p>As it turns out, we humans, even the best engineers, are often overconfident in our intuition and routinely trick ourselves without knowing 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_!gYHY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gYHY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 424w, https://substackcdn.com/image/fetch/$s_!gYHY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 848w, https://substackcdn.com/image/fetch/$s_!gYHY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 1272w, https://substackcdn.com/image/fetch/$s_!gYHY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gYHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png" width="700" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No wonder we are slaves to system 1 when 95% of the time is spent on System 1. How might we better design experiences around the two minds? (image source: Roger Leishman)&quot;,&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="No wonder we are slaves to system 1 when 95% of the time is spent on System 1. How might we better design experiences around the two minds? (image source: Roger Leishman)" title="No wonder we are slaves to system 1 when 95% of the time is spent on System 1. How might we better design experiences around the two minds? (image source: Roger Leishman)" srcset="https://substackcdn.com/image/fetch/$s_!gYHY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 424w, https://substackcdn.com/image/fetch/$s_!gYHY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 848w, https://substackcdn.com/image/fetch/$s_!gYHY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 1272w, https://substackcdn.com/image/fetch/$s_!gYHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66958ea8-a436-47cd-9d24-0dac7219f9b3_700x394.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">System 1 and 2 thinking (image: <a href="https://www.rogerleishman.com/2017/12/thing1.html">Roger Leishman</a>)</figcaption></figure></div><p>Reading this book was so revealing for me. I realized that many of the bugs, design flaws, and even management slip-ups in my career boiled down to cognitive biases and snap judgments.</p><p>Before, when I was debugging a problem or making a system design decision, I often trusted my gut when choosing a solution. <strong>Afterward, I started forcing myself to slow down.</strong> I&#8217;d ask: <em>What assumption am I making? Could I be jumping to conclusions?</em> </p><p>For example, if an outage happened, instead of immediately blaming the newest deployment (a System 1 reaction), I now methodically gather data and consider multiple hypotheses, a more System 2 approach. </p><p>Kahneman also introduced me to ideas like <strong>the anchoring effect</strong> and <strong>confirmation bias</strong>, which made me more willing to question my initial impressions.</p><p>One powerful concept that stuck with me was <strong>WYSIATI (What You See Is All There Is)</strong>. It describes how quickly we jump to conclusions, often missing essential facts. &#8220;<em>Information that is not retrieved (even unconsciously) from memory might as well not exist</em>,&#8221; Kahneman states. Our minds search for good stories, yet they show a stubborn resistance to the quality and quantity of objective information that informs those narratives. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E2HR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E2HR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 424w, https://substackcdn.com/image/fetch/$s_!E2HR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 848w, https://substackcdn.com/image/fetch/$s_!E2HR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!E2HR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E2HR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png" width="609" height="577.2115384615385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1380,&quot;width&quot;:1456,&quot;resizeWidth&quot;:609,&quot;bytes&quot;:305285,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.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_!E2HR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 424w, https://substackcdn.com/image/fetch/$s_!E2HR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 848w, https://substackcdn.com/image/fetch/$s_!E2HR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!E2HR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57a7f2da-b592-4e4a-9f39-c15e6882a111_2063x1956.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">WYSIATI principle from the book  &#8220;<a href="https://amzn.to/41e3yUJ">Thinking, Fast and Slow</a>&#8221;</figcaption></figure></div><p>This phenomenon explained many frustrations I had experienced as a leader: why people made wrong (but fast) judgments, ignored contrary evidence, or stubbornly stuck to incomplete stories.</p><p>After reading Kahneman, I became intensely aware of how biases influence technical decisions and team dynamics. Perhaps most importantly, it changed <strong>how I interact with my team</strong>. I listen more carefully, and I&#8217;m quicker to admit when I might be wrong, echoing Kahneman&#8217;s central lesson that <em>we&#8217;re all fallible, and that&#8217;s okay</em>. In meetings, I&#8217;ll say, &#8220;<em>This is my intuition speaking, but let&#8217;s verify it with data</em>.&#8221; </p><p>This book taught me that being a better engineer or CTO isn&#8217;t just about what you know; it&#8217;s about recognizing your&nbsp;<strong>blind spots&nbsp;</strong>and compensating for them. It&#8217;s a mental toolkit that helped me make better decisions.</p><p>The book is <strong>an absolute must-read for everyone!</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://amzn.to/41e3yUJ" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sXay!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 424w, https://substackcdn.com/image/fetch/$s_!sXay!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 848w, https://substackcdn.com/image/fetch/$s_!sXay!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 1272w, https://substackcdn.com/image/fetch/$s_!sXay!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sXay!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png" width="357" height="487" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:487,&quot;width&quot;:357,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:257857,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://amzn.to/41e3yUJ&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.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_!sXay!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 424w, https://substackcdn.com/image/fetch/$s_!sXay!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 848w, https://substackcdn.com/image/fetch/$s_!sXay!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 1272w, https://substackcdn.com/image/fetch/$s_!sXay!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac6ef26-81fa-44d7-ab20-8d5f012c50de_357x487.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;<a href="https://amzn.to/41e3yUJ">Thinking, Fast and Slow</a>&#8221;, Daniel Kahneman</figcaption></figure></div><p>&#10145;&#65039; Learn more about <strong>how biases and mental models shape your life</strong> and projects:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:147368471,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/how-to-make-better-decisions-with&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;How to make better decisions with Second-Order Thinking&quot;,&quot;truncated_body_text&quot;:&quot;In the complex software development and management world, the quality of our thinking often determines the success of our projects and teams. Mental models and cognitive biases are crucial in approaching problems, making decisions, and interacting with others.&quot;,&quot;date&quot;:&quot;2024-09-12T15:01:04.907Z&quot;,&quot;like_count&quot;:94,&quot;comment_count&quot;:8,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 46K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold PhD in Computer Sciences and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Insights into the world of Software Engineering, simplified. \n\nJoin Milan's community of over 400,000 readers across various media platforms.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/how-to-make-better-decisions-with?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">How to make better decisions with Second-Order Thinking</div></div><div class="embedded-post-body">In the complex software development and management world, the quality of our thinking often determines the success of our projects and teams. Mental models and cognitive biases are crucial in approaching problems, making decisions, and interacting with others&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 94 likes &#183; 8 comments &#183; Dr Milan Milanovi&#263;</div></a></div><h2>5. <a href="https://www.amazon.com/Habits-Highly-Effective-People-Powerful/dp/0743269519">The 7 Habits of Highly Effective People</a></h2><p><strong>Author</strong>:<em> Stephen Covey</em></p><p>Covey&#8217;s book taught me that effective engineering leadership starts with <em>personal</em> leadership. It gives a framework of seven habits, from being proactive and <strong>&#8220;beginning with the end in mind&#8221;</strong> to seeking win-win solutions and sharpening the saw (continuous improvement). </p><p>These habits might sound like common sense to most people, but reading this book was a wake-up call for me. Covey challenged me to take responsibility for my growth and to prioritize principles over urgency. </p><p>I consider it one of those books <strong>that changed my life and career </strong><em><strong>10x</strong></em><strong>.</strong></p><p>The concept of the&nbsp;<em><strong>Circle of Influence</strong></em><strong>&nbsp;vs.&nbsp;</strong><em><strong>Circle of Concern</strong></em>&nbsp;resonated with me (it originates from <a href="https://en.wikipedia.org/wiki/Stoicism">Stoicism</a>). I learned to focus my energy on things I can impact (like mastering a new technology or helping a teammate), rather than worrying about external factors I can&#8217;t control, e.g., other people's opinions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RISf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RISf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 424w, https://substackcdn.com/image/fetch/$s_!RISf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 848w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RISf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png" width="1456" height="1082" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1082,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:366792,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.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_!RISf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 424w, https://substackcdn.com/image/fetch/$s_!RISf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 848w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!RISf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfcd962-d3ef-4b75-92dd-0ba82abc8e02_2659x1976.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">3 Circles of Influence (inspired by Stephen Covey)</figcaption></figure></div><p>Another lesson was &#8220;<strong>seek first to understand, then to be understood</strong>,&#8221; which transformed how I communicate with my team (and listen actively). As Covey famously put it, <em>&#8220;Most people do not listen with the intent to understand; they listen with the intent to reply.&#8221; </em>When I read that line, I had to pause; it rang so true. </p><p>How often had I been in code reviews or planning meetings, already formulating my response instead of truly listening? Covey&#8217;s message: <strong>slow down and listen first. </strong></p><p>Now, when a teammate comes to me with an issue, <strong>I make a conscious effort to understand their perspective fully before I chime in</strong>. It&#8217;s improved trust and clarity in our conversations immensely.</p><p>Another habit that resonated with me was <strong>&#8220;Sharpen the saw,&#8221;</strong> Covey&#8217;s way of saying, &#8220;invest in yourself continuously.&#8221; It reminded me that taking time to read, learn new skills, or even recharge isn&#8217;t downtime; it&#8217;s an investment in effectiveness. I started blocking out a little time each week for self-improvement (sometimes that means reading a new book or exploring a tech I&#8217;m curious about). </p><p>It&#8217;s ironic, but by stepping away from the day-to-day hustle to <em>sharpen my saw</em>, I come back to work sharper and more productive.</p><p>After reading Covey, I began weekly <strong>planning with my long-term goals in mind</strong>, ensuring that, even as an engineer buried in code, I never lost sight of broader objectives. And this means creating&nbsp;<a href="https://www.patreon.com/techworld_with_milan/shop/how-to-set-and-achieve-any-goal-e-book-312287">proper long-term and short-term goals</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1MuY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1MuY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!1MuY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!1MuY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!1MuY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1MuY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:185104,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.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_!1MuY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!1MuY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!1MuY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!1MuY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa1d566-aca0-48ef-adf7-5ac0c4eb7d66_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">7 Habits of Highly Effective People</figcaption></figure></div><p>This book&#8217;s <em>timeless principles</em> became <strong>the foundation of how I operate</strong>: it instilled discipline, proactivity, empathy, and a habit of continuous improvement, preparing me for the challenges of CTO life.</p><p>This book is like a mirror; it forces you to <strong>reflect on your habits and mindset</strong>. For me, that reflection led to tangible changes in how I lead my engineering team. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QRYb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QRYb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QRYb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QRYb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QRYb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QRYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg" width="349" height="509.79193205944796" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:688,&quot;width&quot;:471,&quot;resizeWidth&quot;:349,&quot;bytes&quot;:128140,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.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_!QRYb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QRYb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QRYb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QRYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb18f29b-e8f5-4f1e-9e04-631e860022e6_471x688.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;<a href="https://www.amazon.com/Habits-Highly-Effective-People-Powerful/dp/0743269519">The 7 Habits of Highly Effective People</a>&#8221;, Stephen Covey</figcaption></figure></div><p>&#10145;&#65039; Read my book review, including Covey's book &#8220;<strong><a href="https://amzn.to/4l14RO0">The 8th Habit</a></strong>&#8221;:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:140315417,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/the-habits-of-highly-effective-people&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;The habits of highly effective people&quot;,&quot;truncated_body_text&quot;:&quot;After 25 years of dealing with successful people in business, universities, and relationship settings, Stephen R. Covey noticed that great achievers were frequently troubled by emptiness. To comprehend why, he read self-help, self-improvement, and popular psychology books from the past 200 years. Here, he observed a striking historical disparity between&quot;,&quot;date&quot;:&quot;2024-02-01T16:00:45.779Z&quot;,&quot;like_count&quot;:50,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 46K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold PhD in Computer Sciences and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Insights into the world of Software Engineering, simplified. \n\nJoin Milan's community of over 400,000 readers across various media platforms.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/the-habits-of-highly-effective-people?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The habits of highly effective people</div></div><div class="embedded-post-body">After 25 years of dealing with successful people in business, universities, and relationship settings, Stephen R. Covey noticed that great achievers were frequently troubled by emptiness. To comprehend why, he read self-help, self-improvement, and popular psychology books from the past 200 years. Here, he observed a striking historical disparity between&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 50 likes &#183; Dr Milan Milanovi&#263;</div></a></div><h2>6. Conclusion</h2><p>Writing this, I noticed something: none of these books taught me a new programming language or how to use a specific framework. Yet each one was transformational in my growth as an engineer and a leader. </p><p>They expanded my perspective, from how I manage myself, to how I design software, to how I make decisions. Together, these books became a sort of <em>continuing education curriculum</em> that no formal degree or job training could offer. They reminded me that our <strong>shelf of books can double as a shelf of mentors</strong>, each one imparting lessons whenever we&#8217;re ready to absorb them.</p><p>If there&#8217;s one thing I hope you take away, it&#8217;s that investing in your growth doesn&#8217;t always mean writing more code or attending more meetings. Sometimes, it&#8217;s reading and reflecting. I often encourage younger engineers to build their own &#8220;<strong>mentor bookshelf</strong>&#8221; to find books that challenge their thinking. </p><p>The five I shared here are just a starting point, and your list might be different. What matters is staying curious and <strong>never thinking you&#8217;re done growing</strong>. </p><p>As a CTO, I&#8217;m still that engineer with a book in hand after work, excited about the next insight that will make me better. </p><p>So, what books will you reach for on your journey? </p><p>The answers might shape your career in ways you can&#8217;t imagine today. </p><p>Happy reading, and happy growing!</p><p>-- Milan</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZGsN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZGsN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZGsN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZGsN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZGsN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZGsN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg" width="639" height="617.4951923076923" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1407,&quot;width&quot;:1456,&quot;resizeWidth&quot;:639,&quot;bytes&quot;:1655719,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.techworld-with-milan.com/i/169289704?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.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_!ZGsN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZGsN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZGsN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZGsN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d29e636-2e61-46d0-9e87-b540169abe0c_3063x2959.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A part of my physical bookshelf (many more on Kindle)</figcaption></figure></div><p>&#10145;&#65039; Check my review of <strong>the best books</strong> I&#8217;ve read and recommend to everyone:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:144462358,&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/p/learn-things-that-dont-change&quot;,&quot;publication_id&quot;:1219834,&quot;publication_name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bimu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;title&quot;:&quot;Learn things that don't change &quot;,&quot;truncated_body_text&quot;:&quot;Have you ever wondered why some technologies are still around, and some have disappeared? The Lindy effect tells me developers will still use C# and SQL when I retire. This concept in technology and innovation suggests that the future life expectancy of a non-perishable item is proportional to its current age. In other words,&quot;,&quot;date&quot;:&quot;2024-05-16T15:01:42.364Z&quot;,&quot;like_count&quot;:1059,&quot;comment_count&quot;:23,&quot;bylines&quot;:[{&quot;id&quot;:24455408,&quot;name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;handle&quot;:&quot;techworldwithmilan&quot;,&quot;previous_name&quot;:&quot;Dr. Milan Milanovi&#263;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b88c8b56-6239-4f64-b118-d81cc2cc1271_612x612.png&quot;,&quot;bio&quot;:&quot;I&#8217;m Milan, a startup CTO, author &amp; coach. I share practical insights on software, leadership &amp; careers with 46K+ readers, drawn from 20+ years building products, teams &amp; systems that last. I hold PhD in Computer Sciences and AI.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-30T13:30:12.729Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-17T22:31:30.501Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1175459,&quot;user_id&quot;:24455408,&quot;publication_id&quot;:1219834,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1219834,&quot;name&quot;:&quot;Tech World With Milan Newsletter&quot;,&quot;subdomain&quot;:&quot;techworldwithmilan&quot;,&quot;custom_domain&quot;:&quot;newsletter.techworld-with-milan.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Insights into the world of Software Engineering, simplified. \n\nJoin Milan's community of over 400,000 readers across various media platforms.&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png&quot;,&quot;author_id&quot;:24455408,&quot;primary_user_id&quot;:24455408,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2022-11-30T20:12:15.007Z&quot;,&quot;email_from_name&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;copyright&quot;:&quot;Dr Milan Milanovi&#263;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;milan_milanovic&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://newsletter.techworld-with-milan.com/p/learn-things-that-dont-change?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_!Bimu!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd6c17b-1bdf-4b80-a7cc-bd216bbe8edb_653x653.png" loading="lazy"><span class="embedded-post-publication-name">Tech World With Milan Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Learn things that don't change </div></div><div class="embedded-post-body">Have you ever wondered why some technologies are still around, and some have disappeared? The Lindy effect tells me developers will still use C# and SQL when I retire. This concept in technology and innovation suggests that the future life expectancy of a non-perishable item is proportional to its current age. In other words&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 years ago &#183; 1059 likes &#183; 23 comments &#183; Dr Milan Milanovi&#263;</div></a></div><div><hr></div><h2>Honorable mentions</h2><p>If you're interested in expanding your perspective on how systems work and how to make good decisions, I highly recommend the following two books:</p><h3><strong>1. <a href="https://amzn.to/4fgm1pD">Thinking in Systems</a></strong> </h3><p><strong>Author:</strong> <em>Donella Meadows</em> </p><p>I learned from the book that structure drives behavior, which is something most people don't see.</p><p>When sales drop, teams add features. Systems thinkers ask: What structure created this decline? Maybe the real problem is customer onboarding, not the product itself.</p><p>The book teaches you to spot feedback loops everywhere. Once you see them, you stop fixing symptoms and start fixing causes. </p><p>Learn to change the system, not the output.</p><h3>2. <a href="https://amzn.to/4ofUKro">Algorithms to live by</a> </h3><p><strong>Authors:</strong> <em>Brian Christian and Tom Griffiths </em></p><p>This book applies computer science principles to everyday life. It shows how algorithms can optimize your personal and professional challenges, from decision-making to scheduling. </p><p>You will learn more about algorithms such as optimal stopping, explore-exploit trade-offs, and caching, and gain actionable advice for managing time, resources, and uncertainty.</p><p>What is the best hiring strategy? Look at the first 37% of candidates, then hire the next one who beats them all.</p><p>The "optimal stopping" rule applies everywhere: house hunting, dating, even picking a parking spot. And we already have this solved by computer science.</p><p>I learn from the book that algorithms aren't just for code; they're patterns for better everyday decisions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y-zl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y-zl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y-zl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y-zl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y-zl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y-zl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&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_!Y-zl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y-zl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y-zl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y-zl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1909385c-5f8a-4d3f-ae6a-c792488ee1bf_800x450.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Two books that changed the way I think</figcaption></figure></div><p>Both books are packed with insights that resonate far beyond their topics. </p><p>I highly recommend it for engineers, managers, and anyone curious about improving their thinking.</p><div><hr></div><h2>Bonus: 100+ books that changed my life</h2><p>Do you want to learn more from my journey with thousands of books? I prepared something special for you.</p><p>Here is the mini&#8209;book, where you&#8217;ll find one&#8209;page briefs on the 100 best books, organized by craft (architecture, leadership, productivity, thinking, wealth, and more), taken from my notes. </p><p>Each brief tags <strong>Why it mattered</strong> and <strong>How I used it</strong>, so you see the principle and the practice side&#8209;by&#8209;side.</p><p>I layered personal margin notes throughout, detailing what I challenged, where I failed, and the tweaks that ultimately worked.</p><p>You&#8217;ll also receive a bonus section, <strong>my four-step method for reading</strong> non-fiction so the ideas stick and compound (hint: it starts before you open the cover).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m9lI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m9lI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 424w, https://substackcdn.com/image/fetch/$s_!m9lI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 848w, https://substackcdn.com/image/fetch/$s_!m9lI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!m9lI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m9lI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png" width="405" height="572.8429985855728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2000,&quot;width&quot;:1414,&quot;resizeWidth&quot;:405,&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_!m9lI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 424w, https://substackcdn.com/image/fetch/$s_!m9lI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 848w, https://substackcdn.com/image/fetch/$s_!m9lI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!m9lI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F650954c2-bc89-4d13-8048-2b13d6f6bb1a_1414x2000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#10145;&#65039; Get the book by <strong>subscribing to my newsletter</strong>:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.techworld-with-milan.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2><strong>More ways I can help you:</strong></h2><ul><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128218; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">The Ultimate .NET Bundle 2025</a></strong> &#127381;. 500+ pages distilled from 30 real projects show you how to own modern C#, ASP.NET Core, patterns, and the whole .NET ecosystem. You also get 200+ interview Q&amp;As, a C# cheat sheet, and bonus guides on middleware and best practices to improve your career and land new .NET roles. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/ultimate-net-bundle-for-2025-1519389?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ engineers</a></strong>. </p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128230; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Premium Resume Package</a> &#127381;</strong>. Built from over 300 interviews, this system enables you to quickly and efficiently craft a clear, job-ready resume. You get ATS-friendly templates (summary, project-based, and more), a cover letter, AI prompts, and bonus guides on writing resumes and prepping LinkedIn. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/premium-resume-package-1721454?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 500+ people</a></strong>. </p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128196; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Resume Reality Check</a></strong>. Get a CTO-level teardown of your CV and LinkedIn profile. I flag what stands out, fix what drags, and show you how hiring managers judge you in 30 seconds. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/complete-tech-resume-reality-check-311008?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 100+ people</a></strong>.</p></li><li><p><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">&#128226; </a><strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">LinkedIn Content Creator Masterclass</a></strong>. I share the system that grew my tech following to over 100,000 in 6 months (now over 255,000), covering audience targeting, algorithm triggers, and a repeatable writing framework. Leave with a 90-day content plan that turns expertise into daily growth. <strong><a href="https://www.patreon.com/techworld_with_milan/shop/short-linkedin-content-creator-311232?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=productshare_creator&amp;utm_content=join_link">Join 1,000+ creators</a></strong>.</p></li><li><p><a href="https://www.patreon.com/c/techworld_with_milan">&#10024; </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Join My Patreon</a></strong><a href="https://www.patreon.com/c/techworld_with_milan"> </a><strong><a href="https://www.patreon.com/c/techworld_with_milan">Community</a> and <a href="https://www.patreon.com/c/techworld_with_milan/shop">My Shop</a></strong>. Unlock every book, template, and future drop, plus early access, behind-the-scenes notes, and priority requests. Your support enables me to continue writing in-depth articles at no cost. <strong><a href="https://www.patreon.com/c/techworld_with_milan">Join 2,000+ insiders</a></strong>.</p></li><li><p><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">&#129309; </a><strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">1:1 Coaching</a></strong> &#8211; Book a focused session to crush your biggest engineering or leadership roadblock. I&#8217;ll map next steps, share battle-tested playbooks, and hold you accountable. <strong><a href="https://newsletter.techworld-with-milan.com/p/coaching-services">Join 100+ coachees</a></strong>.</p></li></ul><div><hr></div><h2><strong>Want to advertise in Tech World With Milan? &#128240;</strong></h2><p>If your company is interested in reaching founders, executives, and decision-makers, you may want to <strong><a href="https://newsletter.techworld-with-milan.com/p/sponsorship-of-tech-world-with-milan">consider advertising with us</a></strong>.</p><div><hr></div><h2><strong>Love Tech World With Milan Newsletter? Tell your friends and get rewards.</strong></h2><p>Share it with your friends by using the button below to get benefits (my books and resources).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Tech World With Milan Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.techworld-with-milan.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Tech World With Milan Newsletter</span></a></p><p><a href="https://newsletter.techworld-with-milan.com/leaderboard">Track your referrals here</a>.</p><p></p><p></p>]]></content:encoded></item></channel></rss>