<?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[The Pragmatic Engineer]]></title><description><![CDATA[Big Tech and startups, from the inside. Highly relevant for software engineers, AI engineers and engineering leaders, useful for those working in tech.]]></description><link>https://newsletter.pragmaticengineer.com</link><image><url>https://substackcdn.com/image/fetch/$s_!6TJt!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecbf7ac-260b-423b-8493-26783bf01f06_600x600.png</url><title>The Pragmatic Engineer</title><link>https://newsletter.pragmaticengineer.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 15 Apr 2026 22:46:50 GMT</lastBuildDate><atom:link href="https://newsletter.pragmaticengineer.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Gergely Orosz]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[pragmaticengineer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[pragmaticengineer@substack.com]]></itunes:email><itunes:name><![CDATA[Gergely Orosz]]></itunes:name></itunes:owner><itunes:author><![CDATA[Gergely Orosz]]></itunes:author><googleplay:owner><![CDATA[pragmaticengineer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[pragmaticengineer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Gergely Orosz]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The impact of AI on software engineers in 2026: key trends]]></title><description><![CDATA[Our AI tooling survey finds concerns about mounting AI costs, more engineers hitting usage limits, and AI tools having uneven effects upon different types of engineers]]></description><link>https://newsletter.pragmaticengineer.com/p/the-impact-of-ai-on-software-engineers-2026</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-impact-of-ai-on-software-engineers-2026</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 14 Apr 2026 16:01:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ekej!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Recently, we <a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">ran a survey</a> asking readers of The Pragmatic Engineer how you use AI tools, which tools you use, what does and doesn&#8217;t work, and what it&#8217;s like working with AI, in general.</p><p>For today&#8217;s issue, we&#8217;ve dug into your 900+ responses to look for trends in AI tool usage among software engineers and engineering leaders. This article surfaces insights that are less about specific tools, and more about the effect these tools have on tech professionals. We cover:</p><ol><li><p><strong>Costs. </strong>Unsurprisingly, companies pay for most tool usage, and those responsible for budgets are increasingly nervous that AI-related costs are headed only one way: up.</p></li><li><p><strong>Usage limits. </strong>Around 30% of respondents say they have hit limits. Switching tools, upgrading plans, or moving over to API pricing are common responses.</p></li><li><p><strong>Impact on &#8220;Builders.&#8221; </strong>Folks who make larger code changes and do &#8220;quality-of-life&#8221; work are builders, and they&#8217;re also dealing with more AI slop. Some also grapple with a loss of professional identity.</p></li><li><p><strong>AI tools speed up &#8220;Shippers.&#8221; </strong>Engineers who focus more on getting things done are the most positive about AI tools. But they also add tech debt faster and might build the wrong things.</p></li><li><p><strong>&#8220;Coasters:&#8221; learning faster while generating AI slop. </strong>Less adept engineers can uplevel faster with AI, but they generate a lot of &#8220;AI slop&#8221; while doing so, which frustrates builders.</p></li><li><p><strong>Changing software engineer &amp; engineering manager (EM) roles.</strong> Engineers have to orchestrate and context switch more often, while engineering managers can be more hands on. It&#8217;s interesting to see the engineer and manager roles becoming more similar.</p></li><li><p><strong>Other impacts on the craft. </strong>We&#8217;re going from &#8220;how&#8221; to build to &#8220;what&#8221; to build, solo devs are seeing improved results, workloads are increasing with AI tools, and more.</p></li></ol><p>We previously published a detailed summary of the survey which focused on <a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">AI tooling for software engineers</a>, covering the most-used AI tools, trends, AI agent usage, company size and usage, and tools that engineers love.</p><h2>1. Costs</h2><p>Concern about the cost of AI tools is a trend throughout the survey, with around 15% of respondents mentioning it in some way.</p><p><strong>Tech companies foot the bill for the majority of spending on AI tools</strong>. More respondents say their employers pay for AI coding tools than those who say they pay themselves, and predictably, employers fund more expensive packages than what individuals buy personally.</p><p>Companies commonly pay for &#8220;max&#8221; plans with the likes of Claude Code, Cursor, and Codex (around $100-200/month per engineer), although some companies&#8217; budgets only stretch to $20/month per engineer &#8211; around the price point of GitHub Copilot, and the cheapest Claude or ChatGPT subscriptions.</p><p>The most-mentioned AI tool spending patterns:</p><ul><li><p><strong>When companies pay: </strong>~$200/month plans. Many have enterprise subscriptions, sometimes with subsidies and vendor lock-in. Some companies allow usage-based coverage on top of monthly plans.</p></li><li><p><strong>When personally paying for tools: </strong>~$20/month or free tiers. This can stack up across different tools. Around 5% of respondents have separate work and personal subscriptions, and free tier usage is widespread for personal use.</p></li></ul><p>For now, companies seem to be in the experimentation phase with AI tools, and several respondents say that they believe their companies have unsustainable AI-tooling budgets. This is likely because businesses are figuring out the best way of leveraging the tools, and the message to engineers at such places is to not worry about price and usage while that unfolds. A CTO at a small, US-based company shares:</p><blockquote><p><em>&#8220;</em>Right now, we&#8217;re not sweating the costs because we&#8217;re trying to evolve best practices for the tools, but that has resulted in some devs really blowing through budget, so we may start instituting caps on spending.&#8221;</p></blockquote><h3>Breaking the budget</h3><p>At small and mid-sized companies, leadership teams seem more comfortable about going over budget, than engineers running out of budget. There are more accounts from C-level folks and founders about racking up large bills than there are from engineers. A CPTO (Chief Product and Technology Officer) at a mid-sized company:</p><blockquote><p>&#8220;I ran up several monthly bills of $600 with Cursor. We have the dev team subscribed to ~$100/month plans. We&#8217;re now in the process of moving the rest of the team to Claude Code, as we can get more resources for around $100/month in cost.&#8221;</p></blockquote><p><strong>Top spenders can be allocated higher budgets.</strong> A number of tech businesses have separate, larger budgets for their heaviest AI users. A senior C++ engineer working in the video game industry says:</p><blockquote><p>&#8220;I&#8217;ve become my team&#8217;s AI champion. In theory, my limits are higher than normal, but I keep myself limited to what others can use, so I can show them useful things they can do.&#8221;</p></blockquote><p><strong>UK and EU companies worry more about budgets than US-based ones. </strong>Most responses which mention finance teams pushing back against spending even $30-50/month per engineer on AI tools are based in the UK and EU. One amusing example is a 10-person, seed-stage startup where the CEO questioned why they were paying as much as &#163;25/month per engineer for one of the cheapest AI tools around.</p><p>In general, it feels like European companies want to see clear value-add in order to justify an increase in tooling spend, whereas US companies are more comfortable with investing first and measuring impact later. At present, the impact of these tools is hard to quantify.</p><p><strong>A niche approach is that of AI teams educating devs to use cheaper models. </strong>Some European companies go as far as offering education to new joiners on using cheaper models. From an AI Enablement Lead at a 1,000+ person, digital transformation company:</p><blockquote><p>&#8220;Within our organisation, we&#8217;ve had incidents where our Claude users have overshot their limits. We&#8217;re now attempting to educate devs in knowing the difference between different models (knowing when to use Claude Sonnet versus Claude Opus).&#8221;</p></blockquote><h3>Cost trajectory worries</h3><p>The cost trajectory of AI tools is generally considered unsustainable in our survey.<strong> </strong>Devs using the tools heavily tend to hit usage limits, and their employers then have to pay more. At places with API-based pricing, usage is increasing. Those in leadership positions who are responsible for budgets are generally concerned about the direction of costs.</p><p><strong>Subsidies are keeping things at bay &#8211; for now. </strong>A common enough pattern in our survey is of heavily-subsidized enterprise plans that come with vendor lock-in. Several responses raise concerns about what will happen when the subsidies run dry. Experienced engineering leaders recall that cloud providers also played the same game of subsidizing for a few years, then raising prices when a customer was fully &#8220;locked in.&#8221;</p><p><strong>The AI hype cycle is dampening awkward conversations about budgets at some places. </strong>A principal engineer at a Fintech tells us:</p><blockquote><p>&#8220;The AI hype has created a special, generous budget for AI tools, and there&#8217;s no effective budget &#8211; yet!&#8221;</p></blockquote><p><strong>But some finance teams are getting grumpy. </strong>A CTO at a sports-tech company says:</p><blockquote><p>&#8220;It&#8217;s hard to keep our CFO supportive about investing in these tools because the productivity benefits have proven difficult to conclusively prove. The point that resonated the most was the loss of value when people hit daily limits: having to stop work immediately! Surprisingly, our CFO is still pushing back, despite having experience of getting a lot of value through their own AI usage with their spreadsheets.&#8221;</p></blockquote><p><strong>Most survey respondents think the price of AI tools will have to rise</strong>. If that happens, it would cause problems at several companies &#8211; particularly those in Europe:</p><blockquote><p>&#8220;I cannot see how the spend on AI tools is fiscally sustainable in its current form; Max 100 with Claude Code is $100 a month. A single small task powered by Kimi K2.5 using OpenCode is $5, mostly in input cost. If we assume that the third party inference providers are doing so at a sustainable price, the much more expensive Opus model cannot be sustainable, never mind profitable at these plan costs.&#8221; &#8212;<em> Founder at a seed-stage company, Europe.</em></p><p>&#8220;From the economic perspective, at some point, these companies will need more funding or profit, I&#8217;m curious how much it costs them to have a proper agent, and still become profitable. It feels slow when you run out of credits when working on repetitive tasks.&#8221; &#8212; <em>Principal Software Engineer at a seed-stage company, Europe</em></p></blockquote><h2>2. Usage limits</h2><p>Another major trend in our survey results is the topic of usage limits:</p><ul><li><p><strong>Hitting limits: ~30%</strong> of respondents. Running out of tokens or hitting reset limits is frustrating and disruptive, especially when you&#8217;re working on a task or are in a flow state. The majority of respondents who complain about hitting limits are on cheaper plans (typically $20/month.) But this issue is also mentioned about higher subscription levels.</p></li><li><p><strong>Under the limit: ~20%</strong> of respondents. Avoiding usage caps generally correlates with being on more expensive plans with higher limits, or in roles with enough non-coding work for it not to matter, or when devs do enough work &#8220;manually&#8221; for AI usage to not be an issue.</p></li></ul><h3>Why users of AI tools hit limits</h3><p>Common reasons cited in the survey:</p><p><strong>Being a new AI user or a power user. </strong>These are two distinct groups, but an engineering manager at a mid-sized company in Canada says that each one similarly blows through token limits for different reasons:</p><blockquote><p>&#8220;We&#8217;re mindful of trying to manage costs by setting AI spend limits across the org. We have two subsets of users at odds with each other:</p><ol><li><p>Individuals who are still learning and blow through their credits at an inordinate rate, forcing us to keep limits low.</p></li><li><p>Power users who hit the limit through regular use and apply pressure to raise the limit.</p></li></ol><p>It&#8217;s a tough balance.&#8221;</p></blockquote><p><strong>Using Opus for all work. </strong>A few engineers mention being careful about how they use Opus because it previously ate up their token budgets. Here&#8217;s a software engineer at a mid-sized company in Europe:</p><blockquote><p>&#8220;I made the mistake of using Opus in the past and burning through budgets quickly. Now, my routine is to start in &#8216;plan&#8217; mode with Opus. I then paste the acceptance criteria and description of the issue and let the plan mode figure it out. I then switch to Composer or Sonnet and have the agent take over from there.&#8221;</p></blockquote><p><strong>Mistakes that eat up tokens are easy to make. </strong>These include starting on work or a problem from the wrong end, using AI directly for a task rather than opting for a simple script, trying some new tool or technique that ends up consuming tokens (OpenClaw and Ralph Loops are cited), and others.</p><h3>What happens when the limit is hit?</h3><p>Hitting the limit with an AI tool is inconvenient and happens to many developers, who take a variety of next steps:</p><p><strong>Switch the model or tool. </strong>Around a quarter of respondents who hit limits mentioned switching. From a software engineer at working at Atlassian:</p><blockquote><p>&#8220;In my company, for Cursor and Windsurf we have monthly limits. Our internal coding tool (called codelassian) also has daily prompt and hourly token limits. When I hit a limit in one tool, I switch to the other.&#8221;</p></blockquote><p><strong>Upgrade to a pricier plan. </strong>When it&#8217;s an option, this is a no-brainer at most places, especially as the alternative would be devs twiddling their thumbs waiting for the limit to be reset. A senior engineering manager at a mid-sized company says:</p><blockquote><p>&#8220;In my team, we are regularly hitting session limits with Claude. We upgraded some teammates to the Max 20x plan &#8211; and on this plan we have not been hitting limits, so far.&#8221;</p></blockquote><p><strong>Adopt API-based pricing. </strong>This is the easiest way to keep working without abandoning a task you&#8217;re knees-deep in. A senior engineer at a large company says:</p><blockquote><p>&#8220;The company provides both the Claude and Copilot corporate offerings. When the limits are reached, I tend to use API keys that my teammates give me.&#8221;</p></blockquote><h2>3. Impact on &#8220;builders&#8221;</h2><p>We identified three different types of professional in the survey:</p><ul><li><p><strong>Builders</strong>: those who care about quality, good architecture, following good coding practices, and who talk about the craft of software engineering, etc.</p></li><li><p><strong>Shippers</strong>: those who primarily focus on outcomes for a product, features, testing, and experimenting with users. A fair number of leaders, managers, and engineers who were more hands-off with coding before AI tools are in this category, as are product engineers.</p></li><li><p><strong>Coasters</strong>: engineers who are not considered particularly good or great engineers, but they get the work done. They often do this without much taste or concern for quality, and seem to be mostly coasting along and doing what they&#8217;re told.</p></li></ul><p>The overall consensus in our survey results is that AI will amplify and multiply tendencies and patterns that existed before, and the impact of the tools varies accordingly among users. Let&#8217;s start with the impact we&#8217;ve observed upon builders in the 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_!Ekej!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ekej!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png 424w, https://substackcdn.com/image/fetch/$s_!Ekej!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png 848w, https://substackcdn.com/image/fetch/$s_!Ekej!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png 1272w, https://substackcdn.com/image/fetch/$s_!Ekej!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ekej!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png" width="1324" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1324,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ekej!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png 424w, https://substackcdn.com/image/fetch/$s_!Ekej!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png 848w, https://substackcdn.com/image/fetch/$s_!Ekej!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.png 1272w, https://substackcdn.com/image/fetch/$s_!Ekej!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174b9ab2-ef0b-4a40-ba4a-0de330620ff0_1324x758.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"><em>The good and bad of AI tools, as shared by respondents in the Builder archetype</em></figcaption></figure></div><p>Builders say they get value from AI tools in the following areas:</p><p><strong>Larger code changes. </strong>Builders generally find AI helpful for work like:</p><ul><li><p>Refactoring</p></li><li><p>Migrations</p></li><li><p>Improving test coverage</p></li><li><p>Carrying out large codebase changes</p></li></ul><p>All these are changes that are laborious, but not very challenging technically. They also require experience in knowing what you want to do and how to do it.</p><p><strong>Accomplishing &#8220;quality of life&#8221; tasks. </strong>Builders mention that with AI tools, they get to fix and improve things like nagging bugs that otherwise wouldn&#8217;t be &#8220;worth it&#8221; in time invested, but the barrier to entry is lower with AI.</p><p>A good example of this is in last week&#8217;s podcast <a href="https://newsletter.pragmaticengineer.com/p/dhhs-new-way-of-writing-code">with David Heinemeier Hansson (DHH)</a>, the creator of Ruby on Rails, in which he revealed how one of their engineers optimized P1 &#8211; the fastest 1% of web requests:</p><blockquote><p>&#8220;One of our most agent accelerated people asked: &#8220;What about P1? What about the floor? Can we fix the floor?&#8221; He found that the floor [of request speed] was 4 milliseconds.</p><p>Well, 4 milliseconds can add up if you have a bunch of fast requests. So, he just said: &#8220;We&#8217;re going to optimize P1. The fastest 1% of requests, we&#8217;re going to make them even faster.&#8221; He took it from 4 milliseconds to less than half a millisecond. He did this P1 project over a couple of days, like a side project.</p><p>He had an intuition that there was something here. He let agents run with it. The work ended up being 12 pull requests, and about 2,500 lines of code changed.</p><p>This is exactly why the explosion of the pie suddenly lets us look at problems we would never have contemplated looking at before.&#8221;</p></blockquote><p><strong>Typing is no longer a bottleneck. </strong>Some builders report falling even more in love with coding with the help of AI and agents, since physically typing out code is no longer a bottleneck for them. They enjoy being able to prompt. From one &#8220;builder&#8221;:</p><blockquote><p>&#8220;For someone who loves to build &#8211; but also values code quality, performance, reliability, and security &#8211; I ship a lot more quality code faster, if for no other reason than because the AI can read and write 100x faster than me. I get to stay at the conceptual level of shipping a product, and I can dive into debugging with the agent as needed. But if the agent has a good handle on the situation I can give it as much of the tedious parts as I wish.&#8221;<em> &#8211; Staff Engineer, at a large tech company, US</em></p></blockquote><p>The negative sides of AI tools, as experienced by builders:</p><ul><li><p><strong>More AI slop. </strong>Builders seem to be the most overwhelmed and derailed by reviewing a lot more AI-generated code. They can get frustrated with low-quality code shipped by colleagues which could be categorized as &#8220;AI slop.&#8221;</p></li><li><p><strong>More debugging. </strong>AI-generated code introduces bugs and issues, and builders tend to spend the most time debugging and fixing those issues.</p></li><li><p><strong>Identity loss. </strong>Some builder-types report a sense of identity loss and even some grief. Much of this relates to no longer doing hands-on coding because they cannot justify it, since AI agents generate pretty decent code faster than someone can type it.</p></li></ul><h2>4. AI tools speed up &#8220;Shippers&#8221;</h2><p>The &#8220;shipper&#8221; archetype thrives when they get things to production quickly. This group is by far the most enthusiastic about AI tools in survey responses. They are also the ones who praise &#8211; or hype up &#8211; the tools because of their personal experiences of shipping much faster with them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yBgU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yBgU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png 424w, https://substackcdn.com/image/fetch/$s_!yBgU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png 848w, https://substackcdn.com/image/fetch/$s_!yBgU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png 1272w, https://substackcdn.com/image/fetch/$s_!yBgU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yBgU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png" width="1278" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66546d37-a053-4179-8750-3e7784309ac8_1278x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1278,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yBgU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png 424w, https://substackcdn.com/image/fetch/$s_!yBgU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png 848w, https://substackcdn.com/image/fetch/$s_!yBgU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.png 1272w, https://substackcdn.com/image/fetch/$s_!yBgU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66546d37-a053-4179-8750-3e7784309ac8_1278x742.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"><em>Good and bad things about AI tools for shippers</em></figcaption></figure></div><p>The biggest upsides mentioned by shippers:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-impact-of-ai-on-software-engineers-2026">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[DHH’s new way of writing code]]></title><description><![CDATA[David Heinemeier Hansson shares why he shifted to an agent-first AI workflow, and what it means for how software is built and who builds it.]]></description><link>https://newsletter.pragmaticengineer.com/p/dhhs-new-way-of-writing-code</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/dhhs-new-way-of-writing-code</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 08 Apr 2026 17:16:28 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/193375117/e43a05202591d6438766f475d8a031ba.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/JiWgKRgdgpI">YouTube</a>, <a href="https://open.spotify.com/episode/3N2FJc9kPkYvK0m2S4ubop">Spotify</a>, and <a href="https://podcasts.apple.com/us/podcast/the-pragmatic-engineer/id1769051199">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gh57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gh57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" width="800" height="70" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:70,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/185094534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.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_!Gh57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><strong>&#8226; <a href="http://statsig.com/pragmatic">Statsig</a></strong> &#8211; &#8288; The unified platform for flags, analytics, experiments, and more. Stop switching between different tools, and have them all in one place.</p><p><strong>&#8226; <a href="https://workos.com/">WorkOS</a></strong> &#8211; The infrastructure B2B and AI-native companies use to sell to enterprise. It covers everything enterprise security requires: SSO, SCIM, RBAC, Audit Logs, AI governance, and more. Engineering teams ship it in days. Trusted by 2,000+ fast-growing companies, including OpenAI, Anthropic, Cursor, and Vercel. <a href="http://workos.com/">WorkOS.com</a></p><p><strong>&#8226; <a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a></strong> &#8211; The makers of SonarQube, the industry standard for automated code review. <a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a> helps reduce outages, improve security, and lower risks associated with AI and agentic coding. <a href="https://www.sonarsource.com/products/sonarqube/advanced-security/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-advanced-security&amp;utm_content=podcast-sonarqube-advanced-security&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">See how SonarQube Advanced Security</a> is empowering the Agent Centric Development Cycle (AC/DC) with new capabilities.</p><h3><strong>In this episode</strong></h3><p>David Heinemeier Hansson (DHH) is the creator of Ruby on Rails and Omarchy, co-founder and CTO of <a href="https://37signals.com/">37signals</a> (maker of Basecamp and HEY), and the author of several books including the best-seller, <em><a href="https://www.amazon.com/Remote-Office-Required-Jason-Fried/dp/0091954673">Remote: Office Not Required</a></em>, co-written with <a href="https://world.hey.com/jason">Jason Fried</a>.</p><p>Six months ago, in an episode of <a href="https://lexfridman.com/dhh-david-heinemeier-hansson">the Lex Fridman podcast</a>, David shared how he doesn&#8217;t use AI tools to write code: he types out all his code. But things have changed a lot since then.</p><p>In this episode, we discuss his approach to building software, how it&#8217;s changed in the last six months, and why he now takes an agent-first approach, and how he barely writes any code by hand. We go into how he uses AI agents: which alter how he builds and explores ideas, but also how his standards of quality and craft remain the same.</p><p>We also discuss how 37signals thinks about product development, from the role of designers to the importance of aesthetics and taste. David gets into how he sees beauty and functionality as closely linked, and why strong opinions about design lead to better software.</p><p>Finally, we look into the uneven impact of AI which amplifies senior engineers while creating challenges for junior developers, and what this may mean for the role of the software engineer.</p><h3><strong>Key observations from DHH</strong></h3><p>Here are 12 of my most interesting takeaways from talking with DHH:</p><div id="youtube2-JiWgKRgdgpI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;JiWgKRgdgpI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/JiWgKRgdgpI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>1. His philosophy on AI has not changed, but the available tools very much have. </strong>Autocomplete-style coding assistants were genuinely annoying for experienced developers six months ago. Things changed with the shift from tab-completion to agent harnesses, plus the emergence of powerful models like Opus 4.5 &#8211; when agents started producing code which DHH does want to merge with little to no alteration.</p><p><strong>2. Beautiful code and products aren&#8217;t matters of vanity; they&#8217;re signals of correctness.</strong> Dipping into philosophy, DHH says: &#8220;When something is beautiful, it&#8217;s likely to be correct.&#8221; He argues that Steve Jobs wanted the <em>inside</em> of a computer to be beautiful because people who care about circuit board layout are also those who sweat on the details of the UI.</p><p><strong>3. DHH&#8217;s development workflow, today:</strong> he runs <a href="https://github.com/tmux/tmux/wiki">tmux</a> to have two models running, and <a href="https://neovim.io/">neovim</a> in the center. Specifics:</p><ul><li><p>One fast LLM running (typically Gemini 2.5) in one split terminal</p></li><li><p>A slow but more powerful model in another terminal (usually Opus)</p></li><li><p>NeoVim for reviewing diffs via <a href="https://github.com/jesseduffield/lazygit">Lazygit</a></p></li></ul><p><strong>4. Ruby on Rails seems to be enjoying a Renaissance thanks to AI.</strong> Rails is one of the most token-efficient ways of building web apps and is well-suited for agent workflows. Testing is part of the framework, which helps agents write tests and validate their own outputs. It also produces code that humans can read and verify, which matters when reviewing agent output at speed.</p><p><strong>5. A big win from using AI agents is tackling stuff that you wouldn&#8217;t have before.</strong> A senior engineer at 37signals ran a &#8220;P1 optimization&#8221; project to improve the <em>fastest</em> 1% of requests. They optimized the P1 from being at 4 milliseconds, to under half a millisecond. This is the sort of work that wouldn&#8217;t have been considered previously!</p><p><strong>6. Running several AI agents feels less like &#8220;project management&#8221; and more like &#8220;wearing a mech suit.&#8221; </strong>Being a project manager of agents did not appeal to DHH, but now that he&#8217;s building with several agents, he feels like he&#8217;s in control of the work which is being hyper-accelerated.</p><p><strong>7. Senior engineers benefit from AI a lot more than juniors.</strong> At 37signals, senior engineers gain more from AI tools as they can validate whether an agent&#8217;s output is production-ready. DHH also notes that Amazon reached the same conclusion, and no longer lets junior programmers ship agent-generated code to production without review.</p><p><strong>8. 37signals has one designer for every two engineers.</strong> The company has around 20 software engineers and 10 designers. Designers do far more than design; they&#8217;re also product managers and &#8220;implementers&#8221; rolled into one. On top of making things look good, they figure out what should be built, how it should work, and often build the first version. DHH compares design at 37signals to jewelry design: &#8220;you should know the properties of gold. You should know how it bends.&#8221;</p><p><strong>9. AI agents could turn 37signals&#8217; &#8220;designer model&#8221; into the industry standard. </strong>AI tools now empower designers to implement more of their vision directly, and DHH suspects the rest of the industry is converging toward what 37signals has always done: working with small teams, where designers are also builders.</p><p><strong>10. Command Line Interfaces (CLI) feel like the ultimate AI interface, which validates the Unix philosophy of the 1970s</strong>. DHH is building CLIs for all 37signals products because they let agents chain tools together. &#8220;GitHub also has a CLI, and Sentry as well,&#8221; he says. &#8220;You can tie all these things together so an agent can check errors, write a fix, post a PR, and report back to basecamp.&#8221;</p><p><strong>11. The demise of the two-month product development cycle described in the book </strong><em><strong>&#8216;Shape Up: Stop Running in Circles and Ship Work that Matters&#8217;. </strong></em>The <a href="https://basecamp.com/shapeup">2019 title</a> by Ryan Signer covered how 37signals worked at the time, and DHH reveals that this methodology now needs rewriting because AI acceleration has made that timeline feel slow.</p><p><strong>12. Eight hours of sleep is non-negotiable &#8211; even during an AI gold rush!</strong> DHH believes the dopamine loop of shipping with agents is intoxicating and can lead to higher risk of burnout. So, he sleeps eight hours and doesn&#8217;t use an alarm.</p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us">Are AI agents actually slowing us down?</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built">How Claude Code is built</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/the-future-of-software-engineering-with-ai">The future of software engineering with AI: six predictions</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/the-ai-engineering-stack">The AI Engineering Stack</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/mitchell-hashimoto">Mitchell Hashimoto&#8217;s new way of writing code</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/how-linux-is-built-with-greg-kroah">How Linux is built</a> with Greg Kroah-Hartman</p><h3><strong>Timestamps</strong></h3><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=131s">02:11</a>) Omarchy and Ruby on Rails</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=505s">08:25</a>) 37signals overview</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=612s">10:12</a>) Launching HEY</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=1118s">18:38</a>) Building HEY</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=1367s">22:47</a>) Designers at 37signals</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=1688s">28:08</a>) The craft of design</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=1912s">31:52</a>) Why DHH now embraces AI workflows</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=2385s">39:45</a>) The AI inflection point</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=2663s">44:23</a>) DHH&#8217;s agent-first workflow</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=3309s">55:09</a>) AI&#8217;s impact on junior developers</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=3788s">1:03:08</a>) Developer experience with AI</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=4603s">1:16:43</a>) What does AI mean for developers?</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=5013s">1:23:33</a>) 37signals teams and hiring</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=5900s">1:38:20</a>) Work-life balance with AI</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=6101s">1:41:41</a>) Why DHH keeps building</p><p>(<a href="https://www.youtube.com/watch?v=JiWgKRgdgpI&amp;t=6324s">1:45:24</a>) Closing</p><h3><strong>References</strong></h3><p><strong>Where to find DHH: </strong></p><p>&#8226; X: <a href="https://x.com/dhh">https://x.com/dhh</a></p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/david-heinemeier-hansson-374b18221">https://www.linkedin.com/in/david-heinemeier-hansson-374b18221</a></p><p>&#8226; Website: <a href="https://dhh.dk">https://dhh.dk</a></p><p>&#8226; Newsletter: <a href="https://world.hey.com/dhh">https://world.hey.com/dhh</a></p><p>&#8226; Podcast: <a href="https://37signals.com/podcast">https://37signals.com/podcast</a></p><p><strong>Mentions during the episode:</strong></p><p>&#8226; Omarchy: <a href="https://omarchy.org">https://omarchy.org</a></p><p>&#8226; Linux: <a href="https://www.linux.org">https://www.linux.org</a></p><p>&#8226; Ubuntu: <a href="https://ubuntu.com">https://ubuntu.com</a></p><p>&#8226; Arch Linux: <a href="https://archlinux.org">https://archlinux.org</a></p><p>&#8226; Hyprland: <a href="https://hypr.land">https://hypr.land</a></p><p>&#8226; Ruby on Rails: <a href="https://rubyonrails.org">https://rubyonrails.org</a></p><p>&#8226; Basecamp: <a href="https://basecamp.com">https://basecamp.com</a></p><p>&#8226; Fizzy: <a href="https://www.fizzy.do">https://www.fizzy.do</a></p><p>&#8226; Jason Fried on X: <a href="https://x.com/jasonfried">https://x.com/jasonfried</a></p><p>&#8226; HEY: <a href="https://www.hey.com">https://www.hey.com</a></p><p>&#8226; Shape Up: Stop Running in Circles and Ship Work that Matters: <a href="https://basecamp.com/shapeup">https://basecamp.com/shapeup</a></p><p>&#8226; Zolt&#225;n Hossz&#250; applying to 37signals: <a href="https://zoltan.co/37signals">https://zoltan.co/37signals</a></p><p>&#8226; Daring Fireball: <a href="https://daringfireball.net">https://daringfireball.net</a></p><p>&#8226; Smalltalk: <a href="https://en.wikipedia.org/wiki/Smalltalk">https://en.wikipedia.org/wiki/Smalltalk</a></p><p>&#8226; DHH: Future of Programming, AI, Ruby on Rails, Productivity &amp; Parenting | Lex Fridman Podcast #474: </p><div id="youtube2-vagyIcmIGOQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vagyIcmIGOQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/vagyIcmIGOQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#8226; Homer&#8217;s typing Bird: </p><div id="youtube2-R_rF4kcqLkI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;R_rF4kcqLkI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/R_rF4kcqLkI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#8226; Real-world engineering challenges: building Cursor: <a href="https://newsletter.pragmaticengineer.com/p/cursor">https://newsletter.pragmaticengineer.com/p/cursor</a></p><p>&#8226; Building a best-selling game with a tiny team &#8211; with Jonas Tyroller: <a href="https://newsletter.pragmaticengineer.com/p/thronefall">https://newsletter.pragmaticengineer.com/p/thronefall</a></p><p>&#8226; Andrej Karpathy on X: <a href="https://x.com/karpathy">https://x.com/karpathy</a></p><p>&#8226; Reflexive AI usage is now a baseline expectation at Shopify: </p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/tobi/status/1909251946235437514&quot;,&quot;full_text&quot;:&quot;https://t.co/6i6h3sKi3x&quot;,&quot;username&quot;:&quot;tobi&quot;,&quot;name&quot;:&quot;tobi lutke&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1999293930936909824/_HWYanot_normal.jpg&quot;,&quot;date&quot;:&quot;2025-04-07T14:28:30.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:287,&quot;retweet_count&quot;:947,&quot;like_count&quot;:6762,&quot;impression_count&quot;:2262661,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p>&#8226; Claude Code: <a href="https://code.claude.com">https://code.claude.com</a></p><p>&#8226; OpenCode: <a href="https://opencode.ai">https://opencode.ai</a></p><p>&#8226; MacBook Neo: <a href="https://www.apple.com/macbook-neo/">https://www.apple.com/macbook-neo/</a></p><p>&#8226; tmux: <a href="https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p><p>&#8226; Kimi K2.5: <a href="https://kimik2ai.com/k2.5">https://kimik2ai.com/k2.5</a></p><p>&#8226; Agent first, agent native: <a href="https://basecamp.com/agents">https://basecamp.com/agents</a></p><p>&#8226; Sentry: <a href="https://sentry.io">https://sentry.io</a></p><p>&#8226; Moore&#8217;s law: <a href="https://en.wikipedia.org/wiki/Moore%27s_law">https://en.wikipedia.org/wiki/Moore%27s_law</a></p><p>&#8226; The Bitter Lesson: <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">http://www.incompleteideas.net/IncIdeas/BitterLesson.html</a></p><p>&#8226; Scaling Uber with Thuan Pham (Uber&#8217;s first CTO): <a href="https://newsletter.pragmaticengineer.com/p/scaling-uber-with-thuan-pham-ubers">https://newsletter.pragmaticengineer.com/p/scaling-uber-with-thuan-pham-ubers</a></p><p>&#8226; Waymo: <a href="https://waymo.com">https://waymo.com</a></p><p>&#8226; Elon Musk: &#8220;There will not be a steering wheel&#8221; in 20 years: <a href="https://www.axios.com/2017/12/15/elon-musk-there-will-not-be-a-steering-wheel-in-20-years-1513304216">https://www.axios.com/2017/12/15/elon-musk-there-will-not-be-a-steering-wheel-in-20-years-1513304216</a></p><p>&#8226; Leopold Aschenbrenner &#8212; 2027 AGI, China/US super-intelligence race, &amp; the return of history: </p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:145136502,&quot;url&quot;:&quot;https://www.dwarkesh.com/p/leopold-aschenbrenner&quot;,&quot;publication_id&quot;:69345,&quot;publication_name&quot;:&quot;Dwarkesh Podcast&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!QEPJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F90fa9666-5b8b-4685-a8fb-4b64cb7e0333_1080x1080.png&quot;,&quot;title&quot;:&quot;Leopold Aschenbrenner &#8212; 2027 AGI, China/US super-intelligence race, &amp; the return of history&quot;,&quot;truncated_body_text&quot;:null,&quot;date&quot;:&quot;2024-06-04T15:39:37.715Z&quot;,&quot;like_count&quot;:89,&quot;comment_count&quot;:16,&quot;bylines&quot;:[{&quot;id&quot;:4281466,&quot;name&quot;:&quot;Dwarkesh Patel&quot;,&quot;handle&quot;:&quot;dwarkesh&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!5eJb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb715ffd1-f7d7-4755-af88-c48efe647f5b_400x400.jpeg&quot;,&quot;bio&quot;:&quot;Host of Dwarkesh Podcast&quot;,&quot;profile_set_up_at&quot;:&quot;2021-06-09T22:58:10.864Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-04-03T20:37:19.142Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:246192,&quot;user_id&quot;:4281466,&quot;publication_id&quot;:69345,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:69345,&quot;name&quot;:&quot;Dwarkesh Podcast&quot;,&quot;subdomain&quot;:&quot;dwarkesh&quot;,&quot;custom_domain&quot;:&quot;www.dwarkesh.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Deeply researched interviews&quot;,&quot;logo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/90fa9666-5b8b-4685-a8fb-4b64cb7e0333_1080x1080.png&quot;,&quot;author_id&quot;:4281466,&quot;primary_user_id&quot;:4281466,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2020-07-18T16:36:25.723Z&quot;,&quot;email_from_name&quot;:&quot;Dwarkesh Patel&quot;,&quot;copyright&quot;:&quot;Dwarkesh Patel&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:null,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;twitter_screen_name&quot;:&quot;dwarkesh_sp&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:100,&quot;status&quot;:{&quot;bestsellerTier&quot;:100,&quot;subscriberTier&quot;:5,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:100},&quot;paidPublicationIds&quot;:[3087928,1163860,1134099,6819723,2118966,3409707,89120,22108,104058],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;podcast&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.dwarkesh.com/p/leopold-aschenbrenner?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_!QEPJ!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F90fa9666-5b8b-4685-a8fb-4b64cb7e0333_1080x1080.png" loading="lazy"><span class="embedded-post-publication-name">Dwarkesh Podcast</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title-icon"><svg width="19" height="19" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M3 18V12C3 9.61305 3.94821 7.32387 5.63604 5.63604C7.32387 3.94821 9.61305 3 12 3C14.3869 3 16.6761 3.94821 18.364 5.63604C20.0518 7.32387 21 9.61305 21 12V18" stroke-linecap="round" stroke-linejoin="round"></path>
  <path d="M21 19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H18C17.4696 21 16.9609 20.7893 16.5858 20.4142C16.2107 20.0391 16 19.5304 16 19V16C16 15.4696 16.2107 14.9609 16.5858 14.5858C16.9609 14.2107 17.4696 14 18 14H21V19ZM3 19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H6C6.53043 21 7.03914 20.7893 7.41421 20.4142C7.78929 20.0391 8 19.5304 8 19V16C8 15.4696 7.78929 14.9609 7.41421 14.5858C7.03914 14.2107 6.53043 14 6 14H3V19Z" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><div class="embedded-post-title">Leopold Aschenbrenner &#8212; 2027 AGI, China/US super-intelligence race, &amp; the return of history</div></div><div class="embedded-post-cta-wrapper"><div class="embedded-post-cta-icon"><svg width="32" height="32" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  <path classname="inner-triangle" d="M10 8L16 12L10 16V8Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><span class="embedded-post-cta">Listen now</span></div><div class="embedded-post-meta">2 years ago &#183; 89 likes &#183; 16 comments &#183; Dwarkesh Patel</div></a></div><p>&#8226; Terminator 2 Things &amp; Ideas we would have never thought: </p><div id="youtube2-_GHX3iZtuKg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_GHX3iZtuKg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_GHX3iZtuKg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#8226; Commodore 64: <a href="https://en.wikipedia.org/wiki/Commodore_64">https://en.wikipedia.org/wiki/Commodore_64</a></p><p>&#8226; PlayStation: <a href="https://www.playstation.com">https://www.playstation.com</a></p><p>&#8226; Jevons paradox: <a href="https://en.wikipedia.org/wiki/Jevons_paradox">https://en.wikipedia.org/wiki/Jevons_paradox</a></p><p>&#8226; OpenClaw: <a href="https://openclaw.ai">https://openclaw.ai</a></p><p>&#8226; The creator of Clawd: &#8220;I ship code I don&#8217;t read&#8221;: <a href="https://newsletter.pragmaticengineer.com/p/the-creator-of-clawd-i-ship-code">https://newsletter.pragmaticengineer.com/p/the-creator-of-clawd-i-ship-code</a></p><p>&#8226; John Carmack on X: <a href="https://x.com/ID_AA_Carmack">https://x.com/ID_AA_Carmack</a></p><p>&#8226; TDD, AI agents and coding with Kent Beck: <a href="https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent">https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent</a></p><p>&#8226; <em>Extreme Programming Explained: Embrace Change</em>: <a href="https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658">https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658</a></p><p>&#8226; <em>Smalltalk Best Practice Patterns</em>: <a href="https://www.amazon.com/Smalltalk-Best-Practice-Patterns-Kent/dp/013476904X">https://www.amazon.com/Smalltalk-Best-Practice-Patterns-Kent/dp/013476904X</a></p><p>&#8226; From IDEs to AI Agents with Steve Yegge: <a href="https://newsletter.pragmaticengineer.com/p/from-ides-to-ai-agents-with-steve">https://newsletter.pragmaticengineer.com/p/from-ides-to-ai-agents-with-steve</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Cycles of disruption in the tech industry: with software pioneers Kent Beck & Martin Fowler]]></title><description><![CDATA[Parallels between technology shifts in the past decades and what we&#8217;re seeing with AI. Also: ways to avoid burnout when working with AI agents, TDD back in style, and more.]]></description><link>https://newsletter.pragmaticengineer.com/p/cycles-of-disruption-in-the-tech</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/cycles-of-disruption-in-the-tech</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 07 Apr 2026 16:27:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6D40!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The recent <a href="https://www.pragmaticsummit.com/">Pragmatic Summit</a> saw two legends of software development share a stage in what was one of the most popular sessions at our debut live event in San Francisco. In front of a packed audience, Martin Fowler and Kent Beck tackled a range of highly-relevant topics, with me hosting proceedings.</p><p>Martin and Kent go back decades, and Martin jokes that his career is &#8220;mostly about writing down Kent Beck&#8217;s ideas.&#8221; They first collaborated in the 1990s, and each has published influential books &#8211; &#8216;<em>Extreme Programming Explained&#8217; </em>and <em>&#8216;Test-Driven Development&#8217; </em>by Kent, and <em>&#8216;Refactoring&#8217; </em>and<em> &#8216;Patterns of Enterprise Application Architecture&#8217; </em>by Martin.</p><p>At the Pragmatic Summit, they each shared a wealth of hard-earned learnings and decades-worth of perspective, along with a healthy dose of skepticism. Needless to say, the conversation did not disappoint, and this article summarizes what we discussed in their own words. You can also <a href="https://youtu.be/CZs8J1ZD0CE">check out the full recording</a>.</p><p>We cover:</p><ol><li><p><strong>Technology shifts similar to AI. </strong>The arrival of the microprocessor, introduction of object-oriented languages, the Internet, and agile software development principles were all major changes &#8211; but one big difference was that it took time for these technologies to be adopted. Not so with AI.</p></li><li><p><strong>Agile and AI similarities. </strong>With Agile, company incentives were often misaligned, &#8220;snake oil&#8221; vendors were everywhere, and a &#8220;mid pack&#8221; of developers who resisted the change saw their career prospects hit. These trends look likely to repeat with AI.</p></li><li><p><strong>What&#8217;s happening inside companies</strong>. There&#8217;s some confusion &#8211; and even panic &#8211; at large companies, while AI tools don&#8217;t work nearly as well on large and complex codebases as on greenfield projects. Also, a &#8220;re-soloing&#8221; of software development is inbound.</p></li><li><p><strong>Avoiding burnout with AI agents</strong>. Set and maintain boundaries, and pay attention. Martin suggests to catch when you start producing &#8220;negative value&#8221;: that&#8217;s when to take a break.</p></li><li><p><strong>Unhealthy performance metrics.</strong> Companies are starting to measure things like frequency of pull requests &#8211; when they should be looking to quantify outcomes and results.</p></li><li><p><strong>Lower quality on purpose? </strong>It seems every business is optimizing for speed with AI, but quality can get dropped. Also: building features is more obvious with AI, than investing in &#8220;futures.&#8221;</p></li><li><p><strong>Test-Driven Development (TDD): tests no longer optional? </strong>Kent pioneered TDD, and today it&#8217;s more relevant than ever for working with AI.</p></li><li><p><strong>Thriving in an AI-native industry.</strong> Focus on working with agents to express your craft, try to get more enjoyment in <em>understanding</em> your domain, and take on more ambitious work.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6D40!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6D40!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 424w, https://substackcdn.com/image/fetch/$s_!6D40!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 848w, https://substackcdn.com/image/fetch/$s_!6D40!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 1272w, https://substackcdn.com/image/fetch/$s_!6D40!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6D40!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png" width="1456" height="1326" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1326,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;: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="" srcset="https://substackcdn.com/image/fetch/$s_!6D40!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 424w, https://substackcdn.com/image/fetch/$s_!6D40!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 848w, https://substackcdn.com/image/fetch/$s_!6D40!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 1272w, https://substackcdn.com/image/fetch/$s_!6D40!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe801e0ca-cd70-4ed7-9d94-9ca1e44509a1_1594x1452.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Martin Fowler (center), Kent Beck (right), and me at The Pragmatic Summit</em></figcaption></figure></div><p><em>Before we start, a programming note: this week, there will be no The Pulse on Thursday &#8212; I&#8217;ll be attending <a href="https://www.ai.engineer/europe">AI Engineer Europe</a> in London on Thursday and Friday, including doing a fireside chat, and hosting one with Linear CTO Tuomas Artman.</em></p><h2>1. Technology shifts similar to AI</h2><p><strong>Do you recall a tech change as similarly promising and unpredictable as AI?</strong></p><p><strong>Martin: </strong>&#8220;Nothing has hit with the magnitude of AI. This is a whole size different from anything we&#8217;ve faced before. On a smaller scale, we were very much involved in the growth of object oriented languages, which scared a lot of people. It didn&#8217;t scare us so much because we were part of it.</p><p>Looking back, the internet had a huge impact on us all, and of course, Agile software development, too. Agile had a very big impact on a lot of organizations: you could tell by how hard they resisted it. We had to persuade people of the importance of these technological changes; yes, even the internet! It may sound surprising but there were people who didn&#8217;t think it was important.</p><p>The thing about AI is that today there is no argument about how important it is.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NR_1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NR_1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png 424w, https://substackcdn.com/image/fetch/$s_!NR_1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png 848w, https://substackcdn.com/image/fetch/$s_!NR_1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!NR_1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NR_1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NR_1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png 424w, https://substackcdn.com/image/fetch/$s_!NR_1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png 848w, https://substackcdn.com/image/fetch/$s_!NR_1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!NR_1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819fa7b4-c3f3-4ab7-9a89-263e19893663_1600x1067.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"><em>Martin Fowler (left) speaks at the Summit</em></figcaption></figure></div><p><strong>Kent: </strong>&#8220;The other analogy I have is the introduction of the microprocessor. Before that, computers were big boxes; you couldn&#8217;t move them around. If you wanted another computer, you&#8217;d mortgage your house for it. Having a computer was a <em>big</em> deal.</p><p>I was a kid in Silicon Valley with my dad as a programmer when the Intel 4004 hit the market [in 1971]. We went: &#8220;Wait a minute, that <em>chip</em> is a computer? Oh my goodness!&#8221; The possibilities of computing suddenly expanded thanks to it. If you could figure out how to write software on this chip and figure out how to design hardware around this thing, you could suddenly do things you hadn&#8217;t even imagined.</p><p>And so I think part of AI is this expansion of imagination. I&#8217;m writing projects that are ridiculously ambitious: I&#8217;m working on a persistent <a href="https://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>. I&#8217;m writing library-quality code for Rust.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kug2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kug2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png 424w, https://substackcdn.com/image/fetch/$s_!Kug2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png 848w, https://substackcdn.com/image/fetch/$s_!Kug2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png 1272w, https://substackcdn.com/image/fetch/$s_!Kug2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kug2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png" width="1390" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1390,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Kug2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png 424w, https://substackcdn.com/image/fetch/$s_!Kug2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png 848w, https://substackcdn.com/image/fetch/$s_!Kug2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.png 1272w, https://substackcdn.com/image/fetch/$s_!Kug2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ad5f3-31fe-4454-b222-7b256dfde10d_1390x808.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"><em>Kent predicts AI will expand software engineering like the Intel 4004 did. Source: <a href="https://www.intel.com/content/www/us/en/history/virtual-vault/articles/the-intel-4004.html">Intel</a></em></figcaption></figure></div><h3>Balancing skepticism and curiosity</h3><p><strong>What was the feeling in the industry during those revolutions, and the differences between professionals who thrived back then and those who didn&#8217;t?</strong></p><p><strong>Martin:</strong> &#8220;There was a mix of people chasing the hype and those saying, &#8220;this new thing is nothing special.&#8221; I think you&#8217;ve always got to have that balance of skepticism and curiosity, and to be selective about it. I mean, I have been completely skeptical about some big changes: Blockchain was one I was extremely skeptical about.</p><p>My skepticism is well-rooted because I&#8217;ve seen so much &#8220;snake oil&#8221; over the years. In fact, my skepticism has to be absolute and total, which means I have to be skeptical about my skepticism! To be that skeptical also requires curiosity: you&#8217;ve got to be curious enough to say &#8220;how do I probe in order to detect signs of something useful?&#8221;</p><p>You also need to be aware that your early interactions may not actually be a <em>true</em> signal. When I started playing around with AI, it was with GitHub Copilot a year and a half ago. I was pretty unimpressed; it would give you something wonderful, but most of the time it gave you such garbage that you would just delete it right away. If that had been my only impression of AI, I would&#8217;ve immediately flipped the &#8220;<a href="https://en.wikipedia.org/wiki/Bozo_bit">bozo bit</a>&#8221; on it, like I did with blockchain.&#8221;</p><p><strong>Kent:</strong> &#8220;Here&#8217;s the thing, the capabilities of AI can change week to week. I&#8217;ll try something with Gemini one week and it fails miserably. Then Claude Code works pretty well, and then it doesn&#8217;t. And then I try Gemini for the same thing and it works, when it hadn&#8217;t worked last week!</p><p>People want an answer, but the answer&#8217;s always changing. In this environment, you can&#8217;t possibly have <em>the </em>answer. That&#8217;s the bad news, but the good news is that nobody else has the answer either. So, you&#8217;re just as smart as everybody else because we&#8217;re all equally ignorant.&#8221;</p><h2>2. Agile and AI similarities</h2><p><strong>In 2001, the &#8216;Agile Manifesto&#8217; came out, of which you were both co-authors. I think many companies are expecting the same thing with AI as Agile promised: better, faster, cheaper software. But how did Agile adoption really play out?</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o3em!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o3em!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png 424w, https://substackcdn.com/image/fetch/$s_!o3em!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png 848w, https://substackcdn.com/image/fetch/$s_!o3em!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!o3em!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o3em!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o3em!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png 424w, https://substackcdn.com/image/fetch/$s_!o3em!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png 848w, https://substackcdn.com/image/fetch/$s_!o3em!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!o3em!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4d78ab-2662-4ef7-b18f-a25317de5dd5_1600x1067.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"><em>Full house: The conversation with Martin (left) and Kent (right) drew a large audience</em></figcaption></figure></div><p><strong>Kent:</strong> &#8220;It turns out people don&#8217;t want faster, cheaper, better! Inside some companies, the incentives are misaligned with actually achieving that. And so as geeks trying to achieve these improvements and saying: &#8220;it&#8217;s 40% better, 12% cheaper and less fattening,&#8221; people will punish you if that doesn&#8217;t align with <em>their</em> incentives inside organizations.</p><p>In the ideal organization, everybody would care about the same things, but that&#8217;s just not the way it works! So, if AI is coming along to promise the same things, we&#8217;re going to see the same reaction as before.&#8221;</p><p><strong>Martin:</strong> &#8220;An obvious difference is the sheer magnitude and speed there is with AI. Also, I think there will be a big difference between people who use it well and people who use it badly. The trick is figuring out how to use it well and putting the effort in to learn. There will be a big distinction between those two groups.</p><p>But I suspect there will still be some similarities with Agile. The core notions behind Agile and extreme programming are solid and good, but a huge snake-oil industry appeared around it &#8211; the &#8220;Agile industrial complex&#8221;, as I refer to it. This is also happening with AI right now, and it&#8217;s often hard to see the difference between snake oil and the real stuff.&#8221;</p><h3>AI as an amplifier</h3><p><strong>Kent:</strong> &#8220;AI is an amplifier. If you&#8217;re young and learning quickly, AI can amplify your learning. I personally think this is the golden age of the junior programmer. I get people coming to me all the time saying things like &#8220;my son started his second year in CS and wants to go into something more commercial like art history.&#8221; And I&#8217;d say, &#8220;this is like if you&#8217;re a carpenter and they just introduced the circular saw and you think, &#8216;oh, well, carpentry is over. Anybody can build a house now.&#8217; Well, no! Now, you have more powerful tools. You have less of the crummy work to do.</p><p>I think that young people are going to learn faster, and experienced folks who are working effectively are going to work quicker and more effectively.&#8221;</p><h3>Developers stuck in the middle</h3><p><strong>Kent: </strong>My concern is that there&#8217;s a &#8220;middle&#8221; of people who got into programming as a way to make money. If we look back at the Dotcom crash, there was a &#8220;mid pack&#8221; of such people who ended up going into real estate, more or less. But today, I don&#8217;t know where that &#8220;middle&#8221; will go, and it&#8217;s also much bigger now than 25 years ago.&#8221;</p><p><strong>Martin:</strong> &#8220;But that middle has also been &#8220;flushed out&#8221; to some degree by retrenchment in the software industry at the <a href="https://newsletter.pragmaticengineer.com/p/zirp">end of the zero interest rate period</a>. So, that&#8217;s an interesting difference because we&#8217;ve had these things occurring at once: the AI boom, and the economic headwinds of the past 2-3 years.</p><p>This is an interesting mix that wasn&#8217;t present in the &#8216;90s with the Dotcom Boom. Back then, it was pretty much <em>all</em> a solid boom.&#8221;</p><h3>Return of &#8220;let&#8217;s get rid of programmers!&#8221;</h3><p><strong>Kent: </strong>&#8220;Another interesting confluence of factors is the periodic, &#8220;we can get rid of all the programmers, woo-hoo&#8221; trend, which started with Cobol in the 1970s. With Cobol, business analysts were supposedly going to be able to write the programs, and the logic was that we wouldn&#8217;t need programmers anymore. That comes back repeatedly.</p><p>Agile, however, was definitely <em>not</em> a &#8220;let&#8217;s get rid of programmers&#8221; trend. With Agile, we wanted programmers to be more <em>effective</em> in their jobs. And since we started it, and were programmers, we were able to push that agenda pretty effectively.</p><p>However, today the &#8220;get rid of programmers&#8221; trend is repeating. As programmers, it behooves us to think about why they keep wanting to get rid of us. Some of that&#8217;s about us as programmers, and some of it not. Still, we should think about why people periodically want to axe us. In the end, this trend amps up the fear factor that everybody&#8217;s experiencing.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fZXk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fZXk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png 424w, https://substackcdn.com/image/fetch/$s_!fZXk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png 848w, https://substackcdn.com/image/fetch/$s_!fZXk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!fZXk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fZXk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fZXk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png 424w, https://substackcdn.com/image/fetch/$s_!fZXk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png 848w, https://substackcdn.com/image/fetch/$s_!fZXk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!fZXk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c75e55a-42f8-42be-bac8-5af9c6d7ab19_1600x1067.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"><em>In the middle of the discussion</em></figcaption></figure></div><h3>&#8220;Re-soloing&#8221; of programming</h3><p><strong>Kent:</strong> &#8220;A big trend is the &#8220;re-soloing&#8221; [reduced in-person collaboration] of programming.</p><p>A big part of extreme programming (XP) was creating a safe social environment for basically antisocial people.<em> </em>On an XP team, people are talking to each other for hours a day, and are happy to do so because it&#8217;s set up to be a positive experience.</p><p>Now, I see programmers saying, &#8220;I&#8217;ve got six agents, so really I&#8217;m managing a team.&#8221; No, you&#8217;re not: you&#8217;re using six tools at once, which is fine, but it&#8217;s very different from having a conversation with somebody who sees things slightly differently, or has a different energy level from you on the day.</p><p>We used to have programmers in individual offices with doors, and you&#8217;d shut the door and slide the pizza underneath. That was easy to manage, but then along came this messy, social, complicated, chaotic process of software development, which just happened to produce really good results.</p><p>But now, instead of 50 people on my team, I can have five and they don&#8217;t have to talk to each other, and each can have 10 agents. Is that the same? No, it&#8217;s not.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NdVf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NdVf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png 424w, https://substackcdn.com/image/fetch/$s_!NdVf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png 848w, https://substackcdn.com/image/fetch/$s_!NdVf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png 1272w, https://substackcdn.com/image/fetch/$s_!NdVf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NdVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png" width="1456" height="966" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:966,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NdVf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png 424w, https://substackcdn.com/image/fetch/$s_!NdVf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png 848w, https://substackcdn.com/image/fetch/$s_!NdVf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.png 1272w, https://substackcdn.com/image/fetch/$s_!NdVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d1f960-88db-4779-bee7-6511138902c0_1600x1062.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"><em>Swag: As well as the usual merch at the Summit, there were books by speakers, including Martin and Kent</em></figcaption></figure></div><h3>More effective two-pizza teams &amp; the future of pairing</h3><p><strong>Martin: </strong>&#8220;Are we seeing two-pizza teams [of 5-10 people] becoming one-pizza teams because agents don&#8217;t eat pizza, or do we see two-pizza teams staying and becoming much more effective and capable? My bet is on more effective two-pizza teams.</p><p>We&#8217;re beginning to see some interesting feedback in terms of pair programming. With pair programming, is it one human and the genie (AI) programming, or is it two humans and one genie? If it&#8217;s two of us, perhaps we can control the genie a bit better, and we also have interaction.</p><p>I&#8217;ll be very interested in reports of people trying to control genies in pairs, possibly even beyond pairs. There&#8217;s also the whole &#8216;mob programming&#8217; thing, and how that will go with genies. I don&#8217;t necessarily think that one person and many genies is the right answer.&#8221;</p><p><strong>Kent</strong>: &#8220;My experience of pairing with two humans, plus one or more genies, has been very positive. And the fact the AI is slow is really nice. Every time models come out and are faster, I&#8217;m like, &#8220;Oh, there&#8217;s less time to talk.&#8221; When the AI goes away for three minutes, we can talk about our philosophy of naming, or how we express conditionals, or about what we should be doing next. But if it pops back in 15 seconds, you don&#8217;t have time for that conversation.&#8221;</p><h2>4. Avoiding burnout with AI agents</h2><p><strong>Do you find yourself getting close to burnout, especially when spinning up multiple threads? Do you have strategies for managing the mental impact?</strong></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/cycles-of-disruption-in-the-tech">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: Industry leaders return to coding with AI]]></title><description><![CDATA[Mark Zuckerberg and Garry Tan join the trend of C-level folks jumping back into coding with AI. Also: a bad week for Claude Code and GitHub, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-industry-leaders-return</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-industry-leaders-return</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 02 Apr 2026 16:29:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Lw9q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf88b1aa-309a-49a2-bf21-63c4b281cefa_1552x456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</em></p><p>Today, we cover:</p><ol><li><p><strong>Founders back coding with AI: Mark Zuckerberg &amp; Garry Tan.</strong> The Meta chief is shipping diffs after 20 years, while Garry Tan at Y Combinator is knee-deep in coding, 15 years later. Founders with technical backgrounds being hands-on with AI agents could be a good thing &#8211; especially when the &#8220;honeymoon&#8221; period ends.</p></li><li><p><strong>A bad week for Claude Code and GitHub. </strong>Claude Code&#8217;s source code was leaked when a sourcemap file was accidentally uploaded, and revealed that the tool uses anti-distillation to deal with competitors, and also some potential future features such as an always-on background agent. Also: DMCA copyright strikes from Anthropic raise a big question: can a codebase that is fully AI-generated be covered by copyright?</p></li><li><p><strong>Industry pulse. </strong>Meta sets targets for AI-generated code, GitHub&#8217;s 6 years of reliability issues, massive job losses at Oracle, GitHub Copilot rollouts and then rolls back ads, RAM prices fall (for now), and more.</p></li></ol><h2>1. Founders back coding with AI: Mark Zuckerberg &amp; Garry Tan</h2><p>Two interesting stories of AI tools encouraging busy founders to start writing code again with AI agents.</p><h3>Mark Zuckerberg back to landing diffs, 20 years later</h3>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-industry-leaders-return">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Scaling Uber with Thuan Pham (Uber’s first CTO)]]></title><description><![CDATA[Thuan Pham (Uber's first CTO) on scaling Uber from constant outages to global infrastructure, the shift to microservices and platform teams, and how AI is reshaping engineering.]]></description><link>https://newsletter.pragmaticengineer.com/p/scaling-uber-with-thuan-pham-ubers</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/scaling-uber-with-thuan-pham-ubers</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:49:59 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/192665750/cb39c381900b42debebc05f86342e85d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/3jjRNVfm3V4">YouTube</a>, <a href="https://open.spotify.com/episode/13v42Y6P0TH36fVxZsMVmc">Spotify</a>, and <a href="https://podcasts.apple.com/us/podcast/the-pragmatic-engineer/id1769051199">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gh57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gh57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" width="800" height="70" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:70,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/185094534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.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_!Gh57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>&#8226; <strong><a href="http://statsig.com/pragmatic">Statsig</a></strong> &#8211; &#8288; The unified platform for flags, analytics, experiments, and more.Stop switching between different tools, and have them all in one place.</p><p>&#8226; <strong><a href="https://workos.com/">WorkOS</a></strong> &#8211; Everything you need to make your app enterprise ready. WorkOS gives you APIs to ship enterprise features in days: features like authentication, SSO, SCIM, RBAC, audit logs. Visit <a href="http://workos.com">WorkOS.com</a></p><p>&#8226; <strong><a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a></strong> &#8211; The makers of SonarQube, the industry standard for automated code review. <a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a> helps reduce outages, improve security, and lower risks associated with AI and agentic coding. <a href="https://www.sonarsource.com/products/sonarqube/advanced-security/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-advanced-security&amp;utm_content=podcast-sonarqube-advanced-security&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">See how SonarQube Advanced Security</a> is empowering the Agent Centric Development Cycle (AC/DC) with new capabilities like malicious package detection to provide the same rigorous guardrails for AI agents as you would for a human developer.</p><h3><strong>In this episode</strong></h3><p><a href="https://www.linkedin.com/in/thuanqpham/">Thuan Pham</a> was Uber&#8217;s first and longest-serving CTO, and today he&#8217;s the CTO of Faire, a B2B wholesale platform. Back when Thuan joined Uber, it had around 40 engineers and 30,000 rides per day, and the system crashed multiple times a week. Over seven years, he helped rebuild the system, move it from a monolith to microservices, and scaled the engineering organization behind it. <em>I had the privilege of working with Thuan for four of those seven years. Later, the very first issue of The Pragmatic Engineer newsletter was a <a href="https://newsletter.pragmaticengineer.com/p/program-platform-split-uber">deepdive into Uber&#8217;s Program and Platform split</a>. This episode of the podcast contains a nice &#8220;full circle&#8221; moment, where Thuan shares even more details about why Uber chose to embrace that structure.</em></p><p>We discuss what it takes to operate and build in that kind of environment. Thuan explains how he divided his time at Uber into three &#8220;tours of duty,&#8221; from stabilizing a fragile system, to re-architecting it, and scaling the org.</p><p>We go deep into the platform-and-program split, the Helix app rewrite, and what it took to launch Uber in China in just five months (the original estimate was 18 months). We also cover Uber&#8217;s in-house tools and explain why they were necessary to support rapid growth.</p><p>Finally, we discuss his role today as CTO of Faire, how the company is using AI, and how he sees AI changing software engineering.</p><h3><strong>Key observation from Thuan</strong></h3><p>14 takeaways from Thuan that I find the most interesting:</p><div id="youtube2-3jjRNVfm3V4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;3jjRNVfm3V4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/3jjRNVfm3V4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>1. Your professional reputation is a compounding asset that pays off unpredictably</strong>. Bill Gurley recruited Thuan to Uber based on knowing him from a startup a decade earlier. Similarly, when Thuan needed to hire for critical infrastructure teams at Uber, he reached out to engineers at VMware whom he&#8217;d previously worked with, and they followed him to the ridesharing app because they trusted him.</p><p><strong>2. The program/platform split came before microservices</strong>. The concept of cross-functional &#8220;program&#8221; teams and dedicated &#8220;platform&#8221; teams became necessary because an org split across backend, frontend and mobile engineers slowed down in execution speed when Uber grew to around 100 engineers. Every feature required negotiating bandwidth across the mobile, backend, and dispatch teams. Thuan, Travis Kalanick, and Jeff Holden literally used color-coded sticky notes with people&#8217;s names to reorganize into self-sufficient teams. We cover more about this split in the deepdive, <a href="https://newsletter.pragmaticengineer.com/p/program-platform-split-uber">The Platform and Program split at Uber.</a></p><p><strong>3. Microservices at Uber were more about surviving hypergrowth than anything else.</strong> Uber needed to decompose its massive monolith called &#8220;API.&#8221; To do so, a simple rule was applied: anything new needed to be built outside of the monolith so that no team blocked another. Teams started to build microservices, but decomposing the monolith took a good two years. Fun fact: in 2026, Uber has somewhat fewer microservices (around 4,500) than back in 2016 (around 5,000).</p><p><strong>4. When retiring a monolith, sometimes it gets even bigger before shrinking.</strong> After Uber decided to pull services out of the massive monolith, it still kept growing because the business kept adding features! There was an ugly middle phase before the monolith started to shrink. Keep this in mind if you look into decomposing a monolith.</p><p><strong>5. Expect multiple rewrites during hypergrowth.</strong> The right architecture depends on how fast a product and company are growing. At Uber, repeated rewrites were common because each one &#8220;bought&#8221; another window of survival for the company. Thuan&#8217;s recommendation is to understand that a rewrite simply means a company is outrunning its existing architecture: this is not necessarily a bad thing!</p><p><strong>6. Controversial launch advice: start with the hardest launch first. </strong>When Uber rolled out in China, Travis insisted on starting with Chengdu, the <em>largest</em> launch city. Looking back, it was scary but also helpful, as launching in the &#8220;hardest&#8221; city first gave the team confidence and made subsequent city launches much easier.</p><p><strong>7. Travis Kalanick spent 30+ hours interviewing Thuan. </strong>This took place over two weeks, as a series of one-on-ones. The sessions became a simulation of working together: disagreeing, aligning, and working things out. I&#8217;ve yet to hear of such an intense &#8211; and technical! &#8211; recruitment process by another CEO.</p><p><strong>8. Uber is the only major company that had a &#8220;Senior 1&#8221; and &#8220;Senior 2&#8221; level &#8211; and Thuan is unapologetic.</strong> Thuan introduced the Senior 1 (L5A) and Senior 2 (L5B) levels because the jump from senior (L5) to Staff (L6) became very big, and larger than between previous levels. One problem this split level created was that Uber&#8217;s L5B was akin to Google&#8217;s and Facebook&#8217;s L6/E6. Thuan resisted the title inflation of just renaming L5B to &#8216;Staff&#8217;.</p><p><strong>9. Name your services clearly; you don&#8217;t work at a &#8220;Mickey Mouse shop.&#8221; </strong>As Uber grew more complex, whimsical service names (like &#8220;Mustafa&#8221;) made navigating systems more tricky, and onboarding for new joiners more painful. Thuan sent a company-wide email which called for professional-sounding naming conventions, and reminded everyone that Uber was not a &#8220;Mickey Mouse shop.&#8221; The email didn&#8217;t fully solve the issue, but did force the growing org to take itself more seriously.</p><p><strong>10. Great engineering talent is global, so bring the opportunity to developers. </strong>During Thuan&#8217;s time, Uber opened nine engineering offices worldwide in order to access world-class talent. For example, the relatively small Denmark office built and operated core parts of Uber&#8217;s infrastructure, such as the trip datastore, <a href="https://www.uber.com/blog/schemaless-part-two-architecture/">Schemaless</a>.</p><p><strong>11. What&#8217;s the most important part of a CTO&#8217;s job? </strong>Thuan thinks that it&#8217;s to build a high-talent-density team, and to &#8220;see around the corner&#8221; 18&#8211;24 months in advance. As he puts it: &#8220;your team handles the six-month problems, while you figure out what the organization needs to look like two years from now.&#8221;</p><p><strong>12. The hardest use case of AI in software engineering is building new features on legacy codebases. </strong>At Faire, Thuan&#8217;s team uses &#8220;swarm coding&#8221; (orchestrated AI agents working in parallel) and some engineers there have doubled their output in three months. But generating greenfield code is easy; the real challenge is dealing with millions of lines of code and building features on top with all those existing dependencies.</p><p><strong>13. AI raises the floor, but doesn&#8217;t change what makes engineers great. </strong>AI enables people who can&#8217;t code to produce decent apps, but great engineers are still finding ways to leverage AI tools and accelerate even more. The differentiators remain the same as before AI: curiosity, fearlessness, and a willingness to innovate and learn new things.</p><p><strong>14. Thuan&#8217;s career advice: think of it in phases. </strong>Each segment of your career has different priorities, which Thuan sees like this:</p><ul><li><p>First 5&#8211;10 years: seek maximum learning and push yourself hard.</p></li><li><p>Mid-career as a senior/staff engineer: seek roles to make an outsized impact in, perhaps at a smaller company.</p></li><li><p>In leadership roles: teach and coach others, and bring them along with you.</p></li></ul><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><ul><li><p><a href="https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development">How Uber uses AI for development: inside look</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/program-platform-split-uber">The Platform and Program split at Uber</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/uber-eng-productivity">How Uber is measuring engineering productivity</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/uber-move-to-cloud">Inside Uber&#8217;s move to the cloud</a></p></li><li><p><a href="https://blog.pragmaticengineer.com/uber-app-rewrite-yolo/">Uber&#8217;s crazy YOLO app rewrite, from the front seat</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/how-uber-built-its-observability-platform">How Uber built its observability platform</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/developer-experience-at-uber">Developer experience at Uber</a> with Gautam Korlam</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/the-scoop-46">Uber&#8217;s engineering level change</a></p></li></ul><h3><strong>Timestamps</strong></h3><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=332s">05:32</a>) Getting into tech</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=969s">16:09</a>) The dot-com bust</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=1242s">20:42</a>) VMware</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=1589s">26:29</a>) Getting hired by Travis at Uber</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=2002s">33:22</a>) Early days at Uber and scaling challenges</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=2457s">40:57</a>) Uber&#8217;s China launch</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=2832s">47:12</a>) The platform and program split</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=3026s">50:26</a>) From monolith to microservices</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=3218s">53:38</a>) Internal tools at Uber</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=3425s">57:05</a>) Helix: Uber&#8217;s mobile app rewrite</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=3595s">59:55</a>) Thuan&#8217;s email about naming</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=3723s">1:02:03</a>) Org structure changes under</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=3994s">1:06:34</a>) Thuan&#8217;s work philosophy</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=4343s">1:12:23</a>) The &#8220;three tours of duty&#8221; at Uber</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=4537s">1:15:37</a>) Why Thuan left Uber</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=4654s">1:17:34</a>) Coupang and Nubank</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=4919s">1:21:59</a>) Faire</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=5131s">1:25:31</a>) How Faire uses AI</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=5304s">1:28:24</a>) AI&#8217;s impact on software engineering</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=5469s">1:31:09</a>) The role of the CTO</p><p>(<a href="https://www.youtube.com/watch?v=3jjRNVfm3V4&amp;t=5713s">1:35:13</a>) Career advice</p><h3><strong>References</strong></h3><p><strong>Where to find Thuan Pham:</strong></p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/thuanqpham">https://www.linkedin.com/in/thuanqpham</a></p><p><strong>Mentions during the episode:</strong></p><p>&#8226; HP Labs: <a href="https://www.hp.com/hk-en/shop/tech-takes/post/what-is-hp-labs">https://www.hp.com/hk-en/shop/tech-takes/post/what-is-hp-labs</a></p><p>&#8226; Silicon Graphics: <a href="https://en.wikipedia.org/wiki/Silicon_Graphics">https://en.wikipedia.org/wiki/Silicon_Graphics</a></p><p>&#8226; Miro: <a href="https://miro.com">https://miro.com</a></p><p>&#8226; VMware: <a href="https://www.vmware.com">https://www.vmware.com</a></p><p>&#8226; Bill Gurley on LinkedIn: <a href="https://www.linkedin.com/in/billgurley">https://www.linkedin.com/in/billgurley</a></p><p>&#8226; Travis Kalanick on X: <a href="https://x.com/travisk">https://x.com/travisk</a></p><p>&#8226; DiDi: <a href="https://web.didiglobal.com">https://web.didiglobal.com</a></p><p>&#8226; The Platform and Program Split at Uber: A Milestone Special: <a href="https://newsletter.pragmaticengineer.com/p/the-platform-and-program-split-at">https://newsletter.pragmaticengineer.com/p/the-platform-and-program-split-at</a></p><p>&#8226; Rewriting Uber Engineering: The Opportunities Microservices Provide: <a href="https://www.uber.com/blog/building-tincup-microservice-implementation">https://www.uber.com/blog/building-tincup-microservice-implementation</a></p><p>&#8226; Up: Portable Microservices Ready for the Cloud: <a href="https://www.uber.com/blog/up-portable-microservices-ready-for-the-cloud/">https://www.uber.com/blog/up-portable-microservices-ready-for-the-cloud</a></p><p>&#8226; How Uber Built its Observability Platform: <a href="https://newsletter.pragmaticengineer.com/p/how-uber-built-its-observability-platform">https://newsletter.pragmaticengineer.com/p/how-uber-built-its-observability-platform</a></p><p>&#8226; The Uber Engineering Tech Stack, Part I: The Foundation: <a href="https://www.uber.com/blog/tech-stack-part-one-foundation">https://www.uber.com/blog/tech-stack-part-one-foundation</a></p><p>&#8226; How Ringpop from Uber Engineering Helps Distribute Your Application: <a href="https://www.uber.com/blog/ringpop-open-source-nodejs-library">https://www.uber.com/blog/ringpop-open-source-nodejs-library</a></p><p>&#8226; PostgreSQL: <a href="https://en.wikipedia.org/wiki/PostgreSQL">https://en.wikipedia.org/wiki/PostgreSQL</a></p><p>&#8226; MySQL: <a href="https://www.mysql.com">https://www.mysql.com</a></p><p>&#8226; Uber&#8217;s Crazy YOLO App Rewrite, From the Front Seat: <a href="https://blog.pragmaticengineer.com/uber-app-rewrite-yolo">https://blog.pragmaticengineer.com/uber-app-rewrite-yolo</a></p><p>&#8226; Hypergrowth startups: Uber and CloudKitchens with Charles-Axel Dein: <a href="https://newsletter.pragmaticengineer.com/p/high-growth-startups-uber-and-cloudkitchens">https://newsletter.pragmaticengineer.com/p/high-growth-startups-uber-and-cloudkitchens</a></p><p>&#8226; Coupang: <a href="https://www.aboutcoupang.com">https://www.aboutcoupang.com</a></p><p>&#8226; Nubank: <a href="https://international.nubank.com.br">https://international.nubank.com.br</a></p><p>&#8226; Max Rhodes on LinkedIn: <a href="https://www.linkedin.com/in/max-rhodes">https://www.linkedin.com/in/max-rhodes</a></p><p>&#8226; Sequoia: <a href="https://sequoiacap.com">https://sequoiacap.com</a></p><p>&#8226; Wyan Gretzky&#8217;s quote: <a href="https://www.brainyquote.com/quotes/wayne_gretzky_383282">https://www.brainyquote.com/quotes/wayne_gretzky_383282</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[What is inference engineering? Deepdive]]></title><description><![CDATA[Many engineers use inference daily, but inference engineering is a bit obscure &#8211; and an area rich with interesting challenges. Philip Kiely, author of the new book, &#8220;Inference Engineering,&#8221; explains]]></description><link>https://newsletter.pragmaticengineer.com/p/what-is-inference-engineering</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/what-is-inference-engineering</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 31 Mar 2026 17:01:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FctC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Two years ago, we learned about <a href="https://blog.pragmaticengineer.com/how-does-chatgpt-work/">how LLMs work</a> at a high level from <a href="https://blog.pragmaticengineer.com/how-does-chatgpt-work/">the ChatGPT team</a>, and today, almost all software engineers use large language models (LLMs) in our day-to-day work. The most visible part of using an LLM is <strong>inference</strong>; when an existing model takes an input (prompt) and generates an output, one token at a time. So, with AI models and AI agents everywhere across the tech industry in 2026, that means so is inference.</p><p><strong>And now, inference engineering is becoming more widespread, too, as open LLM models grow more capable. </strong>This is because with closed models, inference engineering is done only by the AI engineers who build the model, whose number might add up to a few thousand globally. In contrast, with the open models which tech companies are adopting, it&#8217;s possible to tweak them to perform better at inference. For example, Cursor built its new Composer 2.0 model <a href="https://newsletter.pragmaticengineer.com/i/192229275/backlash-after-cursor-hides-that-composer-2-is-based-on-open-source-model">on top of</a> the open Kimi 2.5 model, and successfully used plenty of inference engineering approaches to make it even faster.</p><p>So, based on this industry-wide prevalence and the related need for superior technical performance, it&#8217;s worth understanding a bit about what inference engineering actually is, and some interesting approaches worth knowing about, as a software engineer.</p><p>For some answers, I turned to <a href="https://x.com/philipkiely">Philip Kiely</a>, a software engineer who has been working for four years at the inference startup, Baseten. With his hard-earned experience, Philip has written an excellent, in-depth book about precisely this topic, <em>&#8220;Inference Engineering.&#8221;</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FctC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FctC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FctC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FctC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FctC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FctC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;: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="" srcset="https://substackcdn.com/image/fetch/$s_!FctC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FctC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FctC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FctC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39fe534-3703-4096-acc3-fcc01d4d5d00_1600x1200.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"><em>My personal copy of Inference Engineering</em></figcaption></figure></div><p>In today&#8217;s issue, we cover:</p><ol><li><p><strong>Setting the stage: why is inference so important? </strong>More capable, widespread, open models are driving demand for inference engineering.</p></li><li><p><strong>What is inference? </strong>As the phase that comes after training a model, the inference layer introduces new engineering challenges like batching, caching, and quantization.</p></li><li><p><strong>When is inference engineering needed?</strong> Investing in this area is typically worth it when your product and usage scales up, and there are product requirements which a current, off-the-shelf solution lacks.</p></li><li><p><strong>What hardware does inference use? </strong>Datacenter GPUs are the most common, while on-premises, air-gapped GPUs are also employed.</p></li><li><p><strong>What software does inference use? </strong>Commonly-used software includes NVIDIA&#8217;s CUDA and Dynamo, as well as hardware-agnostic projects like PyTorch, vLLM, and others, which are growing in popularity.</p></li><li><p><strong>What infrastructure does inference need? </strong>Autoscaling is a baseline requirement. Kubernetes is a popular choice for autoscaling inside a cluster, while multi-cloud inference might be necessary for high-scale use cases.</p></li><li><p><strong>Five approaches to make inference faster. </strong>Quantization (reducing the numerical precision of a model&#8217;s weights), speculative decoding (taking advantage of spare compute to generate &#8220;draft tokens&#8221;), caching, parallelism (tensor parallelism and expert parallelism) and disaggregation (separating the prefill and decode phases to run on separate workers, not the same GPU).</p></li></ol><p>This deepdive uses a few abbreviations and concepts that are everyday lingo for inference engineers, but maybe are not for those less versed in the domain:</p><ul><li><p><strong>CUDA: </strong>Compute Unified Device Architecture. NVIDIA&#8217;s proprietary API to program NVIDIA GPUs for high-performance computing, including LLM-related use cases.</p></li><li><p><strong>TTFT</strong>: time to first token. Think of this as the &#8220;time to process the prompt.&#8221; This metric determines the perceived responsiveness of models and GenAI systems.</p></li><li><p><strong>TPS</strong>: tokens per second. Akin to a model&#8217;s &#8220;typing speed.&#8221;</p></li><li><p><strong>ITL</strong>: intertoken latency. The time between generating one token and the next.</p></li><li><p><strong>KV cache</strong>: key-value cache. The cached results of the attention algorithm, reused between requests to speed up inference. <em>We cover more on KV cache in the <a href="https://newsletter.pragmaticengineer.com/i/141865286/challenge-1-kv-cache-and-gpu-ram">Scaling ChatGPT deepdive</a>.</em></p></li><li><p><strong>Prefill / decode: </strong>the two phases of inference. Prefill is when the model takes the full input and processes tokens, outputting the KV cache. Decode is the phase in which the model generates one token at a time.</p></li><li><p><strong>MoE</strong>: Mixture of Experts. An architecture that enables models to be pretrained with far less compute. <a href="https://huggingface.co/blog/moe#what-is-a-mixture-of-experts-moe">More details on this approach.</a></p></li></ul><p>Below is an introduction to inference adapted from Philip&#8217;s book, &#8220;<em>Inference Engineering,&#8221; which </em>is <a href="https://baseten.com/inference-engineering">free to download as an e-book</a>. Physical copies are currently sold out, but Philip is printing more as fast as possible.</p><p><em>My usual disclaimer: as with all my recommendations, I was not paid to mention this book, and no links in this article are affiliates. See my <a href="https://blog.pragmaticengineer.com/ethics-statement/">ethics statement</a> for more.</em></p><p><em>With that, it&#8217;s over to Philip:</em></p><h2>1. Setting the stage: why is inference so important?</h2><p>Inference is the most valuable category in the AI industry, but inference engineering, on the other hand, is still in its infancy. In their work, inference engineers work across the stack from CUDA to Kubernetes in pursuit of faster, less expensive, and more reliable serving of generative AI models in production.</p><p>When ChatGPT launched in late 2022, there were perhaps a few hundred inference engineers in the world, and they didn&#8217;t call themselves that. These specialists mostly worked at frontier labs like OpenAI, Midjourney, and Anthropic, or at big tech companies like Google and NVIDIA.</p><p>Back then, it looked like this might be the way of the AI industry: that training generative AI models would be so hard and expensive that only a handful of companies would develop closed models and thereby require inference engineering for production serving. In that alternate future, the rest of the world would be mere consumers of AI via APIs, renting intelligence a token at a time.</p><p>Three years later, it turns out that training generative AI models is indeed both hard and expensive &#8211; but it&#8217;s not so hard and expensive to be limited to a handful of players. Instead, a proliferation of open models &#8211; more than two million and counting on <a href="https://huggingface.co/">Hugging Face</a> (the &#8220;GitHub for AI&#8221;) &#8211; means that today every engineer can now deploy their own intelligence to power AI products.</p><p>Research labs around the world, from OpenAI and NVIDIA Nemotron in America, to Mistral AI and Black Forest Labs in Europe, to Alibaba Qwen, DeepSeek AI, Z AI, and Moonshot AI in China, regularly release open models of all modalities.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hir-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hir-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png 424w, https://substackcdn.com/image/fetch/$s_!Hir-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png 848w, https://substackcdn.com/image/fetch/$s_!Hir-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png 1272w, https://substackcdn.com/image/fetch/$s_!Hir-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hir-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png" width="1456" height="1188" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1188,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hir-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png 424w, https://substackcdn.com/image/fetch/$s_!Hir-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png 848w, https://substackcdn.com/image/fetch/$s_!Hir-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.png 1272w, https://substackcdn.com/image/fetch/$s_!Hir-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb80caa-61e3-4346-bafc-3ffda6aa18bf_1600x1305.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">Well over two million open models on Hugging Face, 25 times more than five years ago</figcaption></figure></div><p>Despite closed models getting smarter and cheaper, the movement into open models is accelerating, which differ by the availability of their weights:</p><ul><li><p><strong>Closed model: </strong>A proprietary model whose weights are unavailable to the public, like GPT-5 and Claude Sonnet.</p></li><li><p><strong>Open model: </strong>A model whose weights are publicly available, like Llama or DeepSeek, and which is usually released under the MIT license, or a similar permissive license (some models restrict commercial use, so always double-check license terms).</p></li></ul><p>Before December 2024, there was a meaningful gap in intelligence between closed and open models, but when DeepSeek V3 and R1 were released, that gap disappeared. <em>Note from Gergely: we previously covered <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-122-deepseek-rocks-the">how DeepSeek&#8217;s release rocked the AI industry.</a></em></p><p>Today, new closed models are matched by open models within months if not weeks, and occasionally, open models like Kimi K2 Thinking even exceed closed models&#8217; capabilities for brief periods.</p><p>Despite the fact that open models are constantly chasing closed models on benchmarks, they nonetheless change the equation for AI product builders. And as both types improve, closed and open models cross capability thresholds.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TyQk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TyQk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png 424w, https://substackcdn.com/image/fetch/$s_!TyQk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png 848w, https://substackcdn.com/image/fetch/$s_!TyQk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!TyQk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TyQk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png" width="1456" height="997" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:997,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TyQk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png 424w, https://substackcdn.com/image/fetch/$s_!TyQk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png 848w, https://substackcdn.com/image/fetch/$s_!TyQk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!TyQk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0874a12e-2bf7-4ab8-80ce-19ba8db78283_1600x1096.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"><em>Open and closed models improve rapidly, making new products possible</em></figcaption></figure></div><p>In 2022, it was impossible to build the kinds of AI-native products that define the industry today. But over time, closed models got smarter and new categories like customer service voice agents and AI-powered IDEs became possible. The early models were slow, expensive, and unreliable, but the capabilities were there and AI engineers began building companies around them.</p><p><strong>As open models crossed the same capability thresholds, these folks began using them to replace closed models.</strong> Many also began fine-tuning open models to cross capability thresholds faster, and even exceed closed model quality in their specific product and domain.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k0BW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k0BW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png 424w, https://substackcdn.com/image/fetch/$s_!k0BW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png 848w, https://substackcdn.com/image/fetch/$s_!k0BW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!k0BW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k0BW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png" width="1456" height="997" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:997,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k0BW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png 424w, https://substackcdn.com/image/fetch/$s_!k0BW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png 848w, https://substackcdn.com/image/fetch/$s_!k0BW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!k0BW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776ec68f-41aa-401d-8f4f-8afb231ab590_1600x1096.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"><em>Customizing open models retains control over latency, reliability, and economics</em></figcaption></figure></div><p>Switching to open models means the opportunity to use inference engineering to make the models powering AI products better in new ways:</p><ul><li><p><strong>Latency:</strong> Closed model APIs are built for throughput, but open models can be optimized for real-time applications.</p></li><li><p><strong>Availability: </strong>While APIs for GPT and Claude are stuck at two nines of uptime, it&#8217;s possible to achieve four nines or better with dedicated deployments of open models.</p></li><li><p><strong>Cost:</strong> Open models are often at least 80 percent less expensive at scale.</p></li></ul><p>So, whereas three years ago it looked like inference engineering was a niche field, the fact is that today, every company aiming to build truly differentiated and competitive AI products needs an inference strategy.</p><p>AI-native startups like Cursor, Clay, Gamma, and Mercor are redefining hypergrowth by building products that rely on open and in-house models. Leading digital native companies like Notion and Superhuman succeed by deeply integrating AI capabilities into their category-defining products.</p><p>Elsewhere, a new generation of blended research and engineering teams &#8211; World Labs, Writer, Mirage, and dozens more &#8211; are building businesses by training and productizing their own foundation models.</p><p>Adoption is even strong in enterprise and regulated industries, which historically were slow to adopt new technologies. Companies like OpenEvidence, Abridge, and Ambience are making generative AI ubiquitous in healthcare, while at the world&#8217;s largest companies, AI initiatives are moving past the pilot stage into massive user adoption. Market-wide demand for inference means that everyone from developers to executives has the opportunity to learn inference engineering and use it to advance their career and business.</p><p>I&#8217;ve been incredibly fortunate to have a front-row seat in the fastest-moving market in history over the last four years at Baseten, where we power mission-critical inference for the best AI products, including every company listed in the previous paragraphs.</p><p><strong>The good news is that you are early. </strong>There are still relatively few professionals working on inference, and newcomers can become experts quickly. Also, the potential and impact of inference is becoming ever clearer, but the domain is still in its infancy. That means there are enormous opportunities to solve novel, interesting, and deeply technical problems at all levels of the stack.</p><h2>2. What is inference?</h2><p>Inference is the second phase of a generative AI model&#8217;s lifecycle:</p><ul><li><p><strong>Training:</strong> The process of learning model weights from data.</p></li><li><p><strong>Inference:</strong> Serving generative AI models in production.</p></li></ul><p>During the past decade&#8217;s machine learning (ML) boom, hundreds of thousands of data scientists and ML engineers became familiar with the full lifecycle of training and inference for ML models.</p><p>Inference for classic ML models is relatively straightforward. In the early days of Baseten, we ran inference for models built with tools like XGBoost on lightweight CPUs with a simple software stack.</p><p>In contrast, inference for generative AI models is complex. You can&#8217;t simply take model weights, get some GPUs, and expect inference to be fast and reliable enough for large-scale production use. Doing inference well requires three layers:</p><ul><li><p><strong>Runtime:</strong> Optimizing the performance of a single model on a single GPU-backed instance.</p></li><li><p><strong>Infrastructure:</strong> Scaling across clusters, regions, and clouds without creating silos, while maintaining excellent uptime.</p></li><li><p><strong>Tooling:</strong> Providing engineers working on inference with the right level of abstraction to balance control with productivity.</p></li></ul><p>These three layers must work together to create a system that can handle mission-critical inference at scale.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Aqry!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aqry!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 424w, https://substackcdn.com/image/fetch/$s_!Aqry!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 848w, https://substackcdn.com/image/fetch/$s_!Aqry!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!Aqry!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aqry!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png" width="1456" height="1461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1461,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Aqry!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 424w, https://substackcdn.com/image/fetch/$s_!Aqry!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 848w, https://substackcdn.com/image/fetch/$s_!Aqry!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!Aqry!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba5fc58-2204-4293-820e-c6b60467e165_1595x1600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A complete inference stack includes runtime and infrastructure optimizations</figcaption></figure></div><p>The runtime layer is responsible for ensuring an individual model running on a GPU (or across several GPUs in a single instance) runs as performantly and efficiently as possible. This layer depends on a sophisticated software stack, from CUDA, to PyTorch, to inference engines like vLLM, SGLang, and TensorRT-LLM. Low-level optimization is important, with kernels like FlashAttention delivering significant performance gains.</p><p>The runtime layer relies on a number of model performance techniques that apply new research to the challenges of inference on generative AI models:</p><ul><li><p><strong>Batching:</strong> Run incoming requests in parallel, weaving them together on a token-by-token basis to increase throughput.</p></li><li><p><strong>Caching:</strong> Reuse the KV cache &#8211; the cached results of the attention algorithm &#8211; between requests that share prefixes.</p></li><li><p><strong>Quantization:</strong> Lower the precision of select pieces of the model to access more compute and reduce memory burden.</p></li><li><p><strong>Speculation:</strong> Generate and validate draft tokens to produce more than one token per forward pass during decode.</p></li><li><p><strong>Parallelism:</strong> Efficiently leverage more than one GPU to accelerate large models without introducing new bottlenecks.</p></li><li><p><strong>Disaggregation:</strong> Separate the two phases of LLM inference, prefill and decode, onto independently scaling workers.</p></li></ul><p>These model performance techniques are used for all modalities and not just LLMs, such as vision language models, embedding models, automatic speech recognition, speech synthesis, image generation, and video generation, which extend the capabilities of AI systems and require their own inference optimizations. But these runtime optimizations are not enough: no matter how performant a single instance of a model server is, it will eventually receive more traffic than it can handle. This is not a CUDA problem or a PyTorch problem, it&#8217;s a systems problem that needs to be solved at the infrastructure layer.</p><p>The nature of infrastructure problems changes at each level of scale. At first, the problems are around autoscaling: knowing when to add and remove replicas, and figuring out how to do so quickly.</p><p><strong>Past a certain scale &#8211; generally a few hundred GPUs &#8211; infrastructure problems are defined by capacity.</strong> To get access to enough GPUs, inference engineers begin spreading workloads across multiple regions and cloud providers. This quickly leads to silos, where models in one cluster may be starved for resources while other clusters have unused capacity. The final level of scale in infrastructure is a global system that treats all available resources as a single unified pool of compute.</p><p>Thoughtful multi-cloud infrastructure also improves reliability, protecting against downtime in any individual region or cloud provider. And for global applications, running inference near to end users improves end-to-end latency.</p><p>Once these runtime and infrastructure capabilities are built, they need to be presented at the appropriate level of abstraction. Inference providers like Baseten and internal teams building inference need to consider what tooling and developer experience to provide as the critical third layer in a complete inference platform.</p><p>Of course, developer experience is subjective. For inference, one extreme is the black box: give a platform model weights, and get back an API. At the other extreme is providing only basic constructs for compute, network, disk, and so forth.</p><p>The right developer experience is somewhere in the middle, where inference engineers have enough control to run mission-critical inference confidently, and enough abstraction to work productively.</p><p>This article &#8211; which is an excerpt of <em>Inference Engineering</em> &#8211; presents an overview of the technologies and techniques that power inference across all three layers of runtime, infrastructure, and tooling.</p><h2>3. When is inference engineering needed?</h2><p>Inference engineering adds speed and scale to AI products by optimizing production serving of generative models. Optimization means identifying the best solution from a range of options.</p><p>Before optimizing model performance and building robust infrastructure, you need to know what &#8220;best&#8221; means for your product; many performance improvements come from making tradeoffs in latency, throughput, and quality. In practice, optimization is often about finding the right balance, rather than maximizing a single factor.</p><p>For example, NFL players are big, fast, and strong. But they&#8217;re not as big as sumo wrestlers, fast as Olympic sprinters, or strong as champion powerlifters. Their bodies and skills are optimized to fulfill the specific demands of their position over the course of a full season.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BjhW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BjhW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png 424w, https://substackcdn.com/image/fetch/$s_!BjhW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png 848w, https://substackcdn.com/image/fetch/$s_!BjhW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png 1272w, https://substackcdn.com/image/fetch/$s_!BjhW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BjhW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png" width="1456" height="733" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:733,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BjhW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png 424w, https://substackcdn.com/image/fetch/$s_!BjhW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png 848w, https://substackcdn.com/image/fetch/$s_!BjhW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.png 1272w, https://substackcdn.com/image/fetch/$s_!BjhW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd0e2b2-8865-4806-9c03-58289d752f05_1600x805.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"><em>Like elite athletes, inference services must be specialized for the demands of their workloads</em></figcaption></figure></div><p>Similarly, your inference system must be optimized to fulfill the specific demands of your model, product, and traffic. The more constraints you can introduce, the better the outcomes that can be achieved.</p><p>You should know:</p><ul><li><p><strong>Model requirements: </strong>Which model(s) do you need to run inference on?</p></li><li><p><strong>Application interface: </strong>How will inputs be delivered to the model, and how is the output expected to be formatted?</p></li><li><p><strong>Latency budget: </strong>How fast does your product need to respond to a user action, end-to-end?</p></li><li><p><strong>Unit economics: </strong>How much sense does it make to spend on a per-request, per-user, or per-month basis?</p></li><li><p><strong>Usage patterns: </strong>How many concurrent users are you serving, and is there any pattern to their usage (e.g., more activity during business hours)?</p></li></ul><p>Early in building an AI product, the answers to these questions may not be clear. At this point, it&#8217;s often better to use off-the-shelf APIs whenever possible, rather than investing in dedicated inference. But as a product scales, the requirements become clear and inference engineering becomes a worthwhile pursuit.</p><h2>4. What hardware does inference use?</h2><p>Inference engineering relies on accelerators: powerful hardware designed to load terabytes of data and perform trillions of operations per second.</p><p>The most common type of accelerator for inference is the GPU, and the market leader in GPUs for inference is NVIDIA. My book focuses on inference engineering for NVIDIA GPUs in the datacenter, and also covers other vendors of datacenter accelerators and local inference.</p><p>Across vendors, there are three types of GPUs on the market:</p><ul><li><p><strong>Datacenter GPUs: </strong>Racked servers with interconnected high-performance GPUs. Example: NVIDIA B200.</p></li><li><p><strong>Workstation GPUs: </strong>Individual desktop GPUs for professional workflows. Example: NVIDIA RTX Pro 6000.</p></li><li><p><strong>Personal computing GPUs: </strong>Individual desktop GPUs for everyday use. Example: NVIDIA GeForce RTX 5090.</p></li></ul><p>Inference at scale uses datacenter GPUs mounted on racks: refrigerator-sized chassis with standardized power, networking, and cooling.</p><p>Datacenter GPUs like the <a href="https://www.nvidia.com/en-us/data-center/dgx-b200/">NVIDIA B200</a> offer the highest individual performance, and more importantly, include high-bandwidth GPU-to-GPU interconnects, are installed in highly standardized configurations, and are available by the millions in datacenters worldwide.</p><p>I doubt there is a B200 GPU running under your desk, but if there is, please send me a picture! Instead, inference on datacenter GPUs runs in one of three modes:</p><ul><li><p><strong>Cloud: </strong>GPUs are rented in someone else&#8217;s datacenter, usually hyperscalers like AWS and GCP, or neoclouds like CoreWeave and Nebius.</p></li><li><p><strong>On-premises: </strong>GPUs are purchased and installed in a datacenter that you control directly.</p></li><li><p><strong>Air-gapped: </strong>GPUs are installed on-prem and you need to physically access the GPUs to run inference.</p></li></ul><p>Most inference engineers use cloud GPUs. Large enterprises and governments run on-prem and air-gapped deployments, but cloud-based GPUs offer the flexibility and access that fast-growing AI products need to scale.</p><p>Even with constraints, navigating the hardware landscape is complex. From variations between cloud providers, to NVIDIA&#8217;s personal naming conventions, there are many nuances in selecting the right accelerator.</p><h2>5. What software does inference use?</h2><p>NVIDIA&#8217;s market dominance in the inference space is in no small part due to the robust, mature software ecosystem around its hardware. Hardware iteration cycles are slow. Best-in-class hardware companies like Apple and NVIDIA release new architectures and generations at most annually, with two-year release cycles being more common. But software iteration is fast. Often, to run a newly released open model on day zero, you need to install a nightly build or other pre-release version of each software dependency just to get support for the new model.</p><p>Software&#8217;s fast iteration cycle and lower barrier to entry dramatically expands the landscape of inference engineering. There are countless companies building software at various levels of the inference stack, in contrast to hardware, which centers on NVIDIA and a few competitors.</p><p>For inference engineers, these are some of the key software players:</p><ul><li><p><strong>NVIDIA:</strong> Invests heavily in its own sometimes-proprietary software ecosystem, from CUDA up to Dynamo.</p></li><li><p><strong>Hugging Face:</strong> Maintains a model registry for all open models plus <a href="https://huggingface.co/docs/transformers/en/index">transformers</a> (models built on the <a href="https://en.wikipedia.org/wiki/Transformer_(deep_learning)">transformer architecture</a>), and <a href="https://huggingface.co/docs/diffusers/index">diffusers</a> (models built on the <a href="https://en.wikipedia.org/wiki/Diffusion_model">diffusion-based</a> generative ones).</p></li><li><p><strong>The Linux Foundation:</strong> Maintains hardware-agnostic projects like PyTorch and vLLM.</p></li><li><p><strong>LMSYS Org:</strong> Develops essential tools for inference and evaluation, most notably SGLang.</p></li></ul><p>There are thousands more companies, universities, and research institutions making essential open-source contributions to inference. Over time, technologies have been built at increasing levels of abstraction:</p><ul><li><p><strong>CUDA: </strong>Direct communication to the GPU for explicit control over computations and memory.</p></li><li><p><strong>Deep learning frameworks: </strong>Abstractions over CUDA for training, exporting, and running neural networks in Python.</p></li><li><p><strong>Inference engines: </strong>Highly configurable PyTorch-backed inference for common architectures.</p></li><li><p><strong>NVIDIA Dynamo: </strong>Sits on top of inference engines to power large-scale deployments.</p></li></ul><p>Most inference engineering today happens at the higher levels of abstraction, configuring and deploying inference engines and orchestrating inference across multiple GPUs. No matter which level of the stack you work at, it&#8217;s essential to have a strong mental model for the adjacent levels of abstraction to guide your work.</p><h2>6. What infrastructure does inference need?</h2><p>When you scale production traffic, your assumptions are rigorously tested. Everything from input and output sequence lengths, to traffic patterns, to what topic a user decides to chat about; they all impact your observed performance in production. And maintaining secure, robust infrastructure is an entirely different skillset from optimizing model inference on the GPU.</p><p>No matter how fast and efficiently a single instance can serve a model, the service will be overwhelmed if traffic gets high enough. It&#8217;s an infrastructure problem, not with PyTorch or CUDA, and it requires a different mindset and different technologies.</p><p>Scaling in production introduces new complexities about where and how to get GPUs, balance traffic across them, and prevent downtime. The goal of autoscaling is to ensure you always have enough resources to serve all incoming requests, while maintaining latency SLAs and without wasting money on idle GPUs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k4ge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k4ge!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png 424w, https://substackcdn.com/image/fetch/$s_!k4ge!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png 848w, https://substackcdn.com/image/fetch/$s_!k4ge!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png 1272w, https://substackcdn.com/image/fetch/$s_!k4ge!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k4ge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png" width="1456" height="854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k4ge!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png 424w, https://substackcdn.com/image/fetch/$s_!k4ge!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png 848w, https://substackcdn.com/image/fetch/$s_!k4ge!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.png 1272w, https://substackcdn.com/image/fetch/$s_!k4ge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58d466c2-fc03-4920-80ba-909b6d08a471_1600x939.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"><em>Without autoscaling, inference systems waste resources during traffic lulls and miss SLAs during traffic spikes</em></figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5hww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5hww!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png 424w, https://substackcdn.com/image/fetch/$s_!5hww!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png 848w, https://substackcdn.com/image/fetch/$s_!5hww!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png 1272w, https://substackcdn.com/image/fetch/$s_!5hww!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5hww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png" width="1456" height="854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5hww!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png 424w, https://substackcdn.com/image/fetch/$s_!5hww!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png 848w, https://substackcdn.com/image/fetch/$s_!5hww!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.png 1272w, https://substackcdn.com/image/fetch/$s_!5hww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5223ec4d-8b1e-4eb4-86f2-364e026cf470_1600x939.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"><em>A strong autoscaling system for inference matches resources to demand</em></figcaption></figure></div><p>Autoscaling systems use Kubernetes, an open-source container orchestration system, along with a cluster-level system for provisioning and deallocating compute. Kubernetes can run one or more replicas of a model container, each on its own instance. An instance includes the GPUs and other hardware resources that the container requires.</p><p>Unless your traffic is unusually consistent, there probably isn&#8217;t a specific number of replicas that perfectly matches your needs.</p><p>Autoscaling is the practice of dynamically adjusting the number of replicas allocated to a given model within a cluster. There are two ways to make autoscaling decisions:</p><ul><li><p><strong>Utilization:</strong> Scale up or down based on GPU utilization signals like memory usage or compute usage.</p></li><li><p><strong>Traffic:</strong> Scale up and down based on the number of requests being processed in the system.</p></li></ul><p>Utilization and traffic don&#8217;t always match. For example, in LLM prefill, a few requests with hundreds of thousands of uncached input tokens could cause much higher utilization than many small requests with high cache hit rates.</p><p>Traffic-based scaling decisions can be made proactively, while utilization is a lagging indicator. Use both in combination to keep system resources matched with demand.</p><p>When designing a traffic-based autoscaling system, you want to configure five factors:</p><ul><li><p><strong>Min replicas:</strong> What is the minimum number of replicas that stay running, regardless of traffic?</p></li><li><p><strong>Max replicas:</strong> What is the maximum number of replicas you can allocate when traffic is high?</p></li><li><p><strong>Autoscaling window:</strong> How long is the sliding timeframe used to measure traffic and make autoscaling decisions?</p></li><li><p><strong>Scale down delay:</strong> For how long after a scale-down is suggested do you wait, in case there&#8217;s another traffic spike?</p></li><li><p><strong>Concurrency target:</strong> How many requests can each replica handle at once?</p></li></ul><p>The exact configuration determines how well the autoscaling system achieves its goals of maintaining latency SLAs without wasting resources. For example, increasing the scale-down delay prevents premature scaledowns for spikey traffic, but could result in unnecessary spend after traffic has properly cooled down.</p><p>Autoscaling within a single cluster works up to a certain point, but high-volume deployments serving a global user base need thousands of GPUs distributed around the world.</p><p>It&#8217;s straightforward to build multi-cloud inference as a collection of siloed compute across different cloud providers. But in these setups, there&#8217;s no way to use inter-cloud compute fluidly, and moving workloads across clouds is a tedious, error-prone process.</p><p>True multi-cloud inference requires building a multi-region, multi-provider bin packing tool, which treats distinct pools of compute as fungible with each other. Like Kubernetes within a single cluster, multi-cloud capacity management must take a global view, enabling global scheduling.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hHbk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hHbk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png 424w, https://substackcdn.com/image/fetch/$s_!hHbk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png 848w, https://substackcdn.com/image/fetch/$s_!hHbk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!hHbk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hHbk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png" width="1456" height="916" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:916,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hHbk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png 424w, https://substackcdn.com/image/fetch/$s_!hHbk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png 848w, https://substackcdn.com/image/fetch/$s_!hHbk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!hHbk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40620524-e497-4f72-9f40-c84605d4461f_1600x1007.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"><em>A multi-cloud approach extends the idea of control and workload planes to a multi-cluster, multi-region system</em></figcaption></figure></div><p>Running true multi-cloud inference unlocks:</p><ul><li><p><strong>Capacity:</strong> Pool capacity from multiple providers for greater, more flexible GPU access.</p></li><li><p><strong>Redundancy: </strong>Split inference across providers for resiliency against outages.</p></li><li><p><strong>Latency:</strong> Run inference close to end users to reduce network latency overhead.</p></li><li><p><strong>Compliance: </strong>Run inference in compliance with data sovereignty and other regulatory requirements.</p></li></ul><p>Scaling from one cluster in one cloud to many clusters in many clouds requires a new coordination layer. A multi-cloud architecture contains:</p><ul><li><p><strong>Control plane:</strong> Handles model deployment and global scaling decisions, receives real-time event streams.</p></li><li><p><strong>Workload planes:</strong> Handles direct inference traffic and in-cluster scaling decisions, reports utilization and demand.</p></li></ul><p>This separation of responsibilities ensures that individual workload planes can serve traffic independently. If something happens to the control plane or any given workload plane, other workloads should be unaffected.</p><h2>7. Five approaches to make inference faster</h2><p>One of the coolest things about working in inference engineering is that, unlike many industries where new academic research takes years or decades to be adopted, techniques from new papers are live in production within months or even weeks.</p><p>But there is a gap to bridge between research and production, and some of the most visible inference engineering work of all comes from doing so.</p><p>Real-world traffic defies constraints. But with volume, you can adapt systems over time to match the changing nature of usage. Tuning the parameters of inference engines, speculation algorithms, and model servers isn&#8217;t a one-time task. Instead, either through iterative deployments or dynamic runtime adjustments, you can continuously improve the performance of an inference system.</p><p>Finding the right combination of techniques and configurations takes patient experimentation. I remember an internal hackathon during which one of Baseten&#8217;s inference engineers worked on an autocomplete model for code, and ended up trying 77 different configurations via a handwritten script before finding a non-obvious solution that doubled TPS (tokens per second) for a customer&#8217;s model.</p><p>Sometimes, techniques are symbiotic or incompatible, which makes inference optimization even more complex. For example, quantizing the KV cache alleviates a bottleneck in disaggregation, but increasing batch sizing reduces the compute available for speculation. An inference engineer&#8217;s challenge is always to create a balanced set of optimizations that delivers more than the sum of its parts.</p><p>Let&#8217;s look into the key categories of applied research for inference acceleration: quantization, speculation, caching, parallelism, and disaggregation.</p><h3>Approach #1: Quantization</h3><p>Quantization means reducing the numerical precision of a model&#8217;s weights. It improves latency (both TTFT [time to first token] and TPS, increases system throughput, and opens up headroom for other optimizations like disaggregation, speculation, and prefix caching to be even more effective. But when it goes wrong, quantization can materially reduce a model&#8217;s output quality.</p><p>Models are trained with weights, activations, and other components represented in a certain native number format. Usually, this is <a href="https://en.wikipedia.org/wiki/Bfloat16_floating-point_format">BF16</a> or <a href="https://en.wikipedia.org/wiki/Half-precision_floating-point_format">FP16</a>, although 8-bit and 4-bit native precisions are becoming more popular for training.</p><p>Post-training quantization works by changing those model weights and other values from their native number format, to a lower-precision format. Cutting precision in half improves performance in both phases of inference:</p><ul><li><p><strong>Prefill: </strong>Compute-bound prefill now runs on lower-precision Tensor Cores with twice the FLOPS.</p></li><li><p><strong>Decode: </strong>Memory-bound decode now loads half as much data per value, effectively doubling memory bandwidth.</p></li></ul><p>Working with quantized data introduces overheads, so it&#8217;s not linearly twice as fast to go from 16 to 8 bits. In practice, quantization down a single level of precision generally offers 30%-50% better performance for LLMs. The catch with quantization is that it runs the risk of reducing a model&#8217;s output quality, and has the potential to introduce precision errors throughout the calculations that power inference.</p><p>Precision errors compound over time. Consider what happens when you square and cube different precisions of Pi:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VrYE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VrYE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png 424w, https://substackcdn.com/image/fetch/$s_!VrYE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png 848w, https://substackcdn.com/image/fetch/$s_!VrYE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png 1272w, https://substackcdn.com/image/fetch/$s_!VrYE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VrYE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png" width="902" height="308" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8988ece-35ae-4377-9551-ca6adc714317_902x308.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:308,&quot;width&quot;:902,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32978,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/192753237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.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_!VrYE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png 424w, https://substackcdn.com/image/fetch/$s_!VrYE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png 848w, https://substackcdn.com/image/fetch/$s_!VrYE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.png 1272w, https://substackcdn.com/image/fetch/$s_!VrYE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8988ece-35ae-4377-9551-ca6adc714317_902x308.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>Most of the work in quantization is in preventing precision errors and minimizing their impact on the final model output.</p><p>Sixteen-bit, 8-bit, and 4-bit precisions are the primary formats for inference. Number formats contain:</p><ul><li><p><strong>Precision:</strong> The number of bits used to express a single value in the format. For example, FP16 uses 16 bits.</p></li><li><p><strong>Type:</strong> Whether these bits are interpreted to represent an integer (non decimal) or a floating-point number (decimal).</p></li><li><p><strong>Scale factor:</strong> A multiplier used to map values from a low-precision format back to the higher-precision format.</p></li></ul><p>Combined, these attributes determine the two factors behind how well a number format represents the values used in inference:</p><ul><li><p><strong>Dynamic range:</strong> The difference between the lowest and highest value that can be represented in the format.</p></li><li><p><strong>Granularity:</strong> The number of parameters or other values that are quantized along a single scale factor.</p></li></ul><p>Dynamic range is essential to low-precision inference without quality loss. Sixteen bits can represent 65,536 distinct values, while 8 bits can only represent 256 different values. The dynamic range is the distribution of these values &#8211; the difference between the smallest and largest available value.</p><p>Dynamic range explains why floating-point formats are better than integer formats for inference. Floating-point formats have three properties:</p><ul><li><p><strong>Sign: </strong>A single bit that represents whether a number is positive or negative.</p></li><li><p><strong>Exponent: </strong>A set of bits that, taken together, represent an exponent factor.</p></li><li><p><strong>Mantissa: </strong>A set of bits that together represent the base value multiplied by two to the exponent.</p></li></ul><p>An FP8 number in an E4M3 data format means it has a 4-bit exponent and a 3-bit mantissa, with the remaining bit for the sign. Integer formats only have sign and value bits.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mHG6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mHG6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png 424w, https://substackcdn.com/image/fetch/$s_!mHG6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png 848w, https://substackcdn.com/image/fetch/$s_!mHG6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png 1272w, https://substackcdn.com/image/fetch/$s_!mHG6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mHG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png" width="1456" height="849" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:849,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mHG6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png 424w, https://substackcdn.com/image/fetch/$s_!mHG6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png 848w, https://substackcdn.com/image/fetch/$s_!mHG6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.png 1272w, https://substackcdn.com/image/fetch/$s_!mHG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689475aa-baa7-44f7-9ad9-8cb5d3dda6b6_1600x933.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"><em>Floating-point number formats have exponent and mantissa bits, along with the sign bit</em></figcaption></figure></div><p>The exponent in floating-point numbers gives it a higher dynamic range, meaning it can better express very large and very small numbers. This is important because outlier values are significant in inference, and floating-point number formats better represent outliers after quantization.</p><p>Within floating-point formats, there are multiple options at each precision, like FP4, MXFP4, and NVFP4. These formats differ in granularity, or in the number of values quantized by a single scale factor.</p><p>Quantization can be applied at three levels:</p><ul><li><p><strong>Tensor level: </strong>Calculate a single scale factor for the entire QKV tensor.</p></li><li><p><strong>Channel level: </strong>Calculate a different scale factor for each feature vector within the tensor.</p></li><li><p><strong>Block level: </strong>Within each feature vector, divide the vector into blocks of N values and calculate a scale factor for each block.</p></li></ul><p>More granular quantization has a lower chance of smoothing over outliers, which preserves quality. However, more granularity also introduces extra overhead for storing and applying scale factors.</p><p>The components of a model have varying sensitivities to quantization. Reducing the precision of more sensitive components runs a higher risk of quality degradation. From the least to most sensitive components:</p><ol><li><p><strong>Weights: </strong>the linear layers are least sensitive to quantization.</p></li><li><p><strong>Activations: </strong>The intermediate output of activation functions are only somewhat sensitive to quantization. They are rarely quantized as they are such a tiny fraction of the model&#8217;s weights.</p></li><li><p><strong>KV cache: </strong>The cached values from the attention calculation are moderately sensitive to quantization.</p></li><li><p><strong>Attention: </strong>The attention layers of a model are highly sensitive to quantization, especially equations like softmax.</p></li></ol><p>Within each component, you can get more selective about quantization.</p><p>Even in linear layers and activations &#8211; generally the least sensitive to quantization due to their size &#8211; early and late layers, like the input and output layers of the neural network, may be left in their original precision as these layers are more sensitive.</p><p>While quantizing weights and activations helps performance, KV cache quantization gives an additional boost to techniques like prefix caching and disaggregation. The KV cache is a valuable resource and quantizing it allows inference engines to store more of it in memory and read it more quickly.</p><p>However, the KV cache for each token is used by each subsequent token. This means precision errors introduced by quantization can compound from token to token. Compounding errors are exactly why attention layers are the riskiest to quantize: not only is attention very sensitive to dynamic range, but each attention calculation relies on the results of each previous attention calculation. Therefore, over a sequence of thousands of tokens, errors accumulate quickly.</p><p>All but the most aggressive quantization schemes run functions like softmax in their original precision.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C71B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C71B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png 424w, https://substackcdn.com/image/fetch/$s_!C71B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png 848w, https://substackcdn.com/image/fetch/$s_!C71B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!C71B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C71B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png" width="1453" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1600,&quot;width&quot;:1453,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C71B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png 424w, https://substackcdn.com/image/fetch/$s_!C71B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png 848w, https://substackcdn.com/image/fetch/$s_!C71B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!C71B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbf0898f-e872-4167-8d6b-9e019982e65a_1453x1600.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"><em>Quantization risk is low for weights and activations, moderate for KV cache, and high for attention</em></figcaption></figure></div><p>A moderate approach to low-precision inference uses a format like FP8 with high dynamic range &#8211; if possible, a microscaling format like MXFP8 &#8211; to carefully quantize select linear layers, activations, and often KV cache values. Even with these high dynamic range formats, components of the attention layer are rarely quantized.</p><h3>Approach #2: Speculative decoding</h3><p>The decode phase of LLM inference is an autoregressive process in which tokens are generated one at a time. The bottleneck on decode is memory bandwidth, with compute sitting idle at low-to-moderate batch sizes as weights are read from memory.</p><p>Speculative decoding takes advantage of that spare compute to try and generate multiple tokens per forward pass through the target model. If an inference engine could generate two, three, or even more tokens for each round-trip of weights through memory, it would generate far more tokens per second. Note, speculative decoding only improves TPS / ITL (inter-token latency), not TTFT (time to first token.)</p><p>There are multiple algorithms for speculative decoding and they share a common mechanism:</p><ol><li><p>The speculator generates one or more <strong>draft tokens</strong>.</p></li><li><p>The <strong>target model</strong> &#8211; or the underlying model that you&#8217;re trying to accelerate &#8211; performs <strong>validation</strong> on these tokens to check if they match what the model would generate.</p></li><li><p>The target model accepts any valid draft tokens and generates an additional token itself, completing the forward pass.</p></li></ol><p>This generates N+1 tokens per forward pass, or iteration through the decode loop, where N is the number of accepted draft tokens.</p><p>Generating draft tokens is not free, it takes both compute and memory. However, it is much faster for a target model to validate a draft token than to generate an original token. If you imagine a sudoku puzzle, solving it is hard, but checking if the solution is correct is very easy. For the target model, generating a token is like solving a sudoku, while validating a draft token is like checking a finished sudoku.</p><p>The performance uplift from any speculative decoding strategy depends on three factors:</p><ol><li><p><strong>Draft token cost: </strong>Time taken to generate a draft token.</p></li><li><p><strong>Draft sequence length: </strong>The number of draft tokens generated per forward pass.</p></li><li><p><strong>Token acceptance rate:</strong> The percentage of draft tokens accepted by the target model.</p></li></ol><p>Token acceptance rate is high early in the draft sequence, but draft tokens get less reliable deeper in the sequence.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yXtg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yXtg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png 424w, https://substackcdn.com/image/fetch/$s_!yXtg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png 848w, https://substackcdn.com/image/fetch/$s_!yXtg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!yXtg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yXtg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png" width="1182" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1600,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yXtg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png 424w, https://substackcdn.com/image/fetch/$s_!yXtg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png 848w, https://substackcdn.com/image/fetch/$s_!yXtg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!yXtg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aa828ac-64d7-41cb-9cf3-37a308efabfb_1182x1600.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">Speculative decoding from draft token generation and validation to prefix acceptance with subsequent token generation</figcaption></figure></div><p><strong>Aim for short, high-percentage sequences</strong> because while generating and validating tokens is inexpensive relative to generating tokens in the original model, it still comes with meaningful overhead. Additionally, once a single draft token is rejected as wrong, all subsequent tokens in the sequence are also rejected.</p><p>Working with speculation is interesting because so many factors affect token acceptance rate. The big one is the temperature parameter &#8211; higher temperatures yield token distributions that are harder to predict, reducing the effectiveness of speculative decoding. But even factors as simple as subject matter can make a difference on acceptance rate if the draft model or additional decoder head used for speculation is better versed in, say, math than history.</p><p>Another limitation on speculative decoding is that it&#8217;s most useful at low batch sizes where there are spare compute cycles. At higher batch sizes, speculative decoding must be dynamically disabled as compute is too saturated to afford verification.</p><p>Each speculation algorithm navigates these tradeoffs differently, and careful implementation of the right algorithm for the situation can lead to major improvements in TPS.</p><h3>Approach #3: Caching</h3><p>During prefill, the inference engine builds a KV cache (a store of keys and values for each token) on the input sequence. It then updates the KV cache for each token during decode. As inference is autoregressive, the value for each new token depends on the value of every previous token in the sequence.</p><p>Every inference engine uses KV caching by default on a request-by-request basis. Without KV caching, LLM inference would be unbearably slow since each previous value in the entire sequence would need to be recalculated for each subsequent token.</p><p>However, engineers can get more utility from the KV cache by reusing it between requests rather than solely within each inference sequence.</p><p>Consider the following two prompts, each with four tokens on most tokenizers:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1jj0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1jj0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png 424w, https://substackcdn.com/image/fetch/$s_!1jj0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png 848w, https://substackcdn.com/image/fetch/$s_!1jj0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png 1272w, https://substackcdn.com/image/fetch/$s_!1jj0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1jj0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png" width="1456" height="883" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:883,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1jj0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png 424w, https://substackcdn.com/image/fetch/$s_!1jj0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png 848w, https://substackcdn.com/image/fetch/$s_!1jj0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.png 1272w, https://substackcdn.com/image/fetch/$s_!1jj0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa294de82-8f97-475a-baa2-fb0e9bb83329_1600x970.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"><em>A pair of four-token sequences with two-token matching prefixes</em></figcaption></figure></div><p>By default, the inference engine has to run prefill on all four tokens of each prompt. But the first tokens of each prompt &#8211; &#8220;Weather in&#8221; &#8211; form a shared prefix between the pair.</p><p>With prefix caching, you can reuse the KV cache from the first request to improve TTFT on the second request by skipping prefill on the first two tokens and reading in the existing KV cache instead.</p><p>When you see pay-per-token APIs charge less for &#8220;cache hit&#8221; input tokens than &#8220;cache miss&#8221; tokens, this is why: reusing cached tokens takes very little compute power and time. As an inference engineer, you can apply the same principle to reduce latency, improve throughput and therefore save money on your own deployments.</p><p>Saving two tokens won&#8217;t make a big impact on TTFT, but prefix caching can skip prefill on thousands of tokens in certain domains:</p><ul><li><p><strong>Complex system prompts: </strong>Agents, customer-facing chatbots, RAG scaffolds, and tool calls often feature long, complex system prompts on every call.</p></li><li><p><strong>Code completion: </strong>Code completion, code generation, and other coding functions require passing the same thousands of lines of code as shared context.</p></li><li><p><strong>Documents and retrieval: </strong>Document summarization, question answering, and retrieval all add repeated context ahead of user prompts.</p></li><li><p><strong>Multi-turn conversations: </strong>Ordinary conversations repeat back every message in a chat template, increasing the savings from prefix caching with every turn.</p></li></ul><p>Prefix caching works from the start of the input sequence until the first non-repeated token. The fourth token in the weather example, a question mark, is shared between the two input sequences. However, the prefix ends at the first non-repeated token, so the fourth token isn&#8217;t read from cache.</p><p>Since prefixes end at the first unique token, your context engineering determines TTFT savings. Consider a different approach to the same prompt:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ehf3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ehf3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png 424w, https://substackcdn.com/image/fetch/$s_!ehf3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png 848w, https://substackcdn.com/image/fetch/$s_!ehf3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png 1272w, https://substackcdn.com/image/fetch/$s_!ehf3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ehf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png" width="1456" height="793" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:793,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ehf3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png 424w, https://substackcdn.com/image/fetch/$s_!ehf3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png 848w, https://substackcdn.com/image/fetch/$s_!ehf3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.png 1272w, https://substackcdn.com/image/fetch/$s_!ehf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb65f49c0-53a8-49cf-bade-4144a02a728b_1600x871.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"><em>A pair of four-token sequences with no prefix match. The first tokens are different, so it doesn&#8217;t matter that the next three are the same</em></figcaption></figure></div><p>Here, there is no savings from prefix caching, as the very first token differs between the two sequences, even though every subsequent token is the same. To take advantage of prefix caching, ensure that novel tokens are as late in your prompt as possible.</p><h3>Approach #4: Parallelism</h3><p>Tensor Parallelism (TP) should be your default strategy for multi-GPU model inference. It supports dense models like Llama 405B, and the MoE (mixture of experts) models that currently dominate the open model landscape.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hyIE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hyIE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png 424w, https://substackcdn.com/image/fetch/$s_!hyIE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png 848w, https://substackcdn.com/image/fetch/$s_!hyIE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png 1272w, https://substackcdn.com/image/fetch/$s_!hyIE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hyIE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png" width="1456" height="578" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:578,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hyIE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png 424w, https://substackcdn.com/image/fetch/$s_!hyIE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png 848w, https://substackcdn.com/image/fetch/$s_!hyIE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.png 1272w, https://substackcdn.com/image/fetch/$s_!hyIE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca43a-177d-483f-aaaa-09a77d7ded48_1600x635.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"><em>Tensor Parallelism splits weights across GPUs, effectively sharing VRAM resources to run large models fast</em></figcaption></figure></div><p>TP works by splitting apart each layer of the model (as opposed to Pipeline Parallelism, which keeps layers intact) and distributing the layer fragments across the allocated GPUs. For each layer, the expense of reading from weights&#8217; memory and executing matrix multiplication is shared across the GPUs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!upQ4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!upQ4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png 424w, https://substackcdn.com/image/fetch/$s_!upQ4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png 848w, https://substackcdn.com/image/fetch/$s_!upQ4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png 1272w, https://substackcdn.com/image/fetch/$s_!upQ4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!upQ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png" width="1456" height="578" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:578,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!upQ4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png 424w, https://substackcdn.com/image/fetch/$s_!upQ4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png 848w, https://substackcdn.com/image/fetch/$s_!upQ4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.png 1272w, https://substackcdn.com/image/fetch/$s_!upQ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba6857f-6b2f-43a1-8bb7-d6bd5956cfba_1600x635.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"><em>For an MoE models, each expert runs across multiple GPUs with Tensor Parallelism</em></figcaption></figure></div><p>However, the results of each layer need to be communicated in an all-reduce fashion (across all eight GPUs) into a single output before the next layer can be computed. In nodes with high-bandwidth intra-node NVLink and NVSwitch, this communication overhead is minimized.</p><p>Increasing Tensor Parallelism improves TPS on a per-user basis, assuming the model is large enough and the sequences are long enough that the communication overhead doesn&#8217;t outweigh the faster forward pass &#8211; which is the case for most frontier models.</p><p>Expert Parallelism (EP) neatly divides experts across GPUs, so that in a model with 128 experts served in EP8 across eight GPUs, each GPU hosts 16 full experts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ky6k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ky6k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png 424w, https://substackcdn.com/image/fetch/$s_!ky6k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png 848w, https://substackcdn.com/image/fetch/$s_!ky6k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png 1272w, https://substackcdn.com/image/fetch/$s_!ky6k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ky6k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png" width="1456" height="578" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:578,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ky6k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png 424w, https://substackcdn.com/image/fetch/$s_!ky6k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png 848w, https://substackcdn.com/image/fetch/$s_!ky6k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.png 1272w, https://substackcdn.com/image/fetch/$s_!ky6k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4985f5-2ca5-46d3-82e1-dcd6b5d79e11_1600x635.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"><em>EP runs each expert within a single GPU, with each GPU hosting multiple experts</em></figcaption></figure></div><p>EP improves total system throughput, making inference more scalable and less expensive. With individual experts processing tokens separately, each token takes just as long, but the system as a whole can handle more simultaneous tokens.</p><p>Many deployments use a mix of TP and EP to achieve both benefits.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lp5z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lp5z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png 424w, https://substackcdn.com/image/fetch/$s_!Lp5z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png 848w, https://substackcdn.com/image/fetch/$s_!Lp5z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png 1272w, https://substackcdn.com/image/fetch/$s_!Lp5z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lp5z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png" width="1456" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lp5z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png 424w, https://substackcdn.com/image/fetch/$s_!Lp5z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png 848w, https://substackcdn.com/image/fetch/$s_!Lp5z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.png 1272w, https://substackcdn.com/image/fetch/$s_!Lp5z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29868580-3456-4211-bad8-74d93a75ac3e_1600x859.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"><em>This deployment uses TP for attention and EP for the sparse MoE layer</em></figcaption></figure></div><p>EP requires less inter-GPU communication than Tensor Parallelism. The Expert Router, which determines which experts each token activates, is replicated onto each GPU as it is a relatively small component of the model. Inter-GPU communication is necessary for passing tokens from expert to expert, but unlike TP, it is not required to collect the results of each layer.</p><p>Thanks to this lower communication overhead, EP scales well to multi-node deployments and systems with limited interconnect bandwidth.</p><h3>Approach #5: Disaggregation</h3><p>Disaggregation combines three important ideas in inference engineering:</p><ol><li><p>Prefill is a compute-bound process that determines the time to first token (TTFT), while decode is a memory-bound process that determines TPS.</p></li><li><p>Specialization improves performance in everything from kernel selection to inference engine parameter tuning.</p></li><li><p>You can effectively parallelize model serving over multiple GPUs, or even multiple nodes, if you can avoid bottlenecks from lower-bandwidth interconnects.</p></li></ol><p>When prefill and decode run on the same node under heavy traffic, they have a higher chance of interfering with one another. Ideally, prefill uses more compute resources, while decode uses more memory, and the two can co-exist efficiently. However, with larger batches and more compute-intensive optimizations, prefill and decode start competing for resources.</p><p>Disaggregation, or disaggregated serving, is the idea of separating prefill and decode into separate engines on separate GPUs or nodes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lh6b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lh6b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png 424w, https://substackcdn.com/image/fetch/$s_!lh6b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png 848w, https://substackcdn.com/image/fetch/$s_!lh6b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png 1272w, https://substackcdn.com/image/fetch/$s_!lh6b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lh6b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png" width="1456" height="923" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:923,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lh6b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png 424w, https://substackcdn.com/image/fetch/$s_!lh6b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png 848w, https://substackcdn.com/image/fetch/$s_!lh6b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.png 1272w, https://substackcdn.com/image/fetch/$s_!lh6b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90917382-7d84-4ddf-806f-a514cd61d581_1600x1014.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">Disaggregation assigns prefill workers to generate the first token and decode workers to generate subsequent tokens</figcaption></figure></div><p>Disaggregation turns LLM inference into a three-step process:</p><ol><li><p>The prefill engine takes the input sequence and generates a KV cache while computing the first token.</p></li><li><p>The prefill engine sends the KV cache over the hardware interconnect to the decode engine.</p></li><li><p>The decode engine computes all subsequent tokens.</p></li></ol><p>In conditional disaggregation, the request is first sent to the decode engine, which checks if the input sequence is already cached, or is short enough to handle locally:</p><ol><li><p>If so, the decode engine handles prefill locally, skipping disaggregation.</p></li><li><p>If not, the decode engine transfers the request to the prefill engine for disaggregated serving.</p></li></ol><p>Conditional disaggregation is better for real-world traffic.</p><p>Another benefit of disaggregation is that with separate prefill and decode engines, you can optimize each engine individually and the system as a whole. For example, the compute-bound prefill engine requires a lower TP than the memory-bound decode engine.</p><h2>Takeaways</h2><p><em>This is Gergely again. </em>Thanks to <a href="https://x.com/philipkiely">Philip</a> for this deepdive into inference engineering, which is around 10% of the contents of his new book, <em>&#8221;Inference Engineering.&#8221;</em> If you&#8217;d like to go deeper into this topic, you can download the full book for free:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://baseten.com/inference-engineering&quot;,&quot;text&quot;:&quot;Get the full e-book, for free&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://baseten.com/inference-engineering"><span>Get the full e-book, for free</span></a></p><p>This title will also be available in physical, printed form: sign up to the <a href="https://www.baseten.co/inference-engineering/paper-waitlist/">waitlist</a> to be notified when it&#8217;s available.</p><p><strong>It&#8217;s encouraging that inference engineering is no longer a &#8220;monopoly&#8221; belonging to a few leading AI labs. </strong>Top AI model makers like OpenAI and Anthropic control all aspects of their AI models &#8211; from training to inference &#8211; so there&#8217;s no inference engineering to be done with them.</p><p>However, thanks to increasingly capable open models, engineering teams have the opportunity to tweak how they use models, and this is where the theory and practice of inference engineering becomes invaluable.</p><p><strong>Even so, the discipline of inference engineering still seems to only make sense for a subset of tech companies. </strong>To justify investment in inference engineering, you need to be spending big money on inference from vendors. This is the point at which it can make sense to invest time and money to see if you can set up your own inference stack on top of open models, and swap out some existing usage.</p><p><strong>I wonder if inference engineering is the AI version of the &#8220;build vs buy&#8221; dilemma. </strong>For software-as-a-service (SaaS), the question for every company is whether to build it in-house, or buy from a vendor. For example, should you build a project management software (it&#8217;s possible!), or just buy an existing one? And what about feature flagging, not to mention observability?</p><p>Experienced engineers all understand the pros and cons of building it yourself (time and maintenance, which is a constant drag.) Tuning and operating your own LLM stack is a much newer field, and inference engineering is at the heart of building better inference stacks than what comes &#8220;out of the box&#8221; with open models.</p><p><strong>Picking up the basics of inference engineering feels like a valuable skill &#8211; and it&#8217;s also new and interesting. </strong>If you become well-versed in inference engineering, you could create optionality for your own team and company in LLM usage<strong>. </strong>Running your own inference stack on top of an open model gives control of what you&#8217;re running and of pricing. Inference engineering helps create options for achieving better performance from an open model by using the approaches covered in the extract above from Philip&#8217;s book.</p>]]></content:encoded></item><item><title><![CDATA[The Pulse: is GitHub still best for AI-native development?]]></title><description><![CDATA[Poor availability has dogged GitHub for months and raises questions about its status and focus. Plus, Microsoft promises Windows will not be &#8220;Microslop&#8221;, a massive LLM supply chain attack, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-is-github-still-best-for</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-is-github-still-best-for</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 26 Mar 2026 17:23:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!X6bS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b5fd12-15b7-46b8-acd4-d78d55ef2fe4_1576x432.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</em></p><p>Today, we cover:</p><ol><li><p><strong>Does GitHub still merit &#8220;top git platform for AI-native development&#8221; status?</strong> Availability has dropped to one nine (~90% &#8211; !!), partly due to not being able to handle increased traffic from AI coding agents. There&#8217;s also no CEO and an apparent lack of direction.</p></li><li><p><strong>Should a tool auto-add itself as a contributor to PRs? </strong>Claude Code and GitHub Copilot auto-add themselves to commits, which is effectively free advertising. Codex and OpenCode purposely do not.</p></li><li><p><strong>Microsoft promises Windows will not be &#8220;Microslop.&#8221; </strong>After years of forced Copilot integrations, Start menu ads, and mandatory Microsoft accounts, the Windows team is promising to undo the self-inflicted damage done to the OS. It&#8217;s better late than never, but why did Microsoft allow the &#8220;Microslop&#8221; perception to stick around so long?</p></li><li><p><strong>Industry pulse. </strong>Massive LLM supply chain attack via LiteLLM, backlash after Cursor forgets to mention that Composer 2 is based on an open source model, what happens when you stop reviewing AI code, OpenAI kills Sora, and more.</p></li></ol><h2>1. Does GitHub still merit &#8220;top git platform for AI-native development&#8221; status?</h2><p>We&#8217;re used to highly reliable systems which target four-nines of availability (99.99%, meaning about 52 minutes of downtime per year), and for it to be embarrassing to barely hit three nines (around 9 hours of downtime per year.) And yet, in the past month, GitHub&#8217;s reliability is down to one nine!</p><p>Here&#8217;s data from the third-party, &#8220;<a href="https://mrshu.github.io/github-statuses/">missing GitHub status page</a>&#8221;, which was built after GitHub stopped updating its own status page due to terrible availability. Recently, things have looked poor:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-is-github-still-best-for">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[“How to be a 10x engineer” – interview with a standout dev]]></title><description><![CDATA[An interview with an engineer with no public GitHub contributions, setting clear boundaries &#8211; and yet not having needed to apply for positions when searching for a job, because referrals found them]]></description><link>https://newsletter.pragmaticengineer.com/p/how-to-be-a-10x-engineer-interview</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/how-to-be-a-10x-engineer-interview</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 24 Mar 2026 18:26:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wORh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It was at Uber that I met one of the single best engineers I&#8217;ve had the fortune to work with; let&#8217;s call them &#8220;Sam&#8221; for this article. As engineers, we briefly worked together, and when I became a manager, Sam&#8217;s name regularly came up during <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations">performance calibrations</a> as being among the company&#8217;s top 10% engineers. One year, he was in the &#8220;top, top&#8221; bucket reserved for the 3% best engineers.</p><p>After I left Uber, we stayed in touch, and a few months ago I heard he was exploring the next opportunity,<strong> </strong>and found out from him that<strong> Sam&#8217;s job search looked nothing like most people&#8217;s:</strong> he didn&#8217;t apply for a single role. Instead, there were reachouts from former colleagues desperate to hire them.</p><p>When we talked for this article, Sam had three warm leads which wanted to interview him ASAP. One startup was not even hiring, but the founder was ready to create a new position just for him.</p><p>I posted a message on LinkedIn about Sam:</p><blockquote><p>&#8220;I hate the term &#8220;10x engineer&#8221; but this engineer is a role model for what a standout engineer is - in fact, some of my writing of standout engineers reference my interactions with folks like them (e.g. my article on the product-minded engineer, this one: https://lnkd.in/et7nWBgW)</p><p>And still, from the outside, this engineer is nearly completely invisible.</p><p>No social media footprint. The LinkedIn profile lists his companies worked at, and nothing else: no technologies, no projects, nothing. Their GitHub is empty for the last 5 years, and has perhaps a dozen commits throughout the last 10 years.&#8221;</p></blockquote><p>This is Sam&#8217;s GitHub contributions for the last several years: absolutely nothing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wORh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wORh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 424w, https://substackcdn.com/image/fetch/$s_!wORh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 848w, https://substackcdn.com/image/fetch/$s_!wORh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!wORh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wORh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png" width="1456" height="1183" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1183,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;: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="" srcset="https://substackcdn.com/image/fetch/$s_!wORh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 424w, https://substackcdn.com/image/fetch/$s_!wORh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 848w, https://substackcdn.com/image/fetch/$s_!wORh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!wORh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb83f9d2f-711f-4edd-bc8a-303b8de422e5_1600x1300.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Zero public contributions: Behind the profile, one of the best software engineers I&#8217;ve worked with</figcaption></figure></div><p>One of the most upvoted comments on my post was by cloud technologist <a href="https://www.linkedin.com/feed/update/urn:li:activity:7381615884282462209?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7381615884282462209%2C7381647792106270721%29&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287381647792106270721%2Curn%3Ali%3Aactivity%3A7381615884282462209%29">Olivier Frolovs</a>, who requested an article on Sam for others to learn how he operates. Now, Sam has generously agreed to an interview and has asked to remain anonymous, hence the <em>nom de plume </em>(pseudonym)<em>.</em></p><p>He doesn&#8217;t seek public attention and has a strong professional reputation. During our chat, he offered pointers for engineers looking to excel, and also as proof that an empty GitHub profile and zero social media presence don&#8217;t mean you can&#8217;t be a truly standout developer.</p><p>I also interviewed one of his former managers from Uber for that perspective. Today, we cover:</p><ol><li><p><strong>Getting things done.</strong> High-level task breakdowns, combined with communicating delays as tradeoffs to stakeholders.</p></li><li><p><strong>Setting boundaries.</strong> Saying &#8220;no,&#8221; prioritizing family or work &#8211; and being clear about it, and treating prioritization as a daily practice.</p></li><li><p><strong>Office politics.</strong> Participate selectively and cautiously, build relationships with influential colleagues, pre-sell ideas, direct communication.</p></li><li><p><strong>Negotiation and conflict. </strong>Approach engineers before their managers, build bottom-up consensus, and start with relationship-building.</p></li><li><p><strong>Promotions, keeping up-to-date, and finding the next job. </strong>A personal take on The Big Tech promotion processes, keeping up with the industry, and relying on referrals more.</p></li><li><p><strong>Becoming a manager. </strong>Ownership and independence separate &#8220;good&#8221; engineers from &#8220;great&#8221; ones.</p></li><li><p><strong>Feedback from Sam&#8217;s ex-manager. </strong>A former manager reveals what made Sam stand out to them &#8211; and shares some potential growth opportunities.</p></li></ol><h2>Background</h2><p>In this article, my questions are in <em>italic</em> and Sam&#8217;s voice is in normal text.</p><p><em>Sam, how did you get into tech?</em></p><p>I was always intrigued by computers, software, and &#8211; as it came around &#8211; the internet. My dad had a black-and-white screen laptop for work with Windows 3.1 and some games. We got our first personal computer with Windows 95 and I remember it vividly.</p><p>I started developing websites for my primary school and the company my mom worked at when I was 12. I got paid a small sum, so that was my first-ever paid programming project! Around then, I taught myself Visual Basic 6 and started building 2D and 3D mini-games. I found the website <a href="http://directx4vb.vbgamer.com/">DirectXVB</a> (which is still live today), emailed the website&#8217;s owner with issues I ran into, and they helped me with pointers. Later, I taught myself PHP and built more dynamic websites.</p><p>From the age of 14, I stopped all coding &#8211; I just got tired of it! &#8211; and focused on my studies, and getting into college. I chose a non-computer science major for university, but picked up coding on the side, and I rediscovered that spark, so, in the first year of my Master&#8217;s, I decided to switch and do a Computer Science Bachelor&#8217;s. It was during college that I started to build apps and websites, and it&#8217;s when I got truly hooked on software development.</p><h3>From agency, to large company, then Uber</h3><p>I joined an agency as their first hire, building apps for local companies. It was a small team, we learned with trial-and-error, and getting done at 2-3 o&#8217;clock in the morning was common enough. I stayed 18 months and learned a lot about ownership, the importance of an eye for detail, and collaborating with others.</p><p><strong>My favorite part of the job was the few times I worked directly with a designer</strong>: our agency employed freelance designers who were not involved in most of the projects because the company was trying to save money by having them work less, and not be involved in planning and rollouts. But during the implementation phase, I&#8217;d find myself talking with the designer and bouncing implementation and design ideas around.</p><p>I then joined a small startup where we built our own product. A highlight was having two designers on the team fulltime, whom I could work with and learn from. Engineering also felt like a level up: everyone cared about software quality and UX details.</p><p>Our startup got acquired by a larger company and most of us moved to the Bay Area. We stayed together as a team and were told we would maintain a &#8220;startup culture.&#8221; The founders tried their best to stay true to their word, but they couldn&#8217;t shield us from the reality of working in a corporation.</p><p><strong>I learned a lot about corporate processes, and it was more interesting than I&#8217;d expected. </strong>As I was getting closer to the senior engineer level, I had to understand how internal politics worked, how to &#8220;massage&#8221; peer teams to help support our proposals, and how to talk with engineering leaders like senior managers and directors. Our company was also hugely focused on the annual company event: it was eye-opening for me to see just how much effort went into preparation. It consisted of several rehearsals and dedicated engineering work to showcase our stuff in a way that was near-flawless on the day.</p><p>After a few years, I felt ready for a change and joined Uber. I took a &#8220;title cut,&#8221; something akin to the &#8220;<a href="https://newsletter.pragmaticengineer.com/p/the-seniority-rollercoaster">seniority rollercoaster.</a>&#8221; At Uber, I worked in a new area and got promoted several times. After Uber, I worked at another Big Tech, and now &#8211; very recently &#8211; I&#8217;ve begun at a startup.</p><h2>1. Getting things done</h2><p><em>Feedback at Uber about you during performance calibrations was that you&#8217;re excellent at getting things done. What&#8217;s your process?</em></p><p>When I started out as a junior dev, I pulled long hours so I could deliver on time &#8211; regardless of how much effort it took. I don&#8217;t know what it was, but I always felt that failing to deliver on time was <em>never</em> an option.</p><p>I still vividly remember one project where I worked incredibly hard but still failed to deliver with the quality I expected from myself. As embarrassing as it is, I was so exhausted that I almost started crying on the spot. One of my coworkers comforted me and told me:</p><blockquote><p>&#8220;Man, you&#8217;re crying about the wrong thing. No one died, no one got hurt, and no one will even care that we&#8217;re a few days late, save for the project manager. But even he&#8217;s used to everything being late. Go home, have some sleep, come back tomorrow and take it easy.&#8221;</p></blockquote><p>They were right, of course. Still, I&#8217;m pretty sure this inner pressure to be unsatisfied with &#8220;good enough&#8221; explains a lot about how I work.</p><p><strong>Having a high-level breakdown of the work, and communicating to stakeholders has been my &#8220;secret&#8221;, later in my career</strong>. After a few years as a dev, my estimation skills got better and I had to pull fewer late nights. I also found a hack that greatly helped was doing a high-level breakdown as early as possible, in <em>all</em> cases. As soon as I understand what the work is, I break it all down, ideally on a whiteboard or paper.</p><h3>Importance of communication</h3><p><em>You were also seen as a strong communicator, whether it was with engineers, engineering managers, or product managers. How do you get your point across?</em></p><p>Communicating delays as &#8220;tradeoffs&#8221; works extremely well. As soon as I start a project which I&#8217;m the lead on, I establish communication channels with key stakeholders: product managers, my engineering leadership, and business stakeholders, via email or Slack, I keep them in the loop at least weekly, and about anything that could be a roadblock.</p><p><strong>In my experience, delays are not an issue as long as they are communicated upfront with an explanation and potential alternatives.</strong> When we hit a roadblock that slows down our work, I would never communicate that we&#8217;re &#8220;behind&#8221;. I would offer alternatives like:</p><ul><li><p>We can still ship on time, but we&#8217;d need to cut X and Y features for this release</p></li><li><p>If we are not comfortable cutting X and Y features, then we will need to push out the target date by 2 weeks. If we are comfortable, we can push it out by 1 week</p></li></ul><p>The trick, I&#8217;ve found, is to make it clear to stakeholders that we have a <em>choice</em>: choose more features to ship, or choose a lower-priority feature to drop.</p><p>I learned most of my hacks from people who are good at getting things done, and they have a few attributes:</p><ul><li><p><strong>Task breakdown:</strong> early in my career, there was a senior engineer who was methodical about breaking down tasks and making estimates, even for seemingly trivial projects &#8211; and it worked!</p></li><li><p><strong>Communication tools: </strong>I observed the few <em>really</em> organized product managers, engineering managers, and tech lead, and made their communication styles into a &#8220;package&#8221; that worked for me; things like email updates, facilitating kickoff meetings, launch announcements (including how to communicate a failed/sunset project as a successful launch), and more.</p></li></ul><p>Being good at communication means you have a solid foundation, and then develop a feel for how to best utilize the tools you have. There&#8217;s no &#8220;one-size-fits-all&#8221; approach: people react better or worse to different things. Try to get to know folks around you and put yourself in their shoes.</p><h3>Doing great work</h3><p><em>What does &#8220;standout&#8221; work look like to you?</em></p><p><strong>I think about the quality of my work similarly to the quality of work I do at home. </strong>I have moved houses and renovated them several times and I greatly care about the quality of that work. And I&#8217;ve seen plenty of contractors come to my place, perform their work, and then leave without actually caring about the quality. They just want to &#8220;get s*** done&#8221; and be out of there. I never understood how someone can keep doing their job without feeling a lot of love for it!</p><p><strong>I need to get energy from everything I do, not just in my job. </strong>Whether it&#8217;s playing games with my kids, helping my wife with her website, or building a new website feature for the company I work for: I approach it all with the same attitude.</p><p>Equally, if I no longer get energy from the work I do, then I basically stop enjoying it and this can be a nudge to start to look for something else. If it continues for a long time, this urge can become more persistent, and that&#8217;s the point when I have switched companies or teams. I can go on for some time without getting energy from my work, but it drains me. I try to catch myself before it gets too bad, and I&#8217;ve managed to do so, up to now. This is why I quit my last job without having anything lined up: I stopped getting energy from it for many months and talked with my management chain about it, but they were unable and unwilling to change anything. I needed a change, so it was me who made it.</p><h3>Stepping outside of domain expertise</h3><p><em>You frequently went outside of your domain, working with engineering teams on other platforms and contributing to codebases you&#8217;re not expert in. You seemed to have a great relationship with most engineers, in contrast to some devs. How did you do this?</em></p><p>I am pretty curious and prefer to talk directly with engineers.<strong> </strong>So, when I&#8217;d work on a project with engineers on a different stack, I would ask them to explain their high-level architecture approaches, and roll up my sleeves to make small code changes in a stack I was unfamiliar with.</p><p>Once you understand the high-level structure of a different codebase, and you also know how to make a few small changes, suddenly, it&#8217;s so much easier to figure things out on your own!</p><p><strong>An approach that consistently worked for me is approaching problems from the customer&#8217;s perspective, and being genuinely curious.</strong> For example, I might ping an engineer working on a different system and ask:</p><blockquote><p>&#8220;I noticed a customer has this problem, and to fix it, we probably need to touch the system you own. I don&#8217;t know much about this system: can you explain how it works, and what we could perhaps do to solve this issue that causes frustration for the customer?&#8221;</p></blockquote><p>By making it clear that my goal is to solve a customer problem, I&#8217;m not coming across as just digging around for nothing. And by making it clear that I&#8217;d like to learn from them, it avoids being seen as someone trying to confirm what they are doing, which could come across as arrogant &#8211; especially when the other engineer is the expert on their own system. I&#8217;ve found fellow engineers are happy to explain their understanding and decisions.</p><h2>2. Setting boundaries</h2><p><em>At Uber, I recall you were very good at setting boundaries and saying &#8220;no.&#8221; How do you do that?</em></p><p><strong>Honestly, I find it tough to say no &#8211; but I learned that it&#8217;s worse when I don&#8217;t. </strong>I found that saying &#8216;yes&#8217; to everything usually results in an unmanageable, unbalanced pile of work. Prioritizing is key: I always remind myself to focus on what matters most. For me, the &#8220;most important&#8221; thing for any given topic could be:</p><ul><li><p>A shipping deadline that needs to be hit and is non-negotiable</p></li><li><p>Family needs</p></li><li><p>An urgent task that needs to be done on the same day</p></li></ul><p><strong>Family is very important to me. </strong>When I worked at Uber, I had a reasonably long commute to the office. I blocked out my calendar so I could leave on time in order to be home for dinner with my family. This did not mean I stopped work immediately; I would sometimes work during my commute and, when necessary, I logged back on to continue working after my kids were in bed.</p><p>When we had important deadline agreements at work, I made an agreement with my partner that I stayed longer in the office because I knew it was important to put in extra effort and deliver standout work then.</p><p>It goes back to prioritizing and focusing on the most important thing. Looking back, I&#8217;d say most of the time, the most important thing for me was family, and that work overrode this every now and then.</p><p>My approach to prioritizing keeps changing, though. Demands at home keep changing and expectations at work also change; after Uber, other jobs increasingly focused on async and remote work. This meant more flexibility to accommodate family time &#8211; but work could spill over into evening hours if I did not finish everything.</p><p><strong>If I can give one piece of advice, it&#8217;s to understand what is important for </strong><em><strong>you</strong></em><strong>. </strong>Know your number one, number two, number three priorities: and arrange your workday so you do your top priorities. Don&#8217;t compromise on the most important one!</p><h2>3. Office politics</h2><p><em>At work, how plugged in were you to office politics?</em></p><p><strong>I was aware of politics and tried to build relationships with &#8220;influential&#8221; people. </strong>I try to stay away from &#8220;cocky&#8221; types, and to find what I want to achieve through different folks.</p><p>The importance of politics is something I really started to understand when working at Uber. Initially, I was ignorant, but the more experience I got in Big Tech, the more it became obvious. It took a while before I was able to participate in it. I never liked it; I tend to be direct and transparent, but that does not work in every situation.</p><p><em>Did you take part in it to get stuff done?</em></p><p>Yes, sometimes by being direct and transparent, and communicating the right amount of information, you can get a lot done. Occasionally, it required me to &#8220;massage&#8221; an idea on multiple people before going to the person who called the shots.</p><p><em>What is your view of engineers who are seen as&#8220;political&#8221;?</em></p><p>It&#8217;s part of the game and sometimes it&#8217;s useful to have a good relationship with those people, as you can use that for your own benefit, as well. I personally would never invest much time in understanding and practising politics, as I prefer to focus on building and product.</p><h2>4. Negotiation &amp; conflict</h2><h3>Negotiating with teams</h3><p><em>You were perceived as being good with other teams, and at removing roadblocks for your own. How did you approach this?</em></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/how-to-be-a-10x-engineer-interview">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: Is the FDE role becoming less desirable?]]></title><description><![CDATA[Also: AI-agent generated pull requests cause headaches for large open source projects, OpenAI acquires the creator of uv, a sudden Cursor price hike annoys some enterprise customers, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-is-the-fde-role-becoming</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-is-the-fde-role-becoming</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 19 Mar 2026 17:45:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zoD4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2af820-b16c-41c7-8e80-15563de1864f_1400x1094.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</em></p><p>Today, we cover:</p><ol><li><p><strong>Is the FDE role becoming less desirable? </strong>Job postings for Forward Deployed Engineers (FDEs) have surged, but many professionals don&#8217;t want the role because it&#8217;s more like solutions&#8230;</p></li></ol>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-is-the-fde-role-becoming">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Building WhatsApp with Jean Lee]]></title><description><![CDATA[Jean Lee, engineer #19 at WhatsApp, on scaling the app with a tiny team, the Facebook acquisition, and what it reveals about the future of engineering.]]></description><link>https://newsletter.pragmaticengineer.com/p/building-whatsapp-with-jean-lee</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/building-whatsapp-with-jean-lee</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 18 Mar 2026 17:20:22 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/191213865/da03f33b54b9fc288fb0794ada97a07b.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/5Kn32cIWPSY">YouTube</a>, <a href="https://open.spotify.com/episode/56bXJZveAm2QfPViN8FPuk">Spotify</a>, and <a href="https://podcasts.apple.com/us/podcast/the-pragmatic-engineer/id1769051199">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gh57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gh57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" width="800" height="70" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:70,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/185094534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.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_!Gh57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>&#8226; <strong><a href="http://statsig.com/pragmatic">Statsig</a></strong> &#8211; &#8288; The unified platform for flags, analytics, experiments, and more. Stop switching between different tools, and have them all in one place.</p><p>&#8226; <strong><a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a></strong> &#8211; The makers of SonarQube, the industry standard for automated code review. Sonar helps reduce outages, improve security, and lower risks associated with AI and agentic coding. <a href="https://www.sonarsource.com/pragmatic/">See how Sonar</a> is empowering the Agent Centric Development Cycle with new products and capabilities that strengthen the guide, verify, and solve phases of development.</p><p>&#8226; <strong><a href="https://workos.com/">WorkOS</a></strong> &#8211; Everything you need to make your app enterprise ready. Skip the rebuild for enterprise features. Keep shipping. Visit <a href="http://workos.com">WorkOS.com</a>.</p><h3><strong>In this episode</strong></h3><p>How did a tiny team of 30 engineers build the world-famous messaging app more than a decade ago, and what can dev teams learn from that feat today? <a href="http://linkedin.com/in/jeanklee">Jean Lee</a> was engineer #19 at <a href="https://www.whatsapp.com/">WhatsApp</a>, joining when the company was still small, with almost no formal processes. She helped it scale to hundreds of millions of users, went through the $19B acquisition by Facebook, and later worked at Meta.</p><p>In this episode of <em>Pragmatic Engineer</em>, I talk with Jean about what it was like building WhatsApp. When Facebook bought WhatsApp in 2014, only around 30 engineers supported hundreds of millions of users across eight platforms.</p><p>We discuss how the founders kept things simple, saying &#8220;no&#8221; to most feature requests for years. Jean explains why WhatsApp chose Erlang for the backend, why the team avoided cross-platform abstractions, and how charging users $1 per year paid everyone&#8217;s salaries, while keeping growth intentionally slow.</p><p>Jean also shares what the Facebook acquisition was like on the inside, how she dealt with sudden personal wealth, and what it was like transitioning from an IC to a manager at Facebook &#8211; including the reality of calibration meetings and performance reviews.</p><p>We also discuss how AI enables smaller engineering teams, and why WhatsApp&#8217;s experience suggests ownership and trust might matter more than tools.</p><h3><strong>Key observation from Jean</strong></h3><p>Ten takeaways from Jean that I find the most interesting:</p><div id="youtube2-5Kn32cIWPSY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5Kn32cIWPSY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/5Kn32cIWPSY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>1. WhatsApp built a billion-dollar business with a tiny team, and no AI tools. </strong>WhatsApp served 450 million users with only 30 engineers, long before AI tools existed. Jean says: &#8220;I wonder if being able to move fast is independent from AI. When you&#8217;re small, you&#8217;re just more efficient.&#8221;</p><p><strong>2. WhatsApp had no code reviews after in-place. </strong>WhatsApp cofounder, Brian Acton, reviewed the very first pull request of each new hire, and after that, there were no more code reviews. Jean recounts how Brian reviewed her debut PR in extreme detail. This first (and only!) review set the bar high, and she wrote code to that standard from then on.</p><p><strong>3. WhatsApp had close to zero formal processes</strong>. WhatsApp had no Scrum, no Agile, no TDD (test driven development), and no formal code reviews beyond the first commit. In contrast, Skype had 1,000 engineers and mandatory Scrum training, but WhatsApp still outcompeted it and won. Jean&#8217;s response to hearing of all the formal processes Skype used in order to execute faster: &#8220;I&#8217;m surprised to hear they thought they were shipping faster because of it.&#8221; Perhaps process is often a substitute for trust, not quality?&#8221;</p><p><strong>4. WhatsApp&#8217;s office had a countdown display showing days since the last outage.</strong> When an outage happened, no emails were sent around, and no meetings were called. The number simply reset to zero. Avoiding outages was on everyone&#8217;s mind as a result. This is an example of how visible metrics can create accountability without bureaucracy.</p><p><strong>5. WhatsApp delayed video calling for years, until it was extremely polished.</strong> Contrary to the &#8220;launch early, then iterate&#8221; mantra, WhatsApp held features like video calling back. They also tested features extensively with family members before releasing anything publicly, as part of their refusal to launch something of less than top-notch quality.</p><p><strong>6. Saying &#8220;no&#8221; to features was a competitive advantage.</strong> WhatsApp&#8217;s CEO, Jan Koum, rejected 99% of feature requests from the team. While competitors shipped dozens of shiny, new features, WhatsApp ruthlessly prioritized reliability and simplicity. Jan repeatedly told the team what the mission was. &#8220;I want a grandma living in the countryside to be able to use our app&#8221;, he said.</p><p><strong>7. WhatsApp&#8217;s team was older and more experienced than most startups at the time. </strong>In 2014 when Facebook acquired WhatsApp, only four out of the 30 engineers were less than 30 years old. Perhaps part of the reason for WhatsApp&#8217;s stunning success was having an unusually experienced team from the start.</p><p><strong>8. AI won&#8217;t replace the human touch in engineering management</strong>. Jean sees areas such as OKR management, documentation, and performance data gathering as domains in which AI can take on most of the work. But she believes that understanding and unblocking engineers is best done person-to-person, not by AI.</p><p><strong>9. Posting about your work on Meta&#8217;s &#8220;internal Facebook&#8221; site affects career growth there. </strong>Jean noted that engineers at the social media giant who regularly posted about their launches and learnings enjoyed a sizable advantage in performance calibration reviews.</p><p><strong>10. Jean&#8217;s advice to new grads: invest in the fundamentals.</strong> &#8220;Tools come and go, languages come and go, but foundations don&#8217;t go anywhere,&#8221; she says.</p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><ul><li><p><a href="https://newsletter.pragmaticengineer.com/p/building-the-threads-app">How Meta built Threads</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/project-management-in-tech">How Big Tech runs tech projects and the curious absence of Scrum</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations">Performance calibrations at tech companies</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/engineers-leading-projects-part-2">Software engineers leading projects</a></p></li></ul><h3><strong>Timestamps</strong></h3><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=99s">01:39</a>) Early years in tech</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=378s">06:18</a>) Becoming engineer #19 at WhatsApp</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=833s">13:53</a>) WhatsApp&#8217;s tech stack</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=1089s">18:09</a>) WhatsApp&#8217;s unique ways of working</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=1527s">25:27</a>) Countdown displays and outages</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=1627s">27:07</a>) Why WhatsApp won</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=1733s">28:53</a>) The Facebook acquisition</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=1993s">33:13</a>) Life after acquisition</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=2367s">39:27</a>) Working at Facebook in London</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=2647s">44:07</a>) Transitioning to management</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=2847s">47:27</a>) Performance reviews as a manager</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=3209s">53:29</a>) After Facebook</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=3533s">58:53</a>) AI&#8217;s impact on engineering</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=3754s">1:02:34</a>) Jean&#8217;s advice to new grads and startups</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=4005s">1:06:45</a>) Empowering employees</p><p>(<a href="https://www.youtube.com/watch?v=5Kn32cIWPSY&amp;t=4097s">1:08:17</a>) Book recommendations</p><h3><strong>References</strong></h3><p><strong>Where to find Jean Lee:</strong></p><p>&#8226; Substack: <a href="https://exaltitude.substack.com/  &#8226; LinkedIn: https://www.linkedin.com/in/jeanklee  &#8226; YouTube: https://www.youtube.com/@exaltitude  &#8226; Website: https://www.exaltitude.io">https://exaltitude.substack.com </a></p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/jeanklee">https://www.linkedin.com/in/jeanklee</a></p><p>&#8226; YouTube: <a href="https://www.youtube.com/@exaltitude">https://www.youtube.com/@exaltitude</a></p><p>&#8226; Website: <a href="https://www.exaltitude.io">https://www.exaltitude.io</a></p><p><strong>Mentions during the episode:</strong></p><p>&#8226; WhatsApp: <a href="https://www.whatsapp.com">https://www.whatsapp.com</a></p><p>&#8226; KakaoTalk: <a href="https://en.wikipedia.org/wiki/KakaoTalk">https://en.wikipedia.org/wiki/KakaoTalk</a></p><p>&#8226; Jan Koum: <a href="https://en.wikipedia.org/wiki/Jan_Koum">https://en.wikipedia.org/wiki/Jan_Koum</a></p><p>&#8226; Brian Acton on LinkedIn: <a href="https://www.linkedin.com/in/brianacton">https://www.linkedin.com/in/brianacton</a></p><p>&#8226; Yahoo: <a href="https://www.yahoo.com">https://www.yahoo.com</a></p><p>&#8226; Sequoia: <a href="https://sequoiacap.com">https://sequoiacap.com</a></p><p>&#8226; Cocktail Flow: <a href="https://cocktailflow.com">https://cocktailflow.com</a></p><p>&#8226; KaiOS: <a href="https://en.wikipedia.org/wiki/KaiOS">https://en.wikipedia.org/wiki/KaiOS</a></p><p>&#8226; Erlang: <a href="https://www.erlang.org">https://www.erlang.org</a></p><p>&#8226; Ericsson: <a href="https://www.ericsson.com">https://www.ericsson.com</a></p><p>&#8226; Erlang Factory 2014 - That&#8217;s &#8216;Billion&#8217; with a &#8216;B&#8217;: Scaling to the Next Level at WhatsApp: </p><div id="youtube2-c12cYAUTXXs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;c12cYAUTXXs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/c12cYAUTXXs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#8226; WeChat: <a href="https://www.wechat.com">https://www.wechat.com</a></p><p>&#8226; Skype: <a href="https://en.wikipedia.org/wiki/Skype">https://en.wikipedia.org/wiki/Skype</a></p><p>&#8226; What is Scrum?: <a href="https://www.scrum.org/resources/what-scrum-module">https://www.scrum.org/resources/what-scrum-module</a></p><p>&#8226; Mark Zuckerberg: <a href="https://en.wikipedia.org/wiki/Mark_Zuckerberg">https://en.wikipedia.org/wiki/Mark_Zuckerberg</a></p><p>&#8226; Wealthfront: <a href="https://www.wealthfront.com">https://www.wealthfront.com</a></p><p>&#8226; A Random Walk Down Wall Street: The Best Investment Guide That Money Can Buy: <a href="https://www.amazon.com/Random-Walk-Down-Wall-Street/dp/1324051132">https://www.amazon.com/Random-Walk-Down-Wall-Street/dp/1324051132</a></p><p>&#8226; Surrounded by Idiots: The Four Types of Human Behavior and How to Effectively Communicate with Each in Business: <a href="https://www.amazon.com/Surrounded-Idiots-Revised-Expanded-Effectively/dp/1250420458">https://www.amazon.com/Surrounded-Idiots-Revised-Expanded-Effectively/dp/1250420458</a></p><p>&#8226; Performance Calibrations at Tech Companies: Part 1: <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations">https://newsletter.pragmaticengineer.com/p/performance-calibrations</a></p><p>&#8226; Performance Calibrations at Tech Companies: Part 2: <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations-part-2">https://newsletter.pragmaticengineer.com/p/performance-calibrations-part-2</a></p><p>&#8226; Anthropic: <a href="https://www.anthropic.com">https://www.anthropic.com</a></p><p>&#8226; <em>What Color Is Your Parachute? for College: Pave Your Path from Major to Meaningful Work</em>: <a href="https://www.amazon.com/What-Color-Your-Parachute-College/dp/1984857568">https://www.amazon.com/What-Color-Your-Parachute-College/dp/1984857568</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Are AI agents actually slowing us down?]]></title><description><![CDATA[As more software engineers use AI agents daily, there&#8217;s also more sloppy software, outages, quality issues, and even a slowdown in shipping velocity. What&#8217;s happening, and how do we solve it?]]></description><link>https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 17 Mar 2026 16:59:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/35d38ae8-5fc7-4307-84d4-de2706908538_1674x1258.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When it comes to AI agents and AI tooling, most of the discussion focuses on their potential boosts for efficiency, faster iteration, and the pushing out of more code, faster.</p><p>Last week, we took an inside look into <a href="https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development">how Uber is adopting AI</a>, internally. The rideshare giant has built close to a dozen internal systems to deal with code generated by AI agents. However, when quantifying the impact of AI, the focus was on how much output has increased, and how devs who use more AI also generate more pull requests; these are the &#8220;power user&#8221; devs who generate 52% more PRs than devs who use AI less. There was no mention of product quality &#8211; at all!</p><p>And there are signs that product quality is dropping overall. Today, we dig into this under-discussed topic, covering:</p><ol><li><p><strong>Anthropic: degraded flagship website.</strong> An annoying UX issue irritated paying Claude customers &#8211; and no one at Anthropic noticed. The company moves very fast, generates 80%+ of production code with Claude, but quality and user experience seem to be taking a backseat.</p></li><li><p><strong>Amazon: AI-agent reliance triggers SEVs. </strong>Amazon&#8217;s retail org has a leap in outages caused by its own AI agents. Now, senior sign off is needed for junior engineers&#8217; AI-assisted changes.</p></li><li><p><strong>Big Tech: &#8220;use AI or you&#8217;re unproductive.&#8221;</strong> Companies like Meta and Uber are tracking AI token usage in performance reviews, putting pressure on engineers to use it heavily &#8212; irrespective of the tools&#8217; quality impact.</p></li><li><p><strong>OpenCode: more time spent cleaning up.</strong> Dax Raad, OpenCode&#8217;s creator, warns that AI agents are lowering the bar for what ships, discouraging refactoring, and don&#8217;t speed teams up.</p></li><li><p><strong>5. Startups: founders see LLMs slowing down long-term velocity. </strong>Sentry&#8217;s CTO and others observe that while AI removes the barrier to getting started, it also produces bloated, hard-to-maintain code that slows long-term development.</p></li><li><p><strong>Research: AI agents underperform claims.</strong> Some studies show AI coding tools produce short-lived velocity gains followed by significant tech debt increases.</p></li><li><p><strong>How do we solve it?</strong> Engineers with strong architectural sense become more critical than ever, proposed solutions include formal validation methods, and perhaps reviving some old school QA ideas.</p></li></ol><h2>1. Anthropic: degraded flagship website</h2><p>This article&#8217;s genesis was last week, when I&#8217;d finally had enough of a persistent UX bug on Claude&#8217;s flagship website: the prompt I typed in regularly got lost. Below is a video of me typing &#8220;How can I&#8230;&#8221; &#8211; and &#8220;losing&#8221; the first two words when the page loaded:</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;5b3077ba-7213-44f8-a963-91fc8b9e47f5&quot;,&quot;duration&quot;:null}"></div><p>It&#8217;s pretty straightforward:</p><ol><li><p>The page starts to render and the textbox is displayed</p></li><li><p>The user starts to type their prompt, but the page has not finished loading subscription data</p></li><li><p>The subscription information loads around a second later</p></li><li><p>The textbox is reset and the typing is lost</p></li></ol><p>This is a pretty basic bug you might expect in a prototype, except that this is the landing page of Claude.ai, and it&#8217;s a bug that impacts every paying customer &#8211; easily millions &#8211; every day. Even worse, the bug happens <em>every time</em> you visit the site.</p><p><strong>Somehow, nobody at Anthropic tested the site to catch a plainly obvious bug</strong> which impacted 100% of paying customers. At the same time, no company uses AI coding tools more than Anthropic: around 80% of the company&#8217;s code is now generated by Claude Code, so we can assume a good part of the website is also created that way.</p><p>My complaint about Anthropic&#8217;s website being broken <a href="https://x.com/GergelyOrosz/status/2031986107903054179">went a bit viral</a> and got the attention of the developer team:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Hl1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Hl1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png 424w, https://substackcdn.com/image/fetch/$s_!4Hl1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png 848w, https://substackcdn.com/image/fetch/$s_!4Hl1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png 1272w, https://substackcdn.com/image/fetch/$s_!4Hl1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Hl1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png" width="1190" height="356" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:356,&quot;width&quot;:1190,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Hl1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png 424w, https://substackcdn.com/image/fetch/$s_!4Hl1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png 848w, https://substackcdn.com/image/fetch/$s_!4Hl1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.png 1272w, https://substackcdn.com/image/fetch/$s_!4Hl1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19905f01-a3c2-485f-bd1b-53769c587e53_1190x356.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"><em>Product manager Robert Bye confirms the bug will be fixed. Source: <a href="https://x.com/RobertJBye/status/2032109640134066319?s=20">Robert Bye</a></em></figcaption></figure></div><p>To their credit, three days later the bug was gone. There&#8217;s no longer a &#8220;double load&#8221; of the textbox: it takes a bit longer to load but only does so once.</p><p>Still, it makes me wonder how much longer this issue would&#8217;ve continued had nobody complained. Also, how many more bugs are present on the Claude website that nobody highlighted on social media? How many more features could be shipped in a state that is subpar for production-grade software with millions of paying customers?</p><p><strong>Anthropic seems to be prioritizing moving </strong><em><strong>very</strong></em><strong> fast over doing so with high quality. </strong>There is no denying that the company is moving at incredible speed and running laps around competitors. A good example is how they built Claude Cowork in just 10 days. Claude Cowork handled work with Microsoft Word and Excel documents surprisingly well, to the point that it set off a &#8220;code red&#8221; inside Microsoft&#8217;s Office division, I understand.</p><p>Microsoft responded as fast as possible, but it still took 2-3 months to launch their (cloned) response, called Copilot Cowork earlier this month, with full access still to follow soon.</p><p><strong>In the case of Anthropic, moving fast with okay quality seems to make good business sense: </strong>they build a better product than what already exists, so no matter if it&#8217;s a bit rough around the edges; they can fix quality issues post-launch and still be months ahead of the competition.</p><h2>2. Amazon: reliance on AI agents causes SEVs</h2><p>Anthropic can afford to move fast while it&#8217;s growing at an extremely high rate and expanding its market share rapidly. At the same time, established players like Amazon have extreme focus on reliability: AWS has become the top cloud provider not least by being extremely reliable (as well as aggressive on pricing).</p><p>Well, reliability at the online retailer seems to be getting worse, too, and the company&#8217;s AI agent, Kiro, could be causing SEVs (Amazon&#8217;s phrase for &#8220;outage&#8221;), <a href="https://www.ft.com/content/7cab4ec7-4712-4137-b602-119a44f771de">according</a> to The Financial Times (emphasis mine):</p><blockquote><p>Amazon&#8217;s ecommerce business has summoned a large group of engineers to a meeting on Tuesday for a &#8220;deep dive&#8221; into a spate of outages, including incidents tied to the use of AI coding tools.</p><p><strong>The online retail giant said there had been a &#8220;trend of incidents&#8221; in recent months, characterised by a &#8220;high blast radius&#8221; and &#8220;Gen-AI assisted changes&#8221; among other factors,</strong> according to a briefing note for the meeting seen by the FT.</p><p>Under &#8220;contributing factors&#8221; the note included &#8220;novel GenAI usage for which best practices and safeguards are not yet fully established&#8221;.</p><p>&#8220;Folks, as you likely know, the availability of the site and related infrastructure has not been good recently,&#8221; Dave Treadwell, a senior vice-president at the group, told employees in an email, also seen by the FT. (...)</p><p>He asked staff to attend the meeting, which is normally optional.</p><p>Junior and mid-level engineers require more senior engineers to sign off any AI-assisted changes, Treadwell added in the briefing note.&#8221;</p></blockquote><p>This meeting was the regular <em>&#8220;This Week in Stores Tech&#8221;</em> operational one, but what was new was the note telling staff to attend this &#8220;optional&#8221; meeting, and the mandate for senior engineers to sign off code changes from juniors. The outages may have been caused by less experienced engineers over-trusting GenAI&#8217;s output. Also, there were incidents caused by AI changes, said the FT:</p><blockquote><p>&#8220;Separately, the company&#8217;s cloud computing arm &#8212; Amazon Web Services &#8212; has suffered at least two incidents linked to the use of AI coding assistants, which the company has been actively rolling out to its staff.</p><p>AWS suffered a 13-hour interruption to a cost calculator used by customers in mid-December after engineers allowed the group&#8217;s Kiro AI coding tool to make certain changes, and the AI tool opted to &#8220;delete and recreate the environment&#8221;, the <a href="https://www.ft.com/content/00c282de-ed14-4acd-a948-bc8d6bdb339d">FT previously reported</a>.&#8221;</p></blockquote><p>Again, a tool causing an outage is not its own fault: it&#8217;s on the engineer who lets the tool run wild. If I delete two lines of code, then push it to production, and the server crashes, the fault is not with the text editor or the Git client, but with me who made the change. Similarly, if you prompt an AI agent to do something, and the AI agent goes off and does its stuff which causes an outage, then responsibility lies with the engineer who didn&#8217;t set up guardrails for the agent.</p><p><strong>However, there is the issue that AI agents can wreak havoc in ways devs don&#8217;t quite understand or expect, until learning the hard way. </strong>This was what took down a lesser-used AWS service, according to the report:</p><blockquote><p>&#8220;Amazon Web Services experienced a 13-hour interruption to one system used by its customers in mid-December [2025] after engineers allowed its Kiro AI coding tool to make certain changes, according to four people familiar with the matter.</p><p>The people said the agentic tool, which can take autonomous actions on behalf of users, determined that the best course of action was to &#8220;delete and recreate the environment&#8221;.</p></blockquote><p>It sounds like an engineer gave overly broad permissions to the coding agent which then used its scope to delete a service. As mentioned, the engineer is responsible, but there is also a learning curve with these AI agents to consider: it&#8217;s not like this type of outage happened in the past. Plus, companies like Amazon are heavily incentivizing using AI agents for as much work as possible, which naturally leads to overuse.</p><h2>3. Big Tech: &#8220;use AI or you&#8217;re unproductive&#8221;</h2><p>Something happens at places that measure devs&#8217; AI usage: pressure builds for all devs to use more AI or else be seen unproductive and at risk of poor performance reviews, potentially leading to a PIP or worse.</p><p><strong>Meta is taking token usage into account during perf reviews.</strong> A current engineering manager at the social media giant told me that the token usage of each engineer is now a data point &#8212; one of many! &#8212; for performance calibrations. By itself, it is not a positive or negative signal, but someone perceived as having low impact <em>and</em> with low token usage is now seen as a blatant low performer. For high performers with outstanding impact, very high token usage is seen as a <em>good</em> thing as it conveys to the manager group that they&#8217;re personally invested in AI and are improving their workflow &#8211; as proved by results.</p><p><em>We previously covered <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations">how performance calibrations work at places like Meta.</a></em></p><p><strong>Big Tech CEOs are starting to see AI &#8220;power user devs&#8221; as superior to their coworkers.</strong> Uber is a good example: the Dev Platform team started to analyze the output of engineers by whether or not they&#8217;re in the &#8220;power user&#8221; category, meaning they use AI agents at least 20 days per month. They found more PR output by engineers who are power users. So far, that&#8217;s useful data, but it&#8217;s just one piece of information, and doesn&#8217;t reveal the quality of the PRs, the impact of the engineer, or any other business outcome.</p><p>By the time this data reaches CEO level, it has turned into something else. Here&#8217;s Uber CEO, Dara Khosrowshahi, interpreting the same data points on the Diary of a CEO podcast (emphasis mine:)</p><blockquote><p>&#8220;While 90% of our engineers are using AI tools of some sort, there&#8217;s about 30% of them that are using them at a completely accelerated pace. <strong>And it [using AI tools heavily] really is changing their productivity in a way that I&#8217;ve never ever seen before.</strong>&#8221;</p></blockquote><p>There&#8217;s a step from observing more PRs per engineer, to judging power users as being more productive for that reason. Dara continues:</p><blockquote><p>&#8220;I can imagine maybe 5 years from now, as the engineers get more and more productive, that I may not decide to add engineering headcount because at that point <strong>instead of adding an engineer, I should add agents and buy some more GPUs from Nvidia.</strong> That may be the investment in the future.&#8221;</p></blockquote><p>Unsaid in the above is that by that time, only engineers &#8220;using AI at a completely accelerated pace&#8221; would be employed. Would it also mean that engineers not on the bandwagon are on the way out? I appreciate Dara speaking his mind and shedding light on the thought process of a Big Tech CEO.</p><p><strong>Inside large tech companies, it&#8217;s becoming a career risk to not use AI at an accelerated pace, regardless of output quality. </strong>These large companies are the ones likely to be mulling layoffs, like Meta <a href="https://www.reuters.com/business/world-at-work/meta-planning-sweeping-layoffs-ai-costs-mount-2026-03-14/">reportedly preparing</a> to cut up to 20% of staff. And when it comes to identifying redundancies, it&#8217;s a fair assumption that things like &#8220;AI usage&#8221; and &#8220;pull requests per engineer&#8221; will be taken into account, especially as one theme of such layoffs will almost certainly be that the employer wants to focus more on AI.</p><p>So, it&#8217;s common sense (and self-preservation) to use more AI, if only not to be seen as unproductive. Their perceived output will rise and engineering leadership will share more reports about productivity being up, and interpreting more code generated and more pull requests as the proof.</p><h2>4. OpenCode: &#8220;more time spent cleaning up&#8221;</h2><p>Dax Raad is founder and CEO of <a href="https://opencode.ai/">OpenCode</a>, an open source AI coding agent, into which you can plug in models like Claude, ChatGPT, Gemini, and others. It&#8217;s an increasingly popular alternative to the likes of Claude Code and Codex. In our <a href="https://newsletter.pragmaticengineer.com/i/189777574/2-most-used-ai-tools">recent AI tooling survey</a>, it came up as a tool used nearly as much as Google&#8217;s Gemini CLI and Antigravity. A small team works on this increasingly influential tool, and is seeing problems with AI overuse. Dax wrote <a href="https://x.com/thdxr/status/2031377117007454421?s=20">this note</a> to the OpenCode team (emphasis mine):</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: What will the Staff Engineer role look like in 2027 and beyond?]]></title><description><![CDATA[Also: new trend of token costs becoming a worry for CTOs, 10% cuts at Atlassian, and more.]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-what-will-the-staff-engineer</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-what-will-the-staff-engineer</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 12 Mar 2026 17:46:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uTLZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1886a999-fc50-43f4-8989-ac9cb6f395dd_2048x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</em></p><p>Before we start, I&#8217;d like to share updates about data in the two most recent articles:</p><p><strong>Uber&#8217;s AI adoption numbers. </strong>The Dev Platform folks at Uber have been kind enough to share the latest up-to-date numbers on AI adoption, following <a href="https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development">Tuesday&#8217;s article</a>, which reported that 31% of all code is AI-authored. It turns out this was incorrect, due to a bug with one of the tools. Here&#8217;s how things look there:</p><ul><li><p><strong>84%</strong> of devs at Uber are agentic coding users (either CLI-based agents, or making more agentic requests than tab-completion in the IDE).</p></li><li><p><strong>65-72% </strong>of code is AI-generated inside IDE-based tools. For AI command line tools like Claude Code the figure is, naturally, 100%.</p></li><li><p><strong>Claude Code usage </strong>almost doubled in 3 months; from 32% last December, to 63% by February. Meanwhile, IDE-based tool usage (Cursor, IntelliJ) have plateaued.</p></li></ul><p>Separately, last week&#8217;s edition of The Pulse reported that Block did not make job cuts between 2022 and 2025, which was incorrect. Layoffs happened in <a href="https://www.businessinsider.com/block-layoffs-jack-dorsey-tech-industry-cuts-2024-1">Jan 2024</a> and <a href="https://www.sfchronicle.com/tech/article/layoffs-block-jack-dorsey-20242797.php">March 2025</a>. I have <a href="https://newsletter.pragmaticengineer.com/i/190020609/2-job-cuts-at-block-what-if-ais-not-to-blame">updated my analysis</a> with these details; apologies for the error.</p><p>Today, we cover:</p><ol><li><p><strong>Staff+ engineers in 2027 and beyond. </strong>What happens to the Staff engineer role when agents write more code? Actually, they could be more in demand than ever!</p></li><li><p><strong>New trend? AI token costs are a rising concern for CTOs.</strong> Accounts from two engineering leaders who are raising the alarm about steeply climbing AI costs and the need to slow down spending.</p></li><li><p><strong>10% layoffs at Atlassian: is it AI&#8217;s fault? </strong>Atlassian says it wants to invest savings in AI, but is there more to it?</p></li><li><p><strong>Industry Pulse.</strong> An AI-powered library reimplementation sparks copyleft licensing debate, Anthropic launches $15&#8211;25 per-review code reviews, Microsoft ships a Claude-powered, Copilot Cowork clone, and Apple is the lone Big Tech not ramping up AI infrastructure spending.</p></li></ol><h2>1. Staff+ engineers in 2027 and beyond</h2><p>At a recent two-day workshop in Utah, US, named <em>&#8216;The Future of Software Development&#8217;</em>, and organized by Martin Fowler, I was among 50 attendees. We self-organized our own sessions, where everyone could suggest a topic close to their heart, which all went on an agenda:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-what-will-the-staff-engineer">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[From IDEs to AI Agents with Steve Yegge]]></title><description><![CDATA[Steve Yegge on how AI is reshaping software engineering, the rise of &#8220;vibe coding,&#8221; and why developers must adapt to a rapidly changing craft.]]></description><link>https://newsletter.pragmaticengineer.com/p/from-ides-to-ai-agents-with-steve</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/from-ides-to-ai-agents-with-steve</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 11 Mar 2026 16:58:07 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/190410639/a24a2fbd023a34a888e0a1a09d89a79b.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/aFsAOu2bgFk">YouTube</a>, <a href="https://open.spotify.com/episode/6rSG9IY6qnMFX0wdUD1R6c">Spotify</a>, and <a href="https://podcasts.apple.com/us/podcast/from-ides-to-ai-agents-with-steve-yegge/id1769051199?i=1000754686528">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gh57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gh57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" width="800" height="70" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:70,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/185094534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.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_!Gh57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>&#8226; <strong><a href="http://statsig.com/pragmatic">Statsig</a></strong> &#8211; &#8288; The unified platform for flags, analytics, experiments, and more. Stop switching between different tools, and have them all in one place. <a href="http://statsig.com/pragmatic">Check out Statsig</a></p><p>&#8226; <strong><a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a></strong> &#8211; The makers of SonarQube, the industry standard for automated code review. Sonar helps reduce outages, improve security, and lower risks associated with AI and agentic coding. <a href="https://www.sonarsource.com/pragmatic/">See how Sonar</a> is empowering the Agent Centric Development Cycle with new products and capabilities that strengthen the guide, verify, and solve phases of development.</p><p>&#8226; <strong><a href="https://workos.com/">WorkOS</a></strong> &#8211; Everything you need to make your app enterprise ready. Skip the rebuild for enterprise features. Keep shipping. Visit <a href="http://workos.com">WorkOS.com</a>.</p><h3><strong>In this episode</strong></h3><p><em>Before we start: we recorded this episode with Steve, in Utah, early February, when both of us attended Marin Fowler&#8217;s <a href="https://newsletter.pragmaticengineer.com/p/the-future-of-software-engineering-with-ai">The Future of Software Development workshop</a>. Unfortunately, the audio recording for the episode turned out to be of poor quality, so I published a write-up of this conversation one month ago, as a deepdive: <a href="https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the">Steve Yegge on AI Agents and the Future of Software Engineering</a>.</em></p><p><em>The article captured the essence of what Steve shared, but it felt like a shame not to be able to share the conversation, and just how animated and excited Steve got when talking about the software engineering craft. Thanks to the help of software engineer&nbsp;<a href="https://x.com/miyagawa">Tatsuhiko Miyagawa</a>&nbsp;and audio post-production software&nbsp;<a href="https://auphonic.com/">Auphonic</a>, we managed to fix all audio issues, and you can enjoy the full episode, including parts that the deepdive omitted.</em></p><div><hr></div><p><a href="https://steve-yegge.blogspot.com/">Steve Yegge</a> has spent decades writing software and thinking about how the craft evolves. From his early years at Amazon and Google, to his influential blog posts, he has often been early at spotting shifts in how software gets built.</p><p>In this episode of <em>Pragmatic Engineer</em>, I talk with Steve about how AI is changing engineering work, why he believes coding by hand may gradually disappear, and what developers should focus on, instead. We discuss his latest book,<em> <a href="https://itrevolution.com/product/vibe-coding-book/">Vibe Coding</a>,</em> and the open-source AI agent orchestrator he built called <a href="https://github.com/steveyegge/gastown">Gas Town,</a> which he said most devs should <em>avoid</em> using.</p><p>Steve shares his framework for levels of AI adoption by engineers, ranging from avoiding AI tools entirely, to running multiple agents in parallel. We discuss why he believes the knowledge that engineers need to know keeps changing, and why understanding how systems evolve may matter more than mastering any particular tool.</p><p>We also explore broader implications. Steve argues that AI&#8217;s role is not primarily to replace engineers, but to amplify them. At the same time, he warns that the pace of change will create new kinds of technical debt, new productivity pressures, and fresh challenges for how teams operate.</p><h3><strong>Key observation from Steve</strong></h3><p>My 9 observations from this episode:</p><div id="youtube2-aFsAOu2bgFk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;aFsAOu2bgFk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/aFsAOu2bgFk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>1. A prototype-as-product model is replacing the build-then-dump cycle. </strong>At Anthropic, Steve says teams create many prototypes rapidly and just ship the best one. Claude Cowork reportedly went from prototype to launch in just 10 days. Meanwhile, &#8220;slot machine programming&#8221; &#8211; building 20 implementations and picking the winner &#8211; is becoming normal practice for teams.</p><p><strong>2. The IDE could be evolving into a conversation and monitoring interface, not a code editor.</strong> Steve sees tools like Claude Cowork as the return of the IDE, focused on managing agent workflows above coding by hand. He predicts these new IDEs will focus on conversations with AI agents and monitoring them.<em> Side note: I&#8217;m not sure I foresee conversational tools appearing just yet, or IDEs turning into such tools &#8211; but we do see tools like Claude Code being wildly popular among devs, as per <a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">our latest AI tooling survey.</a></em></p><p><strong>3. Reading ability is becoming a blocker for wider AI adoption.</strong> Some struggle with walls of text that current AI tools produce, and Steve predicts that in the very near future, most people will program by talking to a visual avatar, not reading terminal output because he observes that five paragraphs is already a lot to read for many devs.</p><p><strong>4. AI coding has a spectrum, and most engineers trend near the bottom. </strong>Steve describes eight levels, from &#8220;no AI&#8221; to &#8220;multi-agent orchestration,&#8221; with most engineers currently at levels 1&#8211;2: asking an IDE for suggestions and carefully reviewing output. He suspects such engineers will be left behind.</p><p><strong>5. Monolithic codebases are a big blocker to AI adoption in enterprises. </strong>AI agents have a ceiling of between roughly half a million to a few million lines of code which they can work with, effectively. If your codebase is a monolith that won&#8217;t fit in a context window, AI agents won&#8217;t work well with it.</p><p><strong>6. What software engineers need to know keeps changing.</strong> In the 1990s, any decent software engineer knew Assembly, and today almost no decent developer knows it because Assembly has long been superseded by technical progress. What engineers &#8220;need&#8221; to know these days is different from the &#8216;90s and that process continues with AI, changing the parts of the craft that are essential for devs. We grumble about this but that won&#8217;t change anything by itself.</p><p><strong>7. SaaS companies that don&#8217;t offer platforms and APIs will be out-competed. </strong>Steve uses Zendesk as an example: if your product doesn&#8217;t expose APIs, then AI-native companies will just build bespoke replacements. &#8220;If Zendesk doesn&#8217;t make themselves a platform, then they&#8217;ll put themselves out of existence.&#8221;</p><p><strong>8. There&#8217;s a &#8220;Dracula Effect&#8221; where AI-augmented work drains engineers faster than traditional work</strong> because AI automates the easy tasks, meaning that engineers are stuck doing high-intensity thinking all day. Steve says you may only get three daily productive hours at max speed, but during that time, you could produce 100x more output than before.</p><p><strong>9. Even if AI progress stalls, it&#8217;s worthwhile getting proficient at working with parallel agents.</strong> Steve argues that since there&#8217;s a model as capable as Opus 4.5 is, we don&#8217;t need smarter models but better orchestration layers. The worst outcome for someone who invests in learning AI tools is that they gain a skill set that stays useful, whether the models improve or not!</p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the">Steve Yegge on AI agents and the future of software engineering</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/vibe-coding-as-a-software-engineer">Vibe coding as a software engineer</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/steve-yegge">The full circle of developer productivity with Steve Yegge</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">AI Tooling for Software Engineers in 2026</a></p><p>&#8226; <a href="https://newsletter.pragmaticengineer.com/p/the-ai-engineering-stack">The AI Engineering Stack</a></p><h3><strong>Timestamps</strong></h3><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=103s">01:43</a>) Steve&#8217;s latest projects</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=147s">02:27</a>) Important blog posts</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=288s">04:48</a>) Shifts in what engineers need to know</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=646s">10:46</a>) Steve&#8217;s current AI stance</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=803s">13:23</a>) Steve&#8217;s book Vibe Coding</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=1105s">18:25</a>) Layoffs and disruption in tech</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=1873s">31:13</a>) Gas Town</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=2410s">40:10</a>) New ways of working</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=3068s">51:08</a>) The problem of too many people</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=3285s">54:45</a>) Why AI results lag in business</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=3597s">59:57</a>) Gamification and product stickiness</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=3894s">1:04:54</a>) The &#8216;Bitter Lesson&#8217; explained</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=4034s">1:07:14</a>) The future of software development</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=4986s">1:23:06</a>) Where languages stand</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=5087s">1:24:47</a>) Adapting to change</p><p>(<a href="https://www.youtube.com/watch?v=aFsAOu2bgFk&amp;t=5252s">1:27:32</a>) Steve&#8217;s predictions</p><h3><strong>References</strong></h3><p><strong>Where to find Steve Yegge:</strong></p><p>&#8226; X: <a href="https://x.com/steve_yegge">https://x.com/steve_yegge</a></p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/steveyegge">https://www.linkedin.com/in/steveyegge</a></p><p>&#8226; Website: <a href="https://steve-yegge.blogspot.com/">https://steve-yegge.blogspot.com/</a></p><p>&#8226; <em>Vibe Coding</em>: <a href="https://itrevolution.com/product/vibe-coding-book/">https://itrevolution.com/product/vibe-coding-book</a></p><p><strong>Mentions during the episode:</strong></p><p>&#8226; Steve Yegge on AI Agents and the Future of Software Engineering: <a href="https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the">https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the</a></p><p>&#8226; Amazon, Google and Vibe Coding with Steve Yegge: <a href="https://newsletter.pragmaticengineer.com/p/amazon-google-and-vibe-coding-with">https://newsletter.pragmaticengineer.com/p/amazon-google-and-vibe-coding-with</a></p><p>&#8226; Gas Town: <a href="https://github.com/steveyegge/gastown">https://github.com/steveyegge/gastown</a></p><p>&#8226; Execution in the Kingdom of Nouns: <a href="https://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html">https://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html</a></p><p>&#8226; Rich programmer food: <a href="https://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html">https://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html</a></p><p>&#8226; Wyvern on Steam: <a href="https://store.steampowered.com/app/1541710/Wyvern">https://store.steampowered.com/app/1541710/Wyvern</a></p><p>&#8226; Claude Code: <a href="https://claude.com/product/claude-code">https://claude.com/product/claude-code</a></p><p>&#8226; The death of the junior developer: <a href="https://sourcegraph.com/blog/the-death-of-the-junior-developer">https://sourcegraph.com/blog/the-death-of-the-junior-developer</a></p><p>&#8226; Erik Meijer on X: <a href="https://x.com/headinthebox">https://x.com/headinthebox</a></p><p>&#8226; Andy Jassy: <a href="https://en.wikipedia.org/wiki/Andy_Jassy">https://en.wikipedia.org/wiki/Andy_Jassy</a></p><p>&#8226; The Death of the IDE? w/ Steve Yegge &amp; Nathan Sobo: </p><div id="youtube2-j2goZBL156Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;j2goZBL156Q&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/j2goZBL156Q?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#8226; Nathan Sobo on LinkedIn: <a href="https://www.linkedin.com/in/nathan-sobo-92b46720">https://www.linkedin.com/in/nathan-sobo-92b46720</a></p><p>&#8226; Claude Cowork: <a href="https://claude.com/product/cowork">https://claude.com/product/cowork</a></p><p>&#8226; Craft Agents: <a href="https://agents.craft.do">https://agents.craft.do</a></p><p>&#8226; Git Gui: <a href="https://git-scm.com/tools/guis">https://git-scm.com/tools/guis</a></p><p>&#8226; Fantasia: <a href="https://en.wikipedia.org/wiki/Fantasia_(1940_film)">https://en.wikipedia.org/wiki/Fantasia_(1940_film)</a></p><p>&#8226; Welcome to Gas Town: <a href="https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04">https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04</a></p><p>&#8226; Dolt: <a href="https://www.dolthub.com">https://www.dolthub.com</a></p><p>&#8226; The Bitter Lesson: <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">http://www.incompleteideas.net/IncIdeas/BitterLesson.html</a></p><p>&#8226; Moltbook: <a href="https://www.moltbook.com">https://www.moltbook.com</a></p><p>&#8226; The &#8216;9-9-6 Work Schedule&#8217; Could Be Coming To Your Workplace Soon: <a href="https://www.forbes.com/sites/bryanrobinson/2025/08/04/the-9-9-6-work-schedule-could-be-coming-to-your-workplace-soon">https://www.forbes.com/sites/bryanrobinson/2025/08/04/the-9-9-6-work-schedule-could-be-coming-to-your-workplace-soon</a></p><p>&#8226; Perl: <a href="https://www.perl.org">https://www.perl.org</a></p><p>&#8226; PHP: <a href="https://www.php.net">https://www.php.net</a></p><p>&#8226; Anthropic: <a href="https://www.anthropic.com">https://www.anthropic.com</a></p><p>&#8226;<em> Purely Functional Data Structures</em>: <a href="https://www.amazon.com/Purely-Functional-Data-Structures-Okasaki/dp/0521663504">https://www.amazon.com/Purely-Functional-Data-Structures-Okasaki/dp/0521663504</a></p><p>&#8226; Building Claude Code with Boris Cherny: <a href="https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny">https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny</a></p><p>&#8226; Gemini: <a href="https://gemini.google.com">https://gemini.google.com</a></p><p>&#8226; The Borderlands Gun Collector&#8217;s Club: <a href="https://steve-yegge.blogspot.com/2012/03/borderlands-gun-collectors-club.html">https://steve-yegge.blogspot.com/2012/03/borderlands-gun-collectors-club.html</a></p><p>&#8226; Ralph Wiggum as a &#8220;software engineer&#8221;: <a href="https://ghuntley.com/ralph">https://ghuntley.com/ralph</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[How Uber uses AI for development: inside look]]></title><description><![CDATA[How Uber built Minion, Shepherd, uReview, and other internal agentic AI tools. Also, new challenges in rolling out AI tools, like more platform investment and growing concern about token costs]]></description><link>https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 10 Mar 2026 19:23:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uBE4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Before we start: all The Pragmatic Summit videos are now <a href="https://www.pragmaticsummit.com/">available to view</a>. Paid newsletter subscribers also have access <a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-summit-recordings">to each session with the Q&amp;A session, as well</a>.</em></p><p>Update on 11 March: the Uber team shared updated numbers as of March 2026:</p><ul><li><p><strong>84% of devs at Uber are agentic coding users</strong> (either using CLI-based agents or making more agentic requests than tab-completion in their IDE)</p></li><li><p><strong>65-72% of code is AI-generated </strong>inside IDE-based tools. <em>This number is, naturally, 100% for AI command line tools like Claude Code.</em></p></li><li><p><strong>Claude Code usage nearly doubled in 3 months</strong> &#8212; from 32% in Dec to 63% in Feb, while IDE-based tools (Cursor, IntelliJ) have plateaued.</p></li></ul><p>The article is updated with these new and correct numbers.</p><div><hr></div><p>I spent four years working at Uber until 2020 and experienced firsthand the company&#8217;s standout engineering culture. Uber is a company that did the speed run of going from a small startup, through hypergrowth, to being a large company facing major risk during the pandemic, when the rideshare business briefly collapsed. Today, it&#8217;s maturing as a publicly traded, profitable company, and employs almost 3,000 people in the tech function.</p><p>At the recent Pragmatic Summit in San Francisco, one of the most interesting behind-the-scenes sessions came from the ridesharing company&#8217;s principal engineer, <a href="https://www.linkedin.com/in/tyvsmith/">Ty Smith</a>, and director of engineering <a href="https://www.linkedin.com/in/anshuman-chadha-8ab58717/">Anshu Chada</a>, who <a href="https://youtu.be/i1tZN41VKcE">pulled back the curtain</a> on what Uber has been doing with AI tools, internally. They were candid about the amount of work it took to build up Uber&#8217;s internal &#8220;AI stack,&#8221; why all that work was necessary, and also discussed the drawbacks as well as benefits of this rapidly spreading technology. <em>You can watch their <a href="https://youtu.be/i1tZN41VKcE">presentation at The Pragmatic Summit here</a>.</em></p><p>In today&#8217;s issue, we cover:</p><ol><li><p><strong>Agentic layers &amp; systems. </strong>Four layers spanning an internal AI platform, context sources, industry tools, and specialized agents for testing and code review.</p></li><li><p><strong>Internal tooling: MCP Gateway, Uber Agent Builder, and the AIFX CLI</strong>. Uber built several internal tools to make it easier for devs to use AI tools, and to make internal AI agents more effective.</p></li><li><p><strong>How AI changes developer workflows</strong>. A move away from single-threaded coding in an IDE, to orchestrating multiple parallel agents. Engineers naturally gravitate toward kicking off new agents, which starts to create resource and cost challenges.</p></li><li><p><strong>Minion: running background agents at scale. </strong>Uber built Minion, an internal background agent platform with monorepo access and optimized defaults. It&#8217;s a clever abstraction layer that works well in practice.</p></li><li><p><strong>New internal dev tools.</strong> More AI-generated code means more code reviews and more noise, so Uber built Code Inbox for smart PR routing, uReview for high-signal AI code review comments, Autocover for generating 5,000+ unit tests per month, and Shepherd for managing large-scale migrations end to end.</p></li><li><p><strong>Challenges</strong>. AI adoption is slower than expected, even at a forward-thinking company like Uber. Top-down mandates are less efficient than engineers sharing their wins with peers.</p></li><li><p><strong>Impact in numbers.</strong> 92% of Uber devs use agents monthly, 65-72% of code is AI-generated inside IDEs, and 11% of pull requests opened by agents. At the same time, AI-related costs are up 6x since 2024, and token cost optimization is a growing priority.</p></li></ol><p>Longtime readers might recall we&#8217;ve covered Uber&#8217;s engineering culture over time:</p><ul><li><p><a href="https://newsletter.pragmaticengineer.com/p/uber-eng-productivity">Developer Experience at Uber</a> &#8211; with Uber&#8217;s founding engineer on Developer Platform, Gautam Korlam (2025)</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/how-uber-built-its-observability-platform">How Uber built its observability platform</a> (2023)</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/uber-move-to-cloud">Inside Uber&#8217;s move to the Cloud</a> (2023)</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/uber-eng-productivity">How Uber is measuring engineering productivity</a> (2022)</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/program-platform-split-uber">The Program and Platform split at Uber</a> (2021)</p></li></ul><p>Let&#8217;s get into it:</p><div><hr></div><p>AI is not new at Uber, but rolling it out companywide is. The company has used machine learning and AI technologies in many systems, including its Marketplace platform, which are responsible for routing and matching drivers with riders, forecasting demand, etc. What is relatively new at nearly all tech companies is the process of integrating AI across engineering and beyond.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uBE4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uBE4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png 424w, https://substackcdn.com/image/fetch/$s_!uBE4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png 848w, https://substackcdn.com/image/fetch/$s_!uBE4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png 1272w, https://substackcdn.com/image/fetch/$s_!uBE4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uBE4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uBE4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png 424w, https://substackcdn.com/image/fetch/$s_!uBE4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png 848w, https://substackcdn.com/image/fetch/$s_!uBE4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.png 1272w, https://substackcdn.com/image/fetch/$s_!uBE4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596ad0d5-6c2e-41ad-8aa8-570641097308_2048x1366.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">Anshu Chada at The Pragmatic Summit</figcaption></figure></div><p>The official strategy at the ridesharing giant is to become a &#8220;GenAI-powered&#8221; company:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5oGV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5oGV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png 424w, https://substackcdn.com/image/fetch/$s_!5oGV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png 848w, https://substackcdn.com/image/fetch/$s_!5oGV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png 1272w, https://substackcdn.com/image/fetch/$s_!5oGV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5oGV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png" width="1456" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5oGV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png 424w, https://substackcdn.com/image/fetch/$s_!5oGV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png 848w, https://substackcdn.com/image/fetch/$s_!5oGV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.png 1272w, https://substackcdn.com/image/fetch/$s_!5oGV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d0dfcd-ec1a-4df5-a1f8-ed6807e00f8a_1600x887.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">Uber&#8217;s company strategy now explicitly includes AI</figcaption></figure></div><p>I appreciate Uber sharing this approach openly because while most companies say that they want to be &#8220;AI-powered&#8221; &#8211; however cliche that claim might be &#8211; not all provide as much transparency.</p><p><strong>It&#8217;s worthwhile engineers internalizing how leadership views AI</strong>. These folks, in general, see a tool that can bring efficiency everywhere.<strong> </strong>My take is that in some ways, AI is seen similarly to the cloud, which has been perceived as a means to reduce costs and improve the flexibility and elasticity of hardware resources. Today, AI is seen as the way to increase efficiency and lower costs, such as customer support, software development, the finance function &#8211; or any function.</p><p>Uber is focusing not on automating everything possible in engineering. Instead, it wants to:</p><ol><li><p>Eliminate toil: helping AI do &#8220;boring&#8221; work like upgrades, migrations, trivial bug fixes, etc.</p></li><li><p>Free up engineers to focus more on creative work.</p></li></ol><p>As Anshu Chada, Engineering Director on Uber&#8217;s Dev Platform, puts it:</p><blockquote><p>&#8220;What we found is when we push some of the boring stuff to AI &#8211; upgrades, migrations, bug fixes &#8211; not only does it result in much higher satisfaction from our engineers, but they&#8217;re able to push our product and create features for end users in ways that we didn&#8217;t even think were possible.&#8221;</p></blockquote><h2>1. Agentic layers &amp; systems</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hiin!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hiin!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png 424w, https://substackcdn.com/image/fetch/$s_!hiin!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png 848w, https://substackcdn.com/image/fetch/$s_!hiin!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png 1272w, https://substackcdn.com/image/fetch/$s_!hiin!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hiin!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab25b639-5aac-479c-b130-851e6240d207_2048x1366.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hiin!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png 424w, https://substackcdn.com/image/fetch/$s_!hiin!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png 848w, https://substackcdn.com/image/fetch/$s_!hiin!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.png 1272w, https://substackcdn.com/image/fetch/$s_!hiin!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab25b639-5aac-479c-b130-851e6240d207_2048x1366.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">Ty Smith at The Pragmatic Summit</figcaption></figure></div><p>Uber&#8217;s &#8220;agentic system&#8221; for software engineering is actually made up of several systems:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m3Bk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m3Bk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png 424w, https://substackcdn.com/image/fetch/$s_!m3Bk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png 848w, https://substackcdn.com/image/fetch/$s_!m3Bk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png 1272w, https://substackcdn.com/image/fetch/$s_!m3Bk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m3Bk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png" width="1456" height="809" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:809,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!m3Bk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png 424w, https://substackcdn.com/image/fetch/$s_!m3Bk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png 848w, https://substackcdn.com/image/fetch/$s_!m3Bk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.png 1272w, https://substackcdn.com/image/fetch/$s_!m3Bk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1368c8cd-fc82-4512-91ec-452948b6294a_1600x889.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"><em>Uber&#8217;s agentic systems, split across four layers</em></figcaption></figure></div><p>Categories of systems:</p><ul><li><p><strong>Internal AI platform. </strong>Built on top of <a href="https://www.uber.com/en-NL/blog/michelangelo-machine-learning-platform/">Michelangelo</a>, Uber&#8217;s ML/AI platform. This layer provides things like a model gateway to proxy to frontier models or internally hosted models.</p></li><li><p><strong>Internal Uber context: </strong>accessing Uber&#8217;s source code, engineering documentation, Slack information, JIRA tickets, etc. These all serve as &#8220;memory&#8221; for agents to use.</p></li><li><p><strong>Industry agents:</strong> Uber&#8217;s approach is to enable the &#8220;latest &amp; greatest&#8221; AI agents for engineers, so they support several tools like Claude Code, GitHub Copilot, Codex, and other clients.</p></li><li><p><strong>Specialized agents: </strong>Uber&#8217;s background agent platform, the test generation platform, code review agents, and more.</p></li><li><p><strong>Engineering enablement: </strong>measuring the efficiency of agents, controlling costs, and educating engineers about which tools to use.</p></li></ul><h2>2. Internal tooling: MCP Gateway, Uber Agent Builder, and the AIFX CLI</h2><p>MCP &#8211; the Model Context Protocol &#8211; has quickly become the standard way to connect agents and data sources with one another. A frequent analogy is that MCP is like the &#8220;USB-C interface for AI agents.&#8221; <em>We published a <a href="https://newsletter.pragmaticengineer.com/p/mcp">deepdive on the MCP protocol</a> and covered <a href="https://newsletter.pragmaticengineer.com/p/mcp-deepdive">real-world MCP server use cases</a>.</em></p><p>Uber put together a &#8220;tiger team&#8221; (a temporary unit that gets things done fast) to design the MCP strategy and build the central MCP gateway, which looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kRuX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kRuX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png 424w, https://substackcdn.com/image/fetch/$s_!kRuX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png 848w, https://substackcdn.com/image/fetch/$s_!kRuX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!kRuX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kRuX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png" width="1342" height="1050" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1050,&quot;width&quot;:1342,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kRuX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png 424w, https://substackcdn.com/image/fetch/$s_!kRuX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png 848w, https://substackcdn.com/image/fetch/$s_!kRuX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!kRuX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccdf1000-5c80-46fa-ac8f-9b7ffe6e71c6_1342x1050.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">Uber&#8217;s MCP gateway</figcaption></figure></div><p>This MCP gateway allows:</p><ul><li><p><strong>Proxy internal endpoints to MCPs</strong>: any internal Thrift, Protobuffer, or HTTP endpoint can be exposed as an MCP server with a simple configuration change. <em>Uber uses the <a href="https://en.wikipedia.org/wiki/Apache_Thrift">Apache Thrift</a> protocol and <a href="https://protobuf.dev/">Protobuffer</a> protocols extensively for backend service communications</em></p></li><li><p><strong>First-party MCPs:</strong> these are exposed as a single, consistent interface</p></li><li><p><strong>Third-party MCPs:</strong> external MCP servers are also exposed via the gateway, which handles all authentication and authorization tasks.</p></li><li><p><strong>Platform concerns:</strong> the gateway takes care of authorization, telemetry, and logging in one central place. Plus, it conveniently offers a unified interface to interact with any MCP.</p></li></ul><p>The MCP gateway also provides:</p><ul><li><p><strong>A registry:</strong> to look up MCP servers, and for devs to be able to register their own.</p></li><li><p><strong>A sandbox:</strong> for devs to experiment with MCP servers without long-winded setups.</p></li></ul><h3>Uber Agent Builder</h3><p>Uber&#8217;s Agent Builder product is a no-code solution to build agents that can access Uber&#8217;s internal data sources (both MCP servers and Uber data sets), and hand off work to other 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_!rvWa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rvWa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png 424w, https://substackcdn.com/image/fetch/$s_!rvWa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png 848w, https://substackcdn.com/image/fetch/$s_!rvWa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!rvWa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rvWa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png" width="1374" height="1400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1400,&quot;width&quot;:1374,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rvWa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png 424w, https://substackcdn.com/image/fetch/$s_!rvWa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png 848w, https://substackcdn.com/image/fetch/$s_!rvWa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!rvWa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1c56a10-d2a9-4a4d-ab42-6963199af187_1374x1400.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"><em>Uber&#8217;s Agent Builder: a no-code experience to build agents</em></figcaption></figure></div><p>The platform includes a tool called Agent Studio, where multi-agent workflows can be visualized, debugged, traced, versioned, and evaluated. This is how it looks:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IfQh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IfQh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IfQh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IfQh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IfQh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IfQh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg" width="1456" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IfQh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IfQh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IfQh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IfQh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa141c4-411e-4b23-965a-cb4389588bb2_2048x1324.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uber&#8217;s Agent Studio: a no-code UI to create workflows using AI agents</figcaption></figure></div><p>The agents built in Agent Builder become discoverable through a registry:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7vu4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7vu4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png 424w, https://substackcdn.com/image/fetch/$s_!7vu4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png 848w, https://substackcdn.com/image/fetch/$s_!7vu4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png 1272w, https://substackcdn.com/image/fetch/$s_!7vu4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7vu4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png" width="1456" height="919" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:919,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2025-09-22 at 9.42.44&#8239;PM.png&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Screenshot 2025-09-22 at 9.42.44&#8239;PM.png" srcset="https://substackcdn.com/image/fetch/$s_!7vu4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png 424w, https://substackcdn.com/image/fetch/$s_!7vu4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png 848w, https://substackcdn.com/image/fetch/$s_!7vu4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.png 1272w, https://substackcdn.com/image/fetch/$s_!7vu4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcad1a604-6dd9-47a4-bb40-34013138a9b0_1600x1010.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">Uber&#8217;s Agent Builder registry, where existing agents can be discovered, used, and copied</figcaption></figure></div><h3>Accessing agents via the AIFX CLI</h3><p>Uber&#8217;s Developer Experience platform team had a few issues with deploying AI agent tooling at scale:</p><ul><li><p>How does the company update all clients when a new version comes out? For example, if a new version of Cursor is released, how can they ensure all devs use the latest one?</p></li><li><p>How can the clients be configured with helpful defaults? Uber&#8217;s Dev Platform team might have found better defaults for tools, like more helpful models. How are these rolled out to all devs?</p></li><li><p>How can devs easily discover MCP servers and configure them for agents?</p></li><li><p>How can agents connect to Uber&#8217;s background task infrastructure?</p></li></ul><p>The Dev Experience team built the AIFX CLI, which is the AI tooling command line used by all engineers there. Here&#8217;s what it looks like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!doa7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!doa7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png 424w, https://substackcdn.com/image/fetch/$s_!doa7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png 848w, https://substackcdn.com/image/fetch/$s_!doa7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png 1272w, https://substackcdn.com/image/fetch/$s_!doa7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!doa7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png" width="1046" height="672" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:672,&quot;width&quot;:1046,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2026-02-09 at 11.30.59&#8239;AM.png&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Screenshot 2026-02-09 at 11.30.59&#8239;AM.png" srcset="https://substackcdn.com/image/fetch/$s_!doa7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png 424w, https://substackcdn.com/image/fetch/$s_!doa7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png 848w, https://substackcdn.com/image/fetch/$s_!doa7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.png 1272w, https://substackcdn.com/image/fetch/$s_!doa7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F701562a8-46ee-4615-b37b-394b4b9231d6_1046x672.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">Uber&#8217;s AIFX command line tool</figcaption></figure></div><p>This tool supports:</p><ul><li><p>Provisioning AI agents (client tools like Claude Code, Codex, Cursor, and others)</p></li><li><p>Finding and using MCP servers</p></li><li><p>Running background agent tasks</p></li><li><p>Updating AI agents and clients to the latest versions</p></li></ul><h2>3. How AI changes developer workflows</h2><p>The traditional way of building software:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U_r3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U_r3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png 424w, https://substackcdn.com/image/fetch/$s_!U_r3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png 848w, https://substackcdn.com/image/fetch/$s_!U_r3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png 1272w, https://substackcdn.com/image/fetch/$s_!U_r3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U_r3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png" width="1456" height="642" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:642,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!U_r3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png 424w, https://substackcdn.com/image/fetch/$s_!U_r3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png 848w, https://substackcdn.com/image/fetch/$s_!U_r3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.png 1272w, https://substackcdn.com/image/fetch/$s_!U_r3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4ca227-68fc-4866-b272-ef47d824fa03_1986x876.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"><em>Pre-AI software development workflow. Most time is spent inside an IDE</em></figcaption></figure></div><p>Devs spent some time planning, most time writing code (code authorship), and then some time in code review.</p><p>The first AI agent-based workflows were single-threaded: devs worked with a single agent in the command line or inside their IDE:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZGpD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZGpD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png 424w, https://substackcdn.com/image/fetch/$s_!ZGpD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png 848w, https://substackcdn.com/image/fetch/$s_!ZGpD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png 1272w, https://substackcdn.com/image/fetch/$s_!ZGpD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZGpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png" width="1456" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZGpD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png 424w, https://substackcdn.com/image/fetch/$s_!ZGpD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png 848w, https://substackcdn.com/image/fetch/$s_!ZGpD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.png 1272w, https://substackcdn.com/image/fetch/$s_!ZGpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24000091-eda4-4b36-b26d-edddbf33b93c_1970x876.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"><em>Early agentic workflows: working with an agent and approving plans, giving commands and corrections</em></figcaption></figure></div><p>At Uber, the latest workflows which many software engineers follow are pretty different, involving parallel agents, each kicked off with their own tasks:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BvlU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BvlU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png 424w, https://substackcdn.com/image/fetch/$s_!BvlU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png 848w, https://substackcdn.com/image/fetch/$s_!BvlU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png 1272w, https://substackcdn.com/image/fetch/$s_!BvlU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BvlU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png" width="1456" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BvlU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png 424w, https://substackcdn.com/image/fetch/$s_!BvlU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png 848w, https://substackcdn.com/image/fetch/$s_!BvlU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.png 1272w, https://substackcdn.com/image/fetch/$s_!BvlU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898accd3-5c2d-4a6b-94bd-11843968d5ce_1996x766.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">Latest AI agent-based workflows look pretty different</figcaption></figure></div><p>As Ty explained, running multiple agents comes naturally to most devs:</p><blockquote><p>&#8220;[Once you start using agents]  as an engineer, you&#8217;re giving a prompt and waiting for something. While it&#8217;s running and you&#8217;re waiting you&#8217;re thinking: &#8216;What am I going to do? Have a coffee or browse Reddit? Might as well kick off another background agent.&#8217;</p><p>And so, engineers get into this mode of running several agents at once, right? Both us [at Uber] and a lot of the industry is trying to push towards this.&#8221;</p></blockquote><h2>4. Minion: running background agents at scale</h2>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: AWS region knocked offline by drone attack in historic first]]></title><description><![CDATA[Also: 40% job cuts at Block &#8220;not due to AI&#8221;, Antigravity bans reinforce Google&#8217;s disdain for paying customers, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-164</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-164</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 05 Mar 2026 17:54:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e5ebbfd9-7935-44e7-ad4d-520bfa27de9e_420x300.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</em></p><p>Today, we cover:</p><ol><li><p><strong>Military strikes take down cloud services for the first time. </strong>Drone attacks in Bahrain and the UAE took AWS datacenters partially or fully offline during the early days of the Iran&#8230;</p></li></ol>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-164">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Building Claude Code with Boris Cherny]]></title><description><![CDATA[Claude Code creator Boris Cherny on building AI-powered coding tools, parallel agents, and how the engineer's role is evolving in an AI-first world.]]></description><link>https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 04 Mar 2026 18:09:46 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/189707865/bceefbd9c6008d22f2e95fde06296e43.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/julbw1JuAz0">YouTube</a>, <a href="https://open.spotify.com/show/2Bho9xCbOQMWMJ7UKmqCzD">Spotify</a>, and <a href="https://podcasts.apple.com/us/podcast/building-claude-code-with-boris-cherny/id1769051199?i=1000753093675">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gh57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gh57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" width="800" height="70" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:70,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/185094534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.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_!Gh57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>&#8226; <strong><a href="http://statsig.com/pragmatic">Statsig</a></strong> &#8212; &#8288; The unified platform for flags, analytics, experiments, and more. Stop switching between different tools, and have them all in one place. <a href="http://statsig.com/pragmatic">Check out Statsig.</a></p><p>&#8226; <strong><a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a></strong> &#8211; The makers of SonarQube, the industry standard for automated code review. Proactively find and fix issues in real-time with <strong><a href="https://www.sonarsource.com/products/sonarqube/mcp-server/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-mcp-server-launch25&amp;utm_content=podcast-sonarqube-mcp-server&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">SonarQube MCP Server</a></strong> by connecting AI tools like Claude Code, GitHub Copilot, and Cursor directly to Sonar&#8217;s systematic code analysis engine. <a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Learn how Sonar</a> provides the essential verification layer for the AI development era.</p><p>&#8226; <strong><a href="https://workos.com/">WorkOS</a></strong> &#8211; Everything you need to make your app enterprise ready. Companies like Anthropic, OpenAI, and Cursor already run on WorkOS. <a href="https://workos.com/">See why.</a></p><h3><strong>In this episode</strong></h3><p>Boris Cherny is the creator and Head of Claude Code at Anthropic. He previously spent five years at Meta as a Principal Engineer and is the author of the book <em><a href="https://www.amazon.com/Programming-TypeScript-Making-JavaScript-Applications/dp/1492037656">Programming TypeScript</a>.</em></p><p>In this episode of<em> Pragmatic Engineer</em>, we went through how Claude Code was built and what it means when engineers no longer write most of the code themselves.</p><p>We discuss how Claude Code evolved from a side project into a core internal tool at Anthropic and how Boris uses it day-to-day. We go deep into workflow details, including parallel agents, PR structure, deterministic review patterns, and how the system retrieves context from large codebases. We also get into how Claude Cowork was built.</p><p>As coding becomes more accessible, the role of engineers shifts rather than shrinks. We examine what that shift means in practice, which skills become more important, and why the lines between product, engineering, and design are blurring.</p><h3><strong>Key observation from Boris</strong></h3><p>Here are 10 observations from this conversation that I found the most interesting:</p><div id="youtube2-julbw1JuAz0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;julbw1JuAz0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/julbw1JuAz0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>1. Boris ships 20-30 PRs a day by running 5 parallel Claude instances.</strong> Boris works across five terminal tabs (each a separate checkout), starting Claude in plan mode, iterating on the plan, then letting it one-shot the implementation. As he put it: &#8220;once there is a good plan, it will one-shot the implementation almost every time.&#8221;</p><p><strong>2. Boris learned at Meta that code quality has a measurable, double-digit-percent impact on engineering productivity.</strong> At Meta, Boris led causal analysis showing clean codebases meaningfully boost output. This learning holds for AI-generated code, too: partially-migrated codebases with multiple frameworks confuse both humans and models. As Boris put it: &#8220;always make sure that when you start a migration, you finish the migration.&#8221;</p><p><strong>3. Claude Code&#8217;s &#8220;agentic search&#8221; is really just glob and grep, and it outperformed RAG. </strong>The team tried several approaches to make agentic search better: local vector databases, recursive model-based indexing, and other fancy approaches. All had downsides (stale indexes, permission complexity). Plain glob and grep, driven by the model, beat everything. This approach was inspired by how Boris observed engineers at Instagram searched code when the click-to-definition functionality in Meta&#8217;s in-house coding editor was broken.</p><p><strong>4. Boris automated himself out of code review well before AI.</strong> Boris was one of the most prolific code reviewers at Meta company. And he worked hard to minimize time spent on code review. His system: every time he left the same kind of review comment, he logged it in a spreadsheet. Once a pattern hit 3-4 occurrences, he&#8217;d write a lint rule to automate it away!</p><p><strong>5. Everyone at Anthropic has the same title (&#8220;Member of Technical Staff&#8221;), and it&#8217;s by design.</strong> Without role-specific titles, the default assumption is that everyone does everything: product, design, infrastructure, research. As Boris put it: &#8220;It kind of inverts this relationship between people, even if you don&#8217;t know each other well yet.&#8221;</p><p><strong>6. Claude Cowork was built in ~10 days and is growing faster than Claude Code did at launch. </strong>The team spotted &#8220;latent demand&#8221; from non-engineers already hacking with Claude Code (data scientists, finance, sales). The bulk of the engineering complexity for Cowork wasn&#8217;t product logic, but around safety: building classifiers, a shipping VM, OS-level protections against accidental file deletion, and rethinking the permission model for non-technical users.</p><p><strong>7. PRDs are dead on the Claude Code team: prototypes replaced them.</strong> Instead of writing Product Requirement Documents (specs), they build dozens of working prototypes before shipping a feature. Boris: &#8220;There&#8217;s just no way we could have shipped this if we started with static mocks and Figma or if we started with a PRD.&#8221;</p><p><strong>8. This is the year of the generalist (and maybe the year of those with ADHD)</strong>. Boris&#8217;s work has shifted from deep-focus single-threaded coding to managing multiple parallel agents and context-switching rapidly. As Boris put it: &#8220;It&#8217;s not so much about deep work, it&#8217;s about how good I am at context switching and jumping across multiple different contexts very quickly.&#8221;</p><p><strong>9. Fix infra before building a product. </strong>Working at Meta, when Boris moved to Instagram, the Python/Django stack was so poor that click-to-definition didn&#8217;t work and the type checker was broken. He abandoned his original team, and went straight to Dev Infra, leading migrations from Python to the Facebook monolith and from REST to GraphQL. He did this because you can&#8217;t build great products on a terrible foundation, and sometimes the highest-leverage move is fixing the platform rather than shipping features.</p><p><strong>10. Could software engineers of today be the medieval equivalents of scribes? </strong>Boris brought up an interesting analogy: in the middle ages, scribes were a tiny literate elite employed by often-illiterate kings. When the printing press was invented, scribes technically lost their jobs. Still, many of them became writers and authors, and the market for written work expanded beyond prediction!</p><p>Boris wondered if we could see the same pattern with software engineers: coding is becoming accessible to everyone. Could the software engineers of today be building systems that have far broader reach, in the future, than ever than before?</p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><ul><li><p><a href="https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built">How Claude Code is built</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/how-anthropic-built-artifacts">How Anthropic built Artifacts</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/how-codex-is-built">How Codex is built</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/cursor">Real-world engineering challenges: building Cursor</a></p></li></ul><h3><strong>Timestamps</strong></h3><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=675s">11:15</a>) Lessons from Meta</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=1186s">19:46</a>) Joining Anthropic</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=1388s">23:08</a>) The origins of Claude Code</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=1975s">32:55</a>) Boris&#8217;s Claude Code workflow</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=2187s">36:27</a>) Parallel agents</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=2425s">40:25</a>) Code reviews</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=2838s">47:18</a>) Claude Code&#8217;s architecture</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=3158s">52:38</a>) Permissions and sandboxing</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=3305s">55:05</a>) Engineering culture at Anthropic</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=3915s">1:05:15</a>) Claude Cowork</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=4368s">1:12:48</a>) Observability and privacy</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=4485s">1:14:45</a>) Agent swarms</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=4876s">1:21:16</a>) LLMs and the printing press analogy</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=5416s">1:30:16</a>) Standout engineer archetypes</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=5532s">1:32:12</a>) What skills still matter for engineers</p><p>(<a href="https://www.youtube.com/watch?v=julbw1JuAz0&amp;t=5724s">1:35:24</a>) Book recommendations</p><h3><strong>References</strong></h3><p><strong>Where to find Boris Cherny:</strong></p><p>&#8226; X: <a href="https://x.com/bcherny">https://x.com/bcherny</a></p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/bcherny">https://www.linkedin.com/in/bcherny</a></p><p>&#8226; Website: <a href="https://borischerny.com">https://borischerny.com</a></p><p><strong>Mentions during the episode:</strong></p><p>&#8226; Jarred Sumner on LinkedIn: <a href="https://www.linkedin.com/in/jarred-sumner-a8772425">https://www.linkedin.com/in/jarred-sumner-a8772425</a></p><p>&#8226; Vladimir Kolesnikov on LinkedIn: <a href="https://www.linkedin.com/in/voloko">https://www.linkedin.com/in/voloko</a></p><p>&#8226; React: <a href="https://react.dev">https://react.dev</a></p><p>&#8226; Will Bailey on LinkedIn: <a href="https://www.linkedin.com/in/willbailey">https://www.linkedin.com/in/willbailey</a></p><p>&#8226; Fiona Fung on LinkedIn: <a href="https://www.linkedin.com/in/fionafung">https://www.linkedin.com/in/fionafung</a></p><p>&#8226; Inside Meta&#8217;s Engineering Culture: Part 1: <a href="https://newsletter.pragmaticengineer.com/p/facebook">https://newsletter.pragmaticengineer.com/p/facebook</a></p><p>&#8226; Inside Meta&#8217;s Engineering Culture: Part 2: <a href="https://newsletter.pragmaticengineer.com/p/facebook-2">https://newsletter.pragmaticengineer.com/p/facebook-2</a></p><p>&#8226; Adam Wolff on LinkedIn: <a href="https://www.linkedin.com/in/adamwolff">https://www.linkedin.com/in/adamwolff</a></p><p>&#8226; The Bitter Lesson: <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">http://www.incompleteideas.net/IncIdeas/BitterLesson.html</a></p><p>&#8226; How Claude Code is built: <a href="https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built">https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built</a></p><p>&#8226; Mike Krieger on X: <a href="https://x.com/mikeyk">https://x.com/mikeyk</a></p><p>&#8226; Dario Amodei on X: <a href="https://x.com/DarioAmodei">https://x.com/DarioAmodei</a></p><p>&#8226; Ben Mann on LinkedIn: <a href="https://www.linkedin.com/in/benjamin-mann/">https://www.linkedin.com/in/benjamin-mann/</a></p><p>&#8226; Marc Andreessen: The real AI boom hasn&#8217;t even started yet: </p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:185338497,&quot;url&quot;:&quot;https://www.lennysnewsletter.com/p/marc-andreessen-the-real-ai-boom&quot;,&quot;publication_id&quot;:10845,&quot;publication_name&quot;:&quot;Lenny's Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8MSN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png&quot;,&quot;title&quot;:&quot;Marc Andreessen: The real AI boom hasn&#8217;t even started yet&quot;,&quot;truncated_body_text&quot;:&quot;Marc Andreessen is a founder, investor, and co-founder of Netscape, as well as co-founder of the venture capital firm Andreessen Horowitz (a16z). In this conversation, we dig into why we&#8217;re living through a unique and one of the most incredible times in history, and what comes next.&quot;,&quot;date&quot;:&quot;2026-01-29T13:32:06.471Z&quot;,&quot;like_count&quot;:141,&quot;comment_count&quot;:5,&quot;bylines&quot;:[{&quot;id&quot;:1849774,&quot;name&quot;:&quot;Lenny Rachitsky&quot;,&quot;handle&quot;:&quot;lenny&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afba5161-65bb-4d99-8d6b-cce660917fa1_1540x1540.png&quot;,&quot;bio&quot;:&quot;Writing &#8226; Angel investing &#8226; Advising&quot;,&quot;profile_set_up_at&quot;:&quot;2021-05-01T23:55:21.518Z&quot;,&quot;reader_installed_at&quot;:&quot;2021-12-15T18:09:25.096Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:247600,&quot;user_id&quot;:1849774,&quot;publication_id&quot;:10845,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:10845,&quot;name&quot;:&quot;Lenny's Newsletter&quot;,&quot;subdomain&quot;:&quot;lenny&quot;,&quot;custom_domain&quot;:&quot;www.lennysnewsletter.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Deeply researched product, growth, and career advice&#8212;newsletter, podcast, community, and living library&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png&quot;,&quot;author_id&quot;:1849774,&quot;primary_user_id&quot;:1849774,&quot;theme_var_background_pop&quot;:&quot;#f47c55&quot;,&quot;created_at&quot;:&quot;2019-06-01T15:35:37.885Z&quot;,&quot;email_from_name&quot;:&quot;Lenny's Newsletter&quot;,&quot;copyright&quot;:null,&quot;founding_plan_name&quot;:&quot;Insider Tier&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;lennysan&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:10000,&quot;status&quot;:{&quot;bestsellerTier&quot;:10000,&quot;subscriberTier&quot;:10,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:10000},&quot;paidPublicationIds&quot;:[3525780,1243269,16907,2217127,1548028,218501,46510,1163860,1435249,1256656,10025,35345,313411,260347],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;podcast&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.lennysnewsletter.com/p/marc-andreessen-the-real-ai-boom?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_!8MSN!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png" loading="lazy"><span class="embedded-post-publication-name">Lenny's Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title-icon"><svg width="19" height="19" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M3 18V12C3 9.61305 3.94821 7.32387 5.63604 5.63604C7.32387 3.94821 9.61305 3 12 3C14.3869 3 16.6761 3.94821 18.364 5.63604C20.0518 7.32387 21 9.61305 21 12V18" stroke-linecap="round" stroke-linejoin="round"></path>
  <path d="M21 19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H18C17.4696 21 16.9609 20.7893 16.5858 20.4142C16.2107 20.0391 16 19.5304 16 19V16C16 15.4696 16.2107 14.9609 16.5858 14.5858C16.9609 14.2107 17.4696 14 18 14H21V19ZM3 19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H6C6.53043 21 7.03914 20.7893 7.41421 20.4142C7.78929 20.0391 8 19.5304 8 19V16C8 15.4696 7.78929 14.9609 7.41421 14.5858C7.03914 14.2107 6.53043 14 6 14H3V19Z" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><div class="embedded-post-title">Marc Andreessen: The real AI boom hasn&#8217;t even started yet</div></div><div class="embedded-post-body">Marc Andreessen is a founder, investor, and co-founder of Netscape, as well as co-founder of the venture capital firm Andreessen Horowitz (a16z). In this conversation, we dig into why we&#8217;re living through a unique and one of the most incredible times in history, and what comes next&#8230;</div><div class="embedded-post-cta-wrapper"><div class="embedded-post-cta-icon"><svg width="32" height="32" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  <path classname="inner-triangle" d="M10 8L16 12L10 16V8Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><span class="embedded-post-cta">Listen now</span></div><div class="embedded-post-meta">3 months ago &#183; 141 likes &#183; 5 comments &#183; Lenny Rachitsky</div></a></div><p>&#8226; Cat Wu on LinkedIn: <a href="https://www.linkedin.com/in/cat-wu">https://www.linkedin.com/in/cat-wu</a></p><p>&#8226; Asana: <a href="https://asana.com">https://asana.com</a></p><p>&#8226; Claude Cowork: <a href="https://claude.com/product/cowork">https://claude.com/product/cowork</a></p><p>&#8226; Felix Rieseberg on LinkedIn: <a href="https://www.linkedin.com/in/felixrieseberg">https://www.linkedin.com/in/felixrieseberg</a></p><p>&#8226; Electron: <a href="https://www.electronjs.org">https://www.electronjs.org</a></p><p>&#8226; Building a C compiler with a team of parallel Claudes: <a href="https://www.anthropic.com/engineering/building-c-compiler">https://www.anthropic.com/engineering/building-c-compiler</a></p><p>&#8226; Introducing Claude Opus 4.6: <a href="https://www.anthropic.com/news/claude-opus-4-6">https://www.anthropic.com/news/claude-opus-4-6</a></p><p>&#8226; Thariq Shihipar on LinkedIn: <a href="https://www.linkedin.com/in/thariqshihipar">https://www.linkedin.com/in/thariqshihipar</a></p><p>&#8226; <em>Programming TypeScript: Making Your JavaScript Applications Scale</em>: <a href="https://www.amazon.com/Programming-TypeScript-Making-JavaScript-Applications/dp/1492037656">https://www.amazon.com/Programming-TypeScript-Making-JavaScript-Applications/dp/1492037656</a></p><p>&#8226; A General Theory of Reactivity: <a href="https://kriskowal.gitbooks.io/gtor/content/intro.html">https://kriskowal.gitbooks.io/gtor/content/intro.html</a></p><p>&#8226; Ryan Dahl on X: <a href="https://x.com/rough__sea">https://x.com/rough__sea</a></p><p>&#8226; Anders Hejlsberg on X: <a href="https://x.com/ahejlsberg">https://x.com/ahejlsberg</a></p><p>&#8226; <em>The Three-Body Problem</em>: <a href="https://www.amazon.com/Three-Body-Problem-Cixin-Liu/dp/0765382032">https://www.amazon.com/Three-Body-Problem-Cixin-Liu/dp/0765382032</a></p><p>&#8226; <em>Accelerando</em>: <a href="https://www.amazon.com/Accelerando-Singularity-Charles-Stross/dp/0441014151">https://www.amazon.com/Accelerando-Singularity-Charles-Stross/dp/0441014151</a></p><p>&#8226; <em>Functional Programming in Scala</em>: <a href="https://www.amazon.com/Functional-Programming-Second-Michael-Pilquist-ebook/dp/B0C4LX999T">https://www.amazon.com/Functional-Programming-Second-Michael-Pilquist-ebook/dp/B0C4LX999T</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[AI Tooling for Software Engineers in 2026]]></title><description><![CDATA[Claude Code dominates tool usage, leaders are more positive about AI than engineers, staff+ engineers are the biggest users of AI agents, and more. Exclusive data and analysis from 900+ respondents]]></description><link>https://newsletter.pragmaticengineer.com/p/ai-tooling-2026</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/ai-tooling-2026</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 03 Mar 2026 16:05:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZjLB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Which AI tools are software engineers using, and what do they really think of them? We asked The Pragmatic Engineer subscribers, and nearly a thousand of you have shared your experiences of using AI tools for work. The survey ran for weeks, between 27 January and 17 February 2026.</p><p>This article provides a high-level overview of those findings from our latest AI tooling survey. <em>Thank you to everyone who participated!</em></p><p>There are plenty of interesting details, most notably, validation of <em>just</em> how much Anthropic and Claude Code have risen to dominate tooling usage. Claude Code is today nearly as widespread as GitHub Copilot was in <a href="https://newsletter.pragmaticengineer.com/p/ai-coding-tools">our survey three years ago</a> (in the spring of 2023) &#8211; which shows how fast the AI market moves.</p><p>In today&#8217;s issue, we cover:</p><ol><li><p><strong>Interesting findings:</strong> Claude Code has rocketed to #1 in just eight months, AI is fully mainstream with 95% weekly usage among respondents, and more.</p></li><li><p><strong>Most-used AI tools:</strong> Claude Code leads the pack, followed by chatbots and GitHub Copilot. Cursor&#8217;s rising fast, and newcomers like Codex and Antigravity are gaining traction. Most engineers juggle two to four tools at once.</p></li><li><p><strong>Popular models:</strong> Anthropic&#8217;s Opus and Sonnet models dominate coding tasks by a wide margin, with more mentions than all others combined.</p></li><li><p><strong>AI trends: mainstream adoption achieved.</strong> 95% of respondents report using AI tools at least weekly, 75% use AI for half or more of their work, and 56% report doing 70%+ of their engineering work with AI.</p></li><li><p><strong>AI agent usage rising</strong>: 55% of respondents now regularly use AI agents, with staff+ engineers leading adoption on 63.5% usage in the survey results. Agent users are twice as excited about AI as non-users are.</p></li><li><p><strong>Company size and tool usage:</strong> smaller places overwhelmingly favor Claude Code (75% at the tiniest businesses), while large enterprises default to GitHub Copilot. This popularity is probably down to enterprise procurement preferences &#8211; and Microsoft&#8217;s enterprise marketing efforts.</p></li><li><p><strong>Tools engineers love:</strong> Claude Code is the most loved tool at 46%, far ahead of Cursor on 19% and GitHub Copilot at 9%. Senior leaders are especially enthusiastic about Claude Code.</p></li><li><p><strong>Demographics</strong>: Overview of who took part in the survey.</p></li></ol><p><em>Full subscribers also have access to a longer, 35-page report with additional details - linked at the end of this article.</em></p><h2>1. Interesting findings</h2><p>Here are my ten personal, most-interesting findings from this survey:</p><ol><li><p><strong>Claude Code has gone from zero to be the #1 tool in only eight months. </strong>Released in May 2025, it&#8217;s already the most-used AI coding tool, overtaking GitHub Copilot and Cursor.</p></li><li><p><strong>AI is now mainstream.</strong> 95% of respondents use AI tools at least weekly, or more often, and 75% use AI for at least half their software engineering work. Among readers of The Pragmatic Engineer, it seems the question is no longer whether to use AI in day-to-day work, but <em>which</em> tools to use.</p></li><li><p><strong>Cursor is catching up fast on GitHub Copilot. </strong>As much as we hear about companies dropping Cursor for Claude Code, Cursor is doing more than fine, growing in mentions 35% since our previous survey nine months ago.</p></li><li><p><strong>Most engineers juggle multiple AI tools.</strong> 70% use between two and four tools simultaneously, while 15% use five or more.</p></li><li><p><strong>Staff+ engineers are the heaviest agent users.</strong> 63.5% use agents regularly; more than regular engineers (49.7%), engineering managers (46.1%), and directors/VPs (51.9%).</p></li><li><p><strong>Codex is seeing explosive early growth.</strong> Despite not existing during the last survey, OpenAI&#8217;s Codex already has 60% of Cursor&#8217;s usage (!!)</p></li><li><p><strong>Using agents correlates strongly with being positive about AI. </strong>People using agents are nearly twice as likely to feel excited about AI while non-users are twice as likely to be skeptical.</p></li><li><p><strong>Company size influences tool choice more than preference.</strong> Huge companies (10K+) more likely to use Copilot (56%), tiny startups mostly go with Claude Code (75%) and Cursor (42%). It seems like enterprise procurement, not individual preference, is behind this divergence.</p></li><li><p><strong>A tight chatbot race. </strong>ChatGPT, Gemini, and Claude as standalone chatbots have nearly equal numbers of mentions, suggesting there&#8217;s no clear winner outside of coding-specific tools among software engineers.</p></li><li><p><strong>Directors and senior leaders are especially into Claude Code</strong>. The survey finds this tool is twice as popular with these folks as it is at less senior levels, while Cursor gets less love as seniority increases.</p></li></ol><p>Let&#8217;s jump into some of the data:</p><h2>2. Most-used AI tools</h2><p>Just eight months after its release, Claude Code is already the most-used tool, overtaking both GitHub Copilot and Cursor:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZjLB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZjLB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png 424w, https://substackcdn.com/image/fetch/$s_!ZjLB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png 848w, https://substackcdn.com/image/fetch/$s_!ZjLB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png 1272w, https://substackcdn.com/image/fetch/$s_!ZjLB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZjLB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png" width="1194" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53356907-6657-4146-894a-417095d3b665_1194x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:1194,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZjLB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png 424w, https://substackcdn.com/image/fetch/$s_!ZjLB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png 848w, https://substackcdn.com/image/fetch/$s_!ZjLB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.png 1272w, https://substackcdn.com/image/fetch/$s_!ZjLB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53356907-6657-4146-894a-417095d3b665_1194x896.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"><em>Most-used AI tools by mentions. Respondents could select several tools</em></figcaption></figure></div><p>Tools mentioned, in order of popularity:</p><ol><li><p><a href="https://code.claude.com/docs/en/overview">Claude Code</a>: a terminal-first coding agent from Anthropic. <em>We cover its history in the deepdive, <a href="https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built">How Claude Code is built</a></em></p></li><li><p>Chatbots: ChatGPT, Claude, Gemini, and others</p></li><li><p><a href="https://github.com/features/copilot">GitHub Copilot</a>: launched in 2021, it&#8217;s the &#8220;oldest&#8221; AI coding tool on this list</p></li><li><p><a href="https://cursor.com/">Cursor</a>: agent-powered coding IDE. Learn <em>more about it in our deepdive, <a href="https://newsletter.pragmaticengineer.com/p/cursor">Real-world engineering challenges: building Cursor</a>.</em></p></li><li><p><a href="https://openai.com/codex/">Codex</a>: OpenAI&#8217;s AI coding agent.<em> We recently covered <a href="https://newsletter.pragmaticengineer.com/p/how-codex-is-built">how Codex is built</a></em></p></li><li><p><a href="https://github.com/google-gemini/gemini-cli">Gemini CLI</a>: Google&#8217;s command line agent</p></li><li><p><a href="https://opencode.ai/">OpenCode</a>: the most popular open source coding agent, where you can swap out the model being used, sidestepping vendor lock-in</p></li><li><p><a href="https://antigravity.google/">Antigravity</a>: Google hired the original team behind Windsurf and launched its own agentic IDE</p></li><li><p><a href="https://www.jetbrains.com/junie/">JetBrains Junie</a>: the AI coding agent by JetBrains</p></li><li><p><a href="https://zed.dev/">Zed</a>: a fast editor with agentic workflows</p></li><li><p><a href="https://windsurf.com/">Windsurf</a>: when Google acquihired the team, it did not buy the product. An AI IDE, now owned and operated by Cognition</p></li><li><p><a href="https://ampcode.com/">Amp</a>: a model-agnostic coding agent. A free version is supported by ads</p></li><li><p><a href="https://www.augmentcode.com/">Augment Code</a>: an enterprise-focused coding agent</p></li><li><p><a href="https://factory.ai/">Factory</a>: agent-native software development, which calls agents &#8220;droids.&#8221;</p></li></ol><p>It&#8217;s interesting to compare how people answered the same question just nine months ago, last May:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2X9D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2X9D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png 424w, https://substackcdn.com/image/fetch/$s_!2X9D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png 848w, https://substackcdn.com/image/fetch/$s_!2X9D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png 1272w, https://substackcdn.com/image/fetch/$s_!2X9D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2X9D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png" width="1288" height="922" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:922,&quot;width&quot;:1288,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2X9D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png 424w, https://substackcdn.com/image/fetch/$s_!2X9D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png 848w, https://substackcdn.com/image/fetch/$s_!2X9D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.png 1272w, https://substackcdn.com/image/fetch/$s_!2X9D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae0abef-cbc2-4a31-ba11-6a1ae1d9f443_1288x922.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">Tool usage, 9 months apart: The rise of Claude Code is clear, jumping from nowhere to number one by this February</figcaption></figure></div><p>Notable trends:</p><ul><li><p><strong>Claude Code has massive momentum and is already the market leader. </strong>Since being released in May 2025, it has become the most-used AI coding tool among survey respondents. Anecdotally, I&#8217;ve heard several teams that have been Cursor power users are introducing Claude Code with great success (while still keeping Cursor in-place.)</p></li><li><p><strong>Cursor has grown circa 35% in nine months and now threatens GitHub&#8217;s popularity. </strong>In this survey, 35% more respondents mention using Cursor than in our previous research, last May. Such growth is impressive: at this rate, Cursor will have more users than GitHub in 6-9 months!</p></li><li><p><strong>Chatbot usage remains high. </strong>Combined mentions for ChatGPT, Claude, Gemini, Perplexity, and others used outside of coding apps are still higher than for any other tool except Claude Code. For context, the most-mentioned chatbot (ChatGPT, 107 times) only has as many as Gemini CLI (also 107).</p></li><li><p><strong>GitHub Copilot usage stable. </strong>Nine months ago, 46% of respondents said they used GitHub Copilot. Since then, it&#8217;s barely risen.</p></li><li><p><strong>Explosive growth for Codex. </strong>OpenAI&#8217;s Codex wasn&#8217;t available during our last survey. But it now already has 60% of Cursor&#8217;s usage(!), and could be <a href="https://newsletter.pragmaticengineer.com/p/how-codex-is-built">growing even faster</a> since this survey.</p></li><li><p><strong>Up-and-coming tools: OpenCode, Gemini CLI, Antigravity. </strong>None of these had launched nine months ago, but today they&#8217;re used by around 10% of respondents &#8211; no small feat!</p></li><li><p><strong>Tools growing more than before:</strong> The likes of Zed, Windsurf, Amp, Augment Code, and Factory appear less often in these results, but all are mentioned more by respondents than they were nine months ago.</p></li></ul><h3>Chatbot usage: ChatGPT leads &#8211; just about</h3><p>Here&#8217;s how mentions of chatbot usage line up in our survey:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xu9N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xu9N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png 424w, https://substackcdn.com/image/fetch/$s_!xu9N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png 848w, https://substackcdn.com/image/fetch/$s_!xu9N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png 1272w, https://substackcdn.com/image/fetch/$s_!xu9N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xu9N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png" width="1162" height="956" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:956,&quot;width&quot;:1162,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xu9N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png 424w, https://substackcdn.com/image/fetch/$s_!xu9N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png 848w, https://substackcdn.com/image/fetch/$s_!xu9N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.png 1272w, https://substackcdn.com/image/fetch/$s_!xu9N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98fa96e3-08dc-4b2e-8d23-6b410ab476ea_1162x956.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">Chatbots: ChatGPT, Gemini, and Claude have almost equal numbers of mentions</figcaption></figure></div><h3>Tool usage: multi-tool</h3><p>Most tech professionals use between two and four AI tools.<strong> </strong>An interesting detail is how many different ones are mentioned by respondents:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PvBu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PvBu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png 424w, https://substackcdn.com/image/fetch/$s_!PvBu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png 848w, https://substackcdn.com/image/fetch/$s_!PvBu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!PvBu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PvBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png" width="1192" height="1046" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1046,&quot;width&quot;:1192,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PvBu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png 424w, https://substackcdn.com/image/fetch/$s_!PvBu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png 848w, https://substackcdn.com/image/fetch/$s_!PvBu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!PvBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf19349d-1894-462e-8064-6edaa917bd90_1192x1046.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"><em>Number of AI tools mentioned per respondent</em></figcaption></figure></div><p>Noteworthy details:</p><ul><li><p><strong>70%</strong> of survey participants mention using between two and four tools</p></li><li><p><strong>15%</strong> use a single tool</p></li><li><p><strong>15%</strong> are using 5 or more</p></li></ul><h2>3. Popular models</h2><p>Anthropic&#8217;s Opus and Sonnet dominate the ranking of models used for coding.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lQDW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lQDW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png 424w, https://substackcdn.com/image/fetch/$s_!lQDW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png 848w, https://substackcdn.com/image/fetch/$s_!lQDW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png 1272w, https://substackcdn.com/image/fetch/$s_!lQDW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lQDW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png" width="1044" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1044,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lQDW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png 424w, https://substackcdn.com/image/fetch/$s_!lQDW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png 848w, https://substackcdn.com/image/fetch/$s_!lQDW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.png 1272w, https://substackcdn.com/image/fetch/$s_!lQDW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae9785df-af0b-4ea4-a2e0-451bc771e6fe_1044x946.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"><em>Models used for coding tasks in our survey results</em></figcaption></figure></div><p>This is not even a contest: Opus 4.5 and Sonnet 4.5 (latest models at the start of our survey) come up more often than all other models, combined. Anthropic has become the go-to model developer for coding-related work &#8211; for now, that is. <em>When this survey launched, Opus 4.6, Sonnet 4.6, and GPT-5.3 were not yet out.</em></p><p><strong>Around 1 in 8 respondents say they just use whatever model is the default at their company. </strong>This is interesting to note: these are likely folks who might not bother changing default settings, and just go with whatever&#8217;s available. If the default model is powerful enough, that&#8217;s fine, but if the company&#8217;s default is a cheaper, less capable model, then these people could face a more frustrating experience than those who get to choose what they use.</p><p> In the &#8220;other&#8221; category of models, some other mentions include:</p><ul><li><p>Cursor&#8217;s custom Composer/Composer-1 model, and its &#8220;Cursor Auto&#8221; auto-select model</p></li><li><p>Kimi/Kimi K2.5 &#8212; Moonshot</p></li><li><p>DeepSeek model variants like R1, V3.2, Coder</p></li><li><p>Alibaba&#8217;s Qwen/Qwen3</p></li><li><p>xAI&#8217;s Grok</p></li><li><p>Various Mistral models</p></li></ul><h2>4. AI trends: Mainstream adoption achieved</h2><p>How often do people use AI tools? Very often, as it turns out; 95% of respondents are using them weekly, at a minimum:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3ZKE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3ZKE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png 424w, https://substackcdn.com/image/fetch/$s_!3ZKE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png 848w, https://substackcdn.com/image/fetch/$s_!3ZKE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png 1272w, https://substackcdn.com/image/fetch/$s_!3ZKE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3ZKE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png" width="1248" height="1240" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1240,&quot;width&quot;:1248,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3ZKE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png 424w, https://substackcdn.com/image/fetch/$s_!3ZKE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png 848w, https://substackcdn.com/image/fetch/$s_!3ZKE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.png 1272w, https://substackcdn.com/image/fetch/$s_!3ZKE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fa50f1d-b9cc-4bb8-aebc-9f1f64ba66cc_1248x1240.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"><em>95% use AI tools weekly or more frequently; only 2.1% don&#8217;t use them at all</em></figcaption></figure></div><p>It&#8217;s worth reflecting on this data in relation to insights presented by Laura Tacho <a href="https://newsletter.pragmaticengineer.com/i/189035949/1-data-vs-hype-how-orgs-actually-win-with-ai">at the recent Pragmatic Summit in San Francisco:</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!foSN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!foSN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 424w, https://substackcdn.com/image/fetch/$s_!foSN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 848w, https://substackcdn.com/image/fetch/$s_!foSN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 1272w, https://substackcdn.com/image/fetch/$s_!foSN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!foSN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d62304a1-218b-43fb-ab71-620f6824c517_1594x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!foSN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 424w, https://substackcdn.com/image/fetch/$s_!foSN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 848w, https://substackcdn.com/image/fetch/$s_!foSN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 1272w, https://substackcdn.com/image/fetch/$s_!foSN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd62304a1-218b-43fb-ab71-620f6824c517_1594x896.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Pragmatic Engineer data is from 900 respondents. DX&#8217;s data is based on 121,000 respondents</figcaption></figure></div><p><strong>It seems that AI is now mainstream in software engineering. </strong>Anecdotally, this has been my sense since the beginning of the year: everyone whom I talk with is using AI tooling on a roughly daily basis. Now, there&#8217;s data to prove it.</p><h3>How much software engineering work gets done with AI?</h3><p>This year, we asked readers to estimate the percentage of their software engineering work that&#8217;s done using AI. 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_!IVYB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IVYB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png 424w, https://substackcdn.com/image/fetch/$s_!IVYB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png 848w, https://substackcdn.com/image/fetch/$s_!IVYB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png 1272w, https://substackcdn.com/image/fetch/$s_!IVYB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IVYB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png" width="1096" height="920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:1096,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IVYB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png 424w, https://substackcdn.com/image/fetch/$s_!IVYB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png 848w, https://substackcdn.com/image/fetch/$s_!IVYB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.png 1272w, https://substackcdn.com/image/fetch/$s_!IVYB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1978e2b6-e2bf-4c57-aedf-c3e803773ea5_1096x920.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"><em>Percentage of work done using AI</em></figcaption></figure></div><p>The data show that AI is embedded in the workflows of participants in our survey:</p><ul><li><p><strong>Only 25% of respondents </strong>use AI for less than 40% of their work</p></li><li><p><strong>56% </strong>do 70% or more of their work using AI</p></li><li><p><strong>75% </strong>use AI for at least half of their software engineering work</p></li></ul><h2>5. AI agent usage rising</h2><p>Eighteen months ago, AI usage was mostly for code generation and tab completion. There were <a href="https://newsletter.pragmaticengineer.com/i/146678491/how-developers-use-ai-tools">one or two respondents</a> who experimented with early AI agents in March 2024, as something equivalent to a junior software engineer.</p><p><strong>This year, 55% say they regularly use AI agents</strong>. This is 507 people, a massive jump!</p><p>The most common use cases for agents:</p><ul><li><p>Code review and code validation</p></li><li><p>Automating manual / annoying tasks</p></li><li><p>Bug fixing / investigating bugs</p></li><li><p>Code investigation</p></li><li><p>Debugging</p></li><li><p>&#8220;Crafting&#8221; code, or &#8220;weaving&#8221; it together with the agent</p></li></ul><p>Below is a typical-enough comment from one software engineer who uses agents at a smaller company:</p><blockquote><p>&#8220;I use agents for pretty much all coding work, mostly prompting with Cursor Chat. I use it for code investigation, bug investigation, creating commits and pull requests. It&#8217;s my tool for reviewing code, I am always still in the loop. Almost all of my AI-written code is still reviewed and &#8216;crafted&#8217;. When using it for code review, I find it helpful to chat with and gain understanding, rather than letting it loose on code review. So, I use it for everything, but I am still very much in the loop.&#8221;</p></blockquote><p>A common arrangement in the survey is the split-screen setup: a terminal with Claude Code open to drive work, and an IDE also open to review changes made by the agent.</p><p>The tools mentioned by those who regularly use AI agents split almost identically to the broader survey 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_!KCu-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KCu-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png 424w, https://substackcdn.com/image/fetch/$s_!KCu-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png 848w, https://substackcdn.com/image/fetch/$s_!KCu-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png 1272w, https://substackcdn.com/image/fetch/$s_!KCu-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KCu-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png" width="988" height="822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:988,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KCu-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png 424w, https://substackcdn.com/image/fetch/$s_!KCu-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png 848w, https://substackcdn.com/image/fetch/$s_!KCu-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.png 1272w, https://substackcdn.com/image/fetch/$s_!KCu-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfdcbfe-8256-4ea8-acec-1ab516fcc905_988x822.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"><em>Tool usage by regular users of AI agents. Claude Code is the clear leader (71% usage), followed by GitHub Copilot (46%) and Cursor (39%)</em></figcaption></figure></div><p><strong>Staff+ engineers are the heaviest users of agents. </strong>Here&#8217;s the data on agent usage by experience level:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qPN-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qPN-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 424w, https://substackcdn.com/image/fetch/$s_!qPN-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 848w, https://substackcdn.com/image/fetch/$s_!qPN-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 1272w, https://substackcdn.com/image/fetch/$s_!qPN-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qPN-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png" width="858" height="982" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:982,&quot;width&quot;:858,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qPN-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 424w, https://substackcdn.com/image/fetch/$s_!qPN-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 848w, https://substackcdn.com/image/fetch/$s_!qPN-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 1272w, https://substackcdn.com/image/fetch/$s_!qPN-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba02fd8f-7afc-4d19-a86f-a38462211c7a_858x982.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This data point is slightly amusing because it shows there&#8217;s not much difference between the lowest and highest levels: 46% of leads and engineering managers say they use AI agents regularly, while for Staff+ engineers it&#8217;s 63%. Does it suggest the most experienced engineers are also the most curious?</p><p><strong>The more someone uses AI, the more they also use AI agents. </strong>We segmented the data by the percentage of software engineering work that respondents do with AI:</p><ul><li><p>Heavy users have AI for 80% or more tasks, or use AI on an hourly basis</p></li><li><p>Moderate users have AI for 30-80% of tasks, or use AI on a daily basis</p></li><li><p>Light users employ AI for 30% of tasks or less, or use AI on a weekly or monthly basis</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6-AP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6-AP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png 424w, https://substackcdn.com/image/fetch/$s_!6-AP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png 848w, https://substackcdn.com/image/fetch/$s_!6-AP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!6-AP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6-AP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png" width="1320" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1040,&quot;width&quot;:1320,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6-AP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png 424w, https://substackcdn.com/image/fetch/$s_!6-AP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png 848w, https://substackcdn.com/image/fetch/$s_!6-AP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!6-AP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614f68b5-0588-4c8b-a3c2-27dbc9b86b18_1320x1040.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><strong>The more positive someone is about AI, the more likely they are using agents on a regular basis.</strong> In contrast, those negative about AI barely use 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_!qyru!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qyru!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 424w, https://substackcdn.com/image/fetch/$s_!qyru!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 848w, https://substackcdn.com/image/fetch/$s_!qyru!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 1272w, https://substackcdn.com/image/fetch/$s_!qyru!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qyru!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png" width="1314" height="774" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:774,&quot;width&quot;:1314,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qyru!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 424w, https://substackcdn.com/image/fetch/$s_!qyru!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 848w, https://substackcdn.com/image/fetch/$s_!qyru!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 1272w, https://substackcdn.com/image/fetch/$s_!qyru!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F801f1e4b-b3a7-4dc5-a8fb-316f6039f303_1314x774.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How do people feel about AI, based on usage of agents</figcaption></figure></div><p>One question is whether this finding indicates correlation or causation: that is, does starting to use AI agents more, actually <em>cause </em>people to feel more positive about AI?</p><p>A couple of details:</p><ul><li><p>Using agents seems to make people nearly twice as enthusiastic about AI (61%) as those who do not use them (36%)</p></li><li><p>Respondents who don&#8217;t use agents are twice as likely to be skeptical (22%) about AI than those using agents regularly (11%)</p></li></ul><p>It looks like that if you don&#8217;t use AI agents on a regular basis, you may have a negative opinion about the tools, in general, which could come at the cost of not experiencing what the technology has to offer.</p><h2>6. Company size and tool usage</h2><p>In our results, company size and tooling choice correlate for some tools; for example, the smaller a team or company is, the more likely it is to use Claude Code or Codex:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1VyX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1VyX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 424w, https://substackcdn.com/image/fetch/$s_!1VyX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 848w, https://substackcdn.com/image/fetch/$s_!1VyX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 1272w, https://substackcdn.com/image/fetch/$s_!1VyX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1VyX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png" width="1034" height="790" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:790,&quot;width&quot;:1034,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1VyX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 424w, https://substackcdn.com/image/fetch/$s_!1VyX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 848w, https://substackcdn.com/image/fetch/$s_!1VyX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 1272w, https://substackcdn.com/image/fetch/$s_!1VyX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35006b6-809d-4e14-bfc5-b0bfa2eceb43_1034x790.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude Code and Codex usage vs company size</figcaption></figure></div><p><strong>Claude Code is used by a whopping 75% of the smallest companies and teams. </strong>This is a big number, far ahead of any other tools. At the smallest places, the most-used tools are, in order:</p><ol><li><p>Claude Code: 75%</p></li><li><p>Chatbots: 55%</p></li><li><p>Cursor: 42%</p></li><li><p>GitHub Copilot: 35%</p></li><li><p>Codex: 26%</p></li><li><p>Gemini CLI: 14%</p></li><li><p>OpenCode: 13%</p></li></ol><p><strong>GitHub Copilot overtakes Claude Code at large companies.</strong> This confirms what was known: Microsoft is very good at enterprise sales, and at bundling GitHub Copilot in its suite of products:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b06F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b06F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png 424w, https://substackcdn.com/image/fetch/$s_!b06F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png 848w, https://substackcdn.com/image/fetch/$s_!b06F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png 1272w, https://substackcdn.com/image/fetch/$s_!b06F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b06F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png" width="1298" height="950" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:950,&quot;width&quot;:1298,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b06F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png 424w, https://substackcdn.com/image/fetch/$s_!b06F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png 848w, https://substackcdn.com/image/fetch/$s_!b06F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.png 1272w, https://substackcdn.com/image/fetch/$s_!b06F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc52f907b-aadc-458f-be21-b00220ee6ab4_1298x950.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"><em>GitHub Copilot usage increases with company size, overtaking Claude Code at the largest companies</em></figcaption></figure></div><p><strong>Cursor and OpenCode usage drops at massive companies with similar usage patterns.</strong> Across the board, usage is roughly the same, regardless of company size. We only see a drop at the very largest of companies with 10,000+ employees:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h1Rj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h1Rj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png 424w, https://substackcdn.com/image/fetch/$s_!h1Rj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png 848w, https://substackcdn.com/image/fetch/$s_!h1Rj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png 1272w, https://substackcdn.com/image/fetch/$s_!h1Rj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h1Rj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png" width="1002" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1002,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h1Rj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png 424w, https://substackcdn.com/image/fetch/$s_!h1Rj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png 848w, https://substackcdn.com/image/fetch/$s_!h1Rj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.png 1272w, https://substackcdn.com/image/fetch/$s_!h1Rj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a721ed-7336-4461-8c5c-30f3485f8adf_1002x818.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"><em>Cursor and OpenCode usage vs company size</em></figcaption></figure></div><p>One theory for such a drop at massive companies could be that large companies often build their own internal coding agents that engineers use; e.g., at fintech, Block, the agent is called <a href="https://github.com/block/goose">Goose</a>, Meta has its own agent, as does Google with <a href="https://newsletter.pragmaticengineer.com/i/179478823/google-devs-to-use-jetski-a-custom-antigravity">Jetski</a> (its version of Antigravity) and <a href="https://newsletter.pragmaticengineer.com/i/174937901/ide">Cider</a>.</p><p><strong>Google&#8217;s tools are evenly used across the spectrum of company size. </strong>Google&#8217;s Gemini CLI and Antigravity are the only tools in this survey whose usage is notably stable, regardless of company size. Both tools hover at around 10% from the smallest to largest workplaces:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xnl5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xnl5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png 424w, https://substackcdn.com/image/fetch/$s_!xnl5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png 848w, https://substackcdn.com/image/fetch/$s_!xnl5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png 1272w, https://substackcdn.com/image/fetch/$s_!xnl5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xnl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png" width="974" height="710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:710,&quot;width&quot;:974,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xnl5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png 424w, https://substackcdn.com/image/fetch/$s_!xnl5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png 848w, https://substackcdn.com/image/fetch/$s_!xnl5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.png 1272w, https://substackcdn.com/image/fetch/$s_!xnl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b07c05b-a8f2-45e3-b438-3c8c27077bfc_974x710.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"><em>Gemini CLI and Antigravity usage vs company size</em></figcaption></figure></div><p><strong>The feeling among survey respondents that they can experiment at work, correlates with Claude Code being available.</strong> We asked if readers experiment frequently with tools. Below are the &#8220;yes&#8221; responses by company size:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fb6W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fb6W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png 424w, https://substackcdn.com/image/fetch/$s_!Fb6W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png 848w, https://substackcdn.com/image/fetch/$s_!Fb6W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png 1272w, https://substackcdn.com/image/fetch/$s_!Fb6W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fb6W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png" width="746" height="658" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:658,&quot;width&quot;:746,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fb6W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png 424w, https://substackcdn.com/image/fetch/$s_!Fb6W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png 848w, https://substackcdn.com/image/fetch/$s_!Fb6W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.png 1272w, https://substackcdn.com/image/fetch/$s_!Fb6W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3236c521-5d15-4cf8-87d9-cb266482525b_746x658.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>When these responses are mapped to the percentage of people using Claude Code, there&#8217;s a very similar distribution. My theory is that Claude Code is new enough at 9 months old to have not yet been approved at companies with bureaucratic processes for approving new tools, and this is partly why some respondents feel their chance to experiment with the range of tooling is being thwarted.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GzSD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GzSD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png 424w, https://substackcdn.com/image/fetch/$s_!GzSD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png 848w, https://substackcdn.com/image/fetch/$s_!GzSD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png 1272w, https://substackcdn.com/image/fetch/$s_!GzSD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GzSD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png" width="906" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:906,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GzSD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png 424w, https://substackcdn.com/image/fetch/$s_!GzSD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png 848w, https://substackcdn.com/image/fetch/$s_!GzSD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.png 1272w, https://substackcdn.com/image/fetch/$s_!GzSD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00010dd4-df20-4e29-8d7a-070a990ae00d_906x668.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"><em>Percentage of respondents using Claude Code &amp; those who experiment often with AI tools, by company size</em></figcaption></figure></div><p>Engineers at places with lots of red tape for tooling are less empowered to experiment with new AI tools; not just Claude Code, but any new, interesting tool.</p><h2>7. Tools engineers love</h2><p>We asked respondents: &#8220;Which AI tools do you love using the most, and why?&#8221; Below are the tools which respondents enjoy most, in descending order of number of mentions:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1tJJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1tJJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png 424w, https://substackcdn.com/image/fetch/$s_!1tJJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png 848w, https://substackcdn.com/image/fetch/$s_!1tJJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png 1272w, https://substackcdn.com/image/fetch/$s_!1tJJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1tJJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png" width="990" height="752" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:752,&quot;width&quot;:990,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1tJJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png 424w, https://substackcdn.com/image/fetch/$s_!1tJJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png 848w, https://substackcdn.com/image/fetch/$s_!1tJJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.png 1272w, https://substackcdn.com/image/fetch/$s_!1tJJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8becc664-01aa-4136-b86e-5b09702bb56c_990x752.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><strong>Claude and Cursor stand out in terms of how much they are loved. </strong>A whopping 57% of respondents mention either Claude Code (46%) or Claude models (11%) as the tools they are attached to. Cursor was at a respectable 19% &#8211; double GitHub on 9%.</p><p>Other notable tools with two or more mentions:</p><ul><li><p><a href="https://www.warp.dev/">Warp</a>: a terminal for building agents</p></li><li><p><a href="https://zed.dev/">Zed</a>: a fast editor with agentic workflows</p></li><li><p><a href="https://ampcode.com/">Amp</a>: a model-agnostic coding agent. A free version is supported by ads</p></li><li><p><a href="https://cline.bot/">Cline</a>: an open source coding agent</p></li><li><p><a href="https://roocode.com/">RooCode</a>: an open source, AI-powered coding assistant running in VS Code</p></li><li><p><a href="https://www.continue.dev/">Continue.dev</a>: AI checks on every pull request</p></li></ul><p><strong>Claude Code is especially loved by Director-and-above folks. </strong>Segmenting the &#8220;most loved&#8221; responses by level (engineers up to the senior levels of staff+ engineers, leads/eng managers, and Director+ folks):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0nw-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0nw-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png 424w, https://substackcdn.com/image/fetch/$s_!0nw-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png 848w, https://substackcdn.com/image/fetch/$s_!0nw-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png 1272w, https://substackcdn.com/image/fetch/$s_!0nw-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0nw-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png" width="1028" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1028,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0nw-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png 424w, https://substackcdn.com/image/fetch/$s_!0nw-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png 848w, https://substackcdn.com/image/fetch/$s_!0nw-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.png 1272w, https://substackcdn.com/image/fetch/$s_!0nw-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0842b345-d7df-441e-9666-2e9070c8ba95_1028x728.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"><em>Claude Code is loved far more by Director folks than others; Cursor gets less love as seniority goes up</em></figcaption></figure></div><p>Both Claude Code and Cursor become less loved &#8211; or used! &#8211; as seniority goes up, but it&#8217;s notable that folks in senior engineering leadership positions are obsessed with Claude Code, but not Cursor.</p><p><strong>GitHub Copilot is equally loved by engineering managers as Cursor is</strong> &#8212; and this is surprising:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WsqN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WsqN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png 424w, https://substackcdn.com/image/fetch/$s_!WsqN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png 848w, https://substackcdn.com/image/fetch/$s_!WsqN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png 1272w, https://substackcdn.com/image/fetch/$s_!WsqN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WsqN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png" width="1068" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1068,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WsqN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png 424w, https://substackcdn.com/image/fetch/$s_!WsqN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png 848w, https://substackcdn.com/image/fetch/$s_!WsqN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.png 1272w, https://substackcdn.com/image/fetch/$s_!WsqN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72d7548b-ddd5-439e-bacb-003a3c1a66f7_1068x742.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"><em>Percentage of people naming GitHub Copilot or Cursor as a tool they love</em></figcaption></figure></div><p><strong>Both OpenCode and GitHub Copilot are surprisingly loved by Staff+ engineers. </strong>Another unexpected detail is that, despite OpenCode being used about a quarter as much as GitHub Copilot, it rivals the &#8220;loved&#8221; mentions. For Staff+ engineers, it matches GitHub on those terms:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LjeY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LjeY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png 424w, https://substackcdn.com/image/fetch/$s_!LjeY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png 848w, https://substackcdn.com/image/fetch/$s_!LjeY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png 1272w, https://substackcdn.com/image/fetch/$s_!LjeY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LjeY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png" width="1016" height="748" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:748,&quot;width&quot;:1016,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LjeY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png 424w, https://substackcdn.com/image/fetch/$s_!LjeY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png 848w, https://substackcdn.com/image/fetch/$s_!LjeY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.png 1272w, https://substackcdn.com/image/fetch/$s_!LjeY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749ca291-8a53-4689-8d8a-4d8a481cd02e_1016x748.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">Percentage of people naming GitHub Copilot or OpenCode as a tool they love</figcaption></figure></div><p>Finally, when segmenting based on company size, we see the familiar pattern of Claude Code vs GitHub Copilot. Claude Code is less frequently mentioned as a &#8220;loved&#8221; tool as company size increases.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S3fs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S3fs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png 424w, https://substackcdn.com/image/fetch/$s_!S3fs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png 848w, https://substackcdn.com/image/fetch/$s_!S3fs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png 1272w, https://substackcdn.com/image/fetch/$s_!S3fs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S3fs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png" width="1106" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1106,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!S3fs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png 424w, https://substackcdn.com/image/fetch/$s_!S3fs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png 848w, https://substackcdn.com/image/fetch/$s_!S3fs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.png 1272w, https://substackcdn.com/image/fetch/$s_!S3fs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F592fbbe0-5784-4647-885b-542ff90da7aa_1106x820.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"><em>How &#8220;loved&#8221; Claude Code is, versus GitHub Copilot, based on company size</em></figcaption></figure></div><p>GitHub Copilot sees the opposite trajectory: it&#8217;s more loved within larger companies where it&#8217;s likely to be harder to experiment with alternatives.</p><h2>8. Demographics</h2><p>In closing, below are details about who took the survey, and how the 906 responses came together.</p><p>Engineers comprise 55% of respondents, and engineering leadership another 34%:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u7dF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u7dF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png 424w, https://substackcdn.com/image/fetch/$s_!u7dF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png 848w, https://substackcdn.com/image/fetch/$s_!u7dF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png 1272w, https://substackcdn.com/image/fetch/$s_!u7dF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u7dF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png" width="928" height="834" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:834,&quot;width&quot;:928,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u7dF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png 424w, https://substackcdn.com/image/fetch/$s_!u7dF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png 848w, https://substackcdn.com/image/fetch/$s_!u7dF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.png 1272w, https://substackcdn.com/image/fetch/$s_!u7dF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93c1e68-36ae-45a2-8445-31289a7fa9f2_928x834.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"><em>Respondents by their role</em></figcaption></figure></div><p>Respondents are experienced professionals. The median respondent has 11-15 years of experience:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nQ7b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nQ7b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png 424w, https://substackcdn.com/image/fetch/$s_!nQ7b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png 848w, https://substackcdn.com/image/fetch/$s_!nQ7b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png 1272w, https://substackcdn.com/image/fetch/$s_!nQ7b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nQ7b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png" width="1012" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1012,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nQ7b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png 424w, https://substackcdn.com/image/fetch/$s_!nQ7b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png 848w, https://substackcdn.com/image/fetch/$s_!nQ7b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.png 1272w, https://substackcdn.com/image/fetch/$s_!nQ7b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe359547a-7130-4f5b-893f-b619d4ec18ca_1012x876.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"><em>Years of experience, split across the 906 respondents</em></figcaption></figure></div><p>Company size is also a fairly even split across this group:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-1lV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-1lV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png 424w, https://substackcdn.com/image/fetch/$s_!-1lV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png 848w, https://substackcdn.com/image/fetch/$s_!-1lV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png 1272w, https://substackcdn.com/image/fetch/$s_!-1lV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-1lV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png" width="972" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:972,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-1lV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png 424w, https://substackcdn.com/image/fetch/$s_!-1lV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png 848w, https://substackcdn.com/image/fetch/$s_!-1lV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.png 1272w, https://substackcdn.com/image/fetch/$s_!-1lV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02487aa9-d574-40ae-9c9d-1314bfffd489_972x812.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">Respondent split, based on company size</figcaption></figure></div><p>Region-wise, most respondents are in Europe or the US:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cc3F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cc3F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png 424w, https://substackcdn.com/image/fetch/$s_!Cc3F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png 848w, https://substackcdn.com/image/fetch/$s_!Cc3F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png 1272w, https://substackcdn.com/image/fetch/$s_!Cc3F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cc3F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png" width="892" height="772" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/334ecd90-ae13-499e-9599-afd6591c3731_892x772.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:772,&quot;width&quot;:892,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Cc3F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png 424w, https://substackcdn.com/image/fetch/$s_!Cc3F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png 848w, https://substackcdn.com/image/fetch/$s_!Cc3F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.png 1272w, https://substackcdn.com/image/fetch/$s_!Cc3F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334ecd90-ae13-499e-9599-afd6591c3731_892x772.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"><em>Respondents, based on location</em></figcaption></figure></div><h2>Takeaways and the full report</h2><p>We have compiled additional findings from this survey which did not fit in this article: it&#8217;s a 35-page article:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: Cloudflare rewrites Next.js as AI rewrites commercial open source]]></title><description><![CDATA[An engineer at Cloudflare rewrote most of Vercel&#8217;s Next.js in one week with AI agents. It looks like a sign of how AI will disrupt existing moats and business models. Analysis]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-164-nextjs</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-164-nextjs</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 26 Feb 2026 17:10:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZIzK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7494960-9d9f-498e-bed3-b3f397d7a108_1442x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today&#8217;s issue of The Pulse focuses on a single event because it&#8217;s a significant one with major potential ripple effects. On Tuesday, Cloudflare shocked the dev world by announcing that they have rewritten <a href="http://next.js">Next.js</a> in just one week, with a single developer who used only $1,100 in tokens:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mw9G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mw9G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 424w, https://substackcdn.com/image/fetch/$s_!mw9G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 848w, https://substackcdn.com/image/fetch/$s_!mw9G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!mw9G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mw9G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png" width="1186" height="1342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1342,&quot;width&quot;:1186,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;: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="" srcset="https://substackcdn.com/image/fetch/$s_!mw9G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 424w, https://substackcdn.com/image/fetch/$s_!mw9G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 848w, https://substackcdn.com/image/fetch/$s_!mw9G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!mw9G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb41a84da-637a-4fde-b7fd-c2adbf751431_1186x1342.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Cloudflare CTO Dane Knecht <a href="https://x.com/dok2001/status/2026386974580330830?s=20">on X</a></em></figcaption></figure></div><p>There are several layers to dig into h&#8230;</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-164-nextjs">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Mitchell Hashimoto’s new way of writing code]]></title><description><![CDATA[Mitchell Hashimoto on building HashiCorp, navigating the cloud giants, and how AI agents have transformed his day-to-day engineering workflow.]]></description><link>https://newsletter.pragmaticengineer.com/p/mitchell-hashimoto</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/mitchell-hashimoto</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 25 Feb 2026 16:45:17 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/188952833/753c290248ea8690b1e50d3c8d456671.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/WjckELpzLOU">YouTube</a>, <a href="https://open.spotify.com/episode/0bIuuNChmWXcwbIydP6Ckk">Spotify</a>, and <a href="https://podcasts.apple.com/us/podcast/the-pragmatic-engineer/id1769051199">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gh57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gh57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png" width="800" height="70" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:70,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/185094534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.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_!Gh57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 424w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 848w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1272w, https://substackcdn.com/image/fetch/$s_!Gh57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9835d46-a4d0-40e1-a16b-dba8068fd6ad_800x70.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>&#8226; <strong><a href="http://statsig.com/pragmatic">Statsig</a></strong> &#8212; &#8288; The unified platform for flags, analytics, experiments, and more. See why companies like Notion, Brex, and Atlassian <a href="http://statsig.com/pragmatic">use Statsig</a>.</p><p>&#8226; <strong><a href="https://www.sonarsource.com/pragmatic/?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-ai&amp;utm_content=podcast-sonar-ai-lp&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar</a></strong> &#8211; The makers of SonarQube, the industry standard for automated code review. Join me online at the <a href="http://sonarsource.com/pragmatic/sonarsummit?utm_medium=paid&amp;utm_source=pragmaticengineer&amp;utm_campaign=ss-sonar-summit26&amp;utm_content=podcast-sonar-summit&amp;utm_term=ww-all-x&amp;s_category=Paid&amp;s_source=Paid%20Other&amp;s_origin=pragmaticengineer">Sonar Summit on March 3rd</a>, where myself, other eng leaders and devs will share practical strategies for the AI era.</p><p>&#8226; <strong><a href="https://workos.com/">WorkOS</a></strong> &#8211; Everything you need to make your app enterprise ready. If you&#8217;re building SaaS &#8212; especially an AI product &#8212; WorkOS provides all the enterprise building blocks you need. <a href="https://workos.com/">Check out WorkOS.</a></p><h3><strong>In this episode</strong></h3><p>How has the day-to-day workflow of Mitchell Hashimoto changed, thanks to AI tools?</p><p>Mitchell Hashimoto is one of the most influential infrastructure engineers of our time, and is one of the most pragmatic builders I&#8217;ve met. He is the co-founder of HashiCorp and creator of Ghostty. In this episode, we talk about how he got into software engineering, the history of HashiCorp, and the challenges of turning widely used open-source tools into a durable business. We also go into what it&#8217;s really like to work with AWS, Azure and GCP as a startup.</p><p>Mitchell shares how he uses AI these days, and how agents have completely changed how he works. We touch on Ghostty, open source, and what&#8217;s changing for software engineers and founders in an AI-native era.</p><h3><strong>Key observation from Mitchell</strong></h3><div id="youtube2-WjckELpzLOU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;WjckELpzLOU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/WjckELpzLOU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Here are 9 observations from this conversation that I found the most interesting:</p><p><strong>1. Vagrant was created because dev environment setup was an unbillable time sink at a consultancy.</strong> At the Ruby on Rails shop where Mitchell worked, jumping onto another client&#8217;s project could waste half a day just setting up the environment, plus destroy your existing one. Vagrant solved this in a simple and elegant way, with VirtualBox VMs.</p><p><strong>2. Terraform won, despite being 7th to market.</strong> Mitchell is frustrated by the narrative that Terraform won because it was first to market in infrastructure-as-code. &#8220;We were seventh to market... no one was a clear winner. It was a warring market.&#8221; Terraform won through relentless conference presence, community building, and a better developer experience &#8212; not timing.</p><p><strong>3. HashiCorp had no real business for four years and their first commercial product was a full-on failure.</strong> The initial product, Atlas, required customers to adopt the entire HashiCorp stack, which created an unsolvable internal budget problem: no one org within a company would want to purchase the <em>whole</em> stack! HashiCorp pivoted to selling individual services like Vault, and this approach turned out to be a winner.</p><p><strong>4. VMware almost bought HashiCorp for ~$100, and Terraform would have not happened if it did. </strong>When HashiCorp was only 3 people, VMWare made an initial offer of $20M for the company. Mitchell and Amon (the founders) asked for $100M as the number they would sell for. VMWare took this to their board, where they rejected to buy with a single vote. Mitchell said that Terraform probably never would&#8217;ve existed if the VMWare purchase went through.</p><p><strong>5. Mitchell&#8217;s new rule for building software: always have an agent running in the background doing something.</strong> &#8220;If I&#8217;m coding, I want an agent planning. If they&#8217;re coding, I want to be reviewing.&#8221; He kicks off tasks before leaving the house &#8212; research, edge-case analysis, library comparisons &#8212; so work progresses while he drives or is away.</p><p><strong>6. Open source is moving from &#8220;default trust&#8221; to &#8220;default deny&#8221; &#8212; and Mitchell thinks that&#8217;s how it should be. </strong>This is because AI makes it trivial to create plausible looking but incorrect and low-quality contributions. As he put it: &#8220;open source has always been a system of trust. Before, we&#8217;ve had default trust. Now it&#8217;s just default deny.&#8221;</p><p><strong>7. Git and GitHub may not survive the agentic era in their current form.</strong> Agents cause so much churn that merge queues become untenable, branches proliferate, and repos balloon. Mitchell compares the needed shift to Gmail&#8217;s revolution for email: &#8220;We&#8217;re at the Gmail moment for version control... never delete, archive everything.&#8221;</p><p><strong>8. The best engineers Mitchell ever hired had boring, invisible backgrounds. </strong>&#8220;They don&#8217;t have social media profiles... they&#8217;re honestly nine-to-five engineers. They go back and they don&#8217;t code at night.&#8221; No GitHub contributions, no public profiles, companies you&#8217;ve never heard of. &#8220;Every moment you spend on social media is taking away from something else... the best engineers are the ones that context-switch the least.&#8221;</p><p><strong>9. Mitchell&#8217;s advice for AI-skeptical engineers: start by reproducing your research, not your code.</strong> &#8220;There&#8217;s a lot of people like, &#8216;I don&#8217;t want it to write code for me.&#8217; But just delegate some of the research part.&#8221; He uses agents for library comparisons, edge-case analysis, and deep research &#8212; not just code generation. &#8220;You don&#8217;t need to pick up on the &#8216;it must replace you as a person&#8217; kind of propaganda.&#8221;</p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><ul><li><p><a href="https://newsletter.pragmaticengineer.com/p/ai-engineering-in-the-real-world">AI Engineering in the real world</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/the-ai-engineering-stack">The AI Engineering stack</a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-64">Pressure on commercial open source to make more money</a> &#8211; and HashiCorp changing its license</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/how-linux-is-built-with-greg-kroah">How Linux is built with Greg Kroah-Hartman</a></p></li></ul><h3><strong>Timestamps</strong></h3><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=123s">02:03</a>) Mitchell&#8217;s path into software engineering</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=439s">07:19</a>) The origins of HashiCorp</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=952s">15:52</a>) Early cloud computing</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=1102s">18:22</a>) The 2010s startup scene in SF</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=1391s">23:11</a>) Funding HashiCorp</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=1523s">25:23</a>) The Hashi stack</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=1953s">32:33</a>) Why HashiCorp&#8217;s business lagged behind its technology</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=2128s">35:28</a>) An early failure in commercialization</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=2308s">38:28</a>) The open-core pivot and path to enterprise profitability</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=2888s">48:08</a>) Taking HashiCorp public</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=3118s">51:58</a>) The near VMware acquisition</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=3550s">59:10</a>) Mitchell&#8217;s take on all the cloud providers</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=3962s">1:06:02</a>) AI&#8217;s impact on open source</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=4020s">1:07:00</a>) Why Mitchell built Ghostty</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=4151s">1:09:11</a>) Why Mitchell used Zig</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=4238s">1:10:38</a>) How terminals work and Ghostty&#8217;s approach</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=4651s">1:17:31</a>) AI&#8217;s impact on terminals and libghostty</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=4753s">1:19:13</a>) How Mitchell uses AI</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=4922s">1:22:02</a>) Ghostty&#8217;s evolving AI use policy</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=5316s">1:28:36</a>) Why open source must change</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=5506s">1:31:46</a>) The problem of Git in monorepos</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=5782s">1:36:22</a>) What needs to change to work effectively with AI</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=5997s">1:39:57</a>) Mitchell&#8217;s hiring practices</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=6472s">1:47:52</a>) Mitchell&#8217;s AI adoption journey</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=6641s">1:50:41</a>) Advice to would-be founders</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=6741s">1:52:21</a>) Mitchell&#8217;s advising work</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=6800s">1:53:20</a>) What&#8217;s changing for software engineers</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=6903s">1:55:03</a>) How Mitchell recharges</p><p>(<a href="https://www.youtube.com/watch?v=WjckELpzLOU&amp;t=6950s">1:55:50</a>) Book recommendation</p><h3><strong>References</strong></h3><p><strong>Where to find Mitchell Hashimoto:</strong></p><p>&#8226; X: <a href="https://x.com/mitchellh">https://x.com/mitchellh</a></p><p>&#8226; LinkedIn: <a href="http://linkedin.com/in/mitchellh">linkedin.com/in/mitchellh</a></p><p>&#8226; Website: <a href="https://mitchellh.com">https://mitchellh.com</a></p><p>&#8226; Ghostty: <a href="https://ghostty.org">https://ghostty.org</a></p><p>&#8226; How Mitchell adopted AI: <a href="https://mitchellh.com/writing/my-ai-adoption-journey">https://mitchellh.com/writing/my-ai-adoption-journey</a></p><p><strong>Mentions during the episode:</strong></p><p>&#8226; HashiCorp: <a href="https://www.hashicorp.com">https://www.hashicorp.com</a></p><p>&#8226; PHP Manual: <a href="https://www.php.net/manual/en/index.php">https://www.php.net/manual/en/index.php</a></p><p>&#8226; Ruby on Rails: <a href="https://rubyonrails.org">https://rubyonrails.org</a></p><p>&#8226; Armon Dadgar on LinkedIn: <a href="https://www.linkedin.com/in/armon-dadgar">https://www.linkedin.com/in/armon-dadgar</a></p><p>&#8226; Amazon S3: <a href="https://aws.amazon.com/pm/serv-s3">https://aws.amazon.com/pm/serv-s3</a></p><p>&#8226; How AWS S3 is built: <a href="https://newsletter.pragmaticengineer.com/p/how-aws-s3-is-built">https://newsletter.pragmaticengineer.com/p/how-aws-s3-is-built</a></p><p>&#8226; Vagrant: <a href="https://developer.hashicorp.com/vagrant">https://developer.hashicorp.com/vagrant</a></p><p>&#8226; Google App Engine: <a href="https://en.wikipedia.org/wiki/Google_App_Engine">https://en.wikipedia.org/wiki/Google_App_Engine</a></p><p>&#8226; Packer: <a href="https://www.hashicorp.com/en/products/packer">https://www.hashicorp.com/en/products/packer</a></p><p>&#8226; Consul: <a href="https://www.hashicorp.com/en/products/consul">https://www.hashicorp.com/en/products/consul</a></p><p>&#8226; Kubernetes: <a href="https://kubernetes.io">https://kubernetes.io</a> </p><p>&#8226; Terraform: <a href="https://www.hashicorp.com/en/products/terraform">https://www.hashicorp.com/en/products/terraform</a></p><p>&#8226; Vault: <a href="https://www.hashicorp.com/en/products/vault">https://www.hashicorp.com/en/products/vault</a></p><p>&#8226; Nomad: <a href="https://www.hashicorp.com/en/products/nomad">https://www.hashicorp.com/en/products/nomad</a></p><p>&#8226; VMware: <a href="https://www.vmware.com">https://www.vmware.com</a></p><p>&#8226; Microsoft Azure: <a href="https://azure.microsoft.com">https://azure.microsoft.com</a></p><p>&#8226; Google Cloud: <a href="https://cloud.google.com">https://cloud.google.com</a></p><p>&#8226; Zig: <a href="https://ziglang.org">https://ziglang.org</a></p><p>&#8226; Kitty: <a href="https://sw.kovidgoyal.net/kitty">https://sw.kovidgoyal.net/kitty</a></p><p>&#8226; Alacritty: <a href="https://alacritty.org">https://alacritty.org</a></p><p>&#8226; Mitchell&#8217;s post on X about improving rendering performance: </p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/mitchellh/status/1990958974238163155&quot;,&quot;full_text&quot;:&quot;Love doing highly targeted performance work. I've been working the past few days on changing the way the render thread in Ghostty reads the terminal data (which requires a lock that blocks IO). I've got lock held time down 2.4x so far. Too early to PR, but getting close!\n\nThis &quot;,&quot;username&quot;:&quot;mitchellh&quot;,&quot;name&quot;:&quot;Mitchell Hashimoto&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1141762999838842880/64_Y4_XB_normal.jpg&quot;,&quot;date&quot;:&quot;2025-11-19T01:43:04.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/G6FNZ6yagAApZG5.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/kF4sQRt9pU&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:10,&quot;retweet_count&quot;:3,&quot;like_count&quot;:279,&quot;impression_count&quot;:31007,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p>&#8226; Gastown: <a href="https://github.com/steveyegge/gastown">https://github.com/steveyegge/gastown</a></p><p>&#8226; Lobsters: <a href="https://lobste.rs">https://lobste.rs</a></p><p>&#8226; Real-world engineering challenges: building Cursor: <a href="https://newsletter.pragmaticengineer.com/p/cursor">https://newsletter.pragmaticengineer.com/p/cursor</a></p><p>&#8226; My AI Adoption Journey: <a href="https://mitchellh.com/writing/my-ai-adoption-journey">https://mitchellh.com/writing/my-ai-adoption-journey</a></p><p>&#8226; The Invisible Life of Addie LaRue: <a href="https://www.amazon.com/Invisible-Life-Addie-LaRue/dp/0765387565">https://www.amazon.com/Invisible-Life-Addie-LaRue/dp/0765387565</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[The Future of Software Engineering with AI: Six Predictions]]></title><description><![CDATA[Notes from The Pragmatic Summit and &#8216;The Future of Software Development&#8217; workshop]]></description><link>https://newsletter.pragmaticengineer.com/p/the-future-of-software-engineering-with-ai</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-future-of-software-engineering-with-ai</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 24 Feb 2026 16:54:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2KWV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Two weeks ago, I hosted<em> <a href="https://www.pragmaticsummit.com/">The Pragmatic Summit</a></em> in San Francisco, a few days after attending a 50-person workshop entitled <em>The Future of Software Development </em>in Deer Valley, Utah. Each event attracted experienced software engineers, leaders, and deep thinkers to share thoughts about the state of the software engineering industry today and in the future.</p><p><strong>It was well-timed, considering that right now seems like a period of change for tech that&#8217;s unfolding faster than before.</strong> That was a consensus opinion at both events, also held by veterans like Martin Fowler and Kent Beck, who said things haven&#8217;t shifted so rapidly during their 50+ years in the industry.</p><p>At the very start of this year, I predicted <a href="https://newsletter.pragmaticengineer.com/p/when-ai-writes-almost-all-code-what">AI will write almost all code, going forward</a>, and several others have <a href="https://newsletter.pragmaticengineer.com/i/183694080/1-latest-models-create-a-ha-moments">said</a> the same. But at the Pragmatic Summit, I met an embedded engineer writing Assembly and C code who is still writing more of his code by hand than with AI agents &#8211; and was the only person I spoke with in San Fran who was not yet &#8220;giving in&#8221; to AI agents.</p><p>Even so, today, this engineer has between a third and a half of their own low-level code being generated by AI agents since the launch of Opus 4.5, and this share keeps on rising. Their view was an interesting counterpoint to the prevailing trend.</p><p>This article shares some thought-provoking ideas and conversations from both events, covering:</p><ol><li><p><strong>Data vs hype: how orgs actually win with AI. </strong>Laura Tacho&#8217;s keynote at The Pragmatic Summit. Exclusive data reveals 92% of devs use AI coding tools monthly (!!), &#8220;unhealthy&#8221; orgs see 2x more incidents, healthy ones have 50% fewer, and other new data.</p></li><li><p><strong>Building world-class engineering orgs in the AI era.</strong> The closing session of the summit dug into what AI-native teams look like, in a fireside chat with GitHub&#8217;s former CEO and the CTO of Atlassian.</p></li><li><p><em><strong>The Future of Software Development</strong></em><strong> with Martin Fowler. </strong>Laura Tacho, distinguished engineer Annie Vella, Martin Fowler, and myself, look back on the event in Utah. Nobody has the AI shift all worked out, which is reassuring!</p></li><li><p><strong>Mid-level engineers&#8217; quiet crisis. </strong>Something I heard that engineering leaders talk about behind closed doors a lot is that mid-career engineers are being left behind by the AI wave. New grads are more productive with the tools, while seniors have more of that all-important experience. Advice on how to catch up fast.</p></li><li><p><strong>Future of refactoring in an AI-native world</strong>. Refactoring legacy code has long been an important tool for keeping software maintainable. With AI generating most code now, is there any point? One answer is &#8220;hell, yeah!&#8221;</p></li><li><p><strong>Future of Agile</strong>. It was only fitting to consider the future of Agile on its 25th anniversary, in the company of two of the writers of the Agile Manifesto. Amusingly, one major trend is the return of Extreme Programming (XP) practices which predate Agile.</p></li></ol><h2>1. Data vs hype: how orgs actually win with AI</h2><p>At the debut Pragmatic Summit in SF, <a href="https://newsletter.pragmaticengineer.com/p/measuring-the-impact-of-ai-on-software">Laura Tacho</a> delivered the keynote as a well-known expert on developer productivity, and former CTO of DX. She presented new and exclusive data on AI usage, and what currently works with AI adoption. Her session was one of the most popular at the conference &#8211; and you can <a href="https://youtu.be/LOHgRw43fFk">watch the whole thing here</a>. Full subscribers also get <a href="https://newsletter.pragmaticengineer.com/i/188235220/2-data-vs-hype-how-orgs-actually-win-with-ai">access to Laura&#8217;s slides</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WXZO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WXZO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!WXZO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!WXZO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!WXZO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WXZO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;: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="" srcset="https://substackcdn.com/image/fetch/$s_!WXZO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!WXZO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!WXZO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!WXZO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78299212-adf4-4a2a-bf82-f37b52640f77_1600x1066.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Laura Tacho delivers the keynote at The Pragmatic Summit to a full house of 500. <a href="https://youtu.be/LOHgRw43fFk">Watch the full session</a></em></figcaption></figure></div><p>New data points on AI adoption shared at The Pragmatic Summit, provided by DX:</p><p>Usage:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2KWV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2KWV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!2KWV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!2KWV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!2KWV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2KWV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2KWV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!2KWV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!2KWV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!2KWV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6b4839-c2ca-4f98-a65e-a0729ca085a9_1600x1066.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">92% of devs use AI coding assistants at least once per month. Source: DX</figcaption></figure></div><p>Time management:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EGQJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EGQJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png 424w, https://substackcdn.com/image/fetch/$s_!EGQJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png 848w, https://substackcdn.com/image/fetch/$s_!EGQJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png 1272w, https://substackcdn.com/image/fetch/$s_!EGQJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EGQJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EGQJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png 424w, https://substackcdn.com/image/fetch/$s_!EGQJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png 848w, https://substackcdn.com/image/fetch/$s_!EGQJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.png 1272w, https://substackcdn.com/image/fetch/$s_!EGQJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfc7b745-1565-4c99-ae11-6ffdd0372403_1600x899.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">Average of ~4 hours saved per week, based on self-reported data. Source: DX</figcaption></figure></div><p>Onboarding impact:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fnbT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fnbT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 424w, https://substackcdn.com/image/fetch/$s_!fnbT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 848w, https://substackcdn.com/image/fetch/$s_!fnbT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 1272w, https://substackcdn.com/image/fetch/$s_!fnbT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fnbT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fnbT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 424w, https://substackcdn.com/image/fetch/$s_!fnbT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 848w, https://substackcdn.com/image/fetch/$s_!fnbT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 1272w, https://substackcdn.com/image/fetch/$s_!fnbT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61c27e15-209c-415b-b9ea-840fdf3f30d9_1600x899.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI tools have slashed onboarding time over the past year</figcaption></figure></div><p><strong>There&#8217;s no </strong><em><strong>typical</strong></em><strong> experience with AI, </strong>said Laura:</p><blockquote><p>&#8220;AI is extremely different in every company because each place has its own problems and its own culture.</p><p>Organizational performance is multidimensional and these organizations are just going off to different extremes, based on what they were doing before. AI is an accelerator, it&#8217;s a multiplier, and it is moving organizations in different directions.</p><p>Some organizations are facing twice as many customer-facing incidents. At the same time, some companies are also experiencing 50% fewer incidents. So, for some companies that have used AI and have a really healthy system, it has amplified that system. They are seeing fewer incidents, moving faster, accelerating with higher quality, higher code maintainability, and higher change competence.</p><p>On the other side, we have organizations which were dysfunctional already and are now more dysfunctional: they&#8217;re dysfunctional faster. Similarly, organizations are seeing really uneven results economically from using AI.</p><p>There are a lot of steep drop-offs when it comes to using AI in a pilot context with production, and then trying to tie it to profit. This is from an MIT study in July 2025, <a href="https://mlq.ai/media/quarterly_decks/v0.1_State_of_AI_in_Business_2025_Report.pdf">The Gen AI Divide</a>&#8221;.</p></blockquote><p><strong>Good analogies for the age of AI might be the space race of the previous century</strong> and the age of exploration in the 15th-17th centuries, said Laura.</p><ul><li><p><strong>Wonder of space</strong>: space exploration includes immense hope and grounded scepticism.</p></li><li><p><strong>Defining moments</strong>: even though the space race was incredibly expensive &#8211; or utterly wasteful &#8211; landing on the moon was a big moment for humanity.</p></li><li><p><strong>Delivering but not on the grandest ambitions</strong>: in the 1960s, going to the moon carried the expectation of human habitation on the lunar surface. As yet, that hasn&#8217;t happened but landing on the moon created progress back on Earth:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T8Bl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T8Bl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png 424w, https://substackcdn.com/image/fetch/$s_!T8Bl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png 848w, https://substackcdn.com/image/fetch/$s_!T8Bl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png 1272w, https://substackcdn.com/image/fetch/$s_!T8Bl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T8Bl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png" width="1156" height="1346" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1346,&quot;width&quot;:1156,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T8Bl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png 424w, https://substackcdn.com/image/fetch/$s_!T8Bl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png 848w, https://substackcdn.com/image/fetch/$s_!T8Bl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.png 1272w, https://substackcdn.com/image/fetch/$s_!T8Bl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74b3ddbb-e5ef-4bd5-b263-78b0d9a0bdd4_1156x1346.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">Parallels: Could AI fail on its loftiest promise but still deliver plentiful innovation?</figcaption></figure></div><p><strong>There&#8217;s a rare opportunity to channel the energy around AI into practical improvements,</strong> said Laura in closing remarks:</p><blockquote><p>&#8220;I want to urge you to find that balance between a sense of wonder, aiming for Mars, and a moon colony, but also understanding we need to solve problems here on Earth and we have to live in this reality.</p><p>So, please stay grounded, stay skeptical, stay human. Most of all, stay pragmatic&#8221;.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/LOHgRw43fFk&quot;,&quot;text&quot;:&quot;Watch Laura's keynote&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/LOHgRw43fFk"><span>Watch Laura's keynote</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.pragmaticengineer.com/i/188235220/2-data-vs-hype-how-orgs-actually-win-with-ai&quot;,&quot;text&quot;:&quot;Access Laura's slides&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.pragmaticengineer.com/i/188235220/2-data-vs-hype-how-orgs-actually-win-with-ai"><span>Access Laura's slides</span></a></p><h2>2. Building world-class engineering orgs in the age of AI</h2><p>Also at the Pragmatic Summit, Thomas Dohmke (founder &amp; CEO of Entire, and former CEO of GitHub) and Rajeev Rajan (CTO of Atlassian) took part in a fireside chat to explore what a modern, world-class engineering team looks like today. Thomas is building a new, AI-native startup with Entire &#8211; an &#8220;AI-native GitHub&#8221; &#8211; while Atlassian has more data than anywhere else on developer productivity after acquiring DX.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hrHL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hrHL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!hrHL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!hrHL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!hrHL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hrHL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hrHL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!hrHL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!hrHL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!hrHL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203fe1e7-7d2e-4c5c-98d5-2b2c60e3314d_1600x1066.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">Full house for the closing session at The Pragmatic Summit, featuring Thomas Dohmke and Rajeev Rajan</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/fYh1CWadxDM&quot;,&quot;text&quot;:&quot;Watch the closing session&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/fYh1CWadxDM"><span>Watch the closing session</span></a></p><p>A number of timely, thought-provoking topics were covered by the pair on stage:</p><h4>Topic #1: What does an AI-native team look like?</h4><p>Rajeev (Atlassian):</p><blockquote><p>&#8220;It starts with the mindset. You have to really believe in doing AI-native work. Some teams at Atlassian have engineers basically writing zero lines of code: it&#8217;s all agents, or orchestration of agents. As a result, teams are not necessarily getting smaller, but they&#8217;re producing a lot more, sometimes 2-5x more, and creativity is up.</p><p>Efficiency framing is missing the point, it&#8217;s more about what you can create now with AI which you could not before&#8221;.</p></blockquote><p>Thomas (<a href="http://entire.io">Entire.io</a>):</p><blockquote><p>&#8220;AI native is the new &#8216;cloud native&#8217; and what we are calling <em>AI native</em> now is going to be very different from AI native in a few years&#8217; time.</p><p>There&#8217;s a lot of BS out there about how all day-to-day tasks are now &#8216;AI native&#8217;, and using agents for everything. I&#8217;m a startup founder: most of the time, I&#8217;m still dealing with things like old school HR school systems&#8221;.</p></blockquote><h4>Topic #2: AI makes being distributed an advantage again</h4><p>Thomas:</p><blockquote><p>&#8220;A remote team is kind of lonely, right? But agents basically gave us these sparring partners, these experts that I can just ask &#8220;bring some help in for this topic, I need to write an ADR or solve a problem.</p><p>This help has taken it to a new level for remote work. I now have my code review agent, my coding agent, my brainstorming agent, my research agents. In some ways, agents have given an advantage again for being remote-first.&#8221;</p></blockquote><p>Rajeev:</p><blockquote><p>&#8220;Agents have changed things a lot. I remember the days when I was in the office at 2:00AM writing code and would get stuck. All you can do is read the code, then read the code some more until you figure it out.</p><p>Well, now you can ask an agent to explain it, or even better, do the code for you. So, with agents it&#8217;s gotten even better and easier for us to be able to be distributed.&#8221;</p></blockquote><h4>Topic #3: Why restrictive corporate IT gives startups a massive advantage</h4><p>One hilarious exchange between Rajeev and Thomas was about how large companies are slow with AI due to restrictive IT:</p><blockquote><p>Rajeev: &#8220;Over the holidays, I bought a laptop because sometimes you can&#8217;t install things because of IT. So, I bought my own personal laptop at the Apple store, installed Claude Code, built an app, a bunch of Python scripts, and things like that. As someone who has grown up writing code to my personal bar, it&#8217;s super high &#8211; as it is for all my engineers. Now, I can write code much faster with agents and things like that.&#8221;</p><p>Thomas: &#8220;To all startup founders: when an investor asks how you&#8217;re preventing the incumbent from doing the same thing you&#8217;re doing: just tell them the CTO of Atlassian had to buy a laptop on his own money to start coding!</p><p>That&#8217;s the best answer I can give because it shows you how even relatively agile companies [like Atlassian, a <a href="https://www.atlassian.com/agile">promoter</a> of Agile] that actually develop agile tools, can&#8217;t really do what you can do in five minutes!&#8221;</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YynR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YynR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!YynR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!YynR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!YynR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YynR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ace5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YynR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!YynR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!YynR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!YynR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face5b52b-717b-4cca-b4a6-3fdc4056fded_1600x1066.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"><em>Enjoyable chat about how IT departments can block modern tools, even at &#8220;agile&#8221; companies. <a href="https://youtu.be/fYh1CWadxDM">Watch the full session</a></em></figcaption></figure></div><h4>Topic #4: Why CTOs are rolling out agents with top-down mandates</h4><p>Thomas discussed how engineering leaders introduce agentic tools after playing with them as side projects.</p><blockquote><p> &#8220;What happened in the last two years through coding agents like Copilot, Cursor, and Devin, is that many CTOs and CIOs, even in the largest banks, realized they can go back to coding. It no longer takes hours to install all the packages and figure out all the problems.</p><p>I actually have friends in these spaces who tell me stories of how every night they&#8217;d give the agent a task and say: &#8220;build me this.&#8221; Then, in the morning they would check in with the agent and instruct it to keep going. And then they have their normal day-to-day as CTO of a big bank.</p><p>You do that for two weeks and you realize everything is going to change &#8211; and that it <em>has</em> to change in my organization. And in contrast to the Twilio founders &#8211; in their case, they had developers decide, bottom up, what tools to use &#8211; these CTOs and CIOs say: &#8220;I don&#8217;t want to hear any excuses. We&#8217;re going to roll out agents.&#8221;</p><p>Still, many banks are on very archaic systems and have developers log into Citrix, and jump through all sorts of hoops to use agents.&#8221;</p></blockquote><p><em>Claude Code was introduced in a similar way at Canadian fintech, Wealthsimple, <a href="https://newsletter.pragmaticengineer.com/i/186760687/4-how-wealthsimple-measured-and-decided">as we covered</a> two weeks ago.</em></p><p>The fireside chat touched on more subjects, including the changing role of software engineers and engineering leaders, and the biggest changes Thomas and Rajeev expect this year.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/fYh1CWadxDM&quot;,&quot;text&quot;:&quot;Watch the closing session&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/fYh1CWadxDM"><span>Watch the closing session</span></a></p><p>You can now also watch the other keynote session: <strong><a href="https://youtu.be/Bo6Gtq3nMXc">How AI is reshaping the craft of building software</a></strong> with OpenAI and the Codex team. Full subscribers can already <strong><a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-summit-recordings">check out all sessions at The Pragmatic Summit</a></strong>, Q&amp;A included. <em>The other sessions without Q&amp;As will be released next week for everyone.</em></p><p>The remainder of this article covers an event hosted by Martin Fowler.</p><h2>3. &#8216;Future of Software Development Summit&#8217; with Martin Fowler</h2><p>Back in February of 2001, a group of 17 software developers gathered at a ski resort in Snowbird, Utah, where they drafted and signed the famous Agile Manifesto.</p><p>Almost exactly 25 years later, Martin Fowler and Thoughtworks organized a retreat at almost the same place in Deer Valley, Utah. He invited around 50 tech leaders from large enterprises and nimble startups, researchers, authors, and experienced, hands-on software engineers. Held earlier this month, it was <em>&#8220;The Future of Software Development,&#8221; </em>and I was delighted to attend the two-day gathering featuring <a href="https://annievella.com/">Annie Vella</a>, <a href="https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent">Kent Beck</a>, <a href="https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the">Steve Yegge</a>, <a href="https://itrevolution.com/author/gene-kim/">Gene Kim</a>, <a href="https://newsletter.pragmaticengineer.com/p/measuring-the-impact-of-ai-on-software">Laura Tacho</a>, &#8211; and of course, <a href="https://newsletter.pragmaticengineer.com/p/martin-fowler">Martin</a> himself.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KUwA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KUwA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 424w, https://substackcdn.com/image/fetch/$s_!KUwA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 848w, https://substackcdn.com/image/fetch/$s_!KUwA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 1272w, https://substackcdn.com/image/fetch/$s_!KUwA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KUwA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png" width="1456" height="1320" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1320,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KUwA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 424w, https://substackcdn.com/image/fetch/$s_!KUwA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 848w, https://substackcdn.com/image/fetch/$s_!KUwA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 1272w, https://substackcdn.com/image/fetch/$s_!KUwA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959158ac-d787-448e-9889-0d7ec9299ea4_1600x1451.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Top row: Martin Fowler, Kent Beck. Next row: With Annie Vella, Gene Kim, and Steve Yegge signing his book, &#8216;Vibe Coding&#8217;</figcaption></figure></div><p>This was no attempt to draft a second landmark manifesto; rather, it was an opportunity to share notes and consider where the tech industry might be headed. It was an intense day of back-and-forth about what we&#8217;re seeing and what to make of it.</p><p><strong>One declaration was drafted. </strong>Kent Beck, Laura Tacho, and Steve Yegge, came up with an apposite statement on inflated expectations upon AI to magically improve everything in workplaces:</p><blockquote><p>&#8220;Organizations are constrained by human and systems-level problems. We remain skeptical of the promise of any technology to improve organizational performance without first addressing human and systems-level constraints.</p><p>We remain skeptical and we remain human&#8221;. &#8211; Kent Beck, Laura Tacho, and Steve Yegge.</p></blockquote><h3>Personal notes</h3><p>I have my own thoughts on the topics covered:</p><p><strong>Everyone, everywhere is adopting AI rapidly, which in some ways is very surprising. </strong>Looking back on tech innovation over the last 20 years, such as mobile, cloud, or even crypto &#8211; adoption was gradual. For example, native mobile progressed like this:</p><ol><li><p><strong>Indie devs</strong>: in the first few years, startups, experimental individuals, and teams onboarded to the new technology. For native mobile apps, 2008 was when iOS and Android launched their app stores. Between 2008 and 2010, it was mostly indie developers, small teams, and companies that built their apps.</p></li><li><p><strong>Startups and forward-thinking companies</strong>: a few years later, more startups saw the opportunity to jump in. For example, Uber was founded in 2010 and Snap in 2011. Some forward-thinking places also launched in this period, like Starbucks with an iOS app in 2009.</p></li><li><p><strong>Larger tech companies</strong>: Years on, some forward-looking, larger tech companies adopted the technology. For example, Bank of America launched an app in 2011 (3 years into native mobile), Yahoo started to go all-in on native mobile apps from late 2012.</p></li><li><p><strong>&#8220;Traditional&#8221; tech companies finally catch up:</strong> Eventually, slow-moving companies also move over when it becomes a baseline expectation to use a new technology. For example, Ryanair launched its native iOS app in 2014, six years after native mobile apps emerged.</p></li></ol><p>Contrast that to today, when it seems like everyone is moving all at once. I talked with folks from companies like John Deere (agriculture), 3M (industrial products), Cisco (networking hardware), Wealthsimple (finance), AWS (cloud), and startups, and none could be called &#8220;behind.&#8221; Every company is rolling out agentic AI tools; for example, Wealthsimple did <a href="https://newsletter.pragmaticengineer.com/i/186760687/4-how-wealthsimple-measured-and-decided">a global Claude Code rollout</a> just a week earlier.</p><p>Based on past experience, you might expect at least<em> some </em>traditional companies with no exposure to AI to wait and see what happens. But I found none doing so.</p><p><strong>Traditional, &#8220;old school&#8221; companies don&#8217;t seem to be lagging behind the pace. </strong>A traditional company with 10,000+ developers has more than 50% of software development outsourced. This place founded an AI platform team with a mission to eliminate outsourcing activity via a mix of efficiencies from AI tools and targeted hiring.</p><p>They have already built an AI debugging agent popular across the whole business that&#8217;s connected to all internal systems like monitoring, logging, and internal data stores. It helps a dev pinpoint any and all errors and bugs. This platform team is building more internal tools and hiring aggressively.</p><p>It&#8217;s a similar story at other trad places: most are already using AI agents, some are experimenting with AI used for large-scale refactors, and others are seeking use cases for agent swarms.</p><p><strong>Smaller engineering teams are a certainty. </strong>Around 20 engineering leaders &#8211; many at large enterprises, some at tiny startups &#8211; said that engineering teams are shrinking. One Head of Engineering at a 200-year-old company in the agriculture sector put it like this:</p><blockquote><p>&#8220;We are already seeing the end of two-pizza teams (6-10 people) thanks to AI. Our teams are slowly but surely becoming one-pizza teams (3-4 people) across the business&#8221;.</p></blockquote><p>To emphasize, this is one of the most traditional companies which sells physical goods and hardware, and whose business has no disruption to fear from AI. But they&#8217;ve also adapted!</p><h3>Observations from Laura Tacho</h3><p>Laura was kind enough to share her notes on this event for this article:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-future-of-software-engineering-with-ai">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>