<?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[devashish.me]]></title><description><![CDATA[Building opinionated tech]]></description><link>https://www.devashish.me</link><image><url>https://substackcdn.com/image/fetch/$s_!ulGJ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898ed753-23f7-454a-9607-04b8c3351170_608x608.png</url><title>devashish.me</title><link>https://www.devashish.me</link></image><generator>Substack</generator><lastBuildDate>Sat, 09 May 2026 02:42:50 GMT</lastBuildDate><atom:link href="https://www.devashish.me/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Devashish Meena]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[ric03uec@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ric03uec@substack.com]]></itunes:email><itunes:name><![CDATA[Devashish]]></itunes:name></itunes:owner><itunes:author><![CDATA[Devashish]]></itunes:author><googleplay:owner><![CDATA[ric03uec@substack.com]]></googleplay:owner><googleplay:email><![CDATA[ric03uec@substack.com]]></googleplay:email><googleplay:author><![CDATA[Devashish]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Introducing Clawrium: An aquarium for *claws]]></title><description><![CDATA[Clawrium is a CLI tool providing kubectl-style fleet management for AI agents. Deploy, configure, and manage multiple agents across machines from a single control point.]]></description><link>https://www.devashish.me/p/introducing-clawrium-an-aquarium</link><guid isPermaLink="false">https://www.devashish.me/p/introducing-clawrium-an-aquarium</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Tue, 21 Apr 2026 18:01:00 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://openclaw.ai/">Openclaw</a> (accidentally) created a new standard between engineers building sophisticated agents and casual users who wanted the same capabilities. Only a tiny fraction of Openclaw users knew what agent loop, tool usage, mcps, memory system means and or work. But that was the point. They weren&#8217;t expected to. They were expected to install this on a Mac Mini, copy paste a few commands and suddenly they have their very own, always available, personal assistant - right on their phones. If this is not thrilling, I don&#8217;t know what is.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5813" height="3875" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3875,&quot;width&quot;:5813,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;people standing in front of fish tank&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="people standing in front of fish tank" title="people standing in front of fish tank" srcset="https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1580140404772-decde5a9cc9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxhcXVhcml1bXxlbnwwfHx8fDE3NzY3NDIwMDd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@pengxiaoxu">Pengxiao Xu</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I installed my first Openclaw on an old Ubuntu machine. Setup was smooth. Then I dug up a Raspberry Pi and installed <a href="https://zeroclaw.org/">Zeroclaw</a> on it. One week later, I was spending more time on SSH gymnastics than getting work done. Tasks like upgrading the agent, configuring a new LLM provider, configuring a channel, debugging logs, etc all started eating into my limited post-day-job-time I have to play around these systems.</p><p>Then it clicked - I&#8217;m dealing with a standardization and orchestration problem here. More importantly, this is <em>very</em> similar to a problem that k8s solved for managing containers in production environments. Running one AI agent is easy. Running five across your network while juggling SSH keys, model configs, personas, and channel integrations is when things get messy.</p><p>I built <a href="https://ric03uec.github.io/clawrium/">Clawrium - an aquarium for *claws</a>,  to solve this problem. A single CLI to manage a fleet of AI Agents.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oy5k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oy5k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 424w, https://substackcdn.com/image/fetch/$s_!oy5k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 848w, https://substackcdn.com/image/fetch/$s_!oy5k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 1272w, https://substackcdn.com/image/fetch/$s_!oy5k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oy5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png" width="712" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:712,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:215076,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devashish.me/i/194872139?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.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_!oy5k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 424w, https://substackcdn.com/image/fetch/$s_!oy5k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 848w, https://substackcdn.com/image/fetch/$s_!oy5k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 1272w, https://substackcdn.com/image/fetch/$s_!oy5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd06d5c3-7f1d-484a-bc5c-64233018a955_712x720.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Caption: &#8216;Automating&#8217; comes from the roots &#8216;auto-&#8217; meaning &#8216;self-&#8217;, and &#8216;mating&#8217;, meaning &#8216;screwing&#8217;</figcaption></figure></div><p style="text-align: center;"><a href="https://xkcd.com/1319/">https://xkcd.com/1319/</a></p><h3>Clawrium</h3><p><strong><a href="https://ric03uec.github.io/clawrium/">Clawrium</a> is a CLI tool that provides fleet management for AI agents.</strong> . Lightweight SSH-based orchestration that lets you deploy, configure, and manage multiple agents across machines from a single control point.</p><p>Using <a href="https://ric03uec.github.io/clawrium/">Clawrium</a>, you can</p><ul><li><p>Deploy multiple Agents on your local network (or cloud instances)</p></li><li><p>Use a standard configuration, secrets and integrations system for all supported Agent types</p></li><li><p>Swap models, rotate secrets, update personas</p></li><li><p>Backup and restore agent memory, configuration, data and jobs</p></li><li><p>Enforce cost, token, usage guardrails on agents</p></li><li><p>Access logs, debug information and usage telemetry from a single endpoint</p></li><li><p>Remediate configuration drifts automatically</p></li><li><p>Clone agents using a central registry</p></li><li><p>&#8230; and much more</p></li></ul><p>Note that this is an aspirational list which I&#8217;m excited to work on with the community!</p><h3>Why Now</h3><p>AI assistants are moving beyond hobby projects and solving real problems. Engineering teams I&#8217;ve interviewed for Clawrium are struggling to manage more than a single agent. They&#8217;re spending precious engineering bandwidth in agent management.</p><p>Clawrium solves their problems by letting them not just scale the number of agents but also managing them with a simple interface.</p><p>Another org is running multiple Openclaw agents, one for each of their engineering teams. Since teams manage their own instances, its an operational nightmare. 90% configuration for these agents is exactly the same: linear integrations, slack channels, confluence etc. But each team stores and manages configs, secrets and backups differently. </p><p>Using Clawrium, they&#8217;re able to pull these agents under a single umbrella.</p><p>Clawrium treats your agents as a fleet. In a pets vs cattle comparison, the agents in Clawrium are still pets. They are just pets that are well trained, on a leash, play well with each other and make your life better.</p><h3>Two Use Cases I&#8217;m Building</h3><p><strong>1. Managing This Project With Its Own Agent</strong></p><p>I run an agent on my local network that serves as the Clawrium project assistant. Through Discord, I can add issues, get status updates, and capture notes without context-switching into GitHub. The agent knows the project context and handles the logistics. As needs emerge, I extend its capabilities. If you join the Discord channel, you&#8217;ll find this bot (called Maurice) hanging around to help you. Please be nice to it.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OluR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OluR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 424w, https://substackcdn.com/image/fetch/$s_!OluR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 848w, https://substackcdn.com/image/fetch/$s_!OluR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 1272w, https://substackcdn.com/image/fetch/$s_!OluR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OluR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png" width="1456" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:150893,&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://www.devashish.me/i/194872139?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.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_!OluR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 424w, https://substackcdn.com/image/fetch/$s_!OluR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 848w, https://substackcdn.com/image/fetch/$s_!OluR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 1272w, https://substackcdn.com/image/fetch/$s_!OluR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd322ed1-9da6-44f9-8827-7a0df0ffc5eb_2181x522.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>2. Team Assistants at Work</strong></p><p>I&#8217;m creating dedicated agents for each team at my company to work as communication and knowledge management helpers. They answer common questions, update team knowledge bases, and reduce the logistics burden on team members. Each team gets an agent tuned to their domain, ownership components and expertise.</p><h3>Architecture</h3><p><a href="https://ric03uec.github.io/clawrium/">Clawrium</a> has four main components</p><ul><li><p>Transport layer: Built on <a href="https://github.com/ansible/ansible">Ansible</a>, this layer does the heavy lifting of enforcing idempotency, transport data, manage hosts, and drift.</p></li><li><p>Configuration layer: Normalized configuration layer (similar to helm charts) for all supported Agent types.</p></li><li><p>Execution layer: Brains of the system. Merging data, creating idempotent workflows, templating, tests, domain models.</p></li><li><p>UX layer: CLI and TUI only. Keeping this layer thin to allow extension and integrations</p></li></ul><p>The following diagram shows a network diagram of Clawrium managing multiple agents on a local network of hosts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uJn4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uJn4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png 424w, https://substackcdn.com/image/fetch/$s_!uJn4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png 848w, https://substackcdn.com/image/fetch/$s_!uJn4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png 1272w, https://substackcdn.com/image/fetch/$s_!uJn4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uJn4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png" width="1456" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187466,&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://www.devashish.me/i/194872139?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.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_!uJn4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png 424w, https://substackcdn.com/image/fetch/$s_!uJn4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png 848w, https://substackcdn.com/image/fetch/$s_!uJn4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.png 1272w, https://substackcdn.com/image/fetch/$s_!uJn4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac16f2dc-dcff-4629-b66a-6e4561bc5051_1686x786.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></p><h3>Get Started</h3><p><a href="https://ric03uec.github.io/clawrium/">Clawrium</a> works today on Ubuntu with <a href="https://openclaw.ai/">OpenClaw</a> agents. I&#8217;m expanding agent support and features based on my own requirements and requested use cases.</p><ol><li><p>Clone the repo and deploy your first fleet</p></li><li><p>Join the Discord to share feedback, ask questions and connect with community</p></li><li><p>Open issues for feature requests or bugs</p></li></ol><p>Clawrium is the control plane for a fleet of specialized agents working together.</p><p><strong>GitHub</strong>: <a href="https://github.com/ric03uec/clawrium">github.com/ric03uec/clawrium</a></p><p><strong>Documentation</strong>:  <a href="https://ric03uec.github.io/clawrium/">https://ric03uec.github.io/clawrium/</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Local + Cloud LLM comparison using Nvidia DGX Spark]]></title><description><![CDATA[Watch now | This is from my demo at AI Tinkerers Seattle last week. I ran 6 different models in parallel on identical coding tasks and had a judge score each output on a 10-point scale.]]></description><link>https://www.devashish.me/p/local-cloud-llm-comparison-using</link><guid isPermaLink="false">https://www.devashish.me/p/local-cloud-llm-comparison-using</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Mon, 09 Feb 2026 20:00:17 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/187242447/646e127d32dc08e2bfae5089688adc21.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>This is a short video of my recent presentation at <a href="https://seattle.aitinkerers.org/talks/rsvp_77nc0LyZBqE">AI Tinkerers Seattle meetup</a>. </p><p>The demo shows 6 different models running in parallel to execute the exact same task. This setup is useful to compare models for creating task specific vertical agents. I recently compared a different set of models to create a specialized agent just for testing. This <a href="https://www.devashish.me/i/185580853/case-study-test-enforcer-agent">section of my previous post</a> covers the comparison in detail. </p><h2>Key Findings</h2><p>After 8+ tasks across 6 models (3 local, 3 cloud):</p><p>&#8226; No single model won everything. Claude dominated code changes. GPT-4.1 won simpler tasks. Local models won when complexity was low.</p><p>&#8226; Token usage varied 52x between models on the same task with no correlation to quality. More tokens &#8800; better output.</p><p>&#8226; All 3 local models (ollama) scored 0/10 on code modifications but 9-10/10 on simpler tasks. Privacy and cost benefits are real, but only for the right task types.</p><h2>Workflow</h2><p>This is the high level workflow this project follows for each task. OpenCode CLI or the browser provides the task which is processed in parallel. Once all LLMs complete this task, the judge decides the best output and merges it to the target application</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_!eA8C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eA8C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png 424w, https://substackcdn.com/image/fetch/$s_!eA8C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png 848w, https://substackcdn.com/image/fetch/$s_!eA8C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png 1272w, https://substackcdn.com/image/fetch/$s_!eA8C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eA8C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png" width="799" height="690" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:690,&quot;width&quot;:799,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:161197,&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://www.devashish.me/i/187242447?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.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_!eA8C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png 424w, https://substackcdn.com/image/fetch/$s_!eA8C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png 848w, https://substackcdn.com/image/fetch/$s_!eA8C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.png 1272w, https://substackcdn.com/image/fetch/$s_!eA8C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b54d74a-1359-41a9-bacb-c2ed20f6a7ed_799x690.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></p><h2>Takeaways</h2><p>Why experiments like this are important for any org planning to build agents. </p><ol><li><p>Use the best LLM(or SLM) for the task. Subsidized pricing (yes, I&#8217;m talking about all those <em>free</em> Opus 4.6 tokens) makes it easier to use the largest model for checking time of the day but they will pull the plug on this</p></li><li><p>Cost. Smaller, specialized models are getting better with each release</p></li><li><p>Privacy. For enterprises or security sensitive orgs, using local models may be a better fit</p></li><li><p>For accuracy, model selection per task is a key decision to enforce the right guardrails and get high quality output</p><p></p></li></ol><div><hr></div><p>Full leaderboard and experiment setup in the video.If you&#8217;re experimenting with multi-model setups or building task-specific vertical agents, would love to compare notes. DM me.</p>]]></content:encoded></item><item><title><![CDATA[Migrating from Claude Code to OpenCode]]></title><description><![CDATA[Engineers need model flexibility and customization for best results. Closed ecosystems block them from doing this.]]></description><link>https://www.devashish.me/p/migrating-from-claude-code-to-opencode</link><guid isPermaLink="false">https://www.devashish.me/p/migrating-from-claude-code-to-opencode</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Sat, 24 Jan 2026 02:00:42 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ll set some context(pun intended) before I start this post. I&#8217;m doing this for a few reasons</p><ol><li><p>Coding tool discussions (similar to language or editor discussions) tend to escalate fast. The context helps clarify that my suggestions here are a part of <em>my</em> journey and in no way a recommendation for <em>anyone</em>. </p></li><li><p>I&#8217;ve learned a lot from similar writeups by more experienced devs. If this can help someone get better at their work, I&#8217;d have done a small bit to give back to the community</p></li></ol><p>I&#8217;ve written code for almost a decade and half and shipped products in various languages and frameworks. I&#8217;m a big believer of is famous quote by Abraham Lincoln</p><blockquote><p>Give me six hours to chop down a tree and I will spend the first four sharpening the axe.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4000" height="6000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:6000,&quot;width&quot;:4000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;black and silver door lock&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="black and silver door lock" title="black and silver door lock" srcset="https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1613072233238-4d290992404d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8c3dpdGNofGVufDB8fHx8MTc2OTIxMDc3Nnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@jovka">Jowita Jele&#324;ska</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>With this guiding principle I&#8217;ve spent countless hours in making my dev setup &#8220;perfect&#8221;. For almost everyone else, this setup is complex, clunky or simply overkill but this works for me in ways I need it to. More specifically, it is a combination of following</p><ol><li><p>Xubuntu 24.04 LTS</p></li><li><p>Wezterm (migrated to this from Terminator in 2025)</p></li><li><p>Tmux with session management (15+ permanent sessions and then some ephemeral ones)</p><ol><li><p>Tmux restore session (to auto restore sessions on reboot)</p></li></ol></li><li><p>Guake to just drop a terminal for a quick command or two when i dont want to Alt+Tab</p></li><li><p>(Neo)Vim for all and every change that needs text input</p><ol><li><p>Mix of usual plugins (Tree, Telescope, Tab, etc) with a few unusual ones</p></li><li><p>Give me a shout out if you&#8217;ve made Avante.nvim work with AWS Bedrock</p></li></ol></li><li><p>As of 2025, Claude Code</p><ol><li><p>For work Claude Code is setup with AWS Bedrock</p></li><li><p>For personal projects I use Claude Code Max subscription, gemini-cli, Codex, and Openrouter (for all other models), </p></li></ol></li></ol><p>As you might&#8217;ve guessed by now, I live in the terminal and always have. It was after I got my hands on Claude Code I realized the main reason my AI usage for dev tasks was pretty low: I couldn&#8217;t get myself to use the IDEs which is how most coding agents launched (Yes, I know VSCode has VIM keybindings but lets not go there).</p><p>With this out of the way, lets move on to the more interesting part of the post.</p><h2>Claude Code days</h2><p>Claude Code was addictive from day 1. Especially for engineers who spend a lot of time CLI, this came as a superpower. You had an assistant who just &#8220;gets&#8221; you. Gone are the days of remembering commands flags, mistyping commands (who remember <code>sl</code> ?) or going spending hours in RTFM.  </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AEoK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AEoK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 424w, https://substackcdn.com/image/fetch/$s_!AEoK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 848w, https://substackcdn.com/image/fetch/$s_!AEoK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 1272w, https://substackcdn.com/image/fetch/$s_!AEoK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AEoK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png" width="714" height="227" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:227,&quot;width&quot;:714,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52342,&quot;alt&quot;:&quot;https://xkcd.com/1168/&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://www.devashish.me/i/185580853?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="https://xkcd.com/1168/" title="https://xkcd.com/1168/" srcset="https://substackcdn.com/image/fetch/$s_!AEoK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 424w, https://substackcdn.com/image/fetch/$s_!AEoK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 848w, https://substackcdn.com/image/fetch/$s_!AEoK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 1272w, https://substackcdn.com/image/fetch/$s_!AEoK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366eb4a4-dd5b-4c3c-b4fd-4f0a309a8a5c_714x227.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">https://xkcd.com/1168/</figcaption></figure></div><p>Over time, I expanded my flow to include non-coding tasks as well. The tmux session list I talked about earlier, started growing with multiple sessions running Claude Code for specific tasks. This included</p><ul><li><p>Daily executive summaries (hook up Atlassian MCP and gh cli)</p></li><li><p>Sprint analysis, management and planning</p><ul><li><p>Finding blockers in sprint, over allocation, under allocation, work distribution etc etc</p></li><li><p>Responding to comments</p></li></ul></li><li><p>Architecture reviews (Pull architecture docs from Confluence, code from GH, requirements from JIRA, go to work)</p></li><li><p>Researching topics, understanding API contracts, CLI&#8217;s and SDKs</p></li><li><p>Building personal dashboards for anything and everything</p></li><li><p>Creating agents, plugins, marketplaces to distribute common patterns with my team</p></li><li><p>Creating more agents to help me do more stuff that I don&#8217;t want to</p></li><li><p>And yes, coding</p></li></ul><p>I probably forgot a few things here but you get the drift. Every tech meetup or event I went to, I learnt of more interesting stuff others were doing and tried to add some of it in my workflow. </p><p>This worked until Claude Code&#8217;s goals were aligned with mine: Get more done in the best way possible. </p><p>Turns out, other providers offered solutions but Claude Code wasn&#8217;t helping me try out those solutions.</p><h2>Claude Code - The Dark Side</h2><p>I guess I got carried away with the title there. Anyway, the reality is that Claude Code(and the likes) is a for profit product and will try to always lock the user to its ecosystem. All those (nearly) free tokens for a pricey model like Opus 4.5 don&#8217;t come without any strings attached. Every engineer I met in last 6 months agrees that Anthropic models are best at writing code but a non-trivial number of those engineers are also using other models for non-coding tasks. Codex and Gemini are the other two alternatives being used for planning or reviewing a plan or ideation or code generated by Sonnet/Opus. </p><p>Claude Code (and Codex, Gemini-CLI and Cursor) make it harder to leave by either simply being better than competition or by providing addon features. Claude Code has especially done a great job at this by first introducing MCPs about a year and half ago, then adding subagents, Skills, Marketplace and higher usage limits. I used all these features heavily to add layers on my workflows and by stringing multiple workflows together. I get more work done, Claude gets more token usage. Both win.</p><p>My mental model for AI agent usage is to explore both the application layer(usability features) and the foundational layer(LLM specific capabilities).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oc_9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oc_9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png 424w, https://substackcdn.com/image/fetch/$s_!oc_9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png 848w, https://substackcdn.com/image/fetch/$s_!oc_9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png 1272w, https://substackcdn.com/image/fetch/$s_!oc_9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oc_9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png" width="920" height="402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:920,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50371,&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://www.devashish.me/i/185580853?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.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_!oc_9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png 424w, https://substackcdn.com/image/fetch/$s_!oc_9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png 848w, https://substackcdn.com/image/fetch/$s_!oc_9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.png 1272w, https://substackcdn.com/image/fetch/$s_!oc_9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F398f6459-d0aa-48dc-955c-9bb71dce24c3_920x402.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>As much as Claude Code was doing a good job at the application layer, I didn&#8217;t get any control over the foundational layer. Simple example: I created a test-enforcer subagent in Claude Code with a lot of context and examples. But I couldn&#8217;t tweak the LLM parameters like Temperature, Top p or other values for this agent. I want this test enforcer agent to not have any creativity (which is opposite of what I want from a researcher agent). If these values are configurable at the LLM layer (Claude Agent SDK allows you to change it), then why should this not be available for Claude Code users to configure?</p><p>As my coding and non-coding workflow moved from treating the agent as a single assistant to multiple assistants with specific personas, I started getting frustrated with the inability to customize my agents beyond context engineering. Just this functionality can help users build very tight, reusable agents using the same foundation model.</p><p>Another pain point was the inability to switch models to find the best model for the agent. I kept hearing about new model launches which performed better(or at least claimed to) than other in certain aspects. Be it reasoning, tool execution, tool selection or other criteria in <a href="https://www.swebench.com/">SWE Bench</a>. </p><p>The goal was(is) to find the best model(brain) for the agent(persona). </p><p>For this, I needed to experiment fast. Yes, I can create a custom tool with all the Agent SDK&#8217;s and run eval to figure this out, which I did. But I need to know how it performs on my live setup, not some eval. This will become more clear when I explain later what I&#8217;m doing now.</p><h2>Enter OpenCode</h2><p>I tracked OpenCode development since its first launch. In the spirit of making my system perfect, I evaluate every tool before settling down on one. I rejected OpenCode a few months ago for multiple reasons which they&#8217;ve fixed since. </p><p>It was one of my teammates who made the switch from Claude Code to OpenCode that made me go back to it. After a few hours of playing around with it, I was ready for the switch. Over last week, I migrated all my agents, skills, configurations and MCPs to OpenCode and it&#8217;s working great. </p><p>I&#8217;ll first talk about what I&#8217;m loving so far and then dive into a concrete example.</p><h3>Agent configuration</h3><p>Right off the bat, my agent configurations are now fine tuned to what the agent is expected to do. Here&#8217;s an example of DevOps expert agent. </p><pre><code><code>---
description: Expert guidance on DevOps practices, infrastructure as code, CI/CD pipelines, and microservices deployment.
mode: all
tools:
  read: true
  write: true
  edit: true
  bash: true
permission:
  edit: allow
  bash: allow
temperature: 0.1
top_p: 0.9
[more LLM specific configurations as needed]
---

[Agent instructions follow...]</code></code></pre><p>The <code>mode: all</code> setting means this agent can be invoked both as a primary agent and as a subagent (automatically called by other agents). In Claude Code, you choose one or the other. Not both.</p><p>This limitation forced me to duplicate my architect agent. I needed one version configured as a slash command for direct design reviews, and another configured as a subagent so it would be automatically invoked during code reviews. Maintaining two copies of the same agent with identical instructions was brittle and error-prone.</p><p>When I&#8217;d run &#8220;review these changes with all agents,&#8221; my architect agent wouldn&#8217;t participate because it was configured as a slash command, not a subagent. The choice was binary: direct invocation OR automatic invocation. OpenCode&#8217;s <code>mode: all</code> solves this cleanly</p><h3>Model Flexibility</h3><p>My workflow relies on three core agents, each optimized with a different model:</p><p><strong>Architect Agent</strong> uses Opus 4.5. Its job is to find inconsistencies, suggest better architectural patterns, and evaluate trade-offs. This requires high reasoning capability and creativity.</p><p><strong>Test Agent</strong> uses Sonnet 4. Its job is zero creativity: follow existing test patterns and increase coverage. For this I need a model that is cost-effective and fast for repetitive, structured work like generating tests that mirror existing examples.</p><p><strong>API-Spec Updater Agent</strong> uses Sonnet 4. Its job is to enforce that API specs stay current with code changes and flag any unapproved modifications. Again, zero creativity needed, just pattern enforcement.</p><p>Using the right model for each agent isn&#8217;t about preference. It&#8217;s about reliability. When the test agent has access to creative reasoning, it sometimes introduces novel test patterns that don&#8217;t match the existing codebase style. When the architect agent is constrained by a pattern-following model, it misses architectural nuances. Model choice directly affects agent trustworthiness.</p><p>Claude Code locks you to Claude models. There&#8217;s no way to use GLM, z-ai, Qwen, MiniMax, or any other specialized model provider&#8217;s model per agent. You can swap models globally, but that defeats the purpose of specialized agents. Yes, I&#8217;ve used zen MCP for this but I found the integration to be slow and unpredictable.</p><h2>Case Study: Test Enforcer Agent</h2><p>To take my new setup for a spin, I set out to build the best Test Enforcer agent for my requirements. Here are the steps </p><ol><li><p>Clearly define the test enforcer agent persona, objectives, response format and specialization in agent definition. </p><ol><li><p>also add LLM parameters. <code>temperature=0.1, top_p=0.9</code></p></li></ol></li><li><p>Make some changes in a branch using my regular dev process</p><ol><li><p>This is a mix of Sonnet and Opus</p></li></ol></li><li><p>Spin up 5 OpenCode instances(tmux) on this branch</p><ol><li><p>Switch to &#8220;Test Enforcer Agent&#8221; for each instance</p></li><li><p>This means all 5 instances use exactly the same agent configuration</p></li><li><p>These 5 instances are using: Sonnet 4.5, Gemini 3.0 Pro, DeepSeek v3.2, GLM-4.7, GPT-4o Codex</p></li></ol></li><li><p>Give all 5 instances the exact same prompt </p><ol><li><p>&#8220;Review test cases for this branch&#8221;</p></li></ol></li><li><p>Brew my coffee</p></li></ol><p>Here are the results</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x25h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x25h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png 424w, https://substackcdn.com/image/fetch/$s_!x25h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png 848w, https://substackcdn.com/image/fetch/$s_!x25h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png 1272w, https://substackcdn.com/image/fetch/$s_!x25h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x25h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png" width="656" height="334.1465076660988" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:299,&quot;width&quot;:587,&quot;resizeWidth&quot;:656,&quot;bytes&quot;:43432,&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://www.devashish.me/i/185580853?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.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_!x25h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png 424w, https://substackcdn.com/image/fetch/$s_!x25h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png 848w, https://substackcdn.com/image/fetch/$s_!x25h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.png 1272w, https://substackcdn.com/image/fetch/$s_!x25h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe53ceb4a-9c18-4170-9a6a-0f90b91c77eb_587x299.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 results reveal why model selection per agent is critical. Here&#8217;s a truncated feedback from all the providers:</p><p><strong>Claude Sonnet 4.5</strong> provided the most detailed analysis with excellent layer-by-layer breakdown:</p><pre><code><code>Coverage Analysis (Detailed)
- Overall Coverage: 88.5% &#9989; Exceeds 80% threshold
  
Breakdown by Layer:
- Handler Layer: 86.9% - Excellent
  - admin_oem_handler.go: CreateOEM (85.7%), ListOEMs (77.8%), 
    GetOEM (100%), DeleteOEM (100%)
  - oem_handler.go: Login (85.7%), GetOwnProfile (100%), 
    UpdateOwnProfile (77.8%)
  - Gap: getOEMIDFromContext (71.4%) - missing some error path tests
  
- Service Layer: 74.4% - Good (closest to threshold)
  - Strong: ListOEMs (100%), comparePassword (100%), mapToDTO (100%)
  - Needs Attention: GetOwnProfile (37.5%), DeleteOEM (66.7%), 
    UpdateOwnProfile (69.2%), Login (73.9%)
  - Critical Gap: GetOwnProfile only 37.5% covered
</code></code></pre><p><strong>Gemini 3.0 Pro</strong> was cost-effective but provided basic analysis:</p><pre><code><code>Review Summary
Rating: 3/5 &#11088;&#11088;&#11088;
Overall coverage is 88.6% (&#9989; Meets 80% target), but the Service Layer 
is lagging at 74.4%.

| Layer | Coverage | Status |
| :--- | :--- | :--- |
| Validator | 100.0% | &#9989; Excellent |
| Repository | 93.2% | &#9989; Excellent |
| Handler | 86.9% | &#9989; Good |
| Service | 74.4% | &#9888;&#65039; Below Threshold |

Critical Gaps (Must Fix)
1. Service Layer: Missing error handling for hashPassword failure
2. Service Layer: Missing error handling for database failures
3. Service Layer: Missing error handling for token generation failure
</code></code></pre><p><strong>DeepSeek v3.2</strong> balanced cost and thoroughness:</p><pre><code><code>Rating: 4/5 &#11088;
Summary
Excellent test coverage with comprehensive scenarios for the new 
management feature. Tests follow repository patterns, have good mocking, 
and cover most error conditions. Minor improvements needed in API 
response code validation and edge case coverage.

Test Pattern Analysis
- Follows repo conventions: &#9989; Yes
- Table-driven tests: &#9989; Present
- Mock usage: &#9989; Appropriate (gomock for service/repository interfaces)
- Test isolation: &#9989; Isolated
- HTTP testing: &#9989; Present (httptest with Fiber framework)
</code></code></pre><p><strong>GLM-4.7</strong> delivered strong analysis at competitive pricing:</p><pre><code><code>Rating: 4/5 &#11088;
Summary
Good test coverage with solid fundamentals. The management feature 
has comprehensive tests across all layers (handler, service, repository, 
validator) with 100% validator coverage and strong repository coverage 
(93.2%). Most happy paths and error scenarios are covered. However, 
authentication middleware tests, concurrency safety, and some edge 
cases are missing.

Coverage Analysis
- Current: 86.9% (handler), 93.2% (repository), 74.4% (service), 
  100.0% (validator)
- Target: 80.0%
- Status: &#9989; Meets threshold

Test Pattern Analysis
- Follows repo conventions: &#9989; Yes
- Table-driven tests (Go): &#9989; Present (in validator tests)
- Mock usage: &#9989; Appropriate (gomock with proper controller management)
- Test isolation: &#9989; Isolated (proper setup/teardown with defer ctrl.Finish())
</code></code></pre><p><strong>GPT-4o Codex</strong> was free(almost) but delivered subpar analysis:</p><pre><code><code>Rating: 2/5 &#11088;
Summary
Core OEM handlers, repository, and validator tests are well-structured 
and follow repo conventions, but service-level error paths are 
under-tested and the overall module coverage is far below the 80% target.

Coverage Analysis
- Current: 58.6%
- Target: 80.0%
- Status: &#9888;&#65039; Below threshold (-21.4%)

Test Pattern Analysis
- Follows repo conventions: &#9989; Yes
- Table-driven tests (Go): &#9989; Present (validator coverage)
- Mock usage: &#9989; Appropriate (gomock + sqlmock)
- Test isolation: &#9989; Isolated
</code></code></pre><p>The model comparison reveals distinct value propositions. <strong>GLM-4.7 emerges as the optimal choice</strong> for this test enforcement agent: 88% cheaper than Sonnet with identical 4/5 quality rating, more efficient token usage (42% vs 58%), and accurate coverage analysis with specific improvement recommendations like authentication middleware testing and concurrency safety.</p><p>DeepSeek v3.2 remains competitive at $0.42, but GLM-4.7&#8217;s superior cost efficiency ($0.23) and comparable analysis depth make it the clear winner for repetitive test review workflows. Sonnet&#8217;s premium pricing becomes harder to justify when specialized models deliver equivalent results at a fraction of the cost.</p><p>GPT-4o Codex, despite being free, significantly underperformed with incorrect coverage calculations (58.6% vs the actual 88.5%) and a lower quality rating. This demonstrates that cost isn&#8217;t the only consideration&#8212;accuracy and reliability matter more for automated workflows where incorrect analysis could mislead development decisions.</p><p>This is why OpenCode&#8217;s per-agent model selection matters. I can optimize each agent for its specific task characteristics, cost requirements, and quality thresholds.</p><h2>OpenCode&#8217;s Approach</h2><p>OpenCode is provider-agnostic. I configure access to both AWS Bedrock (for Claude models) and OpenRouter (for GLM-4, MiniMax, DeepSeek, and others) in a single interface. Each agent specifies which model it uses in its configuration.</p><p>The agent configuration is straightforward markdown frontmatter:</p><ul><li><p><code>mode: all/primary/subagent</code> controls invocation patterns</p></li><li><p><code>tools: {}</code> grants granular access to specific capabilities</p></li><li><p><code>permission: {}</code> sets fine-grained edit and bash permissions</p></li></ul><p>Beyond agent flexibility, OpenCode fixed several workflow issues that were impacting my productivity with Claude Code:</p><p><strong>Flicker problem resolved.</strong> Claude Code&#8217;s UI would flicker when editing large files (specs, long documentation). This happened frequently as my workflow shifted toward spec-first development. OpenCode doesn&#8217;t have this issue.</p><p><strong>Better scrolling behavior.</strong> In Claude Code, I had to use tmux shortcuts to scroll through long responses. But that meant that the input box would disappear when scrolling up. OpenCode lets me use simple page-up/page-down while keeping the input visible, making it easier to provide feedback on lengthy code reviews.</p><p><strong>Image paste support.</strong> Claude Code on Wayland had persistent issues with image pasting(X11 works fine). OpenCode handles this correctly out of the box.</p><p><strong>LSP support out of the box.</strong> Language Server Protocol integration works automatically for Go, JavaScript, and Python files. This means better autocompletion and inline errors during agent-assisted coding.</p><p><strong>Session sharing.</strong> I can generate a shareable link to any conversation and send it to teammates. This is useful for debugging agent configurations or showing examples of effective prompts.</p><p><strong>Editor mode.</strong> Instead of typing prompts in a command box, I can use vim to craft detailed multi-paragraph instructions with proper formatting. This significantly improves how I communicate complex requirements to agents. Especially when writing initial plans for complex tasks, this provides a distraction free way to just dump all thoughts on a blank slate (sadly, this is one of the few ways I still get to use vim)</p><h2>Trade-offs</h2><p>This doesn&#8217;t come for free so please venture into this territory if you&#8217;re sure.</p><p><strong>Learning curve.</strong> OpenCode has more keyboard shortcuts to remember. It&#8217;s similar to moving from an IDE to vim. There&#8217;s an adjustment period to become productive. I&#8217;m still learning the keybinds.</p><p><strong>Missing visual features.</strong> Claude Code&#8217;s &#8220;ultrathink&#8221; visual indicator shows when the model is reasoning deeply. The status bar provides useful context about what the agent is doing. The marketplace makes discovering new integrations easy. OpenCode lacks these polish elements.</p><p><strong>Manual mode switching.</strong> OpenCode has separate plan and execute modes that I switch between manually using the Tab key. Claude Code handles this transition seamlessly when it automatically moves from planning to execution without user intervention. This adds friction to my workflow.</p><p><strong>MCP configuration complexity.</strong> Model Context Protocol servers require more manual setup in OpenCode compared to Claude Code&#8217;s streamlined approach. I have more control, but it takes more effort to configure initially.</p><p>These aren&#8217;t dealbreakers for my workflow, but they&#8217;re real costs. If you value visual polish and seamless UX over configurability, Claude Code may be the better choice.</p><h2>When This Matters</h2><p>Not everyone needs multi-agent workflows with per-agent model selection. If you&#8217;re using a single AI assistant for coding tasks, Claude Code&#8217;s simplicity and polish are advantages.</p><p>The signal that you need OpenCode&#8217;s flexibility: you&#8217;re building more than 2-3 specialized agents and hitting limits on how you can configure them. Specifically:</p><ul><li><p>You need agents to be both directly callable and auto-invoked by other agents</p></li><li><p>You need different agents using different models based on task characteristics (like using DeepSeek for test reviews and Sonnet for architecture decisions)</p></li><li><p>You&#8217;re iterating on agent behavior and need fast configuration changes</p></li><li><p>You need to use specialized models (GLM-4.7 for cost-efficient pattern-following, DeepSeek v3.2 for balanced performance) alongside general-purpose models</p></li></ul><p>For me, model flexibility and agent invocation control outweigh visual polish. My agents deliver more reliable results and are trustworthy when I can match the right model to each task. GLM-4.7 handles test enforcement at $0.23 with the same quality as Sonnet&#8217;s $1.96, while my architect agent still benefits from Sonnet&#8217;s deep reasoning capabilities. OpenCode makes this optimization possible. Once I&#8217;ve selected the model, I will customize it further using its model specific settings (for GLM-4.7, https://huggingface.co/zai-org/GLM-4.7 ). </p><h2>Key Takeaways</h2><p><strong>Agent specialization requires model flexibility.</strong> Different tasks need different LLM characteristics. Pattern-following work (tests, spec enforcement) benefits from models optimized for batch operations. Architecture decisions benefit from models optimized for reasoning. One-size-fits-all model selection limits agent effectiveness. My test enforcer comparison showed DeepSeek v3.2 delivering 79% cost savings over Sonnet with comparable quality for structured tasks.</p><p><strong>Cost optimization through model selection.</strong> Per-agent model choice isn&#8217;t just about capabilities, it&#8217;s about cost efficiency and accuracy. The test enforcer comparison revealed GLM-4.7 as the optimal choice: 88% cheaper than Sonnet with identical 4/5 quality rating and more efficient token usage. Running every agent on premium models wastes budget on tasks that specialized models can handle better and cheaper, while free models like GPT-4o Codex can produce unreliable results that mislead development decisions.</p><p><strong>Invocation patterns matter.</strong> Agents should be callable both directly (slash commands) and by other agents (subagents) without duplication. The <code>mode: all</code> configuration in OpenCode solves this cleanly. </p><p><strong>Tool lock-in has real costs.</strong> Provider coupling limits your ability to optimize agent effectiveness. As new specialized models are released (like GLM-4 for coding tasks), being provider-agnostic lets you adopt them immediately. With agentic coding now being the de-facto way to write code, engineers are working on higher complexity tasks on their machines. They need access to the best tools to get reliable outcomes. </p><p><strong>Visual polish vs. configurability is a real trade-off.</strong> Claude Code&#8217;s seamless UX and visual indicators are valuable. OpenCode&#8217;s flexibility comes with more manual configuration. Choose based on whether you prioritize ease of use or control.</p><div><hr></div><p>If you&#8217;re hitting agent customization limits or need model flexibility per agent, evaluate OpenCode. I&#8217;d love to hear how others are architecting their agent teams. Reach out at <a href="mailto:devashish@devashish.me">hello@devashish.me</a> if you&#8217;re navigating similar challenges.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AIE Code 2025 Wrapup]]></title><description><![CDATA[Leadership and engineering takeaways from AIE CODE 2025.]]></description><link>https://www.devashish.me/p/aie-code-2025-wrapup</link><guid isPermaLink="false">https://www.devashish.me/p/aie-code-2025-wrapup</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Tue, 23 Dec 2025 02:00:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JZD1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JZD1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JZD1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JZD1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JZD1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JZD1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JZD1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg" width="1252" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1252,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54471,&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://www.devashish.me/i/182365455?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.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_!JZD1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JZD1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JZD1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JZD1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eccc34d-86fe-482c-9ae9-86e3b2fc0a0d_1252x970.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">Screenshot from AIE Live Stream</figcaption></figure></div><p>For the record, I didn&#8217;t attend AIE CODE 2025(NYC) in person. I did go through every-single-presentation in the two YouTube videos for the <a href="https://www.youtube.com/live/cMSprbJ95jg?t">leadership track</a> and the <a href="https://www.youtube.com/watch?v=xmbSQz-PNMM">tech track</a>. Even with speedup, this was a lot of high quality content to consume. As much as I wanted AI to read the transcripts and summarize key points, I found that the nuance was lost in translation. So I took notes manually and synthesized the key themes for this post using Sonnet 4.5 on Claude Code.</p><p>Few disclaimers before we start:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ul><li><p>This is not a summary of every talk. Just the topics I found most interesting.</p></li><li><p>The opinionated takeaways are mine, not the speakers&#8217;.</p></li></ul><p>With that, let&#8217;s dive in.</p><p>Between the leadership and engineering tracks, I found the leadership discussions more outcome driven and actionable. It&#8217;s clear that leaders are under pressure to justify the ROI of massive AI investments they&#8217;ve made in the last 12 months. As much as I&#8217;d love to get my hands on the cool tech coming out of big labs and startups alike, the AI adoption challenge is primarily organizational, not the technology. Many leaders are using the same (and sometimes &#8220;lagging&#8221;) technology to drive more innovation, just by changing how they work.</p><p>Three leadership takeaways emerged from the conference. Each reveals how organizations must transform to unlock AI&#8217;s compounding gains.</p><h2>Process Rewiring</h2><p><a href="https://www.mckinsey.com/">McKinsey&#8217;s</a> data confirmed that most organizations are stuck in pilots. Yet spending continues to grow. Their research shows a 10x productivity difference between companies where 90% of engineers use AI versus those where 100% use AI - the last 10% adoption drives outsized returns.</p><p>Just making AI available isn&#8217;t enough. The organizations that are succeeding are rewiring their PDLC, team structures, and review processes. This is a human change, and it needs to start now. In my earlier <a href="https://www.devashish.me/p/why-5x-engineers-dont-make-5x-teams">post</a> I highlighted this point as well.</p><p><strong>Code review must transform</strong>. Every engineer is now a reviewer. Most engineering teams already have this expectation but in reality, only a handful of engineers end up owning the majority of code reviews. This needs to change. Teams also need to speed up review cycles with SLOs. Make it clear whose turn it is to take action - agent, engineer, or reviewer. Distribute the load across the team. Focus reviews on outcomes like SLO impact and dependencies, not code style. When agents iterate with humans fast, velocity compounds.</p><p><strong>Metrics reveal what matters</strong>. Track velocity as your primary metric - features shipped per sprint. Use quality as your guardrail metric - production incidents, bugs reported in development, rollback rate. The goal is to improve velocity while maintaining quality. Track review and refactor rate; this should decrease as agents improve. Important point here is to start with one leading metric (velocity) and one guardrail (quality). Avoid drowning in metrics.</p><p><strong>Process rewiring accelerates onboarding</strong>. <a href="https://every.io/">Every.io</a> demonstrated this at scale: new hires there are shipping code to production within a few weeks. This enables them to hire quickly and even explore contractors for short term engagement. When tacit knowledge is codified into context (CLAUDE.md, documentation, patterns), engineers don&#8217;t need months to ramp up. They inherit the team&#8217;s collective intelligence immediately.</p><p><strong>Psychological safety predicts success</strong>. <a href="https://psychsafety.com/googles-project-aristotle/">Google&#8217;s Project Aristotle</a> found that psychological safety is the biggest indicator of high-performing teams. Frame AI adoption as performance amplification, not replacement. Engineers need to trust that AI adoption improves their work, doesn&#8217;t threaten it, and the company culture must reflect that.</p><h2>The Clean Environment Multiplier</h2><p><a href="https://www.stanford.edu/">Stanford&#8217;s</a> study revealed the core insight: clean engineering environments unlock AI productivity. Test coverage, type safety, modularity, documentation, templates, clean Agents.md - these determine whether agents drive 20% or 80% of your sprint.</p><p>Poor environments create compounding friction. Agents struggle without clear validation. Engineers spend 40% of their time context-switching to provide missing information. PRs pile up because no one trusts AI-generated code. Writing more code doesn&#8217;t equate to more features. Engineers just start spending time fixing AI mistakes and reviewing massive volume of low-quality output.</p><p>Clean environments compound gains. Agents complete tasks autonomously. Engineers focus on creative problem-solving. Review cycles accelerate because outcomes are measurable. <a href="https://github.com/google/antigravity">Google Antigravity</a> demonstrated their approach to making Agents collaborate effectively by providing them with clear validation, checkpoints, multi modal inputs and feedback loops. All built into the editor. I&#8217;m still a Claude Code fan but it&#8217;s an approach worth giving a shot.</p><p><strong>The multiplier isn&#8217;t the AI. It&#8217;s the environment you give it to work in.</strong></p><p><a href="https://www.capitalone.com/">Capital One&#8217;s</a> <a href="https://www.codesimplicity.com/">Max Kanat-Alexander</a> asked the defining question: what will be valuable no matter what happens? Use industry standard tools, frameworks, and languages that models are trained on. Build with clear validation that fails deterministically. Write down the context and intentions. What&#8217;s good for humans is good for AI.</p><p><strong>Invest in engineering hygiene now</strong>. Increase test coverage to 80%+ for critical paths - tests form the backbone of deterministic validation. Refactor for modularity with single responsibility per component. Enforce interfaces through API specs, Agents.md, and documentation. Implement strict type safety across services. Standardize your dev environment. These fundamentals don&#8217;t change with GPT-5 or Claude Opus 5.</p><h2>Context Infrastructure</h2><p>Stating the obvious here: Poor context = poor AI output. <a href="https://www.qodo.ai/">QODO</a> stated it plainly - when engineers don&#8217;t trust AI code, they don&#8217;t trust the context, not the model. Teams must build frameworks to evaluate and assess quality to build confidence on AI generated code.</p><p><a href="https://every.io/">Every.io</a> proved that context infrastructure investments pay off to build scale: 99% of their code is AI-written, single-engineer owned apps, parallel feature development. Their secret? Compounding engineering through CLAUDE.md and context improvements, converting tacit knowledge into prompts that improve with each feature. Engineers working on multiple features in parallel use multiple agent panes but are still productive. Code is cheap now, so you can prototype multiple ideas simultaneously. An important learning for me was the quote: AI has caused us to invent entirely new set of engineering primitives and processes.</p><p><strong>Context infrastructure compounds while model capabilities commoditize</strong>. The harness - everything touching the LLM - is the new abstraction layer. Custom tools need model training. Prompts aren&#8217;t portable across models. Platform teams must translate user intent into model-specific instructions. These investments compound because they work regardless of which model wins.</p><p><a href="https://www.bloomberg.com/">Bloomberg&#8217;s</a> rollout to 9,000 engineers revealed the work preference hierarchy: new features &gt; architecture &gt; code review &gt; bug fixes &gt; support. AI should amplify this preference, not fight it. Let agents handle uplift work while engineers solve creative problems. In my experience as well, engineers who hated writing tests are the ones writing bad tests with AI. The solution is give them better context and frameworks to write good tests, not have agents write tests for them.</p><p><a href="https://humanlayer.dev/">HumanLayer&#8217;s</a> research found that up to 40% context window usage keeps agents in the &#8220;smart zone.&#8221; Beyond that, they enter the &#8220;dumb zone.&#8221; This changes how we architect workflows. Use subagents for research and context management - they return succinct messages to the main agent. Research equals compression of truth. Planning equals compression of intent. My personal experience aligns with this pattern. I hit <code>/clear</code> once I&#8217;m at 10% context window remaining, forcing me to break tasks into smaller chunks that can be completed within the context window.</p><p><strong>Research &#8594; Plan &#8594; Implement. All happen in the smart zone.</strong></p><p><strong>Stop building agents, start building skills</strong>. <a href="https://www.anthropic.com/">Anthropic</a> emphasized this shift at the conference. Skills are a way to use context better, encapsulate learnings, and democratize knowledge across your team. Instead of building generic agents, create expertise through skills that progressively disclose capabilities. Skills become your institutional knowledge - they help onboard new engineers, compound your team&#8217;s productivity, and ensure consistent quality. Non-developers can build high-value skills when context is properly structured.</p><p><strong>Build the context infrastructure</strong>. Implement the CLAUDE.md pattern for team knowledge compounding - update it frequently as your team learns. Build MCP servers for service dependencies and architecture docs. Create deterministic validation that fails consistently. Invest in tools that bring context to agents, not agents that need constant human input.</p><p><a href="https://arize.com/">Arize</a> achieved 5-15% improvements in bug fixes on a standard OSS repo just by changing system prompts. Using evals to improve prompts and context creates a feedback loop that improves agent performance over time. Build these feedback loops for your system prompts.</p><h2>The Underlying Bet</h2><p>2026 is about execution, not experimentation. Organizations that treat AI as infrastructure will compound their gains while others restart projects.</p><p>The bet isn&#8217;t on which model wins. It&#8217;s on the fundamentals that work regardless of model like standard tools LLMs were trained on, clear validation that fails deterministically, written context that agents can reference and fast iteration between agents and engineers.</p><p><strong>Invest in the fundamentals now. They&#8217;re the multiplier for everything else.</strong></p><p>The conference data was stark: companies with clean engineering environments see 5-10x more AI productivity gains than those without. Token spend is a weak predictor of AI adoption. Engineering quality is the strong one. Good design fights bad AI output.</p><h2>What This Means For You</h2><p>If you&#8217;re planning 2026 investments, the priority order is clear:</p><ol><li><p><strong>Process Rewiring</strong> - Transform code reviews, define metrics (velocity + quality), build psychological safety</p></li><li><p><strong>Clean Environment Multiplier</strong> - Fix engineering hygiene (test coverage, type safety, modularity, deterministic validation)</p></li><li><p><strong>Context Infrastructure</strong> - Build MCP servers, implement CLAUDE.md, create feedback loops for system prompts</p></li></ol><p>The organizations that compound these investments will see 5-10x gains. The ones that skip fundamentals and jump to AI tools will restart in Q3.</p><p>Working through AI adoption challenges in your engineering organization? I&#8217;m happy to brainstorm strategies or share what&#8217;s worked in practice. The fundamentals matter more than the models - let&#8217;s compare notes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AWS re:Invent 2025 Recap]]></title><description><![CDATA[AWS re:Invent 2025 revealed three converging trends: multi-agent AI systems, design-time observability, and cost optimization during development.]]></description><link>https://www.devashish.me/p/aws-reinvent-2025-recap</link><guid isPermaLink="false">https://www.devashish.me/p/aws-reinvent-2025-recap</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Thu, 11 Dec 2025 01:51:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PTT9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<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_!PTT9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PTT9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 424w, https://substackcdn.com/image/fetch/$s_!PTT9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 848w, https://substackcdn.com/image/fetch/$s_!PTT9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!PTT9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PTT9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp&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;:17420,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devashish.me/i/181272441?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PTT9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 424w, https://substackcdn.com/image/fetch/$s_!PTT9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 848w, https://substackcdn.com/image/fetch/$s_!PTT9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!PTT9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf913fd-6540-4b6b-b1a4-1e6491abbbde_1280x720.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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;ve attended AWS re:Invent for a few years now and its become my to-go event of the year to get a snapshot of the tech landscape. It has a mix of everything, from early stage startups working on cutting edge technologies, to incumbent enterprises trying to prove they&#8217;re still relevant. Obviously, AWS makes sure that their products, partners and messaging take the front stage but that&#8217;s not where the interesting parts of the conference are. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Disclaimer: I&#8217;m interested in exploring the infrastructure, observability, developer experience and AI tooling space, so this article is just based on these topics. It&#8217;s, in no way, a generic coverage of the event. Also, I&#8217;m not paid by any companies I mention in this post. </p><p>My pre-conference strategy is to do a few things</p><ol><li><p>Shortlist companies that are relevant to my interests</p><ol><li><p>Mark the days I&#8217;ll spend at the Expo hall and schedule booth visits</p></li></ol></li><li><p>Prepare a list of questions to ask their reps</p><ol><li><p>This includes pricing, tech deep dives, integrations, limits etc. Anything that might impact the vendor selection decision later on</p></li><li><p>This saves significant time later in case we do decide to explore any new tools in a certain category</p></li></ol></li><li><p>Secure ISV event invites via AWS Account Managers</p><ol><li><p>These events provide an amazing opportunity to learn what&#8217;s happening on the ground in other companies. e.g. one of the events I attended this time was: AI Pricing Strategies.</p></li></ol></li><li><p>Shortlist vendor sponsored events/dinners I want to attend. Once you&#8217;ve completed the registration, many vendors start reaching out with dinner invites, poker events, lunch, brunch, breakfast, golf, concerts to schmooze you.</p><ol><li><p>These are a hit or a miss based on who else attends. The vendor execs will be there to understand your use cases and follow up later(or sooner, based on your title and company size)</p></li></ol></li></ol><h2>TL;DR</h2><p>Shift-left dominated AWS re:Invent 2025. Not the DevOps shift-left we&#8217;ve been doing for a decade though. The pattern showed up everywhere: AI agents validating code during development, observability designed into systems before deployment, incident management done by agents, cost optimization baked into CI/CD pipelines. Three domains converging around the same idea: move decisions earlier in the development lifecycle.</p><h2>AI Architecture Goes Multi-Agent</h2><p>The evolution from RAG to multi-agent systems is real. AWS made a big push with <a href="https://kiro.dev/">Kiro</a> code which promises to solve problems early in development cycle. AI agents validate work during development, not just execute tasks. Companies like EdgeDelta introduced a slack-like chat interface directly in their product where the &#8220;users&#8221; are configurable agents that work together to achieve the task provided by the user.</p><p>This changes architecture decisions. Engineering leaders need to plan for multi-agent systems, not monolithic AI. The question isn&#8217;t &#8220;should we use AI?&#8221; It&#8217;s &#8220;where can agents validate our work?&#8221; Code review, testing, deployment checks, these are the natural starting points.</p><p><strong>For Platform Engineers:</strong> Evaluate agent orchestration frameworks now. The infrastructure for multi-agent coordination is becoming a first-class platform requirement.</p><p><strong>For Product Engineers:</strong> Identify repeatable validation tasks that agents can handle. Start with low-risk, high-volume work.</p><h2>AI SRE steals the show</h2><p>After years of &#8220;AI native everything,&#8221; many companies realized they have data to solve recurring SRE problems.</p><p><a href="https://resolve.ai/">Resolve.ai</a> handles all alerts, performs root cause analysis, and troubleshoots incidents within minutes. <a href="https://edgedelta.com/">EdgeDelta</a> provides 100% data visibility with AI-powered observability automation. But, these platforms work when your data architecture allows it.</p><p><a href="https://traversal.com/">Traversal</a> provides a nice chat interface to find, debug and manage issues and incidents. Same with <a href="https://incident.io/">Incident.io</a> which help you triage alerts using AI, reducing SRE time spend on this.</p><p>PagerDuty&#8217;s AI Triage Agent and Grafana&#8217;s SLO-first approach signal a fundamental shift: observability is moving left to design time. Define SLOs during sprint planning, not after production incidents.</p><p>But here&#8217;s the hard part: buying incident response agents while keeping siloed logging, metrics, and traces is pointless. Agents can&#8217;t do root cause analysis if they can&#8217;t correlate data across systems. The organizational change matters more than the tool selection.</p><p>Companies must give agents autonomy in low-risk areas. Build incremental confidence. Start with incidents that don&#8217;t require human judgment: service restarts, cache clearing, scaling operations. Let agents handle these autonomously while humans monitor. Gradually expand the autonomy zones as confidence builds.</p><p>The critical requirement is to make your data agent-consumable. Break down silos in incident management. Create clear access controls so agents can access logs, metrics, traces, and infrastructure state across systems. Without this, agents remain glorified alert routers. These systems invariably ask access to all the existing tools that an SRE does (which seems natural), so be prepared to ask pointed questions about permissions and data compliance before signing the check.</p><p><strong>For Engineering Leaders:</strong> Identify low-risk incident types where agents can respond autonomously. Audit your data architecture for agent consumption. Can an agent access and correlate data across your observability stack?</p><p><strong>For Platform Engineers:</strong> Build agent-accessible APIs for logs, metrics, and traces. This isn&#8217;t just about human-readable dashboards anymore. Can you use existing tools like Claude Code or custom agents to solve some of these problems? Experiment before you buy.</p><p><strong>For Product Engineers:</strong> Define SLOs during design phase. Make observability requirements explicit before writing code. This helps the Platform team think about what&#8217;s important from a business perspective.</p><h2>Cost Optimization Shifts Into Development</h2><p>Resource optimization dominated FinOps messaging this year. Last year, most FinOps companies focused on passive financial planning mechanisms (savings plans, RIs) to save costs. This year, they&#8217;re building real-time mechanisms.</p><p><a href="https://www.cloudzero.com/">CloudZero&#8217;s</a> real-time cost anomaly detection and <a href="https://www.nops.io/">nOps&#8217;</a> Kubernetes cost management treat cost as a first-class metric alongside performance. The pattern: developers see cost impact during PR review, not quarterly reports.</p><p><a href="https://www.scaleops.com/">ScaleOps</a> does resource optimization for K8S clusters using binpacking and resource reallocation dynamically.</p><p>This requires FinOps to shift left. Integrate cost feedback into development workflows. Make cost visible in CI/CD pipelines. When engineers see &#8220;$0.23 per deployment&#8221; in their pull request, they make different architectural decisions.</p><p><strong>For Platform Engineers:</strong> Add cost visibility to CI/CD pipelines. Make cost data accessible during development, not just in monthly reviews. Products like <a href="https://www.firefly.ai/">Firefly.ai</a> provide mechanisms for this, but you can build this in-house. At least the first few versions. Claude Code can provide cost impact for PRs with Terraform files based on publicly available pricing data&#8212;good enough for a baseline.</p><p><strong>For Product Engineers:</strong> Include cost considerations in architectural decisions from day one. &#8220;This endpoint costs $X at Y scale&#8221; should be visible during design review.</p><h2>Changes needed</h2><p>It&#8217;s not about buying tools. Organizations and teams need to think holistically about both the problems and processes. Teams that are being successful are actively iterating on their processes to streamline communication paths, creating new patterns and weaving AI in their day to day workflows.</p><p>Traditional organizations keep approval-heavy deployment processes while buying AI agents. This means agents can&#8217;t deploy autonomously if deployments require three approval gates. They keep siloed data while buying incident response agents. Agents can&#8217;t correlate if data lives in disconnected systems. They keep quarterly cost reviews while buying optimization tools. Developers need feedback loops during development, not retrospectives.</p><p>Tools must augment new organizational structures and processes, not just automate old ones. Define low-risk autonomy zones for agents. Build incremental confidence with measurable boundaries. Make organizational data accessible to agents with proper access controls.</p><p>The companies that win will change their processes alongside their tooling. The ones that lose will buy the same tools but keep the same processes.</p><h2>Action Items by Persona</h2><p><strong>Engineering Leaders:</strong></p><ul><li><p>Map out low-risk areas for agent autonomy (service restarts, scaling operations, cache clearing)</p></li><li><p>Audit data architecture for agent-consumability across observability, deployment, and cost systems</p></li><li><p>Start one shift-left pilot in Q1 2026 (pick one domain: AI validation, observability-first design, or cost feedback)</p></li></ul><p><strong>Platform Engineers:</strong></p><ul><li><p>Evaluate agent orchestration frameworks for multi-agent coordination</p></li><li><p>Build agent-accessible APIs for logs, metrics, traces, and infrastructure state</p></li><li><p>Add cost visibility to CI/CD pipelines (cost per deployment, cost per feature flag, cost per service)</p></li></ul><p><strong>Product Engineers:</strong></p><ul><li><p>Define SLOs during sprint planning, before writing code</p></li><li><p>Include cost considerations in architectural decisions (document &#8220;$X at Y scale&#8221; in design reviews)</p></li><li><p>Identify validation tasks suitable for AI agents (code review checks, test generation, deployment validation)</p></li></ul><h2>Miscellaneous</h2><ul><li><p>AWS announcements lacked any surprises. Bunch of new features in Bedrock. Push to use Kiro. Customer testimonials. The usual. Bedrock is now becoming more usable as a real AI platform which is good if you&#8217;re limited to using AWS ecosystem. </p></li><li><p>AWS needs to replace the team that comes up with swag ideas. Just saying.</p></li><li><p>I was surprised to see a massive presence by Anthropic (didn&#8217;t think they needed it). They had sessions on using Claude and Claude Code and some scenarios. Full house. </p></li><li><p>Meta is really trying to make money. Whatsapp business had a big booth. Go figure!</p></li><li><p>Always amazed to see a giant Github booth. They always have something innovative going on there. Can&#8217;t complain, they do have cool stickers.</p></li></ul><h4>Logistics tips</h4><p>Vegas in December is cold. Pack accordingly. Hotel room thermostats may be capped as well. </p><p>Traffic is brutal. F1 (Las Vegas Grand Prix) happens the weekend before re:Invent. Add 30 minutes to every commute estimate. Or, plan ahead and get a hotel that you can walk to the venue from.</p><p>Coffee and food: AWS kiosk in the Expo hall center has free coffee(average), tea, and hot water. Most coffee near the venue is objectively bad. Buchon cafe near the main Venetian entry serves good coffee and pastries for breakfast. Long lines. Most Venetian cafes get booked for private events so scout ahead of time for your go-to place if you&#8217;re planning to eat outside of the lunch hours.</p><p>Networking tip: Ask your account managers 2+ months ahead for executive session invites on architecture, GTM, and pricing. These sessions provide deeper technical content than general keynotes.</p><div><hr></div><p>If you&#8217;re navigating shift-left adoption or building agent-consumable data platforms, I&#8217;d love to hear what&#8217;s working (and what&#8217;s not). The organizational change is harder than the technology - let&#8217;s compare notes.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Never Blocked Teams]]></title><description><![CDATA[Reduce the time engineers spend waiting by 30%. The shift: treating blockers as organizational choices, not technical constraints. Here's the playbook.]]></description><link>https://www.devashish.me/p/never-blocked-teams</link><guid isPermaLink="false">https://www.devashish.me/p/never-blocked-teams</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Sat, 22 Nov 2025 07:03:49 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Our senior Android engineer pinged the team Slack at 11 PM PST. &#8220;Blocked. Need design mock for payment flow before I can merge this PR.&#8221; The designer was halfway across the world, just wrapping up their day. Eight hours minimum before anyone could respond. Sprint goal at risk. PR goes stale. Engineer context-switches to something else, losing flow.</p><p>This wasn&#8217;t a one-time issue. It was a symptom. Our distributed team was chronically blocked when it came to external dependencies. Engineers spent significant time waiting for something - designs, PR feedback, API approvals, QA cycles. Sprint predictability plummeted as soon as <em>any</em> dependency popped up, causing frustration and delays. We needed a solution.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5568" height="3712" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3712,&quot;width&quot;:5568,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;green red and yellow wall&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="green red and yellow wall" title="green red and yellow wall" srcset="https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1591040092219-081fb773589c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwdXp6bGV8ZW58MHx8fHwxNzYzNzkxMzM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@ashkfor121">Ashkan Forouzani</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h2>The Distributed Blocker Problem</h2><p>Further discussions revealed that all blockers for the team were caused by three high level structural problems. All the specific blockers we identified (listed later in this post) were caused by one or more of these problems.</p><h3>Process friction</h3><p>Organizations now expect teams to be more cross-functional than ever. The lines between specializations within engineering are already blurring. Our teams have already seen engineers successfully (and quickly) transitioning into full stack roles without much guidance. In this situation, &#8220;old&#8221; processes cause more harm than benefit and prohibit engineers from moving fast. E.g. security reviews require three approvals for database schema changes. Engineers learned to batch changes, creating integration risk. As AI adoption raises expectations from engineering teams, teams must re-evaluate processes to avoid unnecessary friction.</p><h3>Dependency bottlenecks</h3><p>Cross-team work like approvals, reviews, or key architecture decisions created these bottlenecks. In a high functioning, well thought engineering org, these dependencies are expected. I&#8217;d argue they are necessary to ensure a balance between speed and accountability. With AI adoption increasing the committed LOC by many factors, teams need to rethink these dependencies to avoid creating bottlenecks. In a recent AI meetup I attended, the entire room(100+ engineers) raised their hand when asked if they(or their teams) are struggling with PR review as their primary bottleneck. Dependencies become blockers especially when they require synchronous coordination of teams with different priorities.</p><h3>Timezone amplification</h3><p>Timezone differences exacerbate any bottleneck or friction by multiple factors. Quick clarifications don&#8217;t happen. Add a separate holiday calendar on top of this, teams lose weeks of productivity just overcoming this blocker. Because of the cross functional expectations(as mentioned earlier), even if your immediate team is co-located, they&#8217;ll still be expected to work with other teams or even customers in a different timezone.</p><p>Research shows median lead time increases 2-3x when blocking dependencies exist. Our throughput looked fine on paper. But engineers spent 20% of their time waiting.</p><h2>Blockers Are Organizational, Not Technical</h2><p>The breakthrough came during a sprint retro.</p><blockquote><p>We&#8217;re not blocked by technology. We&#8217;re blocked by how we organize work.</p></blockquote><p>Three insights emerged from our discussions during sprint retros and AI adoption discussions:</p><p><strong>Dependency blockers signal synchronous process</strong>. If Team A constantly waits for Team B, the scope boundary is wrong. Event-driven team architectures eliminate synchronous dependencies. Think of event-driven team architecture as similar to the widely popular <a href="https://martinfowler.com/articles/201701-event-driven.html">Event Driven Architecture</a>. Teams publish events, consumers process asynchronously.</p><p>This method is probably a reverse approach to <a href="https://en.wikipedia.org/wiki/Conway%27s_law">Conway&#8217;s Law</a>, in that we&#8217;re modelling the organizational structure based on the software architecture. This works because it&#8217;s a safe assumption that most architectures today are microservices based, even if teams are small. We&#8217;ll maybe see a new variant of Conway&#8217;s law as smaller teams start shipping more complex architectures.</p><p><strong>Approval blockers signal trust gaps</strong>. Engineering teams traditionally guard their domain because they&#8217;re accountable for the quality. e.g. DevOps teams protect infrastructure code aggressively to avoid production breakdowns. Any mature system requires these checks and balances. We don&#8217;t expect all engineers to suddenly gain subject matter expertise in areas unknown to them previously.</p><p>At the same time, walls need to come down if teams have to move fast collectively. <a href="http://localhost:1313/posts/5x-engineers-5x-teams/">Why 5x Engineers Don&#8217;t Make 5x Teams</a> explores why it&#8217;s important for systems to evolve to enable high team throughput.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8055921a-5e97-4d7e-b8cd-d1804385caff&quot;,&quot;caption&quot;:&quot;Your engineers code 5x faster with AI. Your team ships at the same pace.&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;Why 5x Engineers Don't Make 5x Teams&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:319297682,&quot;name&quot;:&quot;Devashish&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01cc416e-e24e-4b7e-8751-9b0e28a65f79_920x920.webp&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-07T18:42:05.940Z&quot;,&quot;cover_image&quot;:&quot;https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.devashish.me/p/why-5x-engineers-dont-make-5x-teams&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:178293348,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4150214,&quot;publication_name&quot;:&quot;devashish.me&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!il7B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49a9ac-77b2-4818-9cb4-76618bfea1ce_144x144.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p><strong>Information blockers signal silos</strong>. Systems don&#8217;t self-service their consumers. Most of the times, they&#8217;re also heavily gated. Figma doesn&#8217;t need to be gated only for designers. Feature flags need to be available for faster iteration. Waiting for QA to run tests or designers to generate mocks means you haven&#8217;t automated the routine stuff.</p><p>Async-first distributed teams achieve 3+ hours of uninterrupted deep work consistently. We were achieving 45 minutes.</p><h2>The Never Blocked Principle</h2><p>We established a simple rule:</p><blockquote><p>If you&#8217;re blocked for more than two hours, you&#8217;re choosing to be blocked.</p></blockquote><p>This wasn&#8217;t about blaming engineers. It was about changing how we think about blockers. Every blocker can have five responses. Each response has a tradeoff and as a manager, you want to avoid trust busting responses. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cbTP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cbTP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png 424w, https://substackcdn.com/image/fetch/$s_!cbTP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png 848w, https://substackcdn.com/image/fetch/$s_!cbTP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png 1272w, https://substackcdn.com/image/fetch/$s_!cbTP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cbTP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png" width="876" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:876,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115300,&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://www.devashish.me/i/179622786?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.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_!cbTP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png 424w, https://substackcdn.com/image/fetch/$s_!cbTP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png 848w, https://substackcdn.com/image/fetch/$s_!cbTP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.png 1272w, https://substackcdn.com/image/fetch/$s_!cbTP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4b74b98-5634-47d4-93c3-1af6a02d15e3_876x767.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">Your team&#8217;s response to blocker with a preference rank</figcaption></figure></div><p>The principle forced us to confront reality: most blockers weren&#8217;t technical constraints. They were organizational choices we could change.</p><h2>Building Self-Service Infrastructure</h2><p>We made few systematic changes to operationalize the &#8220;Never blocked&#8221; principle:</p><h3>Cultural shift</h3><p>Document every blocker pattern in retros. Track them like bugs. Fix them systemically by adopting ai tools and augmenting our processes. The team owns their velocity. For example, the team consistently needed multiple reviews every time they had a dependency on the SRE team. Solution was to codify all the practices of SRE team and use persona-driven code reviews (<a href="https://www.devashish.me/p/ai-adoption-framework-phase-1-minimalist?r=5a3no2">AI Adoption Framework</a>) before sending the PR. This eliminated most of the tactical feedback and also solidified the event driven team architecture.</p><h3>Process redesign</h3><p>Eliminated cross-team approval gates for routine changes. Built a decision framework: delegate authority for reversible decisions under $10K impact. Everything else escalates with clear SLAs. We recently removed 2 mandatory human reviewers on each PR to one human and one automated review tool. This can be improved further. Let&#8217;s try this: Each PR immediately triggers an automation pipeline to assign a risk/criticality rating to the PR. The team owning the code defines the rating criteria. If the risk rating is &lt;=5, the mandatory human reviewer can be anyone from the team sending the PR.</p><h3>Automation investment</h3><p>After identifying specific day to day blockers, we addressed them by category with each requiring different solutions:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!II31!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!II31!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png 424w, https://substackcdn.com/image/fetch/$s_!II31!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png 848w, https://substackcdn.com/image/fetch/$s_!II31!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!II31!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!II31!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png" width="1145" height="1046" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1046,&quot;width&quot;:1145,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:183902,&quot;alt&quot;:&quot;(Diagram showing: Dependency blockers &#8594; Event-driven architecture, Approval blockers &#8594; Automated validation + Trust framework, Information blockers &#8594; Self-service tooling)&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://www.devashish.me/i/179622786?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="(Diagram showing: Dependency blockers &#8594; Event-driven architecture, Approval blockers &#8594; Automated validation + Trust framework, Information blockers &#8594; Self-service tooling)" title="(Diagram showing: Dependency blockers &#8594; Event-driven architecture, Approval blockers &#8594; Automated validation + Trust framework, Information blockers &#8594; Self-service tooling)" srcset="https://substackcdn.com/image/fetch/$s_!II31!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png 424w, https://substackcdn.com/image/fetch/$s_!II31!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png 848w, https://substackcdn.com/image/fetch/$s_!II31!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!II31!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca134b7-6c33-470d-9446-096417fb3e6a_1145x1046.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><h4><strong>Dependency Blockers</strong> </h4><p>Waiting for other teams&#8217; APIs, services, or approvals:</p><ul><li><p>Event-driven team architecture eliminated synchronous dependencies</p></li><li><p>API contract definitions in shared repos - teams develop against contracts, not implementations</p></li><li><p>No timezone coordination required for routine work</p></li><li><p>Teams auto update their external contracts as they (or their agents) write code</p></li></ul><h4><strong>Knowledge Blockers</strong> </h4><p>Waiting to understand legacy code, architecture decisions, or domain context:</p><ul><li><p>AI-powered codebase exploration tools reduce &#8220;Who wrote this?&#8221; questions</p></li><li><p>Architecture documentation auto-generated from code structure</p></li><li><p>Historical decision context retrievable without tribal knowledge</p></li><li><p>Eliminated &#8220;Dave wrote this 6 months ago&#8221; bottleneck</p></li></ul><h4><strong>Validation Blockers</strong></h4><p>Waiting for QA cycles, staging environments, or production access:</p><ul><li><p><strong>Sitemap Navigator</strong> knows entire website structure for automated testing</p></li><li><p>Uses bug information to automatically repro and test fixes</p></li><li><p>What took QA a day takes CI pipeline 15 minutes</p></li><li><p>Automated rollback detection and staging environment management</p></li><li><p>From months to weeks turnaround for deployments</p></li></ul><h4><strong>Design Blockers</strong> </h4><p>Waiting for mockups, design reviews, or visual specs:</p><ul><li><p>Built a <strong>UI Agent</strong> that generates pixel-perfect component mocks matching our design system</p></li><li><p>Designer creates the system once. Engineers self-serve implementation mocks</p></li><li><p>No waiting. No approximations. Mock matches production design</p></li><li><p>Applied to vehicle deployment UI before designs ready - development continued without blocking</p></li></ul><h2>Measured Results</h2><p>Sprint predictability improved from 60% to 85% completion rate. Idle time, which we tracked in retros as &#8220;hours waiting for unblock&#8221;, dropped from 12 hours per engineer per sprint to under 8.</p><p>Most importantly: cultural shift. Engineers now own their velocity. When blocked, they don&#8217;t wait - they escalate or solve. 80%+ of potential blockers self-resolve without manager intervention.</p><p>The before-after is stark:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cyIh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cyIh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png 424w, https://substackcdn.com/image/fetch/$s_!cyIh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png 848w, https://substackcdn.com/image/fetch/$s_!cyIh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png 1272w, https://substackcdn.com/image/fetch/$s_!cyIh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cyIh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png" width="1000" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88825,&quot;alt&quot;:&quot;(Diagram comparing: Blocked flow with multiple wait states vs. Self-service flow with parallel work and autonomous unblocking)&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://www.devashish.me/i/179622786?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="(Diagram comparing: Blocked flow with multiple wait states vs. Self-service flow with parallel work and autonomous unblocking)" title="(Diagram comparing: Blocked flow with multiple wait states vs. Self-service flow with parallel work and autonomous unblocking)" srcset="https://substackcdn.com/image/fetch/$s_!cyIh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png 424w, https://substackcdn.com/image/fetch/$s_!cyIh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png 848w, https://substackcdn.com/image/fetch/$s_!cyIh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.png 1272w, https://substackcdn.com/image/fetch/$s_!cyIh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cbff40-219a-4507-95fd-b854b7ad4932_1000x804.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></p><h2>What You Can Do Now</h2><p><strong>Week 1</strong>: Measure your team&#8217;s blocked time. Track every instance where work stopped waiting for something. Categorize by type:</p><ul><li><p><strong>Dependency blockers</strong>: Waiting for other teams&#8217; APIs, approvals, or services</p></li><li><p><strong>Knowledge blockers</strong>: Waiting to understand code, decisions, or domain context</p></li><li><p><strong>Validation blockers</strong>: Waiting for QA cycles, environments, or production access</p></li><li><p><strong>Design blockers</strong>: Waiting for mockups, specs, or visual assets?</p><p></p></li></ul><p><strong>Week 2-3</strong>: Pick your top blocker category. Design a self-service solution:</p><ul><li><p>Dependency blockers &#8594; Event-driven team architecture, contract definitions</p></li><li><p>Knowledge blockers &#8594; Documentation automation + AI code exploration</p></li><li><p>Validation blockers &#8594; CI/CD automation + environment self-service</p></li><li><p>Design blockers &#8594; Component libraries + automated mock generation</p><p></p></li></ul><p><strong>Week 4</strong>: Establish the &#8220;never blocked&#8221; operating principle. Two-hour rule. Document and fix systemically.</p><p>For distributed teams specifically: identify the most common timezone-blocked interaction. Build async infrastructure like documentation, automation so teams don&#8217;t need synchronous coordination for routine work.</p><p>The goal isn&#8217;t zero blockers. The goal is zero blockers you haven&#8217;t systematically addressed.</p><div><hr></div><p>If you&#8217;re navigating distributed team challenges or have creative unblocking strategies that worked for your team, I&#8217;d love to hear your approach. Reach out to continue the conversation.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI Adoption Framework: Phase 1, Minimalist ]]></title><description><![CDATA[Navigating the Gartner hype cycle in individual AI adoption and building agent-enabled codebases]]></description><link>https://www.devashish.me/p/ai-adoption-framework-phase-1-minimalist</link><guid isPermaLink="false">https://www.devashish.me/p/ai-adoption-framework-phase-1-minimalist</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Thu, 13 Nov 2025 22:23:22 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3630" height="5456" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:5456,&quot;width&quot;:3630,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;yellow and green computer keyboard&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="yellow and green computer keyboard" title="yellow and green computer keyboard" srcset="https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1601952899827-3db57e7943f7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxjdXN0b218ZW58MHx8fHwxNzYzMDcyMDU2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@girlwithredhat">Girl with red hat</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>In my <a href="https://www.devashish.me/p/ai-adoption-framework">previous post</a>, I introduced a three-phase framework for AI adoption for engineering teams. This post focuses on individual adoption, where engineers augment existing workflows with AI tools. It also explores the reality of this phase through the lens of the Gartner hype cycle and introduces <strong>agent-enabled codebases</strong> as a concept.</p><h2>Understanding the Gartner Hype Cycle</h2><p>The <a href="https://en.wikipedia.org/wiki/Gartner_hype_cycle">Gartner Hype Cycle</a> is a graphical representation of the maturity, adoption, and social application of emerging technologies. It describes five key phases that new technologies typically experience: Innovation Trigger, Peak of Inflated Expectations, Trough of Disillusionment, Slope of Enlightenment, and Plateau of Productivity.</p><p>For AI coding tools, this cycle plays out in a compressed timeframe of weeks instead of years. Understanding where you are in this cycle is critical for managing expectations and navigating the adoption process effectively.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sNkM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sNkM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 424w, https://substackcdn.com/image/fetch/$s_!sNkM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 848w, https://substackcdn.com/image/fetch/$s_!sNkM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 1272w, https://substackcdn.com/image/fetch/$s_!sNkM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sNkM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png" width="1456" height="1001" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1001,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:384310,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devashish.me/i/178833206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.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_!sNkM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 424w, https://substackcdn.com/image/fetch/$s_!sNkM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 848w, https://substackcdn.com/image/fetch/$s_!sNkM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 1272w, https://substackcdn.com/image/fetch/$s_!sNkM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e28a70b-5eb9-4bd0-9a0d-b6b555281aed_2500x1718.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Engineering Reality</h2><p>Most engineering teams follow predictable stages when adopting new technologies and tools which can be mapped to the Gartner Hype cycle with a high degree of accuracy. I&#8217;ll try to map this specifically for the adoption of AI tools. By this time, there&#8217;s already a mandate to be &#8220;AI First&#8221; for the entire organization and engineering teams are expected to lead the way on this.</p><h3><strong>Peak of Inflated Expectations (Week 1-2)</strong></h3><p>Engineers discover Claude Code, Cursor, or similar tools. They find examples on Reddit and GitHub showing miraculous productivity gains. They start using these tools exactly like they use Claude UI or ChatGPT: short, transactional interactions without leveraging agentic features or customizations. &#8220;Write me a function that does X.&#8221; The tool complies. &#8220;What does this project do?&#8221; Get a good summary to populate <code>CLAUDE.md</code>. &#8220;Write tests for this file/function.&#8221; Done while you get your coffee. Initial wins feel transformative. Engineers look forward to <em>finally</em> working on real problems rather than writing documentation, integration suites or good commit messages.</p><h3><strong>Trough of Disillusionment (Week 4-8)</strong></h3><p>The promised future remains elusive. Initial euphoria is replaced by a wide array of annoying problems. The PRs are now much longer than earlier and the sheer volume has gone up, thanks to all the vibe coded features. As much as tools like Coderabbit, Cursor Bugbot, Copilot help you out, it&#8217;s your responsibility to click the big green merge button. Which means you still need to go through the wall of text which leaves less time for solving the real problems you thought you would. Even when you do work on your tasks, Claude Code keeps <code>compacting</code> without finishing up a simple bug fix. In the not-so-deep corner of your heart, you know it would&#8217;ve taken you an hour to fix. You start searching for queries like &#8220;How to use Claude Code with large codebases&#8221; to make it suck less. Teams need an average of <strong>11 weeks</strong> to fully realize AI tool benefits. A <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR study</a> found developers actually became <strong>19% slower</strong> when using AI tools poorly. The promise breaks.</p><h3><strong>Slope of Enlightenment (The Breakthrough)</strong></h3><p>In spite of the chaos, a few team members gain speed. They&#8217;re doing <em>something</em> differently.</p><p>Turns out, they&#8217;ve consistently adapted the tool to work <em>for</em> them instead of changing their behavior. They&#8217;ve found the path where they augment their strengths while carefully managing quality and velocity expectations.</p><p>You decide to roll up your sleeves. Engineers stop blaming the tools and start adapting their approach. The problem isn&#8217;t the tool&#8217;s capability&#8212;it&#8217;s how they&#8217;re using it and structuring their work.</p><p>The breakthrough comes from two shifts: building personalized context and creating agent-enabled codebases.</p><h2>Symptoms: Are You Stuck in the Trough?</h2><p>In addition to the examples I&#8217;ve provided, here are a few more symptoms of engineers being stuck in this stage:</p><ul><li><p>AI generates code that doesn&#8217;t follow your team&#8217;s patterns or standards</p></li><li><p>You repeat the same context in every conversation</p></li><li><p>The tool suggests solutions that ignore existing architecture decisions</p></li><li><p>Context windows fill up before completing meaningful work. Frequent <code>compacting</code>.</p></li><li><p>You blame the tool: &#8220;It can&#8217;t handle my codebase&#8217;s complexity&#8221;</p></li><li><p>Your 100k LOC repo overwhelms the AI, producing generic or wrong answers</p></li></ul><p>These symptoms indicate you&#8217;ve addressed surface-level automation but haven&#8217;t structured your workflow for sustained AI collaboration. With a massive monorepo, our engineers faced issues related to context window, enforcing standards, and not using the right models for the tasks.</p><h2>The Critical Breakthrough: Agent-Enabled Codebases</h2><p>Here&#8217;s the insight most engineers and teams miss: <strong>Your codebase wasn&#8217;t designed for agents to work with it.</strong></p><p>Traditional codebases optimize for human developers. Humans navigate complexity through accumulated knowledge, tribal wisdom, and informal documentation. They understand implicit context. Agents don&#8217;t have this luxury. They need explicit structure, clear boundaries, and logical decomposition.</p><p>An <strong>agent-enabled codebase</strong> is structured so both humans and agents can work effectively, with the explicit goal of letting agents handle most routine work. This doesn&#8217;t mean rewriting everything. It means restructuring how information is organized and accessed.</p><p>You might think: &#8220;We can&#8217;t refactor our codebase just for AI tools.&#8221; You&#8217;re right but you&#8217;re already refactoring for human onboarding, for testing, for deployment. Agent-enablement isn&#8217;t a new goal. It&#8217;s a forcing function for engineering practices you&#8217;ve deferred.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JhRj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JhRj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png 424w, https://substackcdn.com/image/fetch/$s_!JhRj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png 848w, https://substackcdn.com/image/fetch/$s_!JhRj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png 1272w, https://substackcdn.com/image/fetch/$s_!JhRj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JhRj!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png" width="1200" height="569.5054945054945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png&quot;,&quot;srcNoWatermark&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9541d0c-d67b-49f1-bdec-e58f84ecb291_1910x906.png&quot;,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:691,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:140363,&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://www.devashish.me/i/178833206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9541d0c-d67b-49f1-bdec-e58f84ecb291_1910x906.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!JhRj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png 424w, https://substackcdn.com/image/fetch/$s_!JhRj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png 848w, https://substackcdn.com/image/fetch/$s_!JhRj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.png 1272w, https://substackcdn.com/image/fetch/$s_!JhRj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edc2918-bb36-4358-ac5f-4c46264bd164_1910x906.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>What Makes a Codebase Agent-Enabled?</h3><p><strong>Logical Component Boundaries</strong>: Break your monolith into well-defined modules. Not for microservices, but for comprehension. This is true for microservices as well. The objective of this is create agent understandable boundaries that provide guardrails for them. Each component should have:</p><ul><li><p>Clear responsibility</p></li><li><p>Explicit, documented dependencies</p></li><li><p>Self-contained context that fits in a single AI conversation</p></li></ul><p><strong>Context Proximity</strong>: Place relevant context near the code. Document architectural decisions in the module they affect, not in a separate wiki. Agents work best when context and code live together. Use <code>CLAUDE.md</code> to document code decisions, high level architecture, communication interfaces and quality gates.</p><p><strong>Standardized Patterns</strong>: Codify your standards explicitly. Don&#8217;t rely on &#8220;everyone knows we do X.&#8221; An agent doesn&#8217;t know until you document it. API standards, error handling patterns, testing approaches&#8212;make them discoverable. Again, document these in a project wide memory or local memory. As long as this is part of all decisions, you&#8217;ll get better responses.</p><p><strong>Progressive Disclosure</strong>: Structure information hierarchically. High-level architecture at the root, implementation details in subdirectories. Agents can navigate from general to specific without loading your entire codebase. Create a dependency graph by referencing modules in <code>CLAUDE.md</code> file. Engineers already know how this dependency graph is built, it&#8217;s just not documented anywhere for the agents to use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!85rb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!85rb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png 424w, https://substackcdn.com/image/fetch/$s_!85rb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png 848w, https://substackcdn.com/image/fetch/$s_!85rb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png 1272w, https://substackcdn.com/image/fetch/$s_!85rb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!85rb!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png" width="1200" height="569.5054945054945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:691,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:141806,&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://www.devashish.me/i/178833206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!85rb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png 424w, https://substackcdn.com/image/fetch/$s_!85rb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png 848w, https://substackcdn.com/image/fetch/$s_!85rb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.png 1272w, https://substackcdn.com/image/fetch/$s_!85rb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3b4955-33b7-4953-b1b7-fd4032540fc1_1910x906.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>An example of what we did: Our API development standards are in Confluence. Claude Code won&#8217;t know they exist. The solution: We installed Atlassian MCP server and create a <code>CLAUDE.md</code> file that references these standards for all API-related work. Now the agent follows org guidelines automatically.</p><p>Or take a complex project with multiple domains. Instead of one massive <code>CLAUDE.md</code>, create <code>CLAUDE_AWS.md</code> for cloud configurations, <code>CLAUDE_TESTING.md</code> for testing strategies, <code>CLAUDE_API.md</code> for API patterns. Each provides focused context for specific work.</p><h2>Building Personal Context and Memory</h2><p>While restructuring your codebase, build personalized memory in parallel:</p><ul><li><p><strong>Bootstrap with </strong><code>/init</code>: Use Claude Code to generate initial CLAUDE.md, then refine</p></li><li><p><strong>Be specific</strong>: &#8220;Use 2-space indentation&#8221; beats &#8220;Format code properly&#8221;</p></li><li><p><strong>Domain-specific files</strong>: <code>CLAUDE_TESTING.md</code>, <code>CLAUDE_SECURITY.md,</code> <code>CLAUDE_DEPLOYMENT.md</code></p></li></ul><h2>Success Metrics</h2><p>Since all the investment and effort in AI coding tools need to be quantified, here are a few metrics that you can use to track the impact. My recommendation is to start with one or two metrics and track more only if needed.</p><ul><li><p>Sprint velocity increases measurably</p></li><li><p>Lines of code per engineer trends upward</p></li><li><p>PR quality improves (fewer review cycles)</p></li><li><p>Context reuse increases (less repetition)</p></li></ul><p>Teams need 11 weeks to fully realize benefits&#8212;research confirms this timeline. Don&#8217;t expect overnight transformation. Plan for gradual adoption with ongoing support.</p><h2>Takeaways for Individual Contributors</h2><ul><li><p><strong>Personalize, don&#8217;t copy</strong>: Reddit examples won&#8217;t work for your codebase. Build YOUR workflow. Give rich and accurate context to your global and project level memory files. </p></li><li><p><strong>Structure for agents</strong>: Break down complexity into logical components agents can understand.</p></li><li><p><strong>Build explicit memory</strong>: Document standards, patterns, and decisions where agents can find them. </p></li><li><p><strong>Use advanced features</strong>: Move beyond autocomplete to multi-file orchestration and context management.</p></li><li><p><strong>Measure progress</strong>: Track time saved, quality improvements, and context reuse. Break tasks into smaller chunks that can be completed within a single context.</p></li></ul><h2>Takeaways for Leaders</h2><ul><li><p><strong>Set expectations</strong>: 11 weeks to full value realization. Provide patience and support.</p></li><li><p><strong>Enable experimentation</strong>: Give engineers time to learn, fail, and refine their approaches.</p></li><li><p><strong>Focus on structure</strong>: Help teams create agent-enabled codebases, not just tool adoption.</p></li><li><p><strong>Share this framework</strong>: Guide ICs through the hype cycle with concrete examples.</p></li><li><p><strong>Measure team-wide</strong>: Track sprint velocity, PR quality, and cross-team consistency as leading indicators.</p></li></ul><h2>Next Steps</h2><p>When 80% of your engineers consistently save 10-20% time daily and sprint velocity shows sustained improvement, you&#8217;re ready for Phase 2: Collaborative. Individual gains transform into team-wide efficiency through codified expertise. That&#8217;s where the real compounding begins.</p><div><hr></div><p>Navigating AI adoption challenges or building agent-enabled codebases? I&#8217;m happy to discuss strategies or share what&#8217;s worked for my teams. Also available for talks on AI adoption frameworks for engineering organizations.</p>]]></content:encoded></item><item><title><![CDATA[Why 5x Engineers Don't Make 5x Teams]]></title><description><![CDATA[AI makes individual contributors 5x faster. But teams stay slow. The bottleneck is planning, reviews, and allocation. Here's how Claude Code plugins cut management overhead by automating coordination.]]></description><link>https://www.devashish.me/p/why-5x-engineers-dont-make-5x-teams</link><guid isPermaLink="false">https://www.devashish.me/p/why-5x-engineers-dont-make-5x-teams</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Fri, 07 Nov 2025 18:42:05 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5422" height="3615" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3615,&quot;width&quot;:5422,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;text&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="text" title="text" srcset="https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1617944420203-dd788f2072bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NHx8Ym90dGxlbmVja3xlbnwwfHx8fDE3NjI1Mzk0NDZ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@introspectivedsgn">Erik Mclean</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Your engineers code 5x faster with AI. Your team ships at the same pace.</p><p>The problem isn&#8217;t productivity. It&#8217;s systems thinking.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A system&#8217;s throughput depends on its bottleneck. If ICs write code faster but code reviews take a week, the team is slow. If stories ship quickly but requirements are unclear, the team wastes time. If individual velocity is high but work distribution is uneven, the team burns out or misses targets.</p><p>We increased engineering speed by 10%, reduced PR review time by 20%, and stabilized sprint throughput, while cutting management overhead in half. This not only made the team happy but freed me to focus on strategic work and write blogs like this.</p><p>The lever: <a href="https://claude.com/blog/claude-code-plugins">Claude Code plugins</a> that automate the coordination layer between fast ICs.</p><h2>The Three Bottlenecks</h2><p>Like all engineering teams quickly ramping on AI, my teams adopted coding tools to boost productivity. Looking at data few months later, we noticed that the engineers did end up writing more code but the organization&#8217;s delivery speed didn&#8217;t improve much. We identified three main bottlenecks:</p><p><strong>Planning</strong>: Unclear requirements cause back-and-forth. Engineers build the wrong thing. Managers spend hours clarifying in Slack or meetings.</p><p><strong>Reviews</strong>: Slow feedback cycles block PRs. Human reviewers focus on tactical issues instead of architecture. Knowledge stays siloed.</p><p><strong>Allocation</strong>: Poor workload distribution creates overload or idle time. Without data, managers react too late.</p><p>These aren&#8217;t engineering problems. They&#8217;re coordination problems. AI makes engineers faster, but coordination still runs at human speed. As a manger, I needed to automate these bottlenecks to match the new engineering speed and leadership expectations. </p><p>I started playing around with Claude Code plugins to create a framework that addresses each bottleneck. I have been using Claude Code extensively for my coding tasks but I&#8217;ve only recently started using this to manage my teams. MCPs(atlassian, github, slack, aws, chrome-devools etc) and tools give it superpowers to work with both business and engineering context.</p><h2>Plugin 1: Planner</h2><p><strong>Problem</strong>: Engineers asked clarifying questions on 60% of stories. Bugs lacked reproduction steps. I spent 10 hours per sprint answering &#8220;what does done look like?&#8221;</p><p><strong>Solution</strong>: Template driven task creation</p><p>The plugin enforces structure and standardization before tickets are created. Stories require:</p><ul><li><p>Clear summary: <code>[Component] - [Action]</code></p></li><li><p>Context: Why this work matters. What&#8217;s the user impact? What part of a feature does this enable?</p></li><li><p>Scope: What&#8217;s included, what&#8217;s not</p></li><li><p>Acceptance Criteria: Specific, testable conditions. This what a Product Manager or QA would use to validate completion.</p></li><li><p>Definition of Done: Tests, docs, deployment checklist. Think of this as engineering sign-off criteria.</p></li></ul><p>Bugs require:</p><ul><li><p>Steps to reproduce: Useful for both the QA teams and agents to validate</p></li><li><p>Expected vs actual behavior: Helps agent to use TDD</p></li><li><p>Environment details</p></li><li><p>Severity with response time</p></li><li><p>Bug reports or any other attachments</p></li></ul><p><strong>Impact</strong>:</p><ul><li><p>50% reduction in bug clarification time</p></li><li><p>30% reduction in story refinement time</p></li><li><p>10% increase in engineering speed</p></li></ul><p>When requirements are clear, coding agents get better instructions. They validate solutions against explicit criteria. Token usage drops because agents don&#8217;t retry wrong approaches. Engineers spin up multiple agents in parallel because each has clear outcomes.</p><p><strong>Example Template</strong> (Story):</p><pre><code><code>Context: Why is this needed?
Scope:
  - Included: API endpoint, validation, audit logging
  - Not included: UI changes (separate story)
Acceptance Criteria:
  - [ ] POST /api/certificates/rotate endpoint
  - [ ] Validates device ownership
  - [ ] Returns job ID for tracking
  - [ ] Unit tests &gt;90% coverage
Definition of Done:
  - All acceptance criteria met
  - Code reviewed
  - Deployed to staging
  - Documentation updated
</code></code></pre><p>No meetings needed. No Slack threads. The template forces clarity.</p><h2>Plugin 2: Reviewer</h2><p><strong>Problem</strong>: PR reviews took 2+ days. Reviewers focused on tactical issues (missing tests, style violations) instead of architectural problems. Specialist knowledge stayed siloed. Experts were the bottleneck and if they didn&#8217;t pay attention, critical issues slipped through. With PR volume increasing, this was unsustainable.</p><p><strong>Solution</strong>: Persona-driven development.</p><p>I cloned my team&#8217;s specializations as review agents:</p><ul><li><p><strong>Ethan</strong> (DevOps): Infrastructure, CI/CD, resource limits, deployment</p></li><li><p><strong>John</strong> (Backend): APIs, data models, testing, performance</p></li><li><p><strong>James</strong> (Frontend): UI/UX, React patterns, accessibility</p></li></ul><p>Engineers run reviews locally <strong>BEFORE</strong> submitting PRs on their local systems. Agents provide specialist feedback instantly. Human reviewers focus on architecture and design decisions.</p><p><strong>Impact</strong>:</p><ul><li><p>20% reduction in PR review cycle time</p></li><li><p>Democratized team knowledge&#8212;anyone gets specialist reviews without waiting</p></li><li><p>Critical issues caught before PR submission</p></li></ul><p><strong>Some Examples</strong>:</p><p><em>API Change Review</em>:</p><ul><li><p><strong>James</strong> (Frontend): &#8220;This API change is missing corresponding UI updates in the device management screen.&#8221;</p></li><li><p><strong>John</strong> (Backend): &#8220;Add integration test in Android code&#8212;devices call this endpoint during enrollment.&#8221;</p></li></ul><p><em>Infrastructure Review</em>:</p><ul><li><p><strong>Ethan</strong> (DevOps): &#8220;Pod resource limits too low. This service handles certificate rotation&#8212;similar services use 2GB memory, 1 CPU. Current config: 512MB, 0.5 CPU. Will OOM under load.&#8221;</p></li></ul><p>One API change, three specialist perspectives, zero wait time. </p><p>This method is equally effective in reviewing technical documentation and proposals. For technical reviews we load more personas belonging to different teams and methods like this: </p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:175550923,&quot;url&quot;:&quot;https://www.devashish.me/p/the-linus-method&quot;,&quot;publication_id&quot;:4150214,&quot;publication_name&quot;:&quot;devashish.me&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!il7B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49a9ac-77b2-4818-9cb4-76618bfea1ce_144x144.png&quot;,&quot;title&quot;:&quot;The Linus Method&quot;,&quot;truncated_body_text&quot;:&quot;Our team&#8217;s RFC reviews were broken. Claude Code would cheerfully approve architectural proposals with &#8220;This looks good! Maybe consider adding caching for performance.&#8221; or &#8220;You&#8217;re absolutely right! This is an excellent way of solving the problem&#8221;. Meanwhile, we were building distributed monoliths and accumulating technical d&#8230;&quot;,&quot;date&quot;:&quot;2025-10-07T18:22:38.034Z&quot;,&quot;like_count&quot;:1,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:319297682,&quot;name&quot;:&quot;Devashish&quot;,&quot;handle&quot;:&quot;ric03uec&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01cc416e-e24e-4b7e-8751-9b0e28a65f79_920x920.webp&quot;,&quot;bio&quot;:null,&quot;profile_set_up_at&quot;:&quot;2025-02-18T16:13:25.877Z&quot;,&quot;reader_installed_at&quot;:&quot;2025-08-31T21:50:03.661Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:4232557,&quot;user_id&quot;:319297682,&quot;publication_id&quot;:4150214,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:4150214,&quot;name&quot;:&quot;devashish.me&quot;,&quot;subdomain&quot;:&quot;ric03uec&quot;,&quot;custom_domain&quot;:&quot;www.devashish.me&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Building opinionated tech&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a49a9ac-77b2-4818-9cb4-76618bfea1ce_144x144.png&quot;,&quot;author_id&quot;:319297682,&quot;primary_user_id&quot;:319297682,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-02-18T16:13:31.293Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Devashish Meena&quot;,&quot;founding_plan_name&quot;:null,&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;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;paidPublicationIds&quot;:[],&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://www.devashish.me/p/the-linus-method?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_!il7B!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49a9ac-77b2-4818-9cb4-76618bfea1ce_144x144.png" loading="lazy"><span class="embedded-post-publication-name">devashish.me</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Linus Method</div></div><div class="embedded-post-body">Our team&#8217;s RFC reviews were broken. Claude Code would cheerfully approve architectural proposals with &#8220;This looks good! Maybe consider adding caching for performance.&#8221; or &#8220;You&#8217;re absolutely right! This is an excellent way of solving the problem&#8221;. Meanwhile, we were building distributed monoliths and accumulating technical d&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">7 months ago &#183; 1 like &#183; Devashish</div></a></div><p>Using this plugin, we democratized team knowledge by letting any engineer get specialist reviews without waiting for the expert to be available. Owners of each persona are expected to periodically update their agent&#8217;s knowledge with new patterns which improves review quality over time.</p><h2>Plugin 3: Manager</h2><p><strong>Problem</strong>: Work distribution was invisible until retrospectives. Some engineers overloaded, others underutilized. I discovered allocation problems too late to fix them. Constant need to provide status updates  distracted me from strategic work.</p><p><strong>Solution</strong>: Data driven sprint reports with corrective actions.</p><p>The plugin generates three reports:</p><ul><li><p><code>/sprint-report</code>: Velocity, work type distribution, blockers</p></li><li><p><code>/team-status</code>: Individual workload and capacity utilization</p></li><li><p><code>/analyze-retrospective</code>: Pattern detection across sprints</p></li></ul><p><strong>Impact</strong>:</p><ul><li><p>Work type stabilized and aligned with org targets e.g. 50% product, 20% KTLO, 30% tech debt</p></li><li><p>Improved throughput from better allocation. Since engineers weren&#8217;t overloaded, they finished work faster. Experts focused on high-impact tasks.</p></li><li><p>Reduced burnout through early intervention and balanced workload.</p></li></ul><p><strong>Example</strong> (Sprint 100):</p><p>Mid-sprint report flagged:</p><ul><li><p><strong>John</strong>: 22 points assigned (110% capacity) &#9888;&#65039; Overloaded</p></li><li><p><strong>Sarah</strong>: 15 points assigned (75% capacity) &#9888;&#65039; Underutilized</p></li></ul><p><strong>Action</strong>: Redistributed 5 points from John to Sarah based on skillset match and current workload. <strong>Outcome</strong>: Both completed their work without stress. Sprint velocity: 85% (up from 60% baseline).</p><p>The report runs in 30 seconds. No manual tracking. No spreadsheets. Just data. This is part of my daily routine now. It also reduced the need for constant status updates, reducing context switching for the team and me.</p><h2>Compounding Benefits</h2><p>The most important part of this approach is the compounding benefits of all of these improvements working together. They not only solve individual bottlenecks but amplify each other.</p><p><strong>Clear stories</strong> &#8594; Agents work faster &#8594; Better validation &#8594; Lower token costs &#8594; More parallel agents</p><p><strong>Better reviews</strong> &#8594; Faster PRs &#8594; Higher throughput &#8594; More knowledge sharing &#8594; Stronger team patterns</p><p><strong>Data-driven allocation</strong> &#8594; Balanced workload &#8594; Reduced burnout &#8594; Sustained velocity &#8594; Predictable delivery</p><p>Week 1: Fewer Slack questions. Month 1: PRs merge faster because stories were clear from the start. Month 3: Agents learn codebase patterns from accumulated reviews. Quality improves.</p><h2>Plugin Architecture: Start With Your Workflow</h2><p>There&#8217;s no one-size-fits-all approach of configuration here. In this post I&#8217;m sharing my patterns and setup but every team is different. The hardest part is understanding your workflow and bottlenecks. Before configuring anything, map your as-is workflow. Document it. Identify your biggest bottleneck. If you&#8217;re a manager, you likely already know where the pain points are, so that&#8217;s a good place to start.</p><p>Quick Github search will show multiple plugins and marketplaces (like this: <a href="https://github.com/wshobson/agents/tree/main/plugins">https://github.com/wshobson/agents/tree/main/plugins</a>) . </p><p>I highly recommend NOT copy-pasting them blindly. That&#8217;s a recipe for frustration since these will not solve your team&#8217;s unique problems. Instead, use them to learn how to write your own plugins. I use these as resources and merge these with my team&#8217;s unique setup, processes and problems to create custom plugins. </p><p>We also allocate dedicated time in each sprint to review existing plugins and update them based on our experience so far. This keeps the team engaged and invested. At the end of the day, this process helps them deliver more code faster.</p><p>Each plugin follows this structure:</p><pre><code><code>plugin-name/
&#9500;&#9472;&#9472; agents/          # Specialized reviewers or task handlers
&#9500;&#9472;&#9472; commands/        # Slash commands for quick actions
&#9492;&#9472;&#9472; templates/       # Reusable workflows and formats
</code></code></pre><p>Customization is iterative. I spent two weeks understanding these patterns and configuring for my team. You&#8217;ll adapt based on your problems. There&#8217;s no universal &#8220;required&#8221; configuration&#8212;only what solves your bottleneck.</p><h2>Getting Started</h2><ol><li><p><strong>Map your workflow</strong>: Document your current process. Where do you spend time? Where do engineers get blocked?</p></li><li><p><strong>Identify your bottleneck</strong>: Planning chaos? Slow reviews? Allocation blindness? Start with the most painful one.</p></li><li><p><strong>Configure one plugin</strong>: Don&#8217;t tackle all three. Pick the bottleneck. Configure. Measure.</p></li><li><p><strong>Iterate</strong>: Add capabilities as you learn. Refine templates. Adjust personas. Expand coverage.</p></li></ol><p>Configuration takes time. I spent two weeks. Your timeline will vary based on your process and team composition. But the ROI compounds.</p><h2>The Reality</h2><p>This process isn&#8217;t about working less. It&#8217;s about eliminating coordination overhead so managers can focus on what matters: strategy, mentorship, unblocking, culture.</p><p>Your team doesn&#8217;t need you copy-pasting status updates. They need you removing bottlenecks.</p><p>AI makes ICs faster. But teams need better processes to convert individual productivity into team throughput. These three plugins automate the coordination layer - planning, reviews, allocation - so your fast engineers become a fast team.</p><p>Choose your bottleneck. Configure the plugin. Measure the impact.</p><p></p><p><em>**Working through similar team coordination challenges? I&#8217;m happy to brainstorm solutions or share what&#8217;s worked. Also available for talks on AI-powered engineering management.**</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Understanding Claude Code Components: A Practical Guide]]></title><description><![CDATA[Using only slash commands? You're automating 20% of what Claude Code handles. Most engineers can't explain when to use Agents vs Tools vs Skills. This practical guide helps eliminate the confusion.]]></description><link>https://www.devashish.me/p/understanding-claude-code-components</link><guid isPermaLink="false">https://www.devashish.me/p/understanding-claude-code-components</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Fri, 24 Oct 2025 18:12:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CGEA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most developers use Claude Code like a chat interface. They type questions, get answers, copy-paste code. They&#8217;re missing the agentic features that optimize entire development workflows.</p><p>The confusion is real: When do you use Commands versus Agents? What&#8217;s the difference between Tools and Skills? Why bother with Plugins?</p><p>I&#8217;ll show you the workflow that my team uses. I&#8217;ll use an example of making a change to an golang HTTP service and the process we follow that maximizes Claude Code&#8217;s automation. But first, this high level diagram should help clarify which components do what in Claude Code: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CGEA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CGEA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png 424w, https://substackcdn.com/image/fetch/$s_!CGEA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png 848w, https://substackcdn.com/image/fetch/$s_!CGEA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png 1272w, https://substackcdn.com/image/fetch/$s_!CGEA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CGEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png" width="931" height="1253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1253,&quot;width&quot;:931,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:317373,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devashish.me/i/177031427?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55180c20-9f4d-4bfe-90d3-9a3546f72982_943x1258.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_!CGEA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png 424w, https://substackcdn.com/image/fetch/$s_!CGEA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png 848w, https://substackcdn.com/image/fetch/$s_!CGEA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.png 1272w, https://substackcdn.com/image/fetch/$s_!CGEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e0cc95-d0e0-4f65-9b99-84a3881e780c_931x1253.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>So how do these pieces fit together in a real workflow?</p><h2>Workflow Example: Adding Pagination to an API Endpoint</h2><h3>Planning Phase: Define Before You Code</h3><p>We start with <code>/define-task &lt;jira-id&gt;</code>. This command updates the Jira ticket with a detailed description and definition of done. No context switching to your browser. For this specific task, the command uses the Jira MCP to pull in existing ticket details, then asks clarifying questions to get a crisp Definition of Done. More clarity in this step means less rework later.</p><p>Next, we run <code>/plan-task</code> or simply <code>plan task &lt;jira-id&gt;</code> prompt. This invokes the code-planning agent, which applies the Linus method to break down implementation into discrete steps. Each step gets a starting point, execution details and exit criteria.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;7be2424f-effe-42fd-a1a8-77d4b4011202&quot;,&quot;caption&quot;:&quot;Our team&#8217;s RFC reviews were broken. Claude Code would cheerfully approve architectural proposals with &#8220;This looks good! Maybe consider adding caching for performance.&#8221; or &#8220;You&#8217;re absolutely right! This is an excellent way of solving the problem&#8221;. Meanwhile, we were building distributed monoliths and accumulating technical d&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Linus Method&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:319297682,&quot;name&quot;:&quot;Devashish&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01cc416e-e24e-4b7e-8751-9b0e28a65f79_920x920.webp&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-10-07T18:22:38.034Z&quot;,&quot;cover_image&quot;:&quot;https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.devashish.me/p/the-linus-method&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:175550923,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4150214,&quot;publication_name&quot;:&quot;devashish.me&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!il7B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49a9ac-77b2-4818-9cb4-76618bfea1ce_144x144.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>The agent automatically pulls in what it needs:</p><p>- Context7 MCP fetches latest Go library docs</p><p>- Brave Search MCP finds relevant Stack Overflow discussions and other web resources</p><p>- Zen MCP selects the right model for different reasoning tasks</p><p>Example: Adding pagination to <code>/api/users</code> endpoint. The planning agent identifies:</p><p>1. Modify handler signature to accept <code>page</code> and <code>limit</code> params</p><p>2. Update database query with OFFSET/LIMIT</p><p>3. Add response metadata (total count, current page)</p><p>4. Write unit and integration tests based on existing test patterns</p><p>Once the task defintion and plan are ready, the agent updates the Jira ticket with the plan steps. No manual copy-pasting.</p><h3>Execution Phase: Let Automation Handle the Boring Stuff</h3><p>This phase starts with a clean context and the prompt <code>implement task &lt;jira-id&gt;</code>. The coding agent:</p><p>- Scans existing route handler and middleware patterns</p><p>- Writes the handler modifications</p><p>- Updates route definitions</p><p>- Runs <code>go test ./...</code> automatically</p><p>If you&#8217;re touching frontend code, Chrome DevTools MCP validates the changes in the UI. No manual browser refresh cycle.</p><p>Tools handle file operations (Read, Edit, Write). The agent invokes them based on the plan. You don&#8217;t micromanage which tool to use&#8212;that&#8217;s the point.</p><p>The coding agent also keeps updating the task as it progresses. The jira ticket always reflects the current execution status as a result.</p><h3>Validation Phase: Catch Issues Before Code Review</h3><p>Run <code>validate task &lt;jira-id&gt;</code>. This triggers:</p><p>- Code review agent analyzing architectural consistency</p><p>- Downstream service impact check (does the mobile app break?)</p><p>- Security review for the new query parameters</p><p>The validation agent adapts based on your changes. API endpoint modifications trigger different checks than database schema updates.</p><p>Finally, we create the PR with another slash command. It auto-populates the description with DoD, test results, and a summary of changes.</p><h2>Common Mistakes That Cost You Context Window</h2><p><strong>Mistake 1</strong>: Loading all MCPs at startup. Use Plugins instead. Create packages for different repos: API-specific tools, UI-specific agents. Load what you need, when you need it.</p><p><strong>Mistake 2:</strong> Only using slash commands. Commands are entry points. Agents handle complex reasoning. Tools execute file operations. Skills provide reusable capabilities.</p><p><strong>Mistake 3</strong>: Ignoring Skills entirely. Skills like <code>go-test</code> or <code>api-design</code> are modular capabilities that agents invoke automatically.</p><p><strong>Mistake 4</strong>: Manual invocation of everything. Set up Hooks for post-commit formatting, pre-push test runs. Automation compounds.</p><h2>Which Component When</h2><p>- <strong>Commands</strong>(<a href="https://docs.claude.com/en/docs/claude-code/slash-commands">docs</a>): Entry points you type (<code>/define-task</code>, <code>/plan-task</code>)</p><p>- <strong>Agents</strong>(<a href="https://docs.claude.com/en/docs/claude-code/sub-agents">docs</a>): Complex reasoning tasks (code-planning, code-review)</p><p>- <strong>Tools</strong>(<a href="https://docs.claude.com/en/docs/claude-code/cli-reference">docs</a>): Direct operations (file edits, bash execution)</p><p>- <strong>Skills</strong>(<a href="https://docs.claude.com/en/docs/claude-code/skills">docs</a>): Reusable capabilities agents invoke (go-testing, api-design)</p><p>- <strong>MCPs</strong>(<a href="https://docs.claude.com/en/docs/claude-code/mcp">docs</a>): External service connectors (Jira, Brave Search, Context7)</p><p>- <strong>Plugins</strong>(<a href="https://docs.claude.com/en/docs/claude-code/plugins">docs</a>): Bundled packages for specific workflows (API development, UI work)</p><p>- <strong>Hooks</strong>(<a href="https://docs.claude.com/en/docs/claude-code/hooks">docs</a>): Event-driven automation (format on save, test on commit)</p><h2>Your Next Step</h2><p>Pick ONE component you&#8217;re not using. This week:</p><p>- If you only use Commands, add the code-planning agent to your next feature</p><p>- If you skip Plugins, create an API-specific package with your most-used MCPs</p><p>- If you ignore Hooks, set up post-commit test automation</p><p>The difference between using Claude Code and <strong>mastering</strong> Claude Code is knowing which component solves which problem. Start with your most frequent workflow bottleneck.</p><p>What&#8217;s your biggest automation gap right now? The planning phase, execution speed, or validation thoroughness? Pick one and automate it.</p>]]></content:encoded></item><item><title><![CDATA[The Linus Method]]></title><description><![CDATA[Discovered by accident: using Linus Torvalds' persona eliminates AI sycophancy and delivers brutally effective technical reviews. Here's how we standardized it across our team]]></description><link>https://www.devashish.me/p/the-linus-method</link><guid isPermaLink="false">https://www.devashish.me/p/the-linus-method</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Tue, 07 Oct 2025 18:22:38 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3353" height="2514" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2514,&quot;width&quot;:3353,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;closeup photo of eyeglasses&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="closeup photo of eyeglasses" title="closeup photo of eyeglasses" srcset="https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1504639725590-34d0984388bd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxjb2RlJTIwcmV2aWV3fGVufDB8fHx8MTc1OTg2MDQ0MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@ikukevk">Kevin Ku</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Our team&#8217;s RFC reviews were broken. Claude Code would cheerfully approve architectural proposals with &#8220;This looks good! Maybe consider adding caching for performance.&#8221; or &#8220;You&#8217;re absolutely right! This is an excellent way of solving the problem&#8221;.  Meanwhile, we were building distributed monoliths and accumulating technical debt that would haunt us for years.</p><p>The fix started off as a joke. I decided to throw an obviously problematic RFC for a trivial change into Claude Code(which I always did), but with a caveat. I asked it to review the RFC &#8220;as Linus Torvalds would&#8221;. The response was transformative:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>&#8220;This creates a distributed monolith. You&#8217;re coupling services through shared database state. In 6 months, you won&#8217;t be able to deploy Service A without coordinating with Service B. Either commit to a monolith or properly isolate domain boundaries.&#8221; </p><p>(This is similar to the feedback it gave me. I&#8217;ve removed the bucketloads of expletives and sarcasm to drive the point.)</p><p>Direct. Specific. Focused on consequences, not feelings.</p><p>Why This Works</p><p>The breakthrough isn&#8217;t about prompting an AI to &#8220;be brutal.&#8221; It&#8217;s leveraging what&#8217;s already there. Every major LLM trained on internet data has absorbed thousands of Linus Torvalds&#8217; code reviews, mailing list rants, and conference talks. His methodology&#8212;<strong>good taste, long-term thinking, elimination of special cases</strong>&#8212;is baked into the model weights.</p><p>When you invoke his persona, you&#8217;re not teaching the AI something new. You&#8217;re activating a coherent review philosophy that already exists in the training data. This bypasses the sycophancy problem entirely. The model stops trying to please and starts channeling three decades of kernel maintainer wisdom.</p><h3>The Method in Practice</h3><p>What Works:</p><p>&#8226; Architecture reviews with complete context (problem, constraints, proposed solution)</p><p>&#8226; Design documents where long-term maintainability matters</p><p>&#8226; PRDs where technical feasibility needs honest assessment</p><p>&#8226; Senior engineers codifying their review standards (&#8221;Review as Linus would, considering our microservices constraints&#8221;)</p><p>What Doesn&#8217;t:</p><p>&#8226; Early-stage brainstorming (too aggressive for exploration)</p><p>&#8226; First drafts (needs complete picture to be effective)</p><p>&#8226; Junior engineer proposals (can be demoralizing without context)</p><p>Our implementation prompt is simple: &#8220;Review this [RFC/Architecture/PRD] as Linus Torvalds would, focusing on long-term maintainability. Context: [domain, constraints, goals]. No profanity.&#8221;</p><p>The results? Reviews that catch architectural problems before they become technical debt. Engineers now self-review with this method before submitting proposals. The bar for technical decisions has risen across the team.</p><p>This works because Linus&#8217;s principles&#8212;structural elegance, eliminating special cases, thinking in 10-year horizons&#8212;apply to any non-trivial technical system. His review methodology isn&#8217;t about kernels; it&#8217;s about sustainable technical excellence.</p><p>More importantly, using a real persona with decades of public technical discourse gives you consistency that prompt engineering can&#8217;t match. Every LLM vendor has trained on the same Linus rants. The persona is portable across models.</p><h3>Your Next Step</h3><p>Try it today. Take your latest design document and ask your AI assistant to &#8220;review this as Linus Torvalds would, focusing on what will break in 5 years.&#8221;</p><p>The feedback might sting. That&#8217;s the point. Better to face harsh truths in review than discover them in production.</p><p>Currently implementing this review method? I&#8217;d love to hear what personas or methodologies work for your team&#8217;s technical reviews. Reach out to compare notes on eliminating AI sycophancy in technical feedback.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI Adoption Framework]]></title><description><![CDATA[A goal-driven approach for engineering teams to adopt AI tools]]></description><link>https://www.devashish.me/p/ai-adoption-framework</link><guid isPermaLink="false">https://www.devashish.me/p/ai-adoption-framework</guid><dc:creator><![CDATA[Devashish]]></dc:creator><pubDate>Sun, 31 Aug 2025 21:10:55 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5264" height="3509" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3509,&quot;width&quot;:5264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;low angle of black metal tower&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="low angle of black metal tower" title="low angle of black metal tower" srcset="https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1465829235810-1f912537f253?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmcmFtZXdvcmt8ZW58MHx8fHwxNzU2NjU5MzAzfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@dtopkin1">Dayne Topkin</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h1>Background</h1><p>As with most engineering organizations, "Adopting AI" became a mandate for our company sometime this year. No one knew what it really meant to be AI first but one thing was clear: Leadership expected engineering teams to lead the way on this initiative. LinkedIn is rife with claims of engineers single handedly shipping entire products in weeks, sometimes days or even while on a Zoom call. One has to pay attention when <a href="https://www.paulgraham.com/">PG</a> starts posting <a href="https://x.com/paulg/status/1953289830982664236">this</a>, right? Teams then move at light speed to procure licenses for whatever tools their leadership, board, peers, HN/Reddit posts and "experts" recommended.</p><p>And then comes the hard (and fun) part. </p><p>If you're like most engineering teams, then you saw a pattern. After the initial euphoria settled down and the teams got some ostensible wins, they didn't move at the amazing speed leaders expected. Bug count, regressions, PR review times, and release velocity barely moved despite every engineer burning hundreds of dollars worth of tokens daily.</p><p>This happens because teams need more than guidance; they need goals. After observing multiple engineering teams navigate AI adoption, I observed a clear pattern: successful teams progress through three distinct phases in their AI adoption journey &#8212; Minimalist, Collaborative, and Accelerating. Each phase has specific goals, metrics to track those goals, investment requirements, and transition triggers. </p><p>I'll introduce the three phases in this post and explain some behavioral traits of being in each phase</p><h1>Defining the problem</h1><p>Before I dive into the phases, I'd like to share my thesis on why, despite immense adoption, <a href="https://fortune.com/2025/08/18/mit-report-95-percent-generative-ai-pilots-at-companies-failing-cfo/">around 95% of generative AI pilots are failing</a>. </p><p>I view all new AI initiatives as split into two broad categories: Internal and Product. </p><p><strong>Internal</strong>: These initiatives aim to improve the overall output of the organization with same headcount. "Do more with less" seems to be the prevailing motto here. <a href="https://x.com/tobi/status/1909251946235437514">This memo</a> by Shopify CEO captures the sentiment pretty well.</p><p><strong>Product</strong>: These initiatives aim to generate more revenue by increasing the product inventory, simplifying integrations, improving existing features, improve usability, expanding into new domains or all of the above. </p><p>Although the framework I'm working on focuses on Internal initiatives, and more specifically, for engineering teams and their stakeholders, it can be applied to the Product initiatives as well. I'll share the efficacy of this framework on Product initiatives once my experiments on that front reach their conclusion.</p><p>There are two major problems that teams are facing with gen AI adoption, assuming teams have the leadership buy-in to do this.</p><p>1. Non-fungible learnings, success stories, runbooks, guidance and processes. Successful AI projects include both technical adoption as well as team, process, culture specific integrations. These teams codify their communication patterns, knowledge silos, hacks, runbooks and knowledge bases to build unique solutions which cannot be adopted as-is for anyone else.</p><p>2. Lack of a cohesive approach. Any AI adoption framework must ensure that the individual productivity gains compound into team effectiveness, ultimately driving company-wide transformation. Efficiency gains only compound when they're aligned across individuals and teams. Lack of a converging approach results in productivity silos.</p><p>Consider two scenarios I've encountered repeatedly:</p><p>Scenario 1: An 8-person team using Cursor and Claude Code sees initial excitement but no sustained gains. Their metrics&#8212;bugs, regressions, velocity&#8212;remain unchanged after three months. Engineers report lifechanging productivity gains but key metrics remain stagnant.</p><p>Scenario 2: A mid-size organization with multiple teams struggles with database consistency. One team liberally uses database transactions while another uses them sparingly&#8212;for nearly identical microservices. Their code can't effectively merge or integrate. This creates operational overhead, capacity planning inconsistencies and architecture silos.</p><p>In both scenarios, knowledge silos prevent measurable, impactful organizational improvements. Using AI tools without alignment just speeds up the pace at which teams head towards a conflict. A unifying framework helps individuals, teams and organizations bridge this gap. This doesn't mean prescribing the "right" way to adopt AI. It means providing them a framework for self-discovery while maintaining alignment.</p><h1>AI Adoption Framework</h1><p>The framework I built to successfully adopt AI across engineering teams builds on three phases, each focusing on the "What to do" rather than "How to do it". Each phase in this framework builds on top of the previous phase to compound the learnings into exponential gains.</p><p>I created this AI Adoption Framework through multiple iterations and experiments. I'll continue to share my learnings as we explore new methods that work and the ones that don't. </p><h2>Phase 1, Minimalist</h2><p>This phase is indicated by siloed AI adoption across individuals, processes and teams.</p><p>Teams begin by augmenting existing tools with AI capabilities. Engineers replace traditional IDEs with Cursor or Windsurf. They adopt Claude Code to orchestrate changes across multiple files simultaneously. Engineers enhance code reviews through Copilot, Bugbot or similar tools. Engineers start creating custom prompts and GPTs to solve team-specific or product-specific problems.</p><p>At this stage, engineers evolve from coders to orchestrators. Engineers no longer type every line&#8212;they direct AI tools to implement their vision. Most engineering teams are already here or getting here fast.</p><p><strong>Measurable Checkpoints</strong>:</p><p>- 80% of engineers save 10-20% time daily</p><p>- Sprint velocity increases by measurable story points</p><p>- Lines of code per engineer increases</p><p>- Number of tickets closed per sprint trends upward</p><h2>Phase 2, Collaborative</h2><p>Defined by collaboration between teams and business units using AI tools and with AI tools.</p><p>Teams now transform individual productivity gains into team-wide efficiency through codified expertise. This phase represents the first step toward agentic workflows. Knowledge sharing becomes embedded in prompts, CLAUDE.md files, and shared artifacts.</p><p>Consider John, a DevOps expert who spends 60% of his day reviewing infrastructure PRs. John creates a Claude Code command: <code>/john-infra-review</code> and commits it to the project's <code>.claude/commands</code> folder. </p><p>The command contains:</p><p>- All infrastructure review guidelines John follows and enforces</p><p>- Patterns extracted from analyzing five months of his PR comments</p><p>- Focus areas identified through LLM analysis of his review history</p><p>- Specific checks for security, scalability, and cost optimization</p><p>Now any team member runs this command <em>before</em> raising an infrastructure PR. They receive feedback as if John personally reviewed their code. John's review load drops by 70%, PRs arrive pre-vetted, and, he focuses on important architectural decisions rather than routine checks and formatting errors.</p><p>This slash command creates the foundation for John's future autonomous agent.</p><p><strong>Measurable Checkpoints</strong>:</p><p>- PR review time reduces by 40%. Indicates increased collaboration <em>before</em> sending the PR</p><p>- Average and 90th percentile review cycles count drop</p><p>- Cross-team collaborative projects complete 25% faster</p><p>- Delivery time for features involving multiple engineers decreases</p><h2>Phase 3, Accelerated</h2><p>Agentic and autonomous systems collaborating to drive business outcomes</p><p>Teams now create autonomous agents that deliver non-trivial outcomes with the same headcount. The goal: make your team execute at 1.5x-2.0x its previous capacity.</p><p>Consider an engineer writes a detailed Jira ticket with clear outcomes. Their personal agent:</p><p>- Picks up the task automatically</p><p>- Analyzes requirements and creates implementation plan</p><p>- Makes necessary codebase changes</p><p>- Submits changes to review agents created by teammate(s) in Phase 2</p><p>- Processes feedback and iterates on the solution</p><p>- Re-submits updated changes for agent review</p><p>- Only after passing all automated reviews, the agent creates a PR and tags human reviewers</p><p>Engineers evolve into master orchestrators, focusing on architecture, design, cost impact, business alignment, and code quality standards. Teams automate mundane implementation details &#8212; the "how" &#8212; while humans focus on the "what" and "why"</p><p><strong>Measurable Checkpoints</strong>:</p><p>- 30% of tasks complete without human intervention on first iterations</p><p>- Regression rate drops by 45%</p><p>- Deployment frequency doubles</p><p>- Team delivers 1.5x-2.0x previous output, measured MoM</p><p>- Percentage of tasks requiring human input decreases from 100% baseline</p><h1>Conclusion</h1><p>I've briefly introduced the AI adoption framework I'm using and experimenting with in this post.</p><p>In the next series of posts, I'll dive into mechanisms I used with my teams to successfully move through each stage. I'll also talk about common symptoms of teams that are stuck in a certain stage and how to move past those blockers.</p><p>Stay tuned!</p>]]></content:encoded></item><item><title><![CDATA[Initial Commit]]></title><description><![CDATA[Blog introduction]]></description><link>https://www.devashish.me/p/initial-commit</link><guid isPermaLink="false">https://www.devashish.me/p/initial-commit</guid><pubDate>Sun, 31 Aug 2025 20:53:54 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3982" height="2404" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2404,&quot;width&quot;:3982,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a football field with the words start written on it&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&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="a football field with the words start written on it" title="a football field with the words start written on it" srcset="https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1608496601160-f86d19a44f9f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdGFydHxlbnwwfHx8fDE3NTY2NzM1MTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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/@clemensvanlay">Clemens van Lay</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p></p><p>Over the years, I have shifted away from general blogging and toward documenting my professional experiences and learnings. As I explore new tools, technologies, processes, and frameworks in the AI-driven landscape, I feel it's important to document my journey and the insights I gather along the way.</p><p>The rapid evolution of artificial intelligence and related technologies presents unique challenges and opportunities for engineering leaders and practitioners. With this blog, I aim to contribute to and join the broader conversation around AI implementation and engineering best practices.</p><p>I have established this blog with simple objectives:</p><p>- Write meaningful, practical content based on my personal experience. Avoid adding to [AI Slop](https://en.wikipedia.org/wiki/AI_slop). </p><p>  - I will definitely use AI tools for research, proofreading my content and make them impactful for the target audience. But the content will originate from my own writing and experiences. </p><p>- Share my (highly opinionated) views on impact of AI on engineering teams, organizations and culture</p><p>To new beginnings and continuous learning!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devashish.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devashish.me! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>