<?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: Deepdives]]></title><description><![CDATA[Long-form educational articles every Tuesday. These articles typically go deep into a topic relevant for software engineers or engineering managers, and tend to offer actionable advice.]]></description><link>https://newsletter.pragmaticengineer.com/s/deepdives</link><image><url>https://substackcdn.com/image/fetch/$s_!eod5!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27076b05-e3f4-4d05-9621-3da4f7f189cd_300x300.png</url><title>The Pragmatic Engineer: Deepdives</title><link>https://newsletter.pragmaticengineer.com/s/deepdives</link></image><generator>Substack</generator><lastBuildDate>Wed, 24 Jun 2026 13:02:06 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[Slow down to speed up: so much has changed in 6 months’ time]]></title><description><![CDATA[An overview of what&#8217;s changed in engineering during the last six months, how various tech companies are changing how they work, and why slowing down could be a sensible strategy]]></description><link>https://newsletter.pragmaticengineer.com/p/slow-down-to-speed-up</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/slow-down-to-speed-up</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 23 Jun 2026 15:30:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/5wks1W-auKY" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Scheduling note: there will be no edition of The Pulse on Thursday as I&#8217;m in San Francisco for the next week and a half, visiting AI labs and startups, and attending the </span><a href="https://www.ai.engineer/worldsfair/2026"><span>AI Engineer World Fair</span></a><span> from next Monday. For the podcast and Tuesday articles, it&#8217;s business as usual.</span></em></p><p><span>Three weeks ago, at </span><a href="https://craft-conf.com/"><span>Craft Conference</span></a><span>, in Budapest, Hungary, I opened the event with a keynote titled &#8216;Slow Down to Speed Up&#8217;.</span></p><p><span>As with most of my talks, it came together in stages, including with some input from full subscribers to the Pragmatic Engineer, with whom I shared my thinking in advance, in &#8216;</span><a href="https://newsletter.pragmaticengineer.com/p/ideas-slow-down-to-speed-up-when"><span>Ideas: slow down to speed up when working with AI agents</span></a><span>&#8217;. </span><em><span>Thank you for all the comments!</span></em></p><p><span>As fate would have it, just two days beforehand, social media giant Meta appositely provided a real-world case study for my talk, with its </span><a href="https://newsletter.pragmaticengineer.com/i/202307236/4-most-embarrassing-ever-outage"><span>most embarrassing outage of all time</span></a><span>: users could simply ask the Meta AI to change the email of any account, and the bot happily complied &#8211; even if the account belonged to someone else entirely &#8211; including a former US president. It was a timely example to kick off the talk with.</span><em><span> Check out the full keynote that&#8217;s available to </span><a href="https://youtu.be/5wks1W-auKY"><span>view on YouTube</span></a><span>:</span></em></p><div id="youtube2-5wks1W-auKY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5wks1W-auKY&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/5wks1W-auKY?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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/5wks1W-auKY&quot;,&quot;text&quot;:&quot;Watch the keynote video&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/5wks1W-auKY"><span>Watch the keynote video</span></a></p><p><span>In this article, I summarize the key parts of my Craft Conference keynote in detail, and some responses received at the event. Full subscribers also have access to the slides, </span><a href="https://newsletter.pragmaticengineer.com/i/40654455/reports-and-slides"><span>here</span></a><span>, and at the foot of this article.</span></p><p><span>We cover:</span></p><ol><li><p><strong><span>Meta: &#8220;AI psychosis&#8221; in effect? </span></strong><span>Meta has been destroying its engineering org, and an obsessive focus on AI seems to be one reason for it. For more on this question, check out this </span><a href="https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering"><span>deep dive</span></a><span>.</span></p></li><li><p><strong><span>Everything&#8217;s changed in six months.</span></strong><span> From around November last year, things changed with a more capable generation of AI agents like Opus 4.5 and GPT-5.4.</span></p></li><li><p><strong><span>How are tech companies changing how they work?</span></strong><span> Anthropic, OpenAI, Google, Uber, startups, and traditional companies.</span></p></li><li><p><strong><span>Trends</span></strong><span>. Individual productivity is up, but team productivity&#8217;s flat, tokenmaxxing and tooling adoption, vanishing middle management, CEOs and CTOs back to coding, and more.</span></p></li><li><p><strong><span>Trends across software. </span></strong><span>Falling software quality, GitHub&#8217;s constant reliability woes, AI slop overwhelming devs who care about quality, and more.</span></p></li><li><p><strong><span>Advice for software engineers and engineering leaders. </span></strong><span>Suggestions to help future-proof a career.</span></p></li><li><p><strong><span>Feedback. </span></strong><span>&#8220;It&#8217;s happening here too!&#8221; is a common theme, and relief for some that it&#8217;s not unique to their own workplace.</span></p></li></ol><h2><span>1. Meta: &#8220;AI psychosis&#8221; in effect?</span></h2><p><span>I thought it was a made-up story when I read that Meta had enabled account takeovers via a &#8220;zero auth&#8221; policy; i.e., simply asking the Meta AI bot was sufficient to change any account&#8217;s email address. After all, shipping such a regression would fly in the face of security measures, code reviews, automated testing, and metrics. Plus, the company has dedicated Integrity teams whose mission statement is to ensure something like this never happens&#8230; And yet, this bug shipped.</span></p><p><span>It went undetected by anyone at Meta, and high-profile accounts like that of former US president, Barack Obama, were taken over as a result. Instagram&#8217;s dedicated Integrity team seems to have discovered the embarrassing issue via the news.</span></p><p><span>As mentioned, it was two days before the Craft keynote, so there was enough time to ask around at Instagram and Meta. Engineers at the company there told me this disaster was caused by AI-generated, AI-reviewed code, along with layoffs, and by forced reassignments from Integrity teams and elsewhere onto AI labeling and related duties.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zjyL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zjyL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zjyL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;: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_!zjyL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.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"><em><span>Talking Meta at Craft Conference</span></em></figcaption></figure></div><p><span>The problem at Meta seems to be that leadership is aggressively pushing AI, while withdrawing resources and headcount from areas responsible for security, quality, and reliability. Since last week&#8217;s </span><a href="https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering"><span>deepdive</span></a><span> into what&#8217;s been happening behind the scenes was published, I&#8217;ve learned further details:</span></p><ul><li><p><span>Integrity teams at WhatsApp </span><a href="https://newsletter.pragmaticengineer.com/i/202609979/orgs-hit-hard-by-layoffs"><span>have been hit hard by layoffs</span></a><span> and enforced data-labeling reassignments</span></p></li><li><p><span>Instagram&#8217;s design team suffered a 44% cut in headcount during layoffs</span></p></li><li><p><span>The Developer Documentation and Support team had a full 95% headcount reduction during layoffs</span></p></li><li><p><span>Data labeling at the ADO group </span><a href="https://newsletter.pragmaticengineer.com/i/202609979/1-meta-follow-up"><span>goes beyond</span></a><span> &#8220;just&#8221; labeling; there are many AI training tasks to do.  But these are repetitive, unless you get really creative.</span></p></li></ul><p><span>Based on everything I heard from talking with Meta folks, AI-induced behavior was indeed at the heart of this outage. AI-generated, AI-reviewed code, and security teams being gutted, were also factors in the beyond-embarrassing incident. As reported in last week&#8217;s deepdive:</span></p><ul><li><p><span>Instagram&#8217;s Trust and Safety Team lost around 50% of its staff to data labeling and layoffs. Some of the most senior folks were drafted onto AI training tasks.</span></p></li><li><p><span>AI-generated changes with zero human input, with just an additional AI code review, have been very common in recent months across the codebase. The change that caused this outage looked like one of these</span></p></li><li><p><span>Normally, the Trust and Safety team would be on top of monitoring and alerting of security breaches, but it is currently in full disarray due to rapid, internal disorganization&#8221;.</span></p></li></ul><p><span>If major changes like data labeling assignments and staff tracking are undone, then perhaps things at Meta could return to normal. But so far, the most being done is that leadership has boosted budgets for snacks, travel, and events. Hardly the change needed to restore morale and the former culture!</span></p><p><span>The comparison to the Lumon corporation in the hit show, Severance, was duly made:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1pjG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1pjG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 424w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 848w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1pjG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png" width="1186" height="1528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1528,&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;: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_!1pjG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 424w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 848w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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><span>Source: </span><a href="https://x.com/secondfret/status/2067348925858934999?s=20"><span>Josh Johnson</span></a></em></figcaption></figure></div><p><strong><span>Meta&#8217;s worst-ever outage can be interpreted as a warning</span></strong><span> about what happens when there&#8217;s so much focus on AI that the basic health of a company&#8217;s main &#8211; money-spinning &#8211; products is neglected. Instagram, WhatsApp, and Facebook generate the bulk of revenue for Meta, but the company is reallocating more engineers to training the coding model, and aggressively cutting the headcounts of vital orgs to do so &#8211; up to the point of not having oncall coverage for key services, and security teams being too stretched to do their jobs.</span></p><p><span>Am I missing some insight about why it&#8217;s more important to build a state-of-the-art, likely-closed AI model that&#8217;s good at coding, than it is to keep operating revenue-generating businesses with stable infra?</span></p><h2><span>2. Everything&#8217;s changed in six months</span></h2><p><span>Independent, experienced software engineers with zero affiliation to AI labs have been saying for a few months that how we do software engineering has been transformed.</span></p><p><span>David Heinemeier Hansson (DHH), creator of Ruby on Rails </span><a href="https://x.com/dhh/status/2007504187568074843?s=20"><span>in January</span></a><span>:</span></p><blockquote><p><span>&#8221;Just [in] summer 2025, I spoke with Lex Fridman about not letting AI write any code directly, but it turns out part of this resistance was simply based on the models not being good enough at the time! I spent more time rewriting what it wrote, than if I&#8217;d done it from scratch. That has now flipped.&#8221;</span></p></blockquote><p><span>Simon Willison, creator of Django, </span><a href="https://simonw.substack.com/p/i-think-anthropic-and-openai-have"><span>in May</span></a><span> pinpointed the start of the change to late last year:</span></p><blockquote><p><span>&#8220;</span><strong><span>The models released in November 2025 elevated agents to being genuinely useful.</span></strong><span> We&#8217;ve had six months to get used to that idea now; it&#8217;s no wonder companies are beginning to spend real money on this technology.&#8221;</span></p></blockquote><p><strong><span>Teams using agents now ship 5x as many pull requests as two years ago.</span></strong><span> Here&#8217;s data from Linear:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CCFv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CCFv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 424w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 848w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1272w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CCFv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png" width="1456" height="643" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:643,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2026-06-04 at 00.07.06.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-06-04 at 00.07.06.png" srcset="https://substackcdn.com/image/fetch/$s_!CCFv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 424w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 848w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1272w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Comparing numbers of pull requests for teams that use AI agents with Linear, vs those that don&#8217;t. Source: Linear</figcaption></figure></div><p><strong><span>Devs using AI harnesses are producing 2.5x as much code versus 18 months ago. </span></strong><span>Data from Cursor shows that their users, on average, went from adding 3,500 lines of code in January 2025 to 8,600 today:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wn0P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wn0P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 424w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 848w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1272w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77326a72-5765-4ca0-8938-25366d60e467_1462x764.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2026-06-04 at 00.12.01.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-06-04 at 00.12.01.png" srcset="https://substackcdn.com/image/fetch/$s_!Wn0P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 424w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 848w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1272w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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><span>Source: </span><a href="https://cursor.com/insights"><span>Cursor</span></a></em></figcaption></figure></div><p><strong><span>The size of pull requests is up 3x versus 18 months ago</span></strong><span>. Also from Cursor:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VaTO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VaTO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 424w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 848w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1272w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VaTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2026-06-04 at 00.14.27.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-06-04 at 00.14.27.png" srcset="https://substackcdn.com/image/fetch/$s_!VaTO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 424w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 848w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1272w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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><span>Line goes up: more lines per PR than ever, today. Source: </span><a href="https://cursor.com/insights"><span>Cursor</span></a></em></figcaption></figure></div><p><strong><span>More AI changes are accepted without human review. </span></strong><span>Data from Cursor shows a big jump in changes being accepted without human review from around February this year, when Opus 4.7 and GPT 5.5 launched:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g3dj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g3dj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g3dj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;: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_!g3dj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.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"><em><span>Less human input than ever, as outlined at the Craft Conference. Source: </span><a href="https://cursor.com/insights"><span>Cursor</span></a></em></figcaption></figure></div><p><strong><span>We&#8217;re seeing a </span></strong><em><strong><span>lot</span></strong></em><strong><span> more code generated, and less of it than ever being reviewed by devs. </span></strong><span>In the relatively short time since AI agents became </span><em><span>really</span></em><span> good last November, there are more pull requests generated by devs, those pull requests are getting better, and code reviews are harder to keep up with. And so, reviews are less stringent and more changes are shipped to production sans human review! </span><em><span>As per my discussions with Meta engineers, these kinds of AI-generated, AI-reviewed pull requests [at Meta, they&#8217;re called diffs] are what caused the most recent, embarrassing outage at Instagram.</span></em></p><h2><span>3. How are tech companies changing how they work?</span></h2><p><span>Details from a few larger tech companies:</span></p><p><strong><span>Anthropic: all-in on AI agents. </span></strong><span>In March, Boris Cherny, creator of Claude Code, </span><a href="https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny"><span>was on the Pragmatic Engineer podcast</span></a><span> and shared some details:</span></p><ul><li><p><span>He personally runs ~5x agents parallel, and ships 20&#8211;30 PRs/day</span></p></li><li><p><span>Product requirement documents (PRDs) are dead &amp; prototypes have replaced them inside Anthropic</span></p></li><li><p><span>~100% of Claude Code was generated by Claude in March</span></p></li><li><p><span>~70-90% of code inside Anthropic was generated by Claude</span></p></li><li><p><span>Claude Cowork &#8211; another billion-dollar product in terms of revenue potential &#8211; was built in just 10 days</span></p></li></ul><p><span>Since then, Boris has </span><a href="https://x.com/rohanpaul_ai/status/2063347508831764647?s=20"><span>shared</span></a><span> that his workflow has changed to setting up loops to run agents.</span></p><p><strong><span>OpenAI: moving much faster with AI agents. </span></strong><span>OpenAI&#8217;s Codex team was </span><a href="https://www.youtube.com/watch?v=Bo6Gtq3nMXc"><span>on the main stage</span></a><span> at The Pragmatic Summit in February. Tibo Sottiaux (head of engineering, Codex, OpenAI) shared interesting details on how software development is done in the Codex team:</span></p><ul><li><p><span>There&#8217;s a &#8220;fix this&#8221; button integrated into the internal OpenAI mobile app. It makes one-shot fixes to bug reports, which devs review and can merge</span></p></li><li><p><span>AI code review for all code changes. With a tiered approach, some changes can be merged with just AI review, and more important ones need an extra human review</span></p></li><li><p><span>Most devs run several agents in parallel, often walking around with their laptop lids open, so the machine doesn&#8217;t enter sleep mode and suspend agents</span></p></li><li><p><span>Code isn&#8217;t really written by hand anymore on the Codex team, and is also less common on other teams too</span></p></li><li><p><span>&#8220;Taste&#8221; is becoming a core skill for working at the company</span></p></li><li><p><span>Codex improves itself: it runs its own test suite, runs improvement tasks overnight, and during team meetings it takes actions on topics discussed</span></p></li></ul><p><strong><span>Google: AI widespread. </span></strong><span>Gemini is not as capable at coding as Claude or Codex, as acknowledged by Google&#8217;s CEO, but it&#8217;s widely used companywide. The less capable coding model could be hurting AI adoption compared to other companies.</span></p><p><strong><span>Uber: in-house AI infra. </span></strong><span>We covered in-depth </span><a href="https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development"><span>how Uber uses AI for development</span></a><span>, touching on internal systems like:</span></p><p><span>Uber&#8217;s MCP Gateway:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!86xc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!86xc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 424w, https://substackcdn.com/image/fetch/$s_!86xc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 848w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!86xc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png" width="1342" height="1050" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfdfadc9-6d82-4960-a524-68f652453116_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_!86xc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 424w, https://substackcdn.com/image/fetch/$s_!86xc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 848w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_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"><em><span>Uber&#8217;s MCP Gateway</span></em></figcaption></figure></div><p>Uber Agent Builder:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lJ3T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lJ3T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 424w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 848w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png" width="1374" height="1400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_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_!lJ3T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 424w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 848w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_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">Uber&#8217;s Agent Builder: a no-code experience to build agents</figcaption></figure></div><p>The AIFX command line interface:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tRVQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tRVQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 424w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 848w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png" width="1456" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:932547,&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/203257304?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.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_!tRVQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 424w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 848w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Minion: background 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_!bCSQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bCSQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 424w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 848w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1272w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png" width="1351" height="737" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:737,&quot;width&quot;:1351,&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_!bCSQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 424w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 848w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1272w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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><span>Uber&#8217;s Minion system: web interface&#8217;s appearance</span></em></figcaption></figure></div><p>Code Inbox:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!58dy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!58dy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 424w, https://substackcdn.com/image/fetch/$s_!58dy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 848w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1272w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!58dy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png" width="1456" height="901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:901,&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_!58dy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 424w, https://substackcdn.com/image/fetch/$s_!58dy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 848w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1272w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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><span>Uber&#8217;s Code Inbox</span></em></figcaption></figure></div><p><span>Smart Assignments as a neat feature of Code Inbox:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mJYV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mJYV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 424w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 848w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1272w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mJYV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png" width="956" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:956,&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_!mJYV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 424w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 848w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1272w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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><span>Smart assignment settings for Code Inbox</span></em></figcaption></figure></div><p>Risk Profiles: another smart feature inside Code Inbox:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dbo4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dbo4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 424w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 848w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1272w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dbo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png" width="996" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:996,&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_!dbo4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 424w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 848w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1272w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Code Inbox estimates the riskiness of a code change, and brings attention to it</figcaption></figure></div><p>uReview, Uber&#8217;s AI code review tool:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4R6L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4R6L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 424w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 848w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4R6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png" width="1456" height="1007" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1007,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!4R6L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 424w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 848w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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&#8217;s comments can be rated by usefulness</figcaption></figure></div><p>Autocover and Shepherd for large-scale migrations:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DvQf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DvQf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 424w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 848w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DvQf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png" width="1456" height="1352" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1352,&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_!DvQf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 424w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 848w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Shepherd generates a pull request using a Minion AI agent. Part 2 of the diff (pull request) generated, with code changes</figcaption></figure></div><p><strong><span>Uber is a good case for learning how much of internal developer infra needs to be rebuilt in order to work well with AI agents.</span></strong><span> Uber built all the tools above because they needed new, better ways to integrate AI agents into the developer workflow, but couldn&#8217;t find anything that worked up to requirements. I&#8217;d also point out how much time and effort Uber invested in making code review more efficient. Devs are, indeed, getting overloaded with AI code reviews and Uber&#8217;s Code Inbox tries to separate the </span><em><span>important</span></em><span> pieces of code to review from </span><em><span>unimportant</span></em><span> ones.</span></p><p><strong><span>Startups are jumping into using AI agents, although their integrations are more basic. </span></strong><span>In preparation for the keynote, I talked with several startups about their AI usage. Harnesses like Claude Code, Codex, Cursor, OpenCode and others are popular, and I also noticed most startups are heavily integrating AI agents into Slack, so devs can kick off bugfixes or small feature requests straight from the chat tool.</span></p><p><span>I observed startups being the most likely to experiment with new AI dev tools; from code review, all the way to AI incident management tools.</span></p><p><strong><span>&#8220;Traditional&#8221; companies are also heavily investing in AI dev tools. </span></strong><span>At the recent Pragmatic Summit in San Francisco, Laura Tacho </span><a href="https://newsletter.pragmaticengineer.com/i/188235220/2-data-vs-hype-how-orgs-actually-win-with-ai"><span>shared</span></a><span> interesting details:</span></p><ul><li><p><span>In February, 18,000 Cisco developers used Codex for complex migrations, code review, and refactoring. This was </span><em><span>very</span></em><span> early &#8211; Codex was just starting to gain industry-wide adoption!</span></p></li><li><p><span>JP Morgan Chase built a multi-agent framework for annotation, using multiple specialized agents to label customer interaction data, and judge agents to aggregate and rank results. These are pretty advanced use cases!</span></p></li></ul><p><span>In general, &#8220;traditional&#8221; companies do not seem to be lagging behind in using, paying for, and adopting AI agents and AI developer tools.</span></p><h2><span>4. Industry trends</span></h2><p><span>There are trends I&#8217;ve observed around the adoption of AI dev tools:</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/slow-down-to-speed-up">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Why is Meta destroying its engineering organization?]]></title><description><![CDATA[Leadership at the social media giant has been on an AI-fueled rampage through its engineering org. We report what&#8217;s happened]]></description><link>https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 16 Jun 2026 16:27:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/eabe4407-76aa-47a3-a8cb-1d955c05bf03_1972x1072.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hi &#8211; this is Gergely with a free issue of the Pragmatic Engineer Newsletter. In every issue, I cover challenges at Big Tech and startups through the lens of senior engineers and engineering leaders. Subscribe to get deepdives like this in your inbox, weekly:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.pragmaticengineer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.pragmaticengineer.com/subscribe?"><span>Subscribe now</span></a></p><p><em>Many subscribers expense this newsletter to their learning and development budget. If you have such a budget, here&#8217;s<a href="https://blog.pragmaticengineer.com/request-to-expense-the-pragmatic-engineer-newsletter/"> an email you could send to your manager</a>.</em></p><div><hr></div><p>For two decades, Meta had a unique, high-performance engineering org; right up until around April of this year. For the first 20 years of the company&#8217;s existence, it had a &#8220;move-fast-and-break-things&#8221; culture, and in the early 2020s this shifted to a &#8220;move-fast-with-stable-infra&#8221; one. Engineers I know at the company were empowered to do good work, focus on impact, and to balance business interests with solid engineering.</p><p>But in the past few weeks, all that has changed, as if the leadership has been following detailed blueprints on how to demolish a proven, successful engineering culture in the most ruthlessly efficient way possible.</p><p>For the past few weeks, I&#8217;ve been <a href="https://newsletter.pragmaticengineer.com/i/196795826/3-meta-forcefully-assigns-engineers-to-data-labelling-pre-layoff">sharing</a> how bad things are inside the social media company for engineers in one of Silicon Valley&#8217;s most prestigious workplaces. In this article, we walk through what&#8217;s happened, and ask what&#8217;s going through the minds of leadership who are reducing software engineering there from <a href="https://newsletter.pragmaticengineer.com/p/profit-centers-cost-centers">the profit center</a> that it was between 2004 until very recently, to the disdained cost center that it has become in just a few weeks.</p><p>We cover:</p><ol><li><p>Meta&#8217;s pre-AI engineering culture</p></li><li><p>Investing in AI and pressing engineers to always use it</p></li><li><p>Core engineering folks feel treated like trash</p></li><li><p>Most embarrassing-ever outage</p></li><li><p>Internal mess</p></li><li><p>Self-inflicted wounds</p></li><li><p>Is &#8220;AI psychosis&#8221; just a Meta issue?</p></li></ol><h2>1. Meta&#8217;s pre-AI engineering culture</h2><p>I&#8217;d split Meta&#8217;s engineering culture into two eras: &#8220;move fast and break things&#8221;, and then &#8220;move fast with stable infra.&#8221;</p><h3>&#8220;Move fast and break things&#8221;</h3><p>In the 2010s, Facebook&#8217;s unconventional engineering culture had grown somewhat legendary in the tech industry, as the company went against conventional best practices and succeeded massively.</p><p>In 2012, when Facebook hit the billion-users landmark, the company produced a small physical book about its culture which was placed on employees&#8217; desks. Presented with retro propaganda design, it was dubbed the &#8220;little red book&#8221;, co-opting the name of a famous volume of the thoughts of Chairman Mao, (1964).</p><p>At around 70 pages long, Facebook&#8217;s version codified its engineering culture: speed, fearlessness, taking ownership, and thinking outside of the box.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4O-q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4O-q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 424w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 848w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1272w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4O-q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png" width="1456" height="1123" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1123,&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_!4O-q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 424w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 848w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1272w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>From the Little Red Book. Source: <a href="https://v1.benbarry.com/project/facebooks-book">Ben Barry</a></em></figcaption></figure></div><p>Back then, mantras in Facebook&#8217;s little red book were also in print across campus, and included:</p><ul><li><p>Move Fast and Break Things</p></li><li><p>Done is Better Than Perfect</p></li><li><p>Fail Harder</p></li><li><p>What Would You Do If You Weren&#8217;t Afraid?</p></li><li><p>Every Day Feels Like a Week</p></li><li><p>The Wright Brothers Did Not Have Pilot Licenses</p></li><li><p>The Foolish Wait</p></li><li><p>Fortune Favors the Bold</p></li></ul><p>There was genuine focus on building good products. Also from the book:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4-Pa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4-Pa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 424w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 848w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1272w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png" width="1456" height="1082" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1082,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4-Pa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 424w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 848w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1272w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>More from Facebook&#8217;s Little Red Book</em></figcaption></figure></div><h3>&#8220;Move fast with stable infra&#8221; culture</h3><p>In 2022, I did what is one of the longest deepdives we&#8217;ve published on the topic of <a href="https://newsletter.pragmaticengineer.com/p/facebook">Meta&#8217;s engineering culture</a>. By then, things had evolved, and much of any former recklessness was gone, replaced by the principle of moving fast, but with stable infra. Here&#8217;s how I described Meta&#8217;s engineering culture then:</p><blockquote><p>&#8220;<strong>The culture is incredibly engineering-centric: much more than most of Big Tech. </strong>This might come from Mark Zuckerberg being an engineer himself, or because much of the innovation in the early days of Facebook came from engineers.</p><p><strong>Focus on individual impact.</strong> Impact has been the bread and butter of the focus at Facebook. This is very true since the early days, and the focus on generating impact remains.</p><p>One detail in common with most Big Tech firms is that both the engineering culture and general culture focus so much on individual impact. This results in some people focusing on short-term, measurable wins and assuming that teamwork and split wins between groups might be less rewarded.</p><p><strong>The lack of rigid processes.</strong> Facebook seems to have the least amount of processes or standardization across all of Big Tech. Don&#8217;t even try to compare it to<a href="https://newsletter.pragmaticengineer.com/p/amazon?s=w"> Amazon&#8217;s engineering culture</a> and the countless formal processes there. But even compared to companies like Google, Microsoft or Uber, Facebook&#8217;s processes are much looser. Most of this comes from the engineering-centric nature of the company and engineers disliking processes.</p><p><strong>Surprisingly little emphasis on testing, documentation or code comments.</strong> You&#8217;ll find shockingly little automated testing and documentation at Facebook, compared to the rest of Big Tech. Inline code comments are also very rare.</p><p><strong>A founder-engineer driven company. </strong>Facebook is one of the few Big Tech firms whose founder is an engineer, and still is the CEO. Netflix is the other one where founder and co-CEO Reed Hastings was also a software engineer before starting the company. Amazon was the other example of this until recently, but it&#8217;s not the case at Google or Apple. There are good examples of smaller companies like Cloudflare, but they&#8217;re all younger than Facebook.</p><p><strong>Bootcamp</strong>. A unique onboarding process, unlike what any other Big Tech firms offer. We cover this more in the<a href="https://newsletter.pragmaticengineer.com/i/55330545/bootcamp-and-onboarding"> Bootcamp &amp; onboarding section.</a>&#8221;</p></blockquote><p>Also, Facebook, as a product, has one of the <a href="https://newsletter.pragmaticengineer.com/p/shipping-to-production">most sophisticated auto rollout systems</a> in the industry. Instagram has a battle-tested infrastructure where it was almost trivial <a href="https://newsletter.pragmaticengineer.com/p/building-the-threads-app">to launch a new social network (Threads)</a> with 100 million users served in its first week.</p><p>Engineers whom I knew inside the company are capable, motivated, and product-minded, and their work was appreciated. CEO, Mark Zuckerberg, was influential: he personally coded the first version of Facebook, had stayed close to engineering, and valued software engineers very much. Engineers there felt they were working inside a profit center.</p><h2>2. Investing in AI and pressing engineers to always use it</h2><p>Meta has been the only company among the big five of Apple, Microsoft, Amazon, Google, and itself not to own a hardware platform or operating system. Apple has the iPhone, iPad and Macs, Google has Android, ChromeOS and Pixel phones, Microsoft has Windows, and Amazon has the Kindle.</p><p>Stepping back, it looks as though the Mark Zuckerberg of today has resolved not to miss a platform opportunity, after the company failed to build its own mobile OS or mobile phone during the 2010s.</p><p>This is one reason for investing so much in virtual reality (VR) with Oculus, and in augmented reality with the Meta Glasses. Facebook changed its name to Meta in 2021, back when it looked like VR &#8211; and the metaverse &#8211; could be massive. Billions was spent on ensuring Meta would be the market leader in this space. But once again, VR didn&#8217;t go mainstream; since the end of the pandemic, popular interest in the segment has died down considerably.</p><p>When it became clear that AI would become a mega-trend in 2022, Zuckerberg didn&#8217;t miss it: he assembled the internal FAIR group (Fundamental AI Research team) as well as a GenAI product organization and released a series of open-weight AI models:</p><ul><li><p><strong>Llama 1</strong>: released in Feb 2023, three months after ChatGPT, built by FAIR</p></li><li><p><strong>Llama 2</strong>: in June 2023, built by the GenAI product organization (as well as all subsequent Llama models)</p></li><li><p><strong>Llama 3</strong>: in April 2024. This model was Meta&#8217;s most competitive LLM of all, and gained momentum in adoption across the industry</p></li><li><p><strong>Llama 4</strong>: in April 2025. This model was <a href="https://newsletter.pragmaticengineer.com/i/161033486/metas-latest-llama-release-disappoints">deeply disappointing</a></p></li></ul><p><strong>In June that year, Meta acquired a 49% stake in Scale AI to reboot its AI efforts </strong>for a whopping $14.8B, and brought in Scale AI&#8217;s CEO, Alexandr Wang to take over Meta&#8217;s AI strategy. The acquisition of Chinese startup Manus AI for $2B is currently in question after China <a href="https://newsletter.pragmaticengineer.com/i/196004322/china-blocks-meta-from-buying-manus">blocked</a> the deal from being completed.</p><p>Based on the investment made into Scale AI and Wang, it&#8217;s pretty clear that Meta &#8211; and Zuckerberg &#8211; is determined to build a state-of-the-art LLM that can be competitive with the latest versions of Claude and ChatGPT. But Meta has to start pretty much from scratch, and it&#8217;s up to Alexandr Wang to deliver.</p><p>Scale AI brings in a very specific kind of expertise to Meta, as one of the best in the industry in:</p><ul><li><p><strong>Training data and labeling: </strong>Scale started, and is still best known, as a provider of high-quality labeled datasets for machine learning and AI training, including code, text, image, video, etc.</p></li><li><p><strong>RLHF and fine-tuning: </strong>A RLHF (reinforcement learning from human feedback) flow which Scale runs, where people give feedback for foundation models, as a &#8220;human in the loop&#8221; data engine that many leading AI labs use to create better LLMs.</p></li></ul><p>Wang seems to have a very broad reign to do what he has been an expert in: creating training data, doing data labeling and RLHF. This is being pulled off with the labor of Meta&#8217;s engineering workforce, and by surveilling it.</p><p><strong>Problem #1: Tracking keystrokes and mouse clicks, with no option to opt out. </strong>In late April, Meta told engineers they were being enrolled into a system that tracks every keystroke and click, to produce training data for Meta&#8217;s new AI. There&#8217;s no way to opt out.</p><p>Needless to say, this is invasive and raises privacy questions: If you log into your personal bank account, does the tool track you? What about when you&#8217;re writing a personal email, or responding to a personal call? Meta held no consultation and there are no workarounds; just a top-down decision being pushed through.</p><p>This month, Reuters <a href="https://www.reuters.com/world/meta-scales-back-ai-mouse-clicks-tool-citing-employee-concerns-2026-06-02/">reported</a> that people&#8217;s concerns there are finally being heard:</p><blockquote><p>&#8220;Meta is dialing back elements of its plan to collect employee mouse movements, keystrokes and other actions for use as AI &#8203;training data, it said in an internal memo on Tuesday, following weeks &#8203;of angry pushback from staffers.</p><p>New controls will allow employees to pause &#8288;the data collection for up to 30 minutes at a time and &#8203;request exemptions from the initiative, according to the memo, authored by Stephane Kasriel, &#8203;a vice president in Meta&#8217;s AI model-building Superintelligence Labs unit.&#8221;</p></blockquote><p>From talking with current Meta engineers, I understand the logging system has not been rolled out in the UK due to data protection regulation.</p><p><strong>Problem #2: 30-50% of engineers on core teams have been forcefully reassigned to data labeling </strong>and RLHF, upsetting folks even more.<strong> </strong>Also starting in late April, product engineering teams received a mandate from above, whereby 30-50% of engineers were to leave the team and join the ADO org (Agent Data Optimisation).</p><p><strong>&#8220;Forceful&#8221; reassignment is very relevant here because of Meta&#8217;s traditional engineering culture. </strong>Between its founding in 2004 and until last year, Meta gave engineers autonomy to choose where they work and what they work on. This was structural to how the company worked:</p><ul><li><p>Engineers were not hired for a specific team (save for at the Staff+, levels, in some cases). They were hired to the company</p></li><li><p>During a 6-week bootcamp, new hires got familiar with Meta&#8217;s engineering culture and chose a team</p></li><li><p>Team matching meant talking with multiple teams who had headcount, doing small work with them, and finding a match</p></li><li><p>Internal transfers were easy, and often initiated by engineers</p></li></ul><p>Team selection via bootcamp started to die down in around 2024, but any Meta engineer with at least two years&#8217; tenure knows that previously they chose what to work on, and of course, could pick the most impactful thing to work on. And then, out of the blue, they&#8217;re assigned to a division where the impact is not clear, the work is menial, and doing it too long will surely hurt their career prospects.</p><p><strong>&#8220;Data labeling&#8221; is more involved work, even though a bit repetitive.</strong> There are labeling tasks, where you create a website, then look at it and decide if it looks good or not, and give this feedback: this is the &#8220;typical&#8221; data labeling. But this is the less frequent type of work. But then there are more involved AI training tasks, which looks like this:</p><ul><li><p>Come up with a task that the AI should do</p></li><li><p>Then write the tests that confirm the result</p></li><li><p>Package all of this up into a Docker container, using <a href="https://github.com/harbor-framework/harbor">Harbor framework</a></p></li><li><p>Then read the code that the AI writes - often doing this based on feedback from several models, and give it feedback</p></li></ul><p>This work is not easy to do &#8212; and you can see why you need good software engineers to do it! &#8212; but it gets repetitive really quickly. Most engineers who I talked to said that they found it hard to do this work motivated day-in, day-out. Then again, I did talk with an engineer inside the org who said that by varying the technologies they use, and challenging themselves, they found this work motivating and interesting! This engineer expects there to be more software engineering work coming up, after the phase of training passes. <em>There&#8217;s a lesson here: when life gives you lemons, you can either complain about it, or you can make lemonade, like this dev has done so.</em></p><p>This training work is secretive across the AI industry, and vendors are offering $100+ per hour for devs to do this type of work. There are rumors across the industry that OpenAI and Anthropic spends more on these training environments (to make the models great at coding) than the model training run itself!</p><p><strong>Infrastructure and security teams were hit especially hard by reassignments. </strong>I talked with several engineers in infra orgs, who had 30-50% of their teams drafted into the ADO org. And in some cases, it was the best engineers who left.</p><p>One engineer told me that the whole situation feels like the movie, The Hunger Games, when tributes are randomly selected and then removed from their environment, to something completely different. Except, at Meta, many more folks are being affected, with between three and five from a 10-person team going from building products used by hundreds of millions, to giving human feedback on AI-generated GitHub repos, over and over. So, a wider impact than in the Hunger Games, but with less drastic consequences.</p><p><strong>Around 6,500 people are in the ADO org, more than at OpenAI and Anthropic. </strong>Roughly four to five thousand of these are software engineers. Meta has around 25,000 engineers, meaning that one in every 5-6 software engineers may now find themselves doing data labeling full time.</p><p>As you can imagine, people are actively open to new positions, and nobody is updating their job title on LinkedIn and elsewhere to &#8220;data labeling at Meta.&#8221;</p><p>I&#8217;ve spoken with people in this role and they don&#8217;t like doing it, and feel upset about the top-down decision making. The silver lining is that they still have a job, have retained their salary, and were not part of layoffs. They still have time to leave Meta for something that pays comparably and is not a data labeling job.</p><h2>3. Core engineering folks feel treated like trash</h2><p><strong>Problem #3: a month-long waiting game, stoking fear across the company. </strong>On 20 April, Reuters <a href="https://www.reuters.com/world/meta-targets-may-20-first-wave-layoffs-additional-cuts-later-2026-2026-04-17/">reported</a> that Meta planned to lay off 10% of staff in a month&#8217;s time, and Meta confirmed the news, meaning there was a period of four weeks when everyone knew that they could be unemployed very soon.</p><p>Forced reassignments to data labeling started to happen. As I covered <a href="https://newsletter.pragmaticengineer.com/i/196795826/3-meta-forcefully-assigns-engineers-to-data-labelling-pre-layoff">at the time:</a></p><blockquote><p>&#8220;Understandably, there are mixed feelings about this redeployment [to data labeling], with layoffs coming soon. On Wednesday, 20 May, Meta will announce layoffs. Perhaps those moved to do data labeling could actually be &#8220;safer&#8221; than colleagues on product teams. Of course, this is speculation, but it would be cruel if Meta cut devs reassigned to data labeling.&#8221;</p></blockquote><p><strong>Problem #4: Performance review is hyper-aggressive at Meta, so devs optimize all metrics. </strong>The internal performance review process, PSC (Performance Summary Cycle), is very stringent, compared to Google and Apple, I&#8217;ve learned. Managers inside Meta &#8220;fight&#8221; over the pay packets of their employees, which involves &#8220;knocking down&#8221; the packet of engineers on other teams, so their direct reports are ranked higher. It&#8217;s common to weaponize metrics in this process &#8211; be that business impact, the number of code reviews, number of lines of code written, pre-AI (see <a href="https://newsletter.pragmaticengineer.com/p/the-coding-machine-at-meta">our Coding Machine archetype podcast</a> on this.)</p><p>Quotas are handed down to managers for the splits of the workforce to be put in each &#8216;bucket&#8217;, and the internal politics gets heated as managers try to get their reports into higher buckets.</p><p>After a few years, engineers at Meta learn that the best way to not get a bad PSC rating is to have all metrics &#8211; impact, code committed, and other numbers &#8211; higher than their peers&#8217; are. <em>Learn more about <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations">the internal politics of performance calibrations.</a></em></p><p><strong>Problem #5: tokens are measured as part of perf, so devs aggressively optimize for it. </strong>When layoffs were confirmed, engineers also learned that managers shall inspect token count during perf reviews. This raised worries that those with low token counts might be marked as underperformers and dismissed.</p><p>So, what is the natural reaction to this as an engineer at Meta? They started using AI tools for the sake of generating more tokens. This happened while Meta had an internal token leaderboard, encouraging tokenmaxxing. As I wrote <a href="https://newsletter.pragmaticengineer.com/i/194426825/1-tokenmaxxing-weird-new-trend">on 16 April:</a></p><blockquote><p>&#8220;As per The Information, Meta employees <a href="http://reported">used</a> a total of 60.2 trillion AI tokens (!!) in 30 days. If this was charged at Anthropic&#8217;s API prices, it would cost $900M. Of course, Meta is likely purchasing tokens at a discount, but that could still come in at $100M+ &#8211; in large part from senseless &#8220;tokenmaxxing&#8221;.&#8221;</p></blockquote><p><strong>The biggest problem: people stop caring about real work and focus on performative work. </strong>Let&#8217;s check the four ingredients that Meta&#8217;s leadership has decided to introduce to their workplace:</p><ol><li><p>Tracking the keyboards and mouse clicks of all engineers, where legally possible</p></li><li><p>Reassign a good chunk of engineers to fulltime data labeling</p></li><li><p>Let staff know that 10% of them will be laid off</p></li><li><p>Have a culture where devs optimize for any and all metrics measured during PSC</p></li><li><p>Measure token usage as part of PSC</p></li></ol><p>Shake this mix up well, and what do you get? Two things:</p><ol><li><p><strong>Everyone overuses AI to boost their personal stats. </strong>An engineering workforce that pretends to work with as much AI, and as little human input, as possible. It&#8217;s a strange incentive where an outage caused by a failure to review code properly is not grounds for dismissal, but writing code by hand &#8211; instead of having an AI agent write it &#8211; could cost you your job</p></li><li><p><strong>Every longer-tenured engineer is seeking a new job, or at least considering it.</strong> Those who have been around at Meta longer term have seen enough. Let me describe this visually:</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_!rXjq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rXjq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 424w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 848w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1272w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rXjq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png" width="1456" height="983" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:983,&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_!rXjq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 424w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 848w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1272w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Why pretty much every engineer at Meta is looking for a way out, visualised</figcaption></figure></div><p>Fresh data seems to confirm that starting in May, a <em>lot</em> more engineers at Meta are looking for an &#8220;out.&#8221; Here&#8217;s how signups to leading Big Tech interview preparation service <a href="http://interviewing.io">interviewing.io</a> from Meta have changed over the last year and a half: we can see a massive jump in May vs the year before, as shared by founder and CEO <a href="https://x.com/alinelernerLLC">Aliner Lerner </a>with 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_!fEQS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fEQS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 424w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 848w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1272w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fEQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png" width="1456" height="1046" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1046,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187267,&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/202307236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.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_!fEQS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 424w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 848w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1272w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><span>Signups to interviewing.io&#8217;s interview prep service from Meta. Source: </span><a href="http://interviewing.io"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">interviewing.io</span></a><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">.</span></figcaption></figure></div><p><em>(We covered more data from interviewing.io and other interesting data sources in the  deepdive <a href="https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2">State of the software engineering job market in 2026</a>)</em></p><p>To its credit, Meta has given out generous retention equity packages to several engineers considered key on the remaining teams. These packages make it harder to get matching compensation elsewhere. Still, I talked to one engineer who got an equity top-up, and said that this approach helped him decide to leave as soon as possible because he feels bitter about the lack of autonomy and having no control over things.</p><h2>4. Most embarrassing-ever outage</h2><p>Meta&#8217;s core infra and security teams have suddenly found themselves severely understaffed. Most folks are pushing AI-generated code merged with AI-only reviews, without paying much attention to quality. After all, they&#8217;re dealing with the possibility of unemployment, while firefighting to operate a team without its best engineers whose headcount has been cut in half, all with the knowledge that AI usage could affect their own job security.</p><p><strong>Two weeks ago, on 30 May, the most embarrassing outage in Meta&#8217;s history happened. </strong>Here&#8217;s software engineer Siddharth Sundharam&#8217;s <a href="https://www.0xsid.com/blog/meta-account-takeover-fiasco">summary</a> (emphasis mine):</p><blockquote><p>&#8220;Yesterday, a slew of Instagram accounts, including some high profile ones like the Obama White House account, seemingly got hacked.</p><p>Look, I&#8217;m no spring chicken. I&#8217;ve spent almost a decade and a half identifying vulnerabilities and exploits at unicorn scale, but this is hands down the most unserious, &#8220;almost too stupid to be true&#8221; of them all.</p><p>The Takeover Flow:</p><p>Step 01: Faking the Location &amp; Initiating Support. All the attacker needs to kick this off is your account username. Then, they hop on a VPN or proxy close to your city so Instagram&#8217;s security algorithms don&#8217;t suspect a thing. (You can quite easily get this from your public profile or &#8220;About&#8221; section or a hundred other ways.) Once it looks like the request is coming from the correct region, they tell the Meta support AI that the account is hacked and ask it to send the verification codes to an arbitrary email address they control.</p><p>Step 02: That&#8217;s It. Really, that&#8217;s it.</p><p><strong>The first proper zero auth password reset I&#8217;ve seen in production.</strong> There appears to be no additional check as to whether the email being given is actually something the user has used before. Once the AI sends the security code to the attacker&#8217;s email, the attacker passes it right back to complete the verification. The platform hands over a fresh password reset link, granting full ownership to the attacker.&#8221;</p></blockquote><p>This is a security breach in which Meta left its extra-secure, reinforced front door unlocked, so that anyone could come in, and there was no alarm to notify anybody when it happened! It seemed Meta only noticed when users started reporting it on social media!</p><p><strong>From talking with folks inside Meta, I&#8217;ve learned that AI was at the heart of this outage. </strong>AI-generated, AI-reviewed code, and security teams being gutted were together the cause of this beyond-embarrassing incident. I poked around, and here&#8217;s what I gathered:</p><ul><li><p>Instagram&#8217;s Trust and Safety Team lost around 50% of its staff to data labeling and layoffs. Some of the most senior folks were drafted onto AI training tasks.</p></li><li><p>AI-generated changes that saw no human input, just another AI code review, were very common during the last two months, across the codebase. The change that caused this outage looked like one of these</p></li><li><p>Normally, the Trust and Safety team would be on top of monitoring and alerting of security breaches,  but it is currently in full disarray due to rapid, internal disorganization.</p></li></ul><p><strong>Meta&#8217;s Chief Security Officer resigned the very next day. </strong>The outage was resolved on Monday, 1 June, and an investigation started as part of the SEV process. On Tuesday, Meta&#8217;s Chief Information and Security Officer (CISO), Guy Rosen, <a href="https://www.bloomberg.com/news/articles/2026-06-02/meta-s-rosen-former-head-of-election-integrity-to-depart">announced</a> his departure.</p><p>Coincidence? I suspect not: the CISO might have stepped down if they warned against the Security org being gutted but were then ignored, and so no longer trusts leadership. I also imagine the CISO didn&#8217;t have the idea to move a good half of Instagram&#8217;s security team over to data labeling.</p><p><em>As a note, the previously worst outage was all Meta services going down for seven hours <a href="https://en.wikipedia.org/wiki/2021_Facebook_outage">in 2021</a>, due to a DNS / BGP configuration issue. It was a bad outage, but Meta handled the follow up well, in my opinion. After that 2021 outage, Meta <a href="https://engineering.fb.com/2021/10/04/networking-traffic/outage/">shared a postmortem and apology</a>. It has not done so for the latest Instagram account takeover outage.</em></p><h2>5. Internal mess</h2><p>Wired <a href="https://www.wired.com/story/mark-zuckerberg-meta-employee-meeting-interrupt-ai/?_sp=2e37591b-dcf6-4632-bbf6-bc7c570a4b65.1781609124066">shares more details</a> on just how bad the situation is inside Meta, right now:</p><blockquote><p>&#8220;Someone interrupted a livestreamed, employee-only presentation at Meta earlier this week with an expletive-filled outburst about &#8220;being the company&#8217;s bitch,&#8221; according to a recording heard by WIRED. The individual then asked the people leading the call to write to a specific Meta AI executive and &#8220;tell him that he&#8217;s a piece of shit.&#8221;</p><p>The incident, which took place on a call open to thousands of employees, reflects growing frustration inside the company&#8217;s Applied AI team, which was formed in March to support the work of AI researchers at Meta Superintelligence Labs. Three current employees tell WIRED there is widespread dissatisfaction with how Meta assembled the unit of about 6,500 engineers and product managers and the drudgework they allege they have been assigned to improve AI models.</p><p>&#8220;It&#8217;s literally the gulag,&#8221; one of the employees claims. &#8220;You have zero purpose in life all of a sudden, you barely interact with anyone, you just have these tasks every week.&#8221;</p></blockquote><p>There&#8217;s more: Meta&#8217;s Chief Product Officer, Chris Cox, reportedly admitted to staff that Meta&#8217;s upper leadership (the folks above him, meaning the C-level at Meta) created the mess. Also from Wired:</p><blockquote><p>During a meeting this week open to all employees at Instagram, Meta chief product officer Chris Cox addressed the &#8220;difficult&#8221; and &#8220;brutal&#8221; environment created by the &#8220;insanity of this company&#8221; in the past few months, according to a recording heard by WIRED. Cox applauded Instagram employees for launching features and serving around 2 billion users amid what he compared to &#8220;running a marathon in the middle of a hailstorm and then, like, your teammate gets replaced and then we&#8217;re recording you.&#8221;</p><p>&#8220;It&#8217;s like what the fuck,&#8221; he said, drawing laughs, before repeating himself. &#8220;It is like what the fuck.&#8221;</p></blockquote><h2>6. Self-inflicted wounds</h2><p>So, is there an ultimate source of the &#8220;insanity of this company&#8221;, as CPO Chris Cox put it? Engineers whom I talked to point the finger at two individuals: Mark Zuckerberg and Alexandr Wang. Zuckerberg has full control over the business, and has made the decisions to reallocate a good part of engineering folks to data labeling, to roll out tracking software, and to lay off 10% of staff when Meta achieved record revenue and profits. As the CEO, the buck clearly stops with him.</p><p>But it&#8217;s hard to unsee that &#8211; outside of layoffs &#8211; everything that Meta is doing is taken from the Scale AI playbook, and that surely comes from Wang:</p><ul><li><p>Mandatory keystroke and mouse tracking to generate training data</p></li><li><p>Forced data labeling with 4,500+ engineers is to generate high-quality RLHF, surely for Meta&#8217;s under-construction coding LLM</p></li><li><p>Taking away the best engineers from the heart of the business is surely signed off by Mark Zuckerberg, believing that it is more important for Meta to train a coding AI than it is to operate its core business like Instagram, Facebook or Messenger reliably. Oh, did I mention that on Saturday (12 June) Facebook and Instagram <a href="https://www.tomsguide.com/news/live/meta-instagram-facebook-messenger-down-6-12-2026-live-updates">had another SEV0</a>, that is, a full-on outage?</p></li></ul><p>Before all this happened, Meta <a href="https://newsletter.pragmaticengineer.com/i/195258143/3-morale-at-meta-hits-all-time-low">was on track</a> to overtake Google as the world&#8217;s #1 ads business by the end of the year. But for some reason, Mark Zuckerberg decided that building a coding LLM is more important.</p><p><strong>Meta&#8217;s leadership is now trying to undo all the damage they have done. </strong>Wired reports that Meta CTO, Andrew Bosworth, <a href="https://www.wired.com/story/andrew-bosworth-meta-employees-unrest/">admitted</a> to staff that the AI reorg was atrocious and committed to better communication in the future.</p><p>To me, it looks obvious that Zuckerberg doesn&#8217;t care how engineers feel about the massive changes, and that Bosworth likely ignored the chaos, all while engineers know for a fact that the next AI model matters more than they do to the business. Bosworth also said that employees will have access to AI coaching tools.<em> Very considerate, given the situation!</em></p><p>Based on all I&#8217;ve learned, Meta&#8217;s engineering culture is dead because leadership has made it clear that engineering at the company is <a href="https://newsletter.pragmaticengineer.com/p/profit-centers-cost-centers">a cost center</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_!uzPs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uzPs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 424w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 848w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uzPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png" width="1456" height="948" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:948,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2270482,&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/202307236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.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_!uzPs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 424w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 848w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Nice while it lasted</em></figcaption></figure></div><p>Needless to say, I hope my assessment is way off, but I&#8217;ve seen nothing yet from Mark Zuckerberg and Alexandr Wang &#8211; the two executives creating this current mess &#8211; to suggest it is.<em> There may be a short time period where, if major changes like data labeling assignments and staff tracking are undone, then things at Meta could return to normal. The longer the current conditions persist, the more tenured engineers will surely leave.</em></p><h2>7. Is &#8220;AI psychosis&#8221; just a Meta issue?</h2><p>It&#8217;s tragic to see a technical founder at Meta so focused on AI that he neglects the engineers who built the heart of his company. But is Meta a one-off exception?</p><p>Mitchell Hashimoto (creator of Ghostty, founder of HashiCorp) <a href="https://x.com/mitchellh/status/2055380239711457578?s=20">says</a> he is seeing similar behavior by other founders (emphasis mine:)</p><blockquote><p>&#8220;<strong>I strongly believe there are entire companies right now under heavy &#8220;AI psychosis&#8221; and it&#8217;s impossible to have rational conversations about it with them.</strong> I can&#8217;t name any specific people because they include personal friends I deeply respect, but I worry about how this plays out.</p><p>I lived through the great MTBF vs MTTR (mean-time-between-failure vs. mean-time-to-recovery) reckoning of infrastructure during the transition to cloud and cloud automation. All those arguments are rearing their ugly heads again but now it&#8217;s... the whole software development industry (maybe the whole world, really).</p><p>It&#8217;s frightening, because &#8216;psychosis folks&#8217; operate under an almost absolute &#8220;MTTR is all you need&#8221; mentality: &#8220;it&#8217;s fine to ship bugs because the agents will fix them so quickly and at a scale humans can&#8217;t do!&#8221; We learned in infrastructure that MTTR is great but you can&#8217;t yeet resilient systems entirely.</p><p>The main issue is I don&#8217;t even know how to bring this up to people I know personally, because bringing this topic up leads to immediate dismissals like &#8220;no no, it has full test coverage&#8221;, or &#8220;bug reports are going down&#8221; or something, which just don&#8217;t paint the whole picture.</p><p>We already learned this lesson once in infrastructure: you can automate yourself into a very resilient catastrophe machine. Systems can appear healthy by local metrics while globally becoming incomprehensible. Bug reports can go down while latent risk explodes. Test coverage can rise while semantic understanding falls. Changes happen so fast that nobody notices the underlying architecture decaying.</p><p>I worry.&#8221;</p></blockquote><p>The takeover outage at Instagram was exactly like this: the engineering team dropped the quality bar for AI-generated and AI-reviewed code, probably expecting that they could recover quickly from failures. And they did indeed recover&#8230; after the damage was done, high-profile Instagram accounts were hacked, and the system was compromised, all very publicly.</p><p>Mitchell highlights the specific concern of founders over-estimating the capabilities of AI, and consequently casting aside sensible safeguards when shipping code to production.</p><h2>Takeaways</h2><p>Most of us probably have something to learn from the disastrous events at Meta caused by hyper-focus on AI to the exclusion of people who are the lifeblood of that company.<strong> </strong>In some good news, I&#8217;m hearing that in the UK, some of the 10% layoffs have suddenly been cancelled: at the end of the mandatory consultation period, several infra and security teams are learning that no engineers on their team will be let go, as originally expected.</p><p>Meta has a booming business, and is already a beneficiary of AI via increased ads revenue. Meanwhile, my Facebook feed is filled with fake, AI-generated videos, with hundreds of comments from bots and people who seemingly don&#8217;t realize it&#8217;s AI. It all seems like just more content for Meta to show ads next to.</p><p>And yet, despite business booming, Meta&#8217;s leadership has gone on a crusade to inflict the most damage possible on its engineering org. Apparently, they&#8217;re now learning that most of it was pointless.</p><p><strong>If you&#8217;re in a leadership position and feeling the temptation to make drastic org changes for AI-related reasons, take a deep breath and see where it left Meta. </strong>Meanwhile, If you&#8217;re an engineer at a company whose leadership is over-indexing on AI, consider forwarding this article as additional context.</p><p>If you&#8217;re hiring standout engineers who are extremely hands-on with AI, then it&#8217;s never been easier to get talent from Meta, than right now. Every engineer I know at the company is an extremely early adopter of AI, and knows how to build products and AI infra. These folks have soured on the company and its leadership. Meta&#8217;s loss of talent will be the gain of other startups and the rest of Big Tech; it&#8217;s one benefit of AI that&#8217;s probably a bit unexpected &#8211; not least of all by Meta!</p><p>It seems like the old mantra of &#8220;move fast and break things&#8221; has now extended to Meta&#8217;s engineering org itself, with the company&#8217;s rush to over-invest in AI, so it will avoid missing the latest mega-trend in the tech industry.</p>]]></content:encoded></item><item><title><![CDATA[State of the software engineering job market in 2026, part 2]]></title><description><![CDATA[Deepdive into the tech jobs market with exclusive data revealing AI labs are more attractive than Big Tech, native mobile & frontend roles are declining, management&#8217;s &#8220;great flattening&#8221;, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 09 Jun 2026 16:35:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6pbI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What&#8217;s going on in today&#8217;s job market? We try to answer that big question in this second part of our deepdive into the tech employment market, following <strong><a href="https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026">Part 1 on the tech jobs market in 2026</a>,</strong> published two weeks ago.</p><p>First of all, a big thank you to partner teams for sharing exclusive details for this deepdive:</p><ul><li><p><strong><a href="http://interviewing.io">Interviewing.io</a></strong>: anonymous mock interviews with engineers from top companies. Thanks to founder and CEO, Aline Lerner.</p></li><li><p><strong><a href="http://workforce.ai">Workforce.ai</a>,</strong> built by Live Data Technologies, which monitors 1M+ job changes and 300M+ employment validations monthly, across companies, roles, levels, functions, industries, and locations. Special thanks to Alex Hamilton for his input.</p></li><li><p><strong><a href="https://www.signalfire.com/">SignalFire</a></strong>: a VC firm with a standout data analysis team. Ordinarily, their data is used to give their portfolio companies a major commercial advantage, but they made an exception to share some for this article. Special thanks to Asher Bantock.</p></li><li><p><strong><a href="https://www.trueup.io/">TrueUp</a></strong>: a platform that scans every open job in Big Tech, top startups, and scaleups, typically paying in the top two tiers of the trimodal software engineering compensation model. Thanks, Amit Taylor.</p></li></ul><p>Today, we cover:</p><ol><li><p><strong>Top AI labs are now more attractive than Big Tech.</strong> Anthropic is most in demand among job candidates for interview preparation services. Along with OpenAI, it&#8217;s almost certainly the place with the most competition for jobs in tech.</p></li><li><p><strong>Harder for new grads &amp; interns to get hired. </strong>Data shows that intern intakes have fallen, even as software engineering recruitment recovers. Large tech companies take on half as many interns as before, and candidates&#8217; work and educational backgrounds matter more than ever.</p></li><li><p><strong>Mobile and frontend demand drops, AI &amp; FDE surges. </strong>Frontend engineer titles are disappearing fastest across the industry, followed by native iOS and Android ones.</p></li><li><p><strong>AI engineering comp &gt; software engineering comp.</strong> AI engineers are more in demand than software engineers, and get higher compensation offers, especially with equity. At the 80th percentile in the US, $300K+ base salaries are the norm now for senior engineers.</p></li><li><p><strong>Management&#8217;s &#8220;great flattening&#8221; continues. </strong>There are fewer engineering managers for each engineer across the industry, and fewer VP of engineering and director of engineering posts at Big Tech.</p></li><li><p><strong>Big Tech seniority &amp; tenure keep rising.</strong> Since the end of zero interest rates in 2023, it&#8217;s as if there&#8217;s fewer ways to tempt Big Tech workers to switch jobs, so they remain in situ.</p></li><li><p><strong>Interview preparation signups: what do they indicate? </strong>Companies doing mass layoffs tend to see the biggest surge in devs signing up to practice interviews. A list of the top 20 companies from where engineers are preparing to interview elsewhere.</p></li><li><p><strong>Where engineers go after Big Tech. </strong>From Amazon, they go pretty much everywhere. From Google, Apple &amp; Meta, it&#8217;s mostly to AI labs. Microsoft is where the most ex-workers become their own bosses by working for themselves next.</p></li></ol><p>As a reminder, <strong><a href="https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026">in Part 1,</a></strong> we covered:</p><ul><li><p>Software engineering recruitment: trending up, mostly</p></li><li><p>Big Tech and publicly-traded companies</p></li><li><p>Who&#8217;s hiring the most software engineers?</p></li><li><p>AI engineering: explosive demand</p></li><li><p>Who&#8217;s hiring the most AI engineers?</p></li><li><p>Is AI engineering replacing software engineering hiring?</p></li></ul><p>Let&#8217;s get into the latest data:</p><h2>1. Top AI labs now more attractive than Big Tech</h2><p>In Part 1 of this mini-series, we cover the <a href="https://newsletter.pragmaticengineer.com/i/199358573/4-ai-engineering-explosive-demand">exploding</a> demand for AI engineering:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cq3z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cq3z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 424w, https://substackcdn.com/image/fetch/$s_!Cq3z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 848w, https://substackcdn.com/image/fetch/$s_!Cq3z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 1272w, https://substackcdn.com/image/fetch/$s_!Cq3z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cq3z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png" width="1456" height="869" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:869,&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_!Cq3z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 424w, https://substackcdn.com/image/fetch/$s_!Cq3z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 848w, https://substackcdn.com/image/fetch/$s_!Cq3z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 1272w, https://substackcdn.com/image/fetch/$s_!Cq3z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7df771-58ec-466d-af9b-b7c281eb1af6_2048x1223.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Source: <a href="https://www.trueup.io/">TrueUp</a></em></figcaption></figure></div><p>AI engineering job openings have increased 60% in the past year at top companies, while software engineering openings grew by 7% in the same places. We also found that Big Tech is significantly growing AI engineering headcount:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xt6D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xt6D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 424w, https://substackcdn.com/image/fetch/$s_!xt6D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 848w, https://substackcdn.com/image/fetch/$s_!xt6D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!xt6D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xt6D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png" width="1456" height="1119" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1119,&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_!xt6D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 424w, https://substackcdn.com/image/fetch/$s_!xt6D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 848w, https://substackcdn.com/image/fetch/$s_!xt6D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!xt6D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdb3bd7-3f9b-499c-ba4e-9a17d3e616b3_1873x1440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>AI engineering headcount growth at Big Tech. We look into Microsoft&#8217;s spike <a href="https://newsletter.pragmaticengineer.com/i/199358573/what-happened-in-mid-2025-at-microsoft">in Part 1.</a> Source: Workforce.ai</em></figcaption></figure></div><h3>Anthropic: most in demand</h3><p>New data suggests that the two biggest AI labs are attracting the most candidates to apply for their AI engineering roles, which is pretty predictable.</p><p><a href="http://interviewing.io">Interviewing.io</a> is a job interview preparation service which offers coaching for clients who are getting ready for interviews at specific companies. Based on the number of mentions by clients, Anthropic is the one most candidates are preparing for with paid coaching, and it&#8217;s not even close:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6pbI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6pbI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 424w, https://substackcdn.com/image/fetch/$s_!6pbI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 848w, https://substackcdn.com/image/fetch/$s_!6pbI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 1272w, https://substackcdn.com/image/fetch/$s_!6pbI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6pbI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png" width="1456" height="1032" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1032,&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_!6pbI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 424w, https://substackcdn.com/image/fetch/$s_!6pbI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 848w, https://substackcdn.com/image/fetch/$s_!6pbI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 1272w, https://substackcdn.com/image/fetch/$s_!6pbI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04df85-7afe-471e-8b70-a8f9e83800df_2048x1452.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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 popular employers in coaching prep. Source: <a href="http://interviewing.io">interviewing.io</a></em></figcaption></figure></div><p>It&#8217;s also notable that OpenAI (16% of candidates) gets around the same share as Google (17%) and other large tech companies (17%). Combined, Anthropic and OpenAI account for 51% of all interviewing.io coaching requests. For context, interviewing.io only added coaching for frontier labs this year!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ooWY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ooWY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 424w, https://substackcdn.com/image/fetch/$s_!ooWY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 848w, https://substackcdn.com/image/fetch/$s_!ooWY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 1272w, https://substackcdn.com/image/fetch/$s_!ooWY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ooWY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png" width="1456" height="1206" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1206,&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_!ooWY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 424w, https://substackcdn.com/image/fetch/$s_!ooWY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 848w, https://substackcdn.com/image/fetch/$s_!ooWY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 1272w, https://substackcdn.com/image/fetch/$s_!ooWY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f08f71-3c32-402e-9459-e3346146041e_1584x1312.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Weekly coaching demand for Anthropic vs OpenAI. Source: <a href="http://interviewing.io">interviewing.io</a></em></figcaption></figure></div><p>There are a few potential causes of the surge of interest in Anthropic:</p><ul><li><p><strong>OpenAI replaces Anthropic as AI supplier for the US&#8217;s novel &#8216;Department of War&#8217;. </strong>In early March, the US Government controversially declared Anthropic a &#8220;supply chain risk&#8221;, and appointed OpenAI as its<a href="https://newsletter.pragmaticengineer.com/i/190020609/anthropic-versus-department-of-war"> AI supplier</a>, after Anthropic raised concerns about the future use of AI in mass surveillance and fully autonomous weapons. This raised suspicions that OpenAI agreed to cross &#8216;red lines&#8217;.</p></li><li><p><strong>Anthropic&#8217;s market dominance continues.</strong> Claude Code is the most popular developer tool, as found by our AI tooling survey <a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">in February</a>. It seems little has changed.</p></li><li><p><strong>Anthropic&#8217;s value exceeds OpenAI&#8217;s.</strong> In March, Anthropic <a href="https://www.cnbc.com/2026/05/28/anthropic-open-ai-startup-value.html">raised</a> a $65B funding round at a $965B valuation, making it more valuable than OpenAI for the first time.</p></li><li><p><strong>Anthropic files to go public first. </strong>Last week, Anthropic <a href="https://www.anthropic.com/news/confidential-draft-s1-sec">filed</a> to go public, beating OpenAI which <a href="https://www.reuters.com/technology/openai-files-us-ipo-after-anthropic-ai-giants-head-public-markets-2026-06-08/">has done so a week later.</a></p></li></ul><p>Anthropic also recruited the most in-demand AI researcher, Andrej Karpathy, <a href="https://newsletter.pragmaticengineer.com/i/198733941/andrej-karpathy-joins-anthropic">in May</a>. My sense is that between the two labs, Anthropic has more momentum for the time being, and has perhaps acquired a &#8216;halo effect&#8217; with its seemingly principled stance. It&#8217;s not surprising that it&#8217;s attracting more candidates.</p><h3>Where are AI labs hiring from?</h3><p>We looked into the sources of recruits to the three most in-demand AI labs: Anthropic, OpenAI, and Google DeepMind. Here&#8217;s what we found:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JX6C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JX6C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 424w, https://substackcdn.com/image/fetch/$s_!JX6C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 848w, https://substackcdn.com/image/fetch/$s_!JX6C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 1272w, https://substackcdn.com/image/fetch/$s_!JX6C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JX6C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png" width="1456" height="1296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1296,&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_!JX6C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 424w, https://substackcdn.com/image/fetch/$s_!JX6C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 848w, https://substackcdn.com/image/fetch/$s_!JX6C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 1272w, https://substackcdn.com/image/fetch/$s_!JX6C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518f80bc-c98b-4927-8d71-a3030970abd0_2048x1823.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Where top AI labs recruit from, and where folks go next. Source: <a href="http://workforce.ai">workforce.ai</a></em></figcaption></figure></div><p><strong>Where Anthropic hires from,</strong> in order of popularity:</p><ol><li><p>Google (often Google DeepMind)</p></li><li><p>Meta</p></li><li><p>Stripe</p></li><li><p>Microsoft</p></li><li><p>Amazon (AWS)</p></li><li><p>Databricks</p></li></ol><p><strong>OpenAI</strong>:</p><ol><li><p>Google</p></li><li><p>Meta</p></li><li><p>Apple</p></li><li><p>Stripe</p></li><li><p>Statsig (after OpenAI acquired Statsig)</p></li><li><p>Microsoft</p></li><li><p>Amazon (mostly AWS)</p></li><li><p>Databricks</p></li><li><p>Airbnb</p></li><li><p>NVIDIA</p></li></ol><p><strong>Google DeepMind:</strong></p><ol><li><p>Internal transfer</p></li><li><p>Meta</p></li><li><p>Microsoft</p></li><li><p>Amazon</p></li><li><p>Windsurf</p></li></ol><p><strong>Anthropic has the highest retention rate of all AI labs. </strong>Data from SignalFire found the 2-year retention rate (percentage of employees who stay 2 years) is:</p><ul><li><p>OpenAI: 67%. This is consistent with the rest of Big Tech</p></li><li><p>Google DeepMind: 78%. Well above the rest of Big Tech</p></li><li><p>Anthropic: 80%. Standout, industry-wide!</p></li></ul><p>Consistent with SignalFire&#8217;s 2025 finding, OpenAI 2-year retention was 67% (FAANG-level) versus Anthropic (80%), and DeepMind (78%).</p><h2>2. Harder for graduates &amp; interns to get hired</h2><p>It&#8217;s well known that it&#8217;s getting harder to be hired as an early-career engineer, and new data underlines this.</p><h3>Intern intakes down since 2022</h3><p>Live Data Technologies looked at software engineer vs engineering intern hiring trends at 30-80 US-based tech companies, pinned to 2019 hiring numbers (100% being that year&#8217;s total number of hires). <em>The spread is wide because Live Data Technologies selects the top few dozen companies that meet their criteria for a &#8220;large public tech company&#8221; in their database.</em></p><p><em>The findings:</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_!AwMR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AwMR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 424w, https://substackcdn.com/image/fetch/$s_!AwMR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 848w, https://substackcdn.com/image/fetch/$s_!AwMR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!AwMR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AwMR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png" width="1456" height="1449" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1449,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:630932,&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/201325168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.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_!AwMR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 424w, https://substackcdn.com/image/fetch/$s_!AwMR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 848w, https://substackcdn.com/image/fetch/$s_!AwMR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!AwMR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a8c03fc-2d93-46b9-8f1d-f7ea03f39fa5_1986x1976.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Intern hiring is falling, but not software engineering recruitment. Source: Live Data Technologies</figcaption></figure></div><p>Zooming into intern hiring, here&#8217;s a visualization of it as a percentage of all appointments:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h7Y-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h7Y-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 424w, https://substackcdn.com/image/fetch/$s_!h7Y-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 848w, https://substackcdn.com/image/fetch/$s_!h7Y-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!h7Y-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h7Y-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png" width="1226" height="1202" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1202,&quot;width&quot;:1226,&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_!h7Y-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 424w, https://substackcdn.com/image/fetch/$s_!h7Y-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 848w, https://substackcdn.com/image/fetch/$s_!h7Y-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!h7Y-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F057dca33-32c5-4180-8fd2-88225a7fd96b_1226x1202.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tech companies are hiring fewer interns. Source: Live Data Technologies</figcaption></figure></div><p>Alex Hamilton, analyst at Live Data Technologies, says:</p><blockquote><p>&#8220;We&#8217;ve seen overall software engineering hiring start to come back since the 2023 tough market. However, intern intake just kept falling alongside it, which isn&#8217;t what you&#8217;d normally expect.</p><p><strong>Historically, intern programmes have tended to bounce back pretty quickly once companies start hiring again. </strong>That hasn&#8217;t happened this time, and 2024 and 2025 are the first years in the series where the two lines are moving in opposite directions.</p><p>Where you do see companies holding intern intake steady or growing it, it&#8217;s almost always a reflection of where they are as a business, be that earlier-stage or faster-growing companies, rather than any kind of broader market recovery&#8221;.</p></blockquote><h3>Graduate jobs trending down</h3><p>Anecdotally, we hear new grads continue to have a hard time finding a position. Our new recruitment data on major US tech companies confirms it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cKU_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cKU_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 424w, https://substackcdn.com/image/fetch/$s_!cKU_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 848w, https://substackcdn.com/image/fetch/$s_!cKU_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!cKU_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cKU_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png" width="1362" height="1352" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1352,&quot;width&quot;:1362,&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_!cKU_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 424w, https://substackcdn.com/image/fetch/$s_!cKU_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 848w, https://substackcdn.com/image/fetch/$s_!cKU_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!cKU_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc43e6596-e176-420c-87ca-6eaf576ecc69_1362x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Share of new grad recruitment at 28 large US tech companies. Source: Live Data Technologies</figcaption></figure></div><p>&#8220;New grads&#8221; in this data are software engineers who graduated less than a year before getting a job as a software engineer. In 2025, just one in 10 engineering hires at larger companies were recent grads, down from nearly three in 10 in 2023.</p><h3>Pedigree matters more for new grads</h3><p>We looked closely at the places from where new graduate software engineers are joining US-based tech companies, and found the share of successful candidates from &#8220;elite&#8221; universities is growing:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gBsQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gBsQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 424w, https://substackcdn.com/image/fetch/$s_!gBsQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 848w, https://substackcdn.com/image/fetch/$s_!gBsQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 1272w, https://substackcdn.com/image/fetch/$s_!gBsQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gBsQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png" width="1456" height="1439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1439,&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_!gBsQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 424w, https://substackcdn.com/image/fetch/$s_!gBsQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 848w, https://substackcdn.com/image/fetch/$s_!gBsQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 1272w, https://substackcdn.com/image/fetch/$s_!gBsQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19924b4b-5d21-4c1e-8935-00df0b2a7857_1514x1496.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Source: Live Data Technologies</em></figcaption></figure></div><p>By &#8220;elite&#8221; universities, we mean one of the top 20 US colleges for computer science, such as MIT, Stanford, Carnegie Mellon, UC Berkeley, Harvard, Caltech, Georgia Tech, and Cornell.</p><p>Obviously, the influence of these places&#8217; reputations is not a new thing, it&#8217;s what makes them &#8220;elite&#8221; universities, after all. But with new grad hiring down across tech, even graduates from these universities can expect fewer opportunities than before.</p><p>Even so, the pedigree that comes from graduating from a well-known university, or doing an internship at a well-known company, becomes ever more significant as the job market tightens.</p><h2>3. Mobile and frontend demand drops, AI &amp; FDE surges</h2><p>Here&#8217;s interesting data showing the shifting prevalence of job titles on sites like LinkedIn over time:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B9zQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B9zQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 424w, https://substackcdn.com/image/fetch/$s_!B9zQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 848w, https://substackcdn.com/image/fetch/$s_!B9zQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 1272w, https://substackcdn.com/image/fetch/$s_!B9zQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B9zQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png" width="1456" height="882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!B9zQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 424w, https://substackcdn.com/image/fetch/$s_!B9zQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 848w, https://substackcdn.com/image/fetch/$s_!B9zQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 1272w, https://substackcdn.com/image/fetch/$s_!B9zQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b9646e-dece-44bd-ada0-eaa406e5d539_2048x1240.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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 engineering titles changed in the last four years. Source: <a href="https://www.signalfire.com/">SignalFire</a></em></figcaption></figure></div><p>Some takeaways:</p><ul><li><p><strong>AI engineering&#8217;s on fire.</strong> This is not surprising and is evident throughout our study.</p></li><li><p><strong>Forward Deployed Engineers (FDE) are growing rapidly</strong>. We covered the sudden demand for FDEs <a href="https://newsletter.pragmaticengineer.com/p/forward-deployed-engineers">in 2025</a>, and this year we&#8217;re seeing the FDE role heat up again.</p></li><li><p><strong>Modest increase in sales engineers: </strong>Sales engineers help close large, B2B-type, deals, and are typical at companies selling to enterprises. The rise in prevalence of this position suggests more companies are targeting enterprise-scale clients. Also, my sense is that FDEs can operate like sales engineers.</p></li><li><p><strong>There are fewer native mobile engineers. </strong>In 2022, I observed <a href="https://newsletter.pragmaticengineer.com/p/native-vs-cross-platform">a drop in demand</a> for native iOS and Android engineers. Cross-platform frameworks being more capable today may contribute to fewer places investing in native applications, and a fall in demand for this discipline overall. Is the &#8220;golden age&#8221; of native mobile development over, with its standalone native iOS, native Android, and web teams for a single product?</p></li><li><p><strong>Frontend-only engineers are disappearing. </strong>This is one of the most interesting trends in the data. I&#8217;ve observed full-stack engineers become the norm at many places, who can do both frontend and backend development. Especially with AI, there is no reason a proficient frontend engineer should not work on backend as well, so, I expect &#8220;pure&#8221; frontend engineers will be employed only in larger companies, where demand exists for things like building a design system. <em>We cover more on this topic in the deepdive, <a href="https://newsletter.pragmaticengineer.com/p/design-systems-for-software-engineers">Design systems for software engineers</a>.</em></p></li></ul><h2>4. AI engineering comp &gt; software engineering comp</h2><p>One poorly-kept secret in tech is that although software engineering compensation is very good at Big Tech and top startups, it&#8217;s superior for AI engineering jobs at the same places &#8211; and even better at leading AI labs:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Ideas: slow down to speed up when working with AI agents]]></title><description><![CDATA[Devs are generating twice as much code (or more) than just 6 months ago, which is a problem for quality, reliability, and tech debt. A rational fix is available for these, but who&#8217;s acting rationally?]]></description><link>https://newsletter.pragmaticengineer.com/p/ideas-slow-down-to-speed-up-when</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/ideas-slow-down-to-speed-up-when</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 02 Jun 2026 16:42:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vg8z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb13752-d141-4958-948f-223fa5cf58fa_1024x559.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Scheduling update: this week, there will be a podcast episode on Wednesday and no The Pulse on Thursday.</em></p><p>I&#8217;m in Budapest, Hungary, this week, for Craft Conference, where I&#8217;ll be giving a keynote presentation alongside other speakers, including software engineering legend Kent Beck, who&#8217;s been <a href="https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent">on the podcast</a>, Hillel Wayne, a formal methods expert and the author of &#8216;<a href="https://leanpub.com/logic">Logic for Programmers</a>&#8217;, and Titus Winters, lead author of <a href="https://abseil.io/resources/swe-book">Software Engineering at Google</a>.</p><p>The title of my keynote is<em> &#8220;Slow down to speed up&#8221;, </em>and I&#8217;ve been thinking about this topic a lot recently. Here are some things I&#8217;ve been seeing that I feel are relevant&#8230;</p><h3>AI coding tools now used by pretty much all software engineers &#8211; that&#8217;s fast!</h3>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/ideas-slow-down-to-speed-up-when">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[State of the software engineering job market in 2026]]></title><description><![CDATA[A deepdive into today&#8217;s tech jobs market, with exclusive data on software engineering jobs, the AI engineering boom, whether AI engineering is &#8220;replacing&#8221; software engineering hiring, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 26 May 2026 18:10:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P4An!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last year, I <a href="https://newsletter.pragmaticengineer.com/p/state-of-the-tech-market-in-2025">described</a> the tech jobs market as &#8220;weird&#8221;, based on reports from both job seekers and hiring managers. In this deepdive, we dig into what &#8211; if anything &#8211; has changed in 2026.</p><p>A year ago, most engineers found it harder to get responses to job applications, while hiring managers found it harder to hire than before. We&#8217;ve now spent two months gathering fresh, never-before-shared data from a range of sources to find out if that paradoxical situation still exists or not.</p><p>We collected the data with software engineer Jessica Salmon &#8211; who&#8217;s joined the team as a tech industry analyst. A big thank you to partner teams who shared exclusive details for this deepdive:</p><ul><li><p><strong><a href="https://www.trueup.io/">TrueUp</a></strong>: a platform that scans every open job in Big Tech, top startups, and scaleups, typically paying in the top two tiers of the <a href="https://newsletter.pragmaticengineer.com/p/trimodal">trimodal software engineering compensation</a> model. <em>Thanks, Amit Taylor.</em></p></li><li><p><strong><a href="http://workforce.ai">Workforce.ai</a></strong>, built by Live Data Technologies, which monitors 1M+ job changes and 300M+ employment validations each month across companies, roles, levels, functions, industries, and locations. <em>Special thanks to Alex Hamilton for his input.</em></p></li></ul><p>Today, we cover:</p><ol><li><p><strong>Software engineering recruitment: trending up, mostly. </strong>More software engineering job postings in the UK and the US, and a decline in Germany and France. &#8220;Top&#8221; tech companies are hiring 20% more vs a year ago.</p></li><li><p><strong>Big Tech and publicly-traded companies. </strong>Meta went on a monster hiring spree for the last two years until layoffs, last week. Microsoft and Amazon were flat, while Google and Apple consistently hired devs. Stripe, Shopify, and Atlassian all hired more than Big Tech.</p></li><li><p><strong>Who&#8217;s hiring the most software engineers?</strong> Apple, Amazon, and IBM are the top 3 by number of positions listed, while Meta dropped off the top 20 with layoffs there. The fastest-growing companies seem to be in fintech, observability, and security.</p></li><li><p><strong>AI engineering: explosive demand. </strong>Most tech companies seem to be prioritizing AI engineering recruitment over software engineers. Observability companies appear to be hiring fastest.</p></li><li><p><strong>Who&#8217;s hiring the most AI engineers? </strong>Apple, Google, and TikTok have the most openings, and many larger tech companies have 50-100% more AI engineering job listings than a year ago.</p></li><li><p><strong>Is AI engineering replacing software engineering hiring?</strong> The data doesn&#8217;t say, but are the basics of AI engineering becoming a baseline skill for software engineering job candidates?</p></li></ol><p><strong><a href="https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2">See Part 2</a></strong> for details on:</p><ul><li><p>Top AI labs are now more attractive than Big Tech</p></li><li><p>Harder for new grads &amp; interns to get hired</p></li><li><p>Mobile and frontend demand drops, AI &amp; FDE surges</p></li><li><p>AI engineering comp &gt; software engineering comp</p></li><li><p>Management&#8217;s &#8220;great flattening&#8221; continues</p></li><li><p>Big Tech seniority &amp; tenure keep rising</p></li><li><p>Interview preparation signups: what do they indicate?</p></li><li><p>Where engineers go after Big Tech</p></li></ul><p><em>For more on the tech jobs market of 2025, check out <a href="https://newsletter.pragmaticengineer.com/p/state-of-the-tech-market-in-2025">last year&#8217;s deepdive.</a></em></p><h2>1. Software engineering recruitment: trending up, mostly</h2><h3>Top tech companies hiring more, slowly but surely</h3><p>TrueUp tracks open positions at top-paying companies, which are usually US-based. Among this group, recruitment of software engineers has been steadily increasing since March 2023:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cNQi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cNQi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 424w, https://substackcdn.com/image/fetch/$s_!cNQi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 848w, https://substackcdn.com/image/fetch/$s_!cNQi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 1272w, https://substackcdn.com/image/fetch/$s_!cNQi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cNQi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png" width="1260" height="850" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:850,&quot;width&quot;:1260,&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_!cNQi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 424w, https://substackcdn.com/image/fetch/$s_!cNQi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 848w, https://substackcdn.com/image/fetch/$s_!cNQi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 1272w, https://substackcdn.com/image/fetch/$s_!cNQi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99284e24-69de-42a3-bc6d-487c438ce44e_1260x850.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>&#8220;Top&#8221; startups keep hiring more devs. Source: <a href="https://www.trueup.io/job-trend">TrueUp</a></em></figcaption></figure></div><h3>US growth, but less in Canada and Europe</h3><p>Let&#8217;s take a look at broader industry trends via software developer jobs listed on Indeed.com, the world&#8217;s largest job aggregator site. As a &#8220;jobs aggregator&#8221;, Indeed not only displays paid-for ads but also crawls many other career sites and lists the vacancies.</p><p>Looking at trends over the last five years, the number of software engineering jobs listed is still lower than in May 2021:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V_VW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V_VW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 424w, https://substackcdn.com/image/fetch/$s_!V_VW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 848w, https://substackcdn.com/image/fetch/$s_!V_VW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 1272w, https://substackcdn.com/image/fetch/$s_!V_VW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V_VW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png" width="1456" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&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_!V_VW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 424w, https://substackcdn.com/image/fetch/$s_!V_VW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 848w, https://substackcdn.com/image/fetch/$s_!V_VW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 1272w, https://substackcdn.com/image/fetch/$s_!V_VW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21201a99-a45c-4ecc-939e-1d549b9f8b7e_1492x856.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Dev job listings in the US, 2021-2026. Source: <a href="https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE">FRED / Indeed</a></em></figcaption></figure></div><p>Obviously, 2021 was the pandemic which created a commercial boom for the tech industry, so it&#8217;s not exactly an ideal comparison. Zooming into the last twelve months shows encouraging growth signs:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TAhM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TAhM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 424w, https://substackcdn.com/image/fetch/$s_!TAhM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 848w, https://substackcdn.com/image/fetch/$s_!TAhM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!TAhM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TAhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png" width="1310" height="1410" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1410,&quot;width&quot;:1310,&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_!TAhM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 424w, https://substackcdn.com/image/fetch/$s_!TAhM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 848w, https://substackcdn.com/image/fetch/$s_!TAhM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!TAhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc84594-dcb9-4a1c-99c7-503b78412039_1310x1410.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Dev job listings in the last five years vs the past year. Source: FRED / Indeed</em></figcaption></figure></div><p>Outside of the US, let&#8217;s check out software engineering vacancy trends, per Indeed:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qOwb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qOwb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 424w, https://substackcdn.com/image/fetch/$s_!qOwb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 848w, https://substackcdn.com/image/fetch/$s_!qOwb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 1272w, https://substackcdn.com/image/fetch/$s_!qOwb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qOwb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png" width="1456" height="1137" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1137,&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_!qOwb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 424w, https://substackcdn.com/image/fetch/$s_!qOwb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 848w, https://substackcdn.com/image/fetch/$s_!qOwb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 1272w, https://substackcdn.com/image/fetch/$s_!qOwb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a1e574a-52a3-4087-b1e5-f1a89d88ccb1_1924x1502.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">S<em>oftware engineering listings over the past 12 months by country. Source: FRED / Indeed</em></figcaption></figure></div><p>In this list, the US and the UK are the only two countries where vacancies are up; Canada is flat, while Germany and France have seen declines. To me, it suggests US-headquartered companies are hiring more devs, mostly in the US and some in the UK, whereas European-headquartered companies are more cautious about recruitment.</p><h3>The software engineering industry still grows</h3><p>Let&#8217;s ask how much the software engineer population has grown or shrunk in the last seven years. Here are some numbers from profiles, as tracked by Workforce.ai:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P4An!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P4An!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 424w, https://substackcdn.com/image/fetch/$s_!P4An!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 848w, https://substackcdn.com/image/fetch/$s_!P4An!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 1272w, https://substackcdn.com/image/fetch/$s_!P4An!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P4An!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png" width="1220" height="1058" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1058,&quot;width&quot;:1220,&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_!P4An!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 424w, https://substackcdn.com/image/fetch/$s_!P4An!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 848w, https://substackcdn.com/image/fetch/$s_!P4An!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 1272w, https://substackcdn.com/image/fetch/$s_!P4An!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e3225d-e5fc-492f-a554-b000806a74d2_1220x1058.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Net growth and shrinkage for software engineer profiles. Source: <a href="http://workforce.ai">Workforce.ai</a></em></figcaption></figure></div><p><a href="https://fred.stlouisfed.org/series/IHLIDXUSTPSOFTDEVE"><br></a>Let&#8217;s zoom into this chart:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IeAB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IeAB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 424w, https://substackcdn.com/image/fetch/$s_!IeAB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 848w, https://substackcdn.com/image/fetch/$s_!IeAB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 1272w, https://substackcdn.com/image/fetch/$s_!IeAB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IeAB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png" width="1456" height="901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:901,&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_!IeAB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 424w, https://substackcdn.com/image/fetch/$s_!IeAB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 848w, https://substackcdn.com/image/fetch/$s_!IeAB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 1272w, https://substackcdn.com/image/fetch/$s_!IeAB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec2c2d7-49e9-48ae-9756-c592d6ba34de_1684x1042.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Recruitment shifts over time. Source: Workforce.ai </figcaption></figure></div><p>There are a few interesting details:</p><ul><li><p><strong>Hiring mostly occurs between the months of March and June, </strong>and<strong> </strong>there&#8217;s very little net growth in the second half of the year. This makes sense as tech companies set annual headcount budgets at the beginning of the year and commence hiring from then, with most hires evidently made in the following months. Hiring budgets are usually spent by mid-year.</p></li><li><p><strong>The industry seemingly shrank in 2023. </strong>That year, it was only in Q2 that more software engineers were hired than left their jobs. It was the worst period for software engineers in two decades.</p></li></ul><p><strong>&#8230;and also in 2024 and 2025 during Q3. </strong>Mass layoffs mostly happened between August and October, the charts show.</p><h2>2. Big Tech and publicly-traded companies</h2><h3>Big Tech: modest jobs growth &#8211; but not at Meta</h3><p>Looking at the two years since May 2024, of the five largest tech companies, only Meta grew headcount aggressively:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hiKF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hiKF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 424w, https://substackcdn.com/image/fetch/$s_!hiKF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 848w, https://substackcdn.com/image/fetch/$s_!hiKF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 1272w, https://substackcdn.com/image/fetch/$s_!hiKF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hiKF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png" width="1366" height="940" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:940,&quot;width&quot;:1366,&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_!hiKF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 424w, https://substackcdn.com/image/fetch/$s_!hiKF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 848w, https://substackcdn.com/image/fetch/$s_!hiKF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 1272w, https://substackcdn.com/image/fetch/$s_!hiKF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa29342d8-274b-4eec-a73b-d41fcac373ab_1366x940.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Meta hired while Microsoft and Amazon stayed more static. Source: <a href="https://app.workforce.ai/insights">Workforce.ai</a></em></figcaption></figure></div><p>In that time, Meta increased its headcount by nearly 20%, so perhaps its recent 10% layoffs could be considered as not a total surprise. As for other tech giants, their software engineering headcount also changed in the last two years:</p><ul><li><p>Apple: +10%</p></li><li><p>Google: +5%</p></li><li><p>Microsoft: -1.1%</p></li><li><p>Amazon: -1.3%</p></li></ul><p>Visualizing 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_!1ePc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1ePc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 424w, https://substackcdn.com/image/fetch/$s_!1ePc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 848w, https://substackcdn.com/image/fetch/$s_!1ePc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 1272w, https://substackcdn.com/image/fetch/$s_!1ePc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1ePc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png" width="1456" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!1ePc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 424w, https://substackcdn.com/image/fetch/$s_!1ePc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 848w, https://substackcdn.com/image/fetch/$s_!1ePc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 1272w, https://substackcdn.com/image/fetch/$s_!1ePc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c7a3700-09f4-4333-b468-13f9dcb3f887_1466x852.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Mixed</em> <em>software engineering headcount growth across Big Tech. Source: <a href="https://app.workforce.ai/insights">Workforce.ai</a></em></figcaption></figure></div><p>Apple and Google seem the most &#8220;stable&#8221; places when it comes to growing the software engineering function; Apple has not had mass layoffs for decades. In contrast, Meta is the most volatile place to work; hiring devs quickly and then letting them go. Elsewhere, Amazon and Microsoft are slowly employing more software folks.</p><h3>Meta&#8217;s hire-then-fire rollercoaster</h3><p>Meta warrants a closer look, where morale is reportedly <a href="https://newsletter.pragmaticengineer.com/i/198733941/3-jobs-axe-falls-at-meta-8000-let-go">as low as it&#8217;s ever been</a> right now, due to layoffs of 10% of staff, while thousands of software engineers have been <a href="https://newsletter.pragmaticengineer.com/i/196795826/3-meta-forcefully-assigns-engineers-to-data-labelling-pre-layoff">reassigned to manual data labeling</a> from previous product development or infra work. From 2004 until 2022, Meta never did mass layoffs, but in the past three years there have been three sizeable redundancy rounds (at the end of 2022, early 2024, and last week), with the most rapid hiring growth of any tech giant sandwiched in between:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_whS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_whS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 424w, https://substackcdn.com/image/fetch/$s_!_whS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 848w, https://substackcdn.com/image/fetch/$s_!_whS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 1272w, https://substackcdn.com/image/fetch/$s_!_whS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_whS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png" width="1174" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1174,&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_!_whS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 424w, https://substackcdn.com/image/fetch/$s_!_whS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 848w, https://substackcdn.com/image/fetch/$s_!_whS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 1272w, https://substackcdn.com/image/fetch/$s_!_whS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20adfb0f-ccbd-4d2e-9a10-810290be1f15_1174x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Meta laid folks off in bulk, then hired them fastest among Big Techs. Source: <a href="http://workforce.ai">Workforce.ai</a></em></figcaption></figure></div><p>Before 2022, Meta ranked with Google as one of the most stable places to work in tech. Safe to say, the company is currently the riskiest place to be in job-security terms &#8211; even if Mark Zuckerberg has said there will be no more mass layoffs this year.</p><h3>Publicly-traded tech companies: mostly flat recruitment</h3><p>A couple of years ago, larger tech companies were hiring even more than most of Big Tech. Software engineering headcount grew in the past two years at Shopify (+36%), Stripe (+29%), Atlassian (+23%), Snap (+15%) and Spotify (+6%).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b-M3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b-M3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 424w, https://substackcdn.com/image/fetch/$s_!b-M3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 848w, https://substackcdn.com/image/fetch/$s_!b-M3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 1272w, https://substackcdn.com/image/fetch/$s_!b-M3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b-M3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png" width="1072" height="842" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:842,&quot;width&quot;:1072,&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_!b-M3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 424w, https://substackcdn.com/image/fetch/$s_!b-M3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 848w, https://substackcdn.com/image/fetch/$s_!b-M3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 1272w, https://substackcdn.com/image/fetch/$s_!b-M3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7dcc8b6-32e3-44b1-a260-7160dcc5dad0_1072x842.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: Workforce.ai</figcaption></figure></div><p>But that&#8217;s changed recently. In the past year, headcount growth has slowed at Stripe (+15%), Atlassian (+11%), Shopify (+6%), Snap (+2%), and Spotify (+1%),</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1AxH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1AxH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 424w, https://substackcdn.com/image/fetch/$s_!1AxH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 848w, https://substackcdn.com/image/fetch/$s_!1AxH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 1272w, https://substackcdn.com/image/fetch/$s_!1AxH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1AxH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png" width="1076" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1076,&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_!1AxH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 424w, https://substackcdn.com/image/fetch/$s_!1AxH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 848w, https://substackcdn.com/image/fetch/$s_!1AxH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 1272w, https://substackcdn.com/image/fetch/$s_!1AxH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dd99464-89aa-410c-b1cf-1d57a283d1a0_1076x810.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: Workforce.ai </figcaption></figure></div><p>This data does not capture Atlassian letting go of 10% of staff <a href="https://newsletter.pragmaticengineer.com/i/197715901/2-why-are-layoffs-spiking">this month</a>, and Snap laying off 16% <a href="https://newsletter.pragmaticengineer.com/i/197715901/2-why-are-layoffs-spiking">in April</a>.</p><p>Among this group, Stripe stands out as a place that keeps hiring at a higher pace than nearly all of Big Tech. Atlassian and Shopify have grown their software engineering headcount faster than Google, Microsoft, and Amazon did in the past two years.</p><h2>3. Who&#8217;s hiring the most software engineers?</h2><p>So, which companies are hiring the most? Let&#8217;s look at this via open positions and growth comparisons.</p><h3>Companies with the most open roles</h3><p>&#8220;Top&#8221; tech companies with the largest number of software engineering openings:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FFc9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FFc9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 424w, https://substackcdn.com/image/fetch/$s_!FFc9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 848w, https://substackcdn.com/image/fetch/$s_!FFc9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!FFc9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FFc9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png" width="1454" height="1300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1300,&quot;width&quot;:1454,&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_!FFc9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 424w, https://substackcdn.com/image/fetch/$s_!FFc9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 848w, https://substackcdn.com/image/fetch/$s_!FFc9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!FFc9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa07087aa-3d6f-4a75-af23-d5438a45695f_1454x1300.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Businesses with the most software engineering vacancies. Source: <a href="https://www.trueup.io/job-trend">TrueUp</a></em></figcaption></figure></div><p>Compared to last year:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NLKX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NLKX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 424w, https://substackcdn.com/image/fetch/$s_!NLKX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 848w, https://substackcdn.com/image/fetch/$s_!NLKX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!NLKX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NLKX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png" width="1456" height="1195" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1195,&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_!NLKX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 424w, https://substackcdn.com/image/fetch/$s_!NLKX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 848w, https://substackcdn.com/image/fetch/$s_!NLKX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!NLKX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67cc38fd-7296-4f7e-9f50-e2844742302a_1572x1290.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Companies with the most open positions, 2025 vs 2026. Source: <a href="https://www.trueup.io/job-trend">TrueUp</a></em></figcaption></figure></div><p>Observations:</p><ul><li><p><strong>The top three are unchanged</strong>: It&#8217;s still Apple, IBM, and Amazon</p></li><li><p><strong>New entrants to the top 20:</strong> Accenture (consulting), Tesla, Cadence (hardware), Hewlett Packard Enterprise (HPE), and SpaceX.</p></li><li><p><strong>Dropouts: </strong>Meta and Oracle. Last year, Oracle was #4 on the list with 1,396 open software engineering roles, but the company <a href="https://time.com/article/2026/04/30/oracle-layoffs-ai-tech-jobs">announced</a> up to 30,000 layoffs in March. Also no longer leading in jobs available are Speechify, NTT Data, Meta, and DXC Technology.</p></li><li><p><strong>Big Tech companies hiring more than last year</strong>: Apple and Google, which has +62% more engineering roles advertised than last year.</p></li><li><p><strong>Big companies hiring less vs last year</strong>: Meta, Oracle, and TikTok all have much fewer openings listed. For Meta and Oracle, there&#8217;s little surprise given recent layoffs. TikTok was in US regulatory limbo until January, when a new TikTok USDS joint venture <a href="https://newsroom.tiktok.com/announcement-from-the-new-tiktok-usds-joint-venture-llc?lang=en">was established.</a></p></li><li><p><strong>Hardware companies hiring more software talent</strong>: Micron, Qualcomm, and AMD all have considerably more software engineering openings than last year.</p></li></ul><h3>Where are the &#8220;top&#8221; software engineering jobs?</h3><p>Most of these jobs are in the US, just as most companies leading in recruitment numbers are US-headquartered. Other leading locations for jobs are India, the UK, and Canada:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IE7U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IE7U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 424w, https://substackcdn.com/image/fetch/$s_!IE7U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 848w, https://substackcdn.com/image/fetch/$s_!IE7U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 1272w, https://substackcdn.com/image/fetch/$s_!IE7U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IE7U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png" width="1084" height="984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1084,&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_!IE7U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 424w, https://substackcdn.com/image/fetch/$s_!IE7U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 848w, https://substackcdn.com/image/fetch/$s_!IE7U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 1272w, https://substackcdn.com/image/fetch/$s_!IE7U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffa0870-e258-4f97-b0c5-d02cc9bad147_1084x984.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Numbers and locations of software engineering jobs listed by leading tech companies. Source: <a href="https://www.trueup.io/job-trend">TrueUp</a></em></figcaption></figure></div><h3>Fastest-growing: fintech and security</h3><p>Then there are large companies where recruitment has been among the fastest anywhere in software engineering:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!slQE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!slQE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 424w, https://substackcdn.com/image/fetch/$s_!slQE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 848w, https://substackcdn.com/image/fetch/$s_!slQE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 1272w, https://substackcdn.com/image/fetch/$s_!slQE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!slQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png" width="1248" height="906" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:906,&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_!slQE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 424w, https://substackcdn.com/image/fetch/$s_!slQE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 848w, https://substackcdn.com/image/fetch/$s_!slQE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 1272w, https://substackcdn.com/image/fetch/$s_!slQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2da6d85-79f9-4aa4-8194-dbdc1679058b_1248x906.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Companies which hired software engineers rapidly in the last two years</em></figcaption></figure></div><p>Software engineering headcount growth at some companies was significant over the past two years:</p><ul><li><p>Ramp (fintech): +94%</p></li><li><p>Wiz (security): +84%</p></li><li><p>Datadog (observability): +68%</p></li><li><p>Rippling (fintech): +55%</p></li><li><p>Figma (design tooling): +41%</p></li><li><p>Netflix (streaming): +37%</p></li></ul><p>Of this group, Datadog, Figma, and Netflix are publicly traded, and the largest by headcount:</p><ul><li><p><strong>Datadog</strong>: AI agents are driving demand for observability through the roof, and Datadog is the leader of the pack. There&#8217;s demand to expand their infra and offerings. AI companies are also customers: OpenAI famously &#8211; or infamously! &#8211; <a href="https://newsletter.pragmaticengineer.com/i/175118968/1-is-openai-spending-record-sums-on-datadog">spent around $170M on Datadog</a> in 2025.</p></li><li><p><strong>Figma</strong>: the design tooling company went public <a href="https://newsletter.pragmaticengineer.com/i/170985406/3-figmas-ipo-an-end-to-the-tech-ipo-winter">in 2025</a> and is heavily investing in products related to AI, such as Figma AI.</p></li><li><p><strong>Netflix</strong>: the streaming behemoth is transitioning from &#8220;just&#8221; being a video streamer to becoming a broader entertainment platform, doing live events, advertising, gaming, and more. <em>We did a podcast with Netflix CTO, Elizabeth Stone, in 2025 about <a href="https://newsletter.pragmaticengineer.com/p/netflix">Netflix&#8217;s engineering culture</a>.</em></p></li></ul><h2>4. AI engineering: explosive demand</h2><p>AI engineering demand is only going in one direction: upwards, at a fierce tick. Last September, our previous <a href="https://newsletter.pragmaticengineer.com/p/state-of-the-tech-market-in-2025">State of the Tech Job Market report</a> found that AI Engineering was the hottest segment in tech for job listings growth. Today, the trend seems to continue:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[AI’s impact on software engineers in 2026: key trends, Part 2]]></title><description><![CDATA[Tradeoffs of AI tooling, why adopting AI at company-level is hard, what&#8217;s changed in two years, and more. The third and final part of a series analyzing our 2026 AI survey results]]></description><link>https://newsletter.pragmaticengineer.com/p/ai-impact-on-software-engineers-part-2</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/ai-impact-on-software-engineers-part-2</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 19 May 2026 16:43:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tEGy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F039155a2-16a1-481e-bddd-8774cb34e85d_1424x1174.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Earlier this year, we asked The Pragmatic Engineer subscribers about the AI tools you use, how you use them, and, crucially, what you think of them. We received more than 900 responses, and with this article we conclude our analysis of that data, covering:</p><ol><li><p><strong>Tradeoffs of AI tooling. </strong>Positive and negative sentiments, like how AI tools often mean less time spent on tedious, repetitive work, but that it often leads to unrealistic business expectations.</p></li><li><p><strong>Adopting AI at scale is hard. </strong>Companies are struggling to achieve adoption that feels productive at the team and org levels. Our survey finds the benefits of AI heavily depend on the engineering culture that was in place before.</p></li><li><p><strong>Impact on codebase quality. </strong>Codebase quality seems to be decreasing, but management at most places does not care. Meanwhile, maintenance duty is falling upon a shrinking number of engineers who still understand increasingly complex codebases.</p></li><li><p><strong>Less experienced engineers and AI. </strong>For these folks, AI seems to be less helpful and they rack up higher AI token bills. Maybe they need more space to learn, mentorship, and support.</p></li><li><p><strong>AI tooling &#8216;addiction&#8217;. </strong>Using AI agents &#8220;feels like a slot machine&#8221; encouraging &#8220;just one more prompt&#8221;-type behavior, while some folks think that the pricing of plans is built in a way to &#8220;lure&#8221; them to prompt more and more.</p></li><li><p><strong>Changes since 2024. </strong>Fewer devs are negative about AI, but there&#8217;s not all that much more positivity. The models have become much higher quality, and better tooling improves trust.</p></li><li><p><strong>Where are we headed? </strong>The concept of code ownership seems to be eroding, and collaboration within teams becomes less important.</p></li></ol><p>Previously in this series, we covered:</p><ul><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">AI tooling for software engineers in 2026</a></strong>: a detailed summary of survey responses, covering the most-used AI tools, trends, AI agent usage, company size and usage, and tools engineers love.</p></li><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/the-impact-of-ai-on-software-engineers-2026">The impact of AI on software engineers in 2026: key trends. Part 1</a></strong>. Concerns about mounting AI costs, more engineers hitting usage limits, and AI tools having uneven effects upon different types of engineers</p></li></ul><p>Full subscribers can <a href="https://newsletter.pragmaticengineer.com/i/40654455/reports">access a more detailed report.</a></p><h2>1. AI tooling tradeoffs</h2><p>What can be said about the impact of AI tooling on engineers this year? Well, based on the responses that readers sent in to our survey, there are some common patterns:</p><h3>Code and output tradeoffs</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I4Ms!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I4Ms!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 424w, https://substackcdn.com/image/fetch/$s_!I4Ms!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 848w, https://substackcdn.com/image/fetch/$s_!I4Ms!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 1272w, https://substackcdn.com/image/fetch/$s_!I4Ms!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I4Ms!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png" width="1456" height="1237" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1237,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:690484,&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/198435184?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.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_!I4Ms!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 424w, https://substackcdn.com/image/fetch/$s_!I4Ms!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 848w, https://substackcdn.com/image/fetch/$s_!I4Ms!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 1272w, https://substackcdn.com/image/fetch/$s_!I4Ms!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0973e-3076-43f7-874a-b0a32ad1f19c_1460x1240.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Productivity tradeoffs</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eDmt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eDmt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 424w, https://substackcdn.com/image/fetch/$s_!eDmt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 848w, https://substackcdn.com/image/fetch/$s_!eDmt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 1272w, https://substackcdn.com/image/fetch/$s_!eDmt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eDmt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png" width="1456" height="1129" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1129,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:648183,&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/198435184?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.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_!eDmt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 424w, https://substackcdn.com/image/fetch/$s_!eDmt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 848w, https://substackcdn.com/image/fetch/$s_!eDmt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 1272w, https://substackcdn.com/image/fetch/$s_!eDmt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e481765-692c-459a-8842-8b619f4f9d34_1460x1132.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Research <a href="https://www.microsoft.com/en-us/worklab/work-trend-index/agents-human-agency-and-the-opportunity-for-every-organization">published</a> two weeks ago (5 May) by Microsoft claims AI expands the pool of people who can do high-value work. Our survey found similar, while MS&#8217;s findings are based on Microsoft 365 Copilot chat 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_!-aYC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-aYC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!-aYC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!-aYC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!-aYC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-aYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;: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_!-aYC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!-aYC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!-aYC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!-aYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699d2e7a-b015-4612-9092-89c2d6de1e70_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;<em>AI used to do more high-value work&#8221; Source: <a href="https://www.microsoft.com/en-us/worklab/work-trend-index/agents-human-agency-and-the-opportunity-for-every-organization">Microsoft</a></em></figcaption></figure></div><p>Obviously, Microsoft has an interest in showing the benefits of its AI tools, but in this specific area, it&#8217;s telling that both studies agree AI does allow devs and non-devs to expand the type of work they do.</p><h3>Software engineering tradeoffs</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UmZb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UmZb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 424w, https://substackcdn.com/image/fetch/$s_!UmZb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 848w, https://substackcdn.com/image/fetch/$s_!UmZb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!UmZb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UmZb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png" width="1456" height="1252" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1252,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:591806,&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/198435184?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.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_!UmZb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 424w, https://substackcdn.com/image/fetch/$s_!UmZb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 848w, https://substackcdn.com/image/fetch/$s_!UmZb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!UmZb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd00bd67a-d708-4dee-af88-0a901fe712de_1500x1290.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>With AI tools, their &#8216;mileage may vary&#8217; among individuals. </strong>For example, some respondents told us they can spend much more time in a &#8220;flow state&#8221; thanks to AI tools, as they don&#8217;t have to wait for input from peers, can keep unblocking themselves, and have fewer interruptions.</p><p>But others say the opposite: that because they can start so many more tasks in parallel with AI tools, they keep context switching which knocks them out of a flow state!</p><p>The positives and negatives of these tools seem dependent on the environment respondents work in, individuals&#8217; personality traits, and where users are on the AI learning curve.</p><h2>2. Adopting AI at scale is hard</h2><p>One pattern in the responses is that adopting AI at company-scale remains challenging, including:</p><ul><li><p><strong>Costs</strong>: a growing concern covered in depth <a href="https://newsletter.pragmaticengineer.com/i/194201128/1-costs">in Part 1</a></p></li><li><p><strong>Usage</strong>: getting people to use AI tools continuously is not always straightforward</p></li><li><p><strong>Onboarding and education</strong>: at larger companies, there needs to be support to help devs make the most of the tools</p></li><li><p><strong>Reviewing AI-generated output:</strong> code review is a particular pain point</p></li><li><p><strong>Integrating with internal systems:</strong> AI tools are more helpful when they are seamlessly integrated with internal systems, hence why many larger companies use in-house, deeply embedded coding agents</p></li></ul><p>Adopting AI at company-level doesn&#8217;t lead to a magical fix for engineering problems, while the benefits of AI in an organizational sense seem to depend on what was in place <em>before</em>.</p><p><strong>Case in point, AI seems to amplify pre-existing engineering culture. </strong>AI doesn&#8217;t change the underlying <em>quality</em> of an organization&#8217;s engineering culture. Teams with strong engineering practices get more positive benefits out of AI than those without. Teams that see benefits from AI tools already had:</p><ul><li><p><strong>Guardrails</strong>: testing and automation around the codebase and deployments</p></li><li><p><strong>Documentation</strong>: they recorded their architectural decisions and engineering practices</p></li><li><p><strong>A quality codebase:</strong> AI agents will replicate patterns already in a codebase</p></li></ul><p>A few quotes on this from respondents to our survey:</p><blockquote><p>&#8220;AI is an amplifier, not a fixer. Good software engineering practices get multiplied. So do the bad ones. Embedding this properly in teams is exciting and important&#8221;. <em>&#8211; Staff+ engineer at a large company in Europe</em></p><p>&#8220;I feel like AI allows both faster prototyping and increased velocity on iterations to production software; it relies on existing best practices / project templates our team already have&#8221;. &#8211; <em>Solutions Architect at a small company in the US</em></p></blockquote><p><strong>A workflow that makes one dev &#8220;10x&#8221; more productive may not work for another. </strong>This is another reason why rolling out AI tools doesn&#8217;t seem to magically make everyone more productive. A senior engineer working at a large company in Canada told us:</p><blockquote><p><em>&#8220;It feels like AI workflows are very idiosyncratic in that some people derive (I hate this framing, but&#8230;) 10x more productivity benefit from them than other apparently equally clever, educated, and diligent developers. It feels like finding a workflow that clicks with your own habits and heuristics is more important than finding a global optimum for everyone&#8221;.</em></p></blockquote><p><strong>AI amplifies individuals differently, so the team impact is messy to figure out. </strong>A US-based principal engineer at a large company reflected on feeling disconnected from colleagues because of how they use AI differently:</p><blockquote><p><em>&#8220;I use AI in what I think is probably a more sophisticated way than most of my colleagues, so there can be a disconnect between my work and theirs, which is not good news because I am &#8220;The Principal&#8221; on the team&#8221;.</em></p></blockquote><p><strong>&#8220;The tool that works for you&#8221; approach can lead to tooling chaos, even at a team level. </strong>While it&#8217;s empowering to allow devs to choose the AI tools they feel are the most helpful, over time it becomes chaotic when teams can choose their own tech stacks, and when at large companies there are dozens of different technologies. A staff+ engineer at a 200-person business in the Middle East wrote in their response:</p><blockquote><p><em>&#8220;We&#8217;re still trying to figure out how to deal with tooling consistency on a team level. It&#8217;s one of our biggest struggles, but possibly more due to company structure than anything else. Everyone is using different tools with little coherence. It&#8217;s been rough.&#8221;</em></p></blockquote><p><strong>Some companies have briefly rolled back AI to deal with the negative effects first.</strong> From an engineering lead at a 10,000+ person company in Europe:</p><blockquote><p><em>&#8220;Since the AI boom, the quality of technical writing and reasoning from senior engineers in my org has significantly deteriorated. There&#8217;s an overwhelming volume of low-quality work product that is generated entirely or in part by AI, which has made it very difficult to conduct meaningful review of RFCs or code. We&#8217;ve also seen costly production incidents caused by code written and/or approved by AI, and &#8211; while my employer initially bought heavily into the hype &#8211; we have now rolled back some of our AI tools to deal with the drop in quality.&#8221;</em></p></blockquote><h2>3. Impact on codebase quality</h2><p><strong>A concrete pattern in our survey data is that codebase quality is decreasing due to AI. </strong>The contributing factors are not surprising:</p><ul><li><p>&#8220;AI slop&#8221;: more low-quality code generated, such as duplicated, verbose code, and poor abstractions</p></li><li><p>Too many code reviews, which means review quality slips</p></li><li><p>More bugs: due to faster code output and less strict reviews, more bugs sneak into codebases</p></li></ul><p>We discuss the degradation of products and codebases in a recent deepdive, <a href="https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us">Are AI agents actually slowing us down?</a></p><p>One CTO at a European startup lists their negatives about increased AI usage:</p><ol><li><p><em>&#8220;A lot of tiny bugs and low code quality if you are not careful, verify carefully, and have good structure and guardrails</em></p></li><li><p><em>AI agents generate too much and repetitive code, making systems harder to maintain</em></p></li><li><p><em>Developers lose understanding of the codebase and become numb to bad architecture and bad developer experience&#8221;</em></p></li></ol><p><strong>According to our survey, management often seems unfazed by decreasing quality, and instead focuses on the higher output. </strong>A principal DevOps engineer at a large European company said:</p><blockquote><p><em>&#8220;In our company, we hand AI tools to inexperienced engineers who can&#8217;t distinguish good code from bad code and it&#8217;s falling on deaf ears in our leadership. They only seem to care about short to mid-term cost savings.&#8221;</em></p></blockquote><p><strong>The maintenance burden of AI-generated code is falling on the fewer engineers who understand and care. </strong>A staff engineer at a European company listed the problems that AI-generated code is causing:</p><ul><li><p><em>&#8220;Drive by&#8221; contributions are up:</em> many more occasional non-core-engineer contributors adding code but not sharing the maintenance burden</p></li><li><p><em>Contributing without adding guardrails: </em>many engineers and most of engineering leadership are not using reasonable guardrails like tests</p></li><li><p><em>AI slop from folks who have nothing to do with the codebase: </em>huge volume of slop incoming from people who don&#8217;t understand the codebase, but will commit and create PRs without fully understanding what they&#8217;re doing</p></li><li><p><em>Complexity is exploding: </em>thanks to the above</p></li></ul><p>The maintenance budget is falling upon fewer devs, while the task of refactoring bloated codebases and reducing complexity is left to those still sufficiently in touch with the codebase, thereby making the maintenance burden even worse.</p><p>But some leaders &#8220;get it.&#8221; A CEO at a 20-person company told us:</p><blockquote><p><em>&#8220;While AI has made generating code &#8216;cheaper&#8217;, the monitoring and maintenance worry me; the things that have traditionally cost the most in software. We&#8217;re increasing the rate of shipping large amounts of code with less understanding and increasing the unpredictability, so how do we work the predictability back on top?&#8221;</em></p></blockquote><p><strong>There is industry pressure on companies to adopt AI tooling and impose its usage upon engineers, </strong>driven by a mix of factors:</p><ul><li><p>Seeing actual benefits of AI and hearing that other teams and companies enjoy success with it</p></li><li><p>Fear of being left behind by competitors, or becoming less relevant</p></li><li><p>Anxiety about investor interest if a company is seen as not adopting the latest AI tools.</p></li></ul><p>This often leads to:</p><ul><li><p>Top-down mandates to use AI</p></li><li><p>Expectation of headcount reduction, with smaller teams doing the same amount or more</p></li><li><p>Management treating AI productivity gains as a <em>baseline</em> rather than a <em>bonus</em>.</p></li></ul><p>One staff engineer at a 10,000-person US company explained it like this:</p><blockquote><p><em>&#8220;AI is part of almost every work conversation. The entire company expects it to increase productivity and reduce the need to hire people. I keep trying to get better at using it and trying to make it more reliable so I can do more. I do worry about the quality of the work and atrophy of certain skills. It&#8217;s unclear to me if those skills even matter anymore.&#8221;</em></p></blockquote><p><strong>Pushing AI adoption </strong><em><strong>blindly</strong></em><strong> triggers red flags. </strong>Respondents shared what makes them worry about things going south in their workplaces:</p><ul><li><p><em>Focus on tracking AI usage, but not the quality of the output.</em> This will likely lead to product regressions and unhappy customers</p></li><li><p><em>Pushing for universal adoption.</em> Some companies target 50%, 80%, or 100% AI usage for certain tasks, seemingly blind to how some targets can worsen the quality of output, or simply create wasteful usage. <em>See the <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-tokenmaxxing-as-a-weird">trend of tokenmaxxing</a>.</em></p></li><li><p><em>A focus on velocity, but without recognition of quality work. </em>Expecting more velocity and output seems to be the baseline, and there is no recognition for work truly well done.</p></li></ul><p>The &#8220;move fast and break things&#8221; mantra famously championed by Facebook seems widespread across the industry with AI tools. A senior manager working at a large, European-headquartered company told us:</p><blockquote><p><em>&#8220;I see a trend: move fast and break things, and end up breaking things too often. We have to learn to focus on testing and resiliency a lot more, as with AI-driven development we introduce more bugs than before. But the velocity gain is bigger for now&#8221;.</em></p></blockquote><p><strong>Output over quality is leading to the death of code review at some places. </strong>As a lead engineer working at a small company summarized:</p><blockquote><p><em>&#8220;We&#8217;re at the death of code review. I used to do very deep code reviews where I&#8217;d take the time to understand the architecture and organization and provide feedback on maintainability and efficiency. I have no motivation in spending that time to review a giant PR where it&#8217;s clear that even the original author didn&#8217;t bother to do that&#8221;.</em></p></blockquote><h2>4. Less experienced engineers and AI</h2><p>The first generation of software engineers who have never developed without the help of AI are now entering the industry. Here is a response from a young engineer working at a startup as an intern:</p><blockquote><p><em>&#8220;I have never worked as a developer without AI. Writing this scares me a bit, actually, but it&#8217;s the truth!&#8221;</em></p></blockquote><p>But this will be the new reality for those joining the industry. So, what needs to happen to help a new generation of &#8220;AI-native&#8221; grad engineers grow professionally?</p><p><strong>AI is an amplifier which could amplify the lack of experience. </strong>A staff engineer in the US at a large company told us:</p><blockquote><p><em>&#8220;Agentic AI is a fascinating mirror. It can code as well as the user who drives it. If that user is a junior engineer, now you have a faster junior engineer. If the user is a staff engineer, now you have a faster staff engineer.</em></p><p><em>What agentic AI doesn&#8217;t do is magically convert a junior engineer into a staff engineer, because the user driving it still needs enough experience to know what a good solution looks like&#8221;.</em></p></blockquote><p>A junior engineer in Australia shares their experience of how frustrating working with AI tools is:</p><blockquote><p><em>&#8220;I think AI agents are great for vibe coding or prototypes where the code quality and functionality doesn&#8217;t matter that much. I think it&#8217;s also useful for senior engineers who know what they&#8217;re doing.</em></p><p><em>For junior engineers like myself, these AI tools are stressful to use. I don&#8217;t have the experience or knowledge to tell AI exactly what to do or quickly confirm its output, so I spend a lot of time on just triple checking and redoing stuff. I&#8217;m overall frustrated, but I&#8217;m trying to embrace it as we&#8217;ve been asked to by the company&#8221;.</em></p></blockquote><p><strong>Less experienced engineers seem to use more AI tokens and rack up higher bills. </strong>Several respondents observed this: director-level folks noted that junior engineers are in the top-spender category in their orgs, and it is junior devs who spend tokens on unproductive use cases.</p><p>There should be more space for junior folks to grow because they use AI more, one staff engineer respondent said:</p><blockquote><p><em>&#8220;Companies need to give some breathing room to Junior engineers and help them learn and acquire knowledge using AI tools as a booster and not as a replacement&#8221;.</em></p></blockquote><p><strong>Junior folks seem to be delegated fewer opportunities that could help them grow. </strong>This is because senior people can turn to AI for tasks, including those which they would have previously delegated to an intern or new grad. A few responses mention this:</p><blockquote><p>&#8220;AI allows me to have work done that I would usually delegate to a junior or pay a SaaS for; e.g., writing drafts, summarizing the news. &#8220; <em>DevSecOps lead at a small company, Europe</em></p><p>&#8220;I&#8217;ve begun to automate any repetitive task that we previously relied on juniors and offshore contractors for.&#8221;<em> - Engineering manager, at a large company, US</em></p><p>&#8220;I no longer have to delegate work by writing a very long document and briefing a junior engineer.&#8221; <em>- Principal engineer, large company, Europe</em></p></blockquote><p><strong>Why not consider mentoring junior devs in your organization? </strong>It&#8217;s clear that less experienced engineers are having a rocky start to their careers, so delegating stuff to them instead of to AI could be of high value for newer generations of talent.</p><h2>5. AI tooling &#8216;addiction&#8217;</h2><p>It seems that the rapid feedback loops of AI-assisted development create addictive tendencies, and there&#8217;s a noteworthy presence of &#8220;addiction lingo&#8221; in some responses to our survey:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/ai-impact-on-software-engineers-part-2">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Revisiting “No Silver Bullets” in the age of AI]]></title><description><![CDATA[Does the noted &#8220;No Silver Bullets&#8221; paper by the author of a classic engineering book still hold up, 40 years later? Is AI the long-sought single silver bullet &#8211; or has one been around for years?]]></description><link>https://newsletter.pragmaticengineer.com/p/revisiting-no-silver-bullets-in-the</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/revisiting-no-silver-bullets-in-the</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 12 May 2026 17:10:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fo1L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Before we start, some news: my tech compensation site focused on tech total compensation (TC) in Europe, <a href="https://blog.pragmaticengineer.com/techpays-has-been-acquired-levels-fyi/">TechPays has been acquired by Levels.fyi</a>! TechPays was a project I&#8217;ve been building on the side with engineering manager <a href="https://www.linkedin.com/in/rzsombor/">Zsombor Erd&#337;dy-Nagy</a> for a few years, and both of us are pleased that the site found a new and welcoming home. <a href="https://blog.pragmaticengineer.com/techpays-has-been-acquired-levels-fyi/">Read more.</a></em></p><p>Four decades ago, the writer of &#8216;<em>The Mythical Man-Month&#8217;</em> (1975), drew on folklore about werewolves to publish a paper about the prospects of a so-called <em>silver bullet </em>for software development that would make professionals much more productive at their craft.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fo1L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fo1L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png 424w, https://substackcdn.com/image/fetch/$s_!fo1L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png 848w, https://substackcdn.com/image/fetch/$s_!fo1L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png 1272w, https://substackcdn.com/image/fetch/$s_!fo1L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fo1L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png" width="800" height="510" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:510,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;: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_!fo1L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png 424w, https://substackcdn.com/image/fetch/$s_!fo1L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png 848w, https://substackcdn.com/image/fetch/$s_!fo1L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.png 1272w, https://substackcdn.com/image/fetch/$s_!fo1L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11e17bb3-f81c-4b30-930b-202e336226a6_800x510.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>The Werewolf of Eschenbach, Germany, line engraving, 1685. This image appears in the &#8220;No Silver Bullets&#8221; chapter of Mythical Man-Month (1995)</em></figcaption></figure></div><p>Frederick P. Brooks published <em>&#8220;No Silver Bullet &#8211; Essence and Accident in Software Engineering&#8221; </em>in 1986, and as the title suggests, it is pessimistic about the existence of any silver bullets. The term refers to a super weapon capable of dropping otherwise near-unstoppable werewolves and other creepy supernatural beings in European folk tales.</p><p>Since its release, this paper might have become even better-known than Mythical Man-Month (MMM). In 1995, the second edition of that book included Brooks&#8217; later essay as chapter 17, along with an additional chapter of reflections.</p><p>In this article, we look into whether the essay was correct in its disbelief in silver bullets, or whether any did indeed slay the beast of unproductivity for developers over the course of time. Also, how does AI agents generating so much code, as of today, challenge the entire premise &#8211; or not?</p><p>We cover:</p><ol><li><p><strong>&#8220;No silver bullets&#8221; &#8211; why has it held up? </strong>No single new technology or methodological breakthrough by itself introduced magnitudes-of-improvement to the areas that really matter in software engineering. Is that unusual?</p></li><li><p><strong>Is SRE a silver bullet? </strong>Google&#8217;s Search team introduced the SRE discipline, and won orders-of-magnitude superior reliability to its competitors. But why only Google Search?</p></li><li><p><strong>Was open source + GitHub a silent silver bullet? </strong>No development had a bigger impact on the wider tech industry than the open source wave since the 2010s. Has it been a silent silver bullet, an overlooked cause?</p></li><li><p><strong>Could AI be a silver bullet? </strong>At first glance, AI generates 100x-or-more code output. But productivity, reliability, and simplicity improvements are a bit unimpressive &#8211; at least for now.</p></li></ol><p>Brooks was a computer scientist who led IBM&#8217;s System/360 and OS/360 operating systems development, <em>&#8216;The Mythical Man-Month&#8217;</em> was published in 1975. Last year, we did a deepdive into this engineering classic (<a href="https://newsletter.pragmaticengineer.com/p/what-changed-in-50-years-of-computing">Part 1</a>, <a href="https://newsletter.pragmaticengineer.com/p/what-changed-in-50-years-of-computing-8d0">Part 2</a>, <a href="https://newsletter.pragmaticengineer.com/p/mythical-man-month-part-3">Part 3</a>, <a href="https://newsletter.pragmaticengineer.com/p/mythical-man-month-part-4">Part 4</a>), delving into its predictions and legacy.</p><h2>1. No silver bullets?</h2><p>The paper delves into folklore for its motif, a &#8216;silver bullet,&#8217; and uses it to pose the question of whether there would be any &#8220;silver bullets&#8221; on the horizon (in 1986) that could be similarly fatal to software engineering complexity. From the <a href="https://www.cs.unc.edu/techreports/86-020.pdf">paper</a> (emphasis mine:)</p><blockquote><p>&#8220;Of all the monsters who fill the nightmares of our folklore, none terrify more than werewolves, because they transform unexpectedly from the familiar into horrors. For these, one seeks bullets of silver that can magically lay them to rest.</p><p>The familiar software project has something of this character (at least as seen by the non-technical manager), usually innocent and straightforward, but capable of becoming a monster of missed schedules, blown budgets, and flawed products. So, we hear desperate cries for a silver bullet, something to make software costs drop as rapidly as computer hardware costs do.</p><p>But, as we look to the horizon of a decade hence, we see no silver bullet. <strong>There is no single development, in either technology or management technique, which by itself promises even one order of magnitude improvement in productivity, in reliability, in simplicity</strong>.</p><p>Skepticism is not pessimism, however. Although we see no startling breakthroughs, and indeed, believe such to be inconsistent with the nature of software, many encouraging innovations are under way. A disciplined, consistent effort to develop, propagate, and exploit them should indeed yield an order-of-magnitude improvement. There is no royal road, but there is a road.</p><p>The first step toward the management of disease was replacement of demon theories and humor theories by the germ theory. That very step, the beginning of hope, in itself dashed all hopes of magical solutions. It told workers that progress would be made stepwise, at great effort, and that a persistent, unremitting care would have to be paid to a discipline of cleanliness. So it is with software engineering today.&#8221;</p></blockquote><p>In 1995, Brooks revisited his idea that silver bullets weren&#8217;t real in the software domain. From the <em>Mythical Man-Month&#8217;s </em>anniversary edition:</p><blockquote><p>&#8220;No Silver Bullet&#8221; asserts and argues that no single software engineering development will produce an order-of-magnitude improvement in programming productivity within ten years (from the paper&#8217;s publication in 1986). We are now nine years into that decade, so it is timely to see how this prediction is holding up.</p><p>Whereas The Mythical Man-Month generated many citations but little argument, &#8220;No Silver Bullet&#8221; has occasioned rebuttal papers, letters to journal editors, and letters and essays that continue to this day.</p><p>Most of these attack the central argument that there is no magical solution, and my clear opinion that there cannot be one. Most agree with most of the arguments in &#8220;NSB,&#8221; but then go on to assert that there is indeed a silver bullet for the software beast, which the author has invented. As I reread the early responses today, I can&#8217;t help noticing that the nostrums pushed so vigorously in 1986 and 1987 have not had the dramatic effects claimed.&#8221;</p></blockquote><p>Brooks re-concluded that there had been no technological breakthroughs of the type postulated in NSB.</p><p><strong>But motivation can also have silver bullet-like effects </strong>and always has had, he found<strong> </strong>via more research into scientific evidence that motivation<em> can</em> boost productivity. In his own words:</p><blockquote><p>&#8220;Since &#8220;NSB,&#8221; Bruce Blum has drawn my attention to the 1959 work of Herzberg, Mausner, and Sayderman.</p><p>They find that motivational factors can increase productivity. On the other hand, environmental and accidental factors, no matter how positive, cannot; but these factors can decrease productivity when negative. &#8220;NSB&#8221; argues that much software progress has been the removal of such negative factors: stunningly awkward machine languages, batch processing with long turnaround times, poor tools, and severe memory constraints.&#8221;</p></blockquote><p>Today, it&#8217;s a long time since the mid-nineties; with the benefit of hindsight, were there any silver bullets flying between then and 2022, which fit the bill as slayers of unproductiveness? I suggest a few, below. <em>If you can name other silver bullets since the launch of Windows 95, please do so in the comments!</em></p><ul><li><p><strong>Version control: </strong>(late 1990s.) CVS, Subversion, and later, Git. Version control allowed engineers to collaborate much more fluently, leading to more teamwork and &#8211; in some cases &#8211; less full-on solo labor.</p></li><li><p><strong>IDEs</strong>: (early 2000s). Modern IDEs like Visual Studio, IntelliJS, and others make context-rich editing easy and fast. They also allow for faster, less error-prone refactoring and more efficient debugging.</p></li><li><p><strong>CI/CD and automated testing</strong>: (mid-2000s). CI systems started to spread during the 2000s with the likes of CruiseControl (2000s) &#8594; Jenkins and SaaS CI solutions from the 2010s (e.g., Travis CI, CircleCI, GitLab CI, GitHub Actions).</p></li><li><p><strong>Open source and package managers</strong>: (2010s). Open source has been around for decades, but GitHub&#8217;s rapid adoption made it easier to create and discover, coupled with package managers in the Node, Python, and other language ecosystems to build on top of open source solutions.</p></li><li><p><strong>StackOverflow: </strong>(2010s). The popular programming Q&amp;A site made it easier to get unstuck by finding solutions to common problems, with the capability to ask questions and get responses from the large user community within hours. By 2025, the site <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-134">was pretty much dead.</a></p></li><li><p><strong>Cloud</strong>: (early 2010s). AWS launched in 2006, then Azure and Google Cloud in 2008, and they went mainstream in the 2010s. Today, cloud is everywhere, and increasingly more infrastructure startups build on top of hyperscalers (the biggest public cloud platforms), such as Vercel / Netlify (platform-as-a-service), Supabase / Turbopuffer (databases) and others.</p></li><li><p><strong>Platform teams &amp; DevEx teams</strong>: (mid-2010s). Mid-sized and larger tech companies created dedicated platform teams to own infrastructure and internal platforms. In the 2020s, larger tech companies have created &#8216;Developer Experience&#8217; teams to build better internal dev tools and workflows. <em>We previously covered <a href="https://newsletter.pragmaticengineer.com/p/program-platform-split-uber">Uber&#8217;s program/platform split</a>, and <a href="https://newsletter.pragmaticengineer.com/p/developer-experience-at-uber">Uber&#8217;s developer experience evolution</a>.</em></p></li><li><p><strong>SRE</strong>: the Site Reliability Engineer (SRE) profession grew during the 2010s, much influenced by Google.</p></li></ul><p>These technologies increased developer efficiency and productivity, but none by itself was a productivity accelerator in isolation.</p><p>Obviously, by 2022 the craft of building software had developed greatly since &#8216;<em>No Silver Bullets&#8217; </em>came out; and was more efficient, faster, and more collaborative than ever. One highly anecdotal way to identify this is via the disappearance of cake from some tech workplaces. Back in the day, cake was distributed at work for major product milestones being hit: the shipping of a new product was often marked with awards and tasty baked treats &#8211; at least on teams building browsers, like the IE and Firefox teams.</p><p>But by the 2010s, shipping frequency had increased by so much and was an everyday, unremarkable occurrence at some places, <a href="https://limpet.net/mbrubeck/2012/10/26/mozilla-ie10-cake.html">according to</a> Matt Brubeck, a former engineer on the Firefox team:</p><blockquote><p>&#8220;Back when Firefox 2 was released (six years ago this week!), the Internet Explorer team started a friendly tradition of sending Mozilla a cake as congratulations. This continued for Firefox 3 and Firefox 4. After Firefox switched from major releases once or twice a year to incremental updates every six weeks, they sent us a cupcake for the next few updates instead. :)&#8221;<em> Mozilla engineer, Matt Brubeck</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IXA7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IXA7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 424w, https://substackcdn.com/image/fetch/$s_!IXA7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 848w, https://substackcdn.com/image/fetch/$s_!IXA7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!IXA7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IXA7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png" width="1456" height="1078" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1078,&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_!IXA7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 424w, https://substackcdn.com/image/fetch/$s_!IXA7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 848w, https://substackcdn.com/image/fetch/$s_!IXA7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!IXA7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f525e98-c75e-4e3e-a5e1-5b7db3a6e5a5_1828x1354.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Fruits of success: Cake for Mozilla Firefox team in 2006 after shipping Firefox 1</figcaption></figure></div><p>Today, Firefox ships a stable version about once a month, as does Chrome. In this context, marking each release with more cake could inadvertently cause some health issues on the team &#8211; too much cake, that is! From this September, Chrome <a href="https://developer.chrome.com/blog/chrome-two-week-release">will switch</a> to shipping every two weeks.</p><p><strong>Agile and Scrum is worth a mention</strong>; not as a technology, but a methodology: Scrum encourages teams to move in smaller cycles and deliver more frequently, via sprints that typically range from a week to a month. In the early 2000s, this methodology spread quickly and brought efficiency improvements to many tech companies. However, by the early 2020s, many startups and some of Big Tech had moved on, as covered in <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><blockquote><p>&#8220;Scrum got in the way of shipping on a daily basis. The whole idea of Scrum revolves around Sprints, of committing to tasks at the beginning of the sprint, working on these during the sprint, and demoing what we did at the end.</p><p>The process felt unnatural and like it had been forced on a fast-moving web team. We soon moved to a more fluid way of working, taking the Kanban approach. We stopped caring about sprints, and dropped most rituals that come with Scrum. We just cared about knowing what we&#8217;re working on now, and what it was we&#8217;d get done next.&#8221;</p></blockquote><p>Basically, Scrum worked and still does so for teams wanting to shorten shipping cadence from months to weeks. But for teams shipping daily, it often gets in the way.</p><p><strong>One area that improved significantly has been the pace of shipping incremental software. </strong>In 1975, shipping software several times per day with elements like version control, CI/CD, feature flags and engineers being oncall, might have sounded far-fetched. Back then, software delivery was measured in months and years. In this way, we&#8217;ve perhaps made improvements overall in the regions of 10x to 100x over the years.</p><p>But that came via combinations of new tools like version control and CI/CD, new approaches &amp; methodologies, and testing &#8211; and also from shifting constraints; for example, it&#8217;s now possible to revert backend changes rapidly, and code shipped in binaries can be controlled by feature flags in many cases.</p><p>Even so, improvements were mainly in iteration speed and not necessarily in the complexity of the software shipped. With all that progress, shipping complex and high-quality software still takes comparable time, often years, as 50 years ago. A prime example is the upcoming video game, Grand Theft Auto VI, probably by now the most highly-anticipated game ever, which is set to launch in November, after at least six years &#8211; and potentially 12 &#8211; of total development time:</p><ul><li><p>Initial planning <a href="https://thegameswiki.com/gta6/wiki/development-history">started</a> in 2014 (12 years of development)</p></li><li><p>Development <a href="https://gamerant.com/gta-6-development-start-date-when/">started</a> in earnest in 2020 (circa six years of full-on development)</p></li><li><p>The studio, Rockstar, <a href="https://x.com/RockstarGames/status/1489617718009606150">confirmed</a> development was underway in February 2022 (at least 4.5 years of full development)</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_!HM_E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HM_E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 424w, https://substackcdn.com/image/fetch/$s_!HM_E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 848w, https://substackcdn.com/image/fetch/$s_!HM_E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 1272w, https://substackcdn.com/image/fetch/$s_!HM_E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HM_E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png" width="1100" height="350" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:350,&quot;width&quot;:1100,&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_!HM_E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 424w, https://substackcdn.com/image/fetch/$s_!HM_E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 848w, https://substackcdn.com/image/fetch/$s_!HM_E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 1272w, https://substackcdn.com/image/fetch/$s_!HM_E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f94d3b7-70e6-4fac-a07d-7c4d315b5578_1100x350.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">GTA VI: more ambitious but also slower</figcaption></figure></div><p>The video game development timeline is as long as it ever was, and even longer, as developers strive to meet players&#8217; expectations on things like graphics, lighting, and physics. GTA 6 looks like being the most complex installment in the long-running series. So, perhaps there&#8217;s not been much change in software delivery timelines because when we have more capabilities to work with, the goals get more ambitious and the bar for &#8220;standout&#8221; software keeps rising.</p><h2>2. Is SRE a silver bullet?</h2><p>Brooks&#8217;s definition of a silver bullet:</p><blockquote><p>&#8220;A single development, in either technology or management technique, which by itself promises even one order of magnitude improvement in productivity, in reliability, in simplicity.&#8221;</p></blockquote><p>In simplicity and productivity terms, I struggle to name a single approach that delivered a 10x-or-more improvement by itself. But in the area of reliability, one company that has pioneered novel approaches since the 2000s is Google. Google.com is probably the single most reliable piece of internet software of all. In the last 15 years, Google Search has suffered a single outage, <a href="https://www.gadgets360.com/internet/news/google-search-maps-photos-drive-youtube-experiencing-outages-in-some-parts-of-the-world-3238156">on 8 August 2022</a>, which lasted around an hour. Otherwise, there have been no global outages (of course, there have been several <a href="https://en.wikipedia.org/wiki/Google_services_outages#December_2020_services_outage">for other Google services</a>).</p><p>In 2003, Google created the &#8216;Site Reliability Engineering&#8217; (SRE) role. SRE veteran, Dave O&#8217;Connor, <a href="https://newsletter.pragmaticengineer.com/p/reliability-engineering?">shared with us</a>:</p><blockquote><p>&#8220;The fervent belief of Google&#8217;s founders was that speed and reliability mattered more than features. This belief was coupled with the understanding that we couldn&#8217;t achieve it traditionally, which made it an existential issue. The level of investment in building out all layers of the serving stack was a case of &#8220;because we can&#8221;, but also &#8220;because we have to, as nowhere else does what we need&#8221;.</p><p>There was never a question of whether traditional &#8216;ops&#8217; would work at Google. We needed a specialized role, staffed by folks familiar with the problem space and engineering methods required to make it work.</p><p>In 2003, the SRE role was born. Ben Treynor Sloss had been tasked with building Google&#8217;s &#8220;production team&#8221; and in his own words, he built &#8220;what happens when you ask a software engineer to design an operations team.&#8221; This turned into the birth of the SRE function at Google. From the outset, SRE was staffed in varying measures by systems/operations experts and software engineers. A large part of the remit of the team was to build the tools and practices required to operate Google&#8217;s fleet.&#8221;</p></blockquote><p>Over time, the rest of the industry caught on to SRE and DevOps. From our <a href="https://newsletter.pragmaticengineer.com/p/reliability-engineering">SRE deepdive</a>:</p><blockquote><p>&#8220;Eventually, other companies caught onto the scaling issues, especially the hyperscalers. Each had their own approach, but over time, the notion grew industry-wide that making things reliable was a real-life engineering discipline, not simply &#8216;ops&#8217;.</p><p>This step saw a number of terms coined to describe this engineering, including &#8216;DevOps&#8217;. At its core, this was the notion that the disciplines and practices of reliability engineering should be ingrained into the overall engineering organization. At places other than Google, this mostly took the form of combined developer/operations roles (i.e. &#8220;you build it, you run it&#8221;), which differed from Google&#8217;s implementation, but the practices were similar.</p><p>Around this time, Google started opening up about SRE, eventually publishing the first SRE book, and follow ups. Conferences such as USENIX SRECon, Devops Days, and other movements have solidified reliability engineering as a discipline that scales well beyond Google. Indeed, the company has become a consumer of many state-of-the-art developments.&#8221;</p></blockquote><p><strong>So, at Google Search, the SRE role could be described as a genuine silver bullet for the tech giant.</strong> The company&#8217;s obsession with reliability helped it build what is probably the most reliable public-facing service of all. On the assumption that SRE plays a significant role in the approach, I would feel comfortable with calling SRE a silver bullet for Google Search.</p><p>SRE, as a concept, is commonplace across Google, but the reliability of its other services is not so impressive. For example, Google Cloud has had many outages, and Gmail also goes down every now and then. I&#8217;m sure that without SRE, reliability would be worse, but in general, Google services&#8217; availability these days is probably a magnitude higher than the availability of most online services in the 2000s.</p><p>Similarly, GitHub has an SRE role but the service is <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-github-breaks">at zero nines of availability</a>, partially explained by a 3.5x increase in load in two years. But in other ways, the zero nines is <a href="https://blog.pragmaticengineer.com/the-pulse-ai-load-breaks-github/">likely self-inflicted.</a></p><p><strong>This makes me wonder if the existence of silver bullets depends greatly on teams and individual contexts.</strong> SRE seems like a good case to consider:</p><ul><li><p>a &#8220;silver bullet&#8221; for Google Search</p></li><li><p>&#8230; but not for other Google services</p></li><li><p>&#8230; and definitely not for the broader industry</p></li></ul><p>Could it be that when implemented in the right place, in the right way, and with the correct investment, then SRE &#8211; and an incredible focus on reliability &#8211; will yield a 10x-or-higher increase in reliability?</p><p>My hunch is that Google Search has such standout reliability not just because of SRE, but because Search might be the only organization in Google with reliability as a founding value, embedded in the team&#8217;s culture, with unmatched investments of time and money.</p><p>Google has published <a href="https://sre.google/books/">several books</a> that explain their techniques and practices, but for other teams to get those results, they would need to invest similarly in reliability.</p><h2>3. Was open source + GitHub a silent silver bullet?</h2><p>Perhaps there&#8217;s a silver bullet which is easily missed: open source. In <a href="https://newsletter.pragmaticengineer.com/p/ai-tools-for-software-engineers-simon-willison">the first-ever Pragmatic Engineer Podcast episode</a>, I asked software engineer Simon Willison what the biggest &#8220;productivity leaps&#8221; have been during his career. He <a href="https://youtu.be/uRuLgar5XZw?si=YHz3z6En7ADv4DRu&amp;t=2141">named</a> open source:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/revisiting-no-silver-bullets-in-the">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Designing Data-Intensive Applications: The Cloud & Doing the Right Thing]]></title><description><![CDATA[How the cloud changes the way we build applications, and why engineers&#8217; ethical choices matter more than ever. Excerpt from the book, &#8216;Designing Data-Intensive Applications&#8217;, 2nd edition]]></description><link>https://newsletter.pragmaticengineer.com/p/designing-data-intensive-applications-book-excerpt</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/designing-data-intensive-applications-book-excerpt</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 05 May 2026 16:46:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!C6W6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In 2016, <a href="https://martin.kleppmann.com/">Martin Kleppmann</a> published <em>&#8216;Designing Data-Intensive Applications&#8217;,</em> which quickly became a go-to book for those of us building backend applications and distributed systems. In it, Martin combined his experience as a startup founder with observations from his time at LinkedIn, and invested years of rigorous, fulltime research in the title.</p><p>Nine years later, he felt the time was ripe for an updated edition, with cloud computing much more widespread than in 2016. So, Martin teamed up with software engineer and investor, <a href="https://cnr.sh/">Chris Riccomini</a>, a former colleague at LinkedIn and the author of <a href="https://nostarch.com/missing-readme">The Missing README</a>, for a full refresh of the book which brings it right up to date for the present day.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C6W6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C6W6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png 424w, https://substackcdn.com/image/fetch/$s_!C6W6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png 848w, https://substackcdn.com/image/fetch/$s_!C6W6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png 1272w, https://substackcdn.com/image/fetch/$s_!C6W6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C6W6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png" width="1310" height="940" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:940,&quot;width&quot;:1310,&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_!C6W6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png 424w, https://substackcdn.com/image/fetch/$s_!C6W6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png 848w, https://substackcdn.com/image/fetch/$s_!C6W6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.png 1272w, https://substackcdn.com/image/fetch/$s_!C6W6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e245ca-cbda-4c91-b38d-36c8074a7800_1310x940.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>My copy of the new edition</em></figcaption></figure></div><p>Martin was recently on The Pragmatic Engineer Podcast, where <a href="https://newsletter.pragmaticengineer.com/p/designing-data-intensive-applications">we discussed</a> this updated volume and many related cloud computing matters. We also looked into some topics that have become less relevant over time, like details on MapReduce.</p><p>I asked Martin if this newsletter could share an excerpt of the updated edition of the book about a timeless, important topic, and he generously agreed. So, today we cover:</p><ol><li><p>Cloud versus self-hosting tradeoffs</p></li><li><p>Doing the right thing as a software engineer</p></li></ol><p>These excerpts are only part of the book; the first edition has been on my shelf for years and is now in well-worn condition. I jumped at the chance to get the second edition, and if you&#8217;re interested in building resilient systems, I recommend it as an excellent resource.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781098119058/&quot;,&quot;text&quot;:&quot;Get the second edition of the book&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781098119058/"><span>Get the second edition of the book</span></a></p><p><em>My usual disclaimer: as with all my recommendations, I was not paid for this article, and none of the links are affiliates. See <a href="https://blog.pragmaticengineer.com/ethics-statement/">my ethics statement</a> for more.</em></p><div><hr></div><p><em>The excerpt below is from &#8220;<a href="https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781098119058/">Designing Data-Intensive Applications&#8221; second edition</a>, by Martin Kleppmann and Chris Riccomini. Copyright &#169; 2026 Martin Kleppmann, Chris Riccomini. Published by O&#8217;Reilly Media, Inc. Used with permission.</em></p><h2>1. Cloud versus self-hosting tradeoffs</h2><p><em>This excerpt is from Chapter 1: &#8220;Trade-Offs in Data Systems Architecture&#8221;</em></p><p>For anything that an organization needs to do, one of the first questions is whether it should be done in-house or outsourced. That is, should you build or should you buy?</p><p>Ultimately, this is a question about business priorities. A common rule of thumb is that things that are a core competency or a competitive advantage of your organization should be done in-house, whereas things that are non-core, routine, or commonplace should be left to a vendor [<a href="https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0">20</a>]. To give an extreme example, most companies do not fabricate their own CPUs, since it is cheaper to buy them from the semiconductor manufacturers.</p><p>With software, two important decisions to be made are who builds the software and who deploys it. The spectrum of possibilities is illustrated in Figure 1-2. At one extreme is bespoke software that you write and run in-house; at the other extreme are widely-used cloud services or SaaS products that are implemented and operated by an external vendor and that you access only through a web interface or API.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZkjW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZkjW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 424w, https://substackcdn.com/image/fetch/$s_!ZkjW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 848w, https://substackcdn.com/image/fetch/$s_!ZkjW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 1272w, https://substackcdn.com/image/fetch/$s_!ZkjW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZkjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png" width="1456" height="273" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:273,&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_!ZkjW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 424w, https://substackcdn.com/image/fetch/$s_!ZkjW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 848w, https://substackcdn.com/image/fetch/$s_!ZkjW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 1272w, https://substackcdn.com/image/fetch/$s_!ZkjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75be7d6-2d6d-4564-a598-cfb501bbcc84_2048x384.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><em>Figure 1-2. The spectrum of decisions on outsourcing software and its operations</em></figcaption></figure></div><p>The middle ground is off-the-shelf software (open source or commercial) that you self-host, or deploy yourself &#8211; for example, if you download MySQL and install it on a server you control. This could be on your own hardware (often called &#8216;on-premises,&#8217; even if the server is in a rented datacenter rack and not literally on your own premises), or on a virtual machine (VM) in the cloud (<em>infrastructure as a service</em>, or IaaS). There are more points along this spectrum, such as taking open source software and running a modified version of it.</p><p>A related question is how you deploy services, either in the cloud or on premises &#8211; for example, whether you use an orchestration framework such as Kubernetes. However, choice of deployment tooling is beyond the scope of this book, since other factors have a greater influence on the architecture of data systems.</p><h3>Pros &amp; Cons of Cloud Services</h3><p>Using a cloud service, rather than running comparable software yourself, essentially outsources the operation of that software to the cloud provider. There are good arguments for and against this approach. Cloud providers claim that using their services saves time and money and allows you to move faster compared to setting up your own infrastructure.</p><p>Whether using a cloud service is actually cheaper and easier than self-hosting depends very much on your skills and the workload on your systems, however. If you already have experience of setting up and operating the systems you need, and if your load is quite predictable (i.e., the number of machines you need does not fluctuate wildly), then it&#8217;s often cheaper to buy your own machines and run the software on them yourself [<a href="https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0">21</a>, <a href="https://specbranch.com/posts/one-big-server/">22</a>].</p><p>On the other hand, if you need a system that you don&#8217;t already know how to deploy and operate, adopting a cloud service is often easier and quicker than learning to manage the system. Hiring and training staff specifically to maintain and operate the system can get very expensive. You still need an operations team when you&#8217;re using the cloud, but outsourcing the basic system administration can free up your team to focus on higher-level concerns.</p><p>Outsourcing the operation of a system to a company that specializes in running it can potentially result in better service, since the provider gains operational expertise from providing the service to many customers. On the other hand, if you run the service, you can configure and tune it to perform well on your particular workload. A cloud service would likely be unwilling to make such customizations on your behalf.</p><p>Cloud services are particularly valuable if the load on your systems varies a lot over time. If you provision your machines to be able to handle peak load, but those computing resources are idle most of the time, the system becomes less cost-effective. In this situation, cloud services have the advantage that they can make it easier to scale your computing resources up or down in response to changes in demand.</p><p>For example, analytical systems often have extremely variable load. Running a large analytical query quickly requires a lot of computing resources in parallel, but once the query completes, those resources sit idle until a user makes the next query. Predefined queries (e.g., for daily reports) can be enqueued and scheduled to smooth out the load, but for interactive queries, the faster you want them to complete, the more variable the workload becomes. If your dataset is so large that querying it quickly requires significant computing resources, using the cloud can save money as you can return unused resources to the provider rather than leaving them idle. For smaller datasets, this difference is less significant.</p><p>The biggest downside of a cloud service is that you have no control over it:</p><ul><li><p>If it is lacking a feature you need, all you can do is politely ask the vendor whether they will add it; you generally cannot implement it yourself.</p></li><li><p>If the service goes down, all you can do is wait for it to recover.</p></li><li><p>If you are using the service in a way that triggers a bug or causes performance problems, diagnosing the issue will be difficult. With software that you run yourself, you can get performance metrics and debugging information from the operating system to help you understand its behavior, and you can look at the server logs. With a service hosted by a vendor, you usually do not have access to these internals.</p></li><li><p>If the service shuts down or becomes unacceptably expensive, or if the vendor changes their product in a way you don&#8217;t like, you are at their mercy; continuing to run an old version of the software is usually not an option, so you&#8217;ll be forced to migrate to an alternative service [23]. This risk is mitigated if alternative services expose a compatible API, but for many cloud services there are no standard APIs, which raises the cost of switching, making vendor lock-in a problem.</p></li><li><p>If the cloud provider is in another country and a political conflict arises between that country and your own, you risk being locked out of the service due to imposed sanctions.</p></li><li><p>The cloud provider needs to be trusted to keep the data secure, which can complicate the process of complying with privacy and security regulations.</p></li></ul><p>Despite all these risks, it has become more and more popular for organizations to build new applications on top of cloud services, or to adopt a hybrid approach in which cloud services are used for some aspects of a system. However, cloud services will not subsume all in-house data systems. Many older systems predate the cloud, and for any services that have specialist requirements that existing cloud services cannot meet, in-house systems remain necessary. For example, very latency-sensitive applications such as high-frequency trading require full control of the hardware.</p><h3>Cloud-Native System Architecture</h3><p>Besides having a different economic model (subscribing to a service instead of buying hardware and licensing software to run on it), the rise of the cloud has also had a profound effect on how data systems are implemented on a technical level. The term &#8220;cloud native&#8221; is used to describe an architecture that is designed to take advantage of cloud services.</p><p>In principle, almost any software that you can self-host could also be provided as a cloud service, and indeed, such managed services are now available for many popular data systems. However, systems that have been designed from the ground up to be cloud native have been shown to have several advantages: better performance on the same hardware, faster recovery from failures, being able to quickly scale computing resources to match the load, and supporting larger datasets [<a href="https://media.amazonwebservices.com/blog/2017/aurora-design-considerations-paper.pdf">24</a>, <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2019/05/socrates.pdf">25</a>, <a href="https://www.usenix.org/system/files/nsdi20-paper-vuppalapati.pdf">26</a>]. Table 1-2 lists some examples of both types of 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_!GWaK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GWaK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 424w, https://substackcdn.com/image/fetch/$s_!GWaK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 848w, https://substackcdn.com/image/fetch/$s_!GWaK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 1272w, https://substackcdn.com/image/fetch/$s_!GWaK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GWaK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png" width="1268" height="378" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:378,&quot;width&quot;:1268,&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_!GWaK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 424w, https://substackcdn.com/image/fetch/$s_!GWaK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 848w, https://substackcdn.com/image/fetch/$s_!GWaK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 1272w, https://substackcdn.com/image/fetch/$s_!GWaK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c9fb84-7b57-4970-9dd3-64032ba79950_1268x378.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Table 1-2. Examples of self-hosted and cloud-native database systems</em></figcaption></figure></div><h4>Layering of cloud services</h4><p>Many self-hosted data systems have simple system requirements; they run on a conventional operating system such as Linux or Windows, they store their data as files on the filesystem, and they communicate via standard network protocols such as TCP/IP. A few systems depend on special hardware such as GPUs (for ML) or remote direct memory access (RDMA) network interfaces, but on the whole, self-hosted software tends to use generic computing resources: CPUs, RAM, a filesystem, and an IP network.</p><p>In a cloud, this type of software can be run in an IaaS environment, using one or more VMs (or instances) with a certain allocation of CPUs, memory, disk, and network bandwidth. Compared to physical machines, cloud instances can be provisioned faster and come in a greater variety of sizes, but otherwise they are similar to traditional computers: you can run any software you like on them, but you are responsible for administering it yourself.</p><p>In contrast, the key idea of cloud-native services is not only to use the computing resources managed by your operating system, but also to build upon lower-level cloud services to create higher-level services. For example:</p><ul><li><p>Object storage services such as Amazon S3, Azure Blob Storage, and Cloudflare R2 store large files. They provide more limited APIs than a typical filesystem (basic file reads and writes), but they have the advantage that they hide the underlying physical machines; the service automatically distributes the data across many machines so that you don&#8217;t have to worry about running out of disk space on any one machine. Even if some machines or their disks fail entirely, no data is lost.</p></li><li><p>Many other services are, in turn, built upon object storage and other cloud services. For instance, Snowflake is a cloud-based analytical database (data warehouse) that relies on S3 for data storage [<a href="https://www.usenix.org/system/files/nsdi20-paper-vuppalapati.pdf">26</a>], and some other services, in turn, build upon Snowflake.</p></li></ul><p>As always with abstractions in computing, there is no one right answer to what you should use. As a general rule, higher-level abstractions tend to be more oriented toward particular use cases. If your needs match the situations for which a higher-level system is designed, using the existing higher-level system will probably meet your needs with much less hassle than building it yourself from lower-level systems would. On the other hand, if no high-level system meets your needs, building it yourself from lower-level components is the only option.</p><h4>Separation of storage and compute</h4><p>In traditional computing, disk storage is regarded as durable (we assume that once something is written to disk, it will not be lost). To tolerate the failure of an individual hard disk, RAID (redundant array of independent disks) is often used to maintain copies of the data on several disks attached to the same machine. RAID can be implemented either in hardware or in software by the operating system, and it is transparent to the applications accessing the filesystem.</p><p>In the cloud, compute instances (VMs) may also have local disks attached, but cloud-native systems typically treat these disks more like an ephemeral cache and less like long-term storage. This is because the local disk becomes inaccessible if the associated instance fails, or if the instance is replaced with a bigger or a smaller one (on a different physical machine) to adapt to changes in load.</p><p>As an alternative to local disks, cloud services also offer virtual disk storage that can be detached from one instance and attached to a different one (e.g., Amazon EBS, Azure managed disks, and persistent disks in Google Cloud). Such a virtual disk is not a physical disk, but rather a cloud service provided by a separate set of machines that emulates the behavior of a disk (a block device, where each block is typically 4 KiB in size). This technology makes it possible to run traditional disk-based software in the cloud, but the block device emulation introduces overheads that can be avoided in systems that are designed from the ground up for the cloud [<a href="https://media.amazonwebservices.com/blog/2017/aurora-design-considerations-paper.pdf">24</a>]. The use of virtual disks also makes the application very sensitive to network glitches, since every I/O operation on the virtual block device is a network call [<a href="https://planetscale.com/blog/the-real-fail-rate-of-ebs">27</a>].</p><p>To address this problem, cloud-native services generally avoid using virtual disks and instead build on dedicated storage services that are optimized for particular workloads. Object storage services such as S3 are designed for long-term storage of fairly large files, ranging from hundreds of kilobytes to several gigabytes in size. The individual rows or values stored in a database are typically much smaller than this; cloud databases therefore typically manage smaller values in a separate service and store larger data blocks (containing many individual values) in an object store [<a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2019/05/socrates.pdf">25</a>, <a href="https://blog.colinbreck.com/predicting-the-future-of-distributed-systems/">28</a>].</p><p>In traditional systems architecture, the same computer is responsible for both storage (disk) and computation (CPU and RAM), but in cloud-native systems, these two responsibilities have become somewhat separated, or disaggregated [<a href="https://dl.acm.org/doi/abs/10.1145/3514221.3526055">9</a>, <a href="https://www.usenix.org/system/files/nsdi20-paper-vuppalapati.pdf">26</a>, <a href="https://www.thenile.dev/blog/storage-compute-separation">29</a>, <a href="https://cloud.google.com/blog/products/databases/alloydb-for-postgresql-intelligent-scalable-storage">30</a>]: for example, S3 only stores files, and if you want to analyze that data, you will have to run the analysis code somewhere outside of S3. This implies transferring the data over the network.</p><p>Furthermore, cloud-native systems are often multitenant, which means that rather than having a separate machine for each customer, data and computation from several customers are handled on the same shared hardware by the same service [<a href="https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781098119058/ch01.html#Vanlightly2023serverless">31</a>]. Multitenancy can enable better hardware utilization, easier scalability, and easier management by the cloud provider, but it also requires careful engineering to ensure that one customer&#8217;s activity does not affect the performance or security of the system for other customers [<a href="https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781098119058/ch01.html#Jonas2019">32</a>].</p><h3>Operations in the Cloud Era</h3><p>Traditionally, the people managing an organization&#8217;s server-side data infrastructure were known as database administrators (DBAs), or system administrators (sysadmins). More recently, many organizations have tried to integrate the roles of software development and operations into teams with a shared responsibility for both backend services and data infrastructure; the DevOps philosophy has guided this trend. Site reliability engineers (SREs) are Google&#8217;s implementation of this idea [<a href="https://www.oreilly.com/library/view/site-reliability-engineering/9781491929117/">33</a>].</p><p>The role of operations is to ensure that services are reliably delivered to users (including configuring infrastructure and deploying applications) and to ensure a stable production environment (including monitoring and diagnosing any problems that may affect reliability). For self-hosted systems, operations traditionally involve a significant amount of work at the level of individual machines, such as capacity planning (e.g., monitoring available disk space and adding more disks before you run out of space), provisioning new machines, moving services from one machine to another, and installing operating system patches.</p><p>Many cloud services present an API that hides the individual machines implementing the service. For example, cloud storage replaces fixed-size disks with metered billing, where you can store data without planning your capacity needs in advance, and you are then charged based on the space used. Moreover, many cloud services remain highly available, even when individual machines have failed.</p><p>This shift in emphasis from individual machines to services has been accompanied by a change in the role of operations. The high-level goal of providing a reliable service remains the same, but the processes and tools have evolved.</p><p>The DevOps/SRE philosophy places greater emphasis on the following:</p><ul><li><p>Setting up automation; preferring repeatable processes over manual one-off jobs</p></li><li><p>Using ephemeral VMs and services rather than long-running servers</p></li><li><p>Enabling frequent application updates</p></li><li><p>Learning from incidents</p></li><li><p>Preserving the organization&#8217;s knowledge about the system, even as individuals come and go [<a href="https://queue.acm.org/detail.cfm?id=3434773">34</a>]</p></li></ul><p>With the rise of cloud services, a bifurcation of roles has occurred. Operations teams at infrastructure companies specialize in the details of providing a reliable service to a large number of customers, while the customers of the service spend as little time and effort as possible on infrastructure [<a href="https://www.pluralsight.com/resources/blog/cloud/the-future-of-ops-jobs">35</a>].</p><p>Customers of cloud services still require operations, but they focus on different aspects, such as choosing the most appropriate service for a given task, integrating services with each other, and migrating from one service to another. Even though metered billing removes the need for capacity planning in the traditional sense, it&#8217;s still important to know what resources you are using for which purpose so that you don&#8217;t waste money on cloud resources that are not needed. Capacity planning becomes financial planning, and performance optimization becomes cost optimization [<a href="https://medium.com/riskified-technology/over-pay-as-you-go-for-your-datastore-11a29ae49a8b">36</a>]. Additionally, cloud services do have resource limits or quotas (such as the maximum number of processes you can run concurrently), which you need to know about and plan for before you run into them [<a href="https://thenewstack.io/serverless-doesnt-mean-devopsless-or-noops/">37</a>].</p><p>Adopting a cloud service can be easier and quicker than provisioning and running your own infrastructure, although you still have to learn how to use the cloud service and perhaps work around its limitations. Integration among services becomes a particular challenge as a growing number of vendors offer an ever-broader range of cloud services targeting different use cases [<a href="https://erikbern.com/2021/11/30/storm-in-the-stratosphere-how-the-cloud-will-be-reshuffled.html">38</a>, <a href="https://benn.substack.com/p/the-data-os">39</a>]. ETL is only part of the story; operational cloud services also need to be integrated with each other. At present, we lack standards to facilitate this sort of integration, so it often involves significant manual effort.</p><p>Other operational aspects that cannot fully be outsourced to cloud services include maintaining the security of an application and the libraries it uses, managing the interactions between your own services, monitoring the load on your services, and tracking down the cause of problems such as performance degradations or outages. While the cloud is changing the role of operations, the need for operations is as great as ever.</p><h2>2. Doing the right thing as a software engineer</h2><p><em>The excerpt below is a section from Chapter 14, &#8220;Doing the Right Thing&#8221;</em></p><p>In the final chapter of this book, let&#8217;s take a step back. Throughout, we have examined a wide range of architectures for data systems, evaluated their pros and cons, and explored techniques for building reliable, scalable, and maintainable applications. However, we have left out a fundamental part of the discussion, which we should now fill in.</p><p>Every system is built for a purpose; every action we take has both intended and unintended consequences. The purpose may be as simple as making money, but the consequences may be far-reaching. We, the engineers building these systems, have a responsibility to carefully consider those consequences and to ensure that our decisions do not cause harm.</p><p>We talk about data as an abstract thing, but remember that many datasets are about people: their behavior, their interests, their identities. We must treat such data with humanity and respect. Users are humans too, and human dignity is paramount [<a href="https://schmud.de/posts/2024-08-18-data-is-a-bad-idea.html">1</a>].</p><p>Software development increasingly involves making important ethical choices. There are guidelines to help software engineers navigate these issues, such as the ACM Code of Ethics and Professional Conduct [<a href="https://www.acm.org/code-of-ethics">2</a>], but they are rarely discussed, applied, or enforced in practice. As a result, engineers and product managers sometimes take a cavalier attitude to privacy and the potential negative consequences of their products [<a href="https://www.linkedin.com/blog/engineering/archive/making-hard-choices-the-quest-for-ethics-in-machine-learning">3</a>, <a href="https://www.theguardian.com/commentisfree/2015/dec/06/algorithm-writers-should-have-code-of-conduct">4</a>].</p><p>A technology is not good or bad in itself &#8211; what matters is how it is used and how it affects people. This is true of a software system such as a search engine in much the same way as it is for a weapon like a gun. The ethical responsibility is ours to bear; it is not sufficient for software engineers to focus exclusively on the technology and ignore its consequences.</p><p>In contrast to much of computing, however, the concepts at the heart of ethics are not fixed or determinate in their precise meaning; they require interpretation, which may be subjective [<a href="https://cacm.acm.org/opinion/ethical-ai-is-not-about-ai/">5</a>]. What makes something &#8220;good&#8221; or &#8220;bad&#8221; is not well defined, and serious discourse on the subject among computing professionals is lacking [<a href="https://www.benzevgreen.com/wp-content/uploads/2019/11/19-ai4sg.pdf">6</a>]. Reasoning about ethics is difficult, but also too important to ignore. What does this entail? &#8220;Ethics&#8221; are not a checklist with which to comply; it&#8217;s a participatory and iterative process of reflection, in dialogue with people involved and accountability for the results [<a href="https://cacm.acm.org/opinion/ethics-as-a-participatory-and-iterative-process/">7</a>].</p><h3>Predictive Analytics</h3><p>Predictive analytics is a major part of why people are excited about big data and AI. It&#8217;s also an area that is fraught with ethical dilemmas. Using data analysis to predict the weather, or the spread of diseases, is one thing [<a href="https://cacm.acm.org/news/what-happens-when-big-data-blunders/">8</a>]; it is another matter to predict whether a convict is likely to reoffend, whether an applicant for a loan is likely to default, or whether an insurance customer is likely to make expensive claims [<a href="https://www.cl.cam.ac.uk/research/security/seminars/archive/video/2023-03-07-t196231.html">9</a>]. The latter have a direct effect on people&#8217;s lives.</p><p>Naturally, payment networks want to prevent fraudulent transactions, banks want to avoid bad loans, airlines want to avoid hijackings, and companies want to avoid hiring ineffective or untrustworthy people. From their point of view, the cost of a missed business opportunity is low, but the cost of a bad loan or a problematic employee is much higher, so it is expected for organizations to be cautious. If in doubt, they are better off saying &#8220;no&#8221;.</p><p>However, as algorithmic decision making becomes more widespread, someone who has (accurately or falsely) been labeled as risky by an algorithm may suffer a large number of &#8220;no&#8221; decisions. Systematically being excluded from jobs, air travel, insurance coverage, property rental, financial services, and other key aspects of society is such a large constraint on an individual&#8217;s freedom that it has been called &#8220;algorithmic prison&#8221; [<a href="https://www.theatlantic.com/technology/archive/2014/02/welcome-to-algorithmic-prison/283985/">10</a>]. In countries that respect human rights, the criminal justice system presumes innocence until proven guilty; on the other hand, automated systems can systematically and arbitrarily exclude a person from participating in society without any proof of guilt and little chance of appeal.</p><h4>Bias &amp; discrimination</h4><p>Decisions made by an algorithm are not necessarily any better or any worse than those made by a human. Everyone is likely to have biases, even if they actively try to counteract them, and discriminatory practices can become culturally institutionalized. There is hope that basing decisions on data, rather than subjective and instinctive human assessments, could be more fair and give a better chance to people who are often overlooked or disadvantaged in the traditional system [<a href="https://www.theatlantic.com/magazine/archive/2013/12/theyre-watching-you-at-work/354681/">11</a>].</p><p>When we develop predictive analytics and AI systems, we are not merely automating a human&#8217;s decision by using software to specify the rules for when to say &#8220;yes&#8221; or &#8220;no&#8221;; we are leaving the rules themselves to be inferred from data. However, the patterns learned by these systems are opaque: even if the data indicates a correlation, we may not know why. If the input to an algorithm carries a systematic bias, the system will most likely learn and amplify that bias in its output [<a href="https://www.theguardian.com/technology/2016/aug/03/algorithm-racist-human-employers-work">12</a>].</p><p>In many countries, anti-discrimination laws prohibit treating people differently depending on protected traits such as ethnicity, age, gender, sexuality, disability, or beliefs. Other features of a person&#8217;s data may be analyzed, but what happens if they are correlated with protected traits? For example, in racially segregated neighborhoods, a person&#8217;s postal code or even their IP address is a strong predictor of race. Put like this, it seems ridiculous to believe that an algorithm could somehow take biased data as input and produce fair and impartial output from it [<a href="https://www.scientificamerican.com/article/how-a-machine-learns-prejudice/">13</a>, <a href="https://www.ftc.gov/system/files/ftc_gov/pdf/EEOC-CRT-FTC-CFPB-AI-Joint-Statement%28final%29.pdf">14</a>]. Yet this belief often seems to be implied by proponents of data-driven decision making; an attitude that has been satirized as &#8220;machine learning is like money laundering for bias&#8221; [<a href="https://idlewords.com/talks/sase_panel.htm">15</a>].</p><p>Predictive analytics systems merely extrapolate from the past; if the past is discriminatory, they codify and amplify that discrimination [<a href="https://www.zdnet.com/article/artificial-intelligence-in-healthcare-is-racist/">16</a>]. If we want the future to be better than the past, moral imagination is required, and that&#8217;s something only humans can provide [<a href="https://www.amazon.com/Weapons-Math-Destruction-Increases-Inequality/dp/0553418815">17</a>]. Data and models should be our tools, not our masters.</p><h4>Responsibility and Accountability</h4><p>Automated decision-making raises the question of responsibility and accountability [<a href="https://www.amazon.com/Weapons-Math-Destruction-Increases-Inequality/dp/0553418815">17</a>]. If a human makes a mistake, they can be held accountable, and the person affected by the decision can appeal. Algorithms make mistakes too, but who is accountable when they go wrong? [<a href="https://www.nytimes.com/2016/08/01/opinion/make-algorithms-accountable.html">18</a>] When a self-driving car causes an accident, who is responsible? If an automated credit scoring algorithm systematically discriminates against people of a particular race or religion, is there any recourse? If a decision by your ML system comes under judicial review, can you explain to the judge how the algorithm made its decision? People should not be able to evade responsibility by blaming an algorithm.</p><p>Credit rating agencies are a classic example of collecting data to make decisions about people. A bad credit score makes life difficult, but at least a credit score is normally based on relevant facts about a person&#8217;s actual borrowing history, and any errors in the record can be corrected (although the agencies normally do not make this easy). Scoring algorithms based on machine learning, however, typically use a much wider range of inputs and are much more opaque, making it harder to understand how a particular decision has come about and whether someone is being treated in an unfair or discriminatory way [<a href="https://arxiv.org/abs/1606.08813">19</a>].</p><p>A credit score summarizes &#8220;how did you behave in the past?&#8221; whereas predictive analytics usually work on the basis of &#8220;who is similar to you, and how did people like you behave in the past?&#8221; Drawing parallels to others&#8217; behavior implies stereotyping people; for example, based on where they live (a close proxy for race and socioeconomic class). What about people put in the wrong bucket? Furthermore, if a decision is incorrect because of erroneous data, recourse is almost impossible [<a href="https://www.amazon.com/Weapons-Math-Destruction-Increases-Inequality/dp/0553418815">17</a>].</p><p>Much data is statistical in nature, which means that even if the probability distribution on the whole is correct, individual cases may well be wrong. For example, if the average life expectancy in your country is 80 years, that doesn&#8217;t mean you&#8217;re expected to drop dead on your 80th birthday. From the average and the probability distribution, you can&#8217;t say much about the age to which someone will live. Similarly, the output of a prediction system is probabilistic and may well be wrong in individual cases.</p><p>A blind belief in the supremacy of data for making decisions is not only delusional, but also positively dangerous. As data-driven decision making becomes more widespread, we will need to figure out how to avoid reinforcing existing biases, how to make algorithms accountable and transparent, and how to fix them when they inevitably make mistakes.</p><p>We will also need to figure out how to realize the positive potential of data and prevent it from being used to harm people. For example, analytics can reveal financial and social characteristics about personal lives. On the one hand, this power could be used to focus aid and support to help those who need it most. On the other hand, it is sometimes used by predatory businesses seeking to identify vulnerable people and sell them risky products such as high-cost loans or worthless college degrees [<a href="https://www.amazon.com/Weapons-Math-Destruction-Increases-Inequality/dp/0553418815">17</a>, <a href="https://www.commerce.senate.gov/wp-content/uploads/media/doc/12.18.13%20Senate%20Commerce%20Committee%20Report%20on%20Data%20Broker%20Industry.pdf">20</a>].</p><h4>Feedback loops</h4><p>Even with predictive applications with less immediately far-reaching effects on people, such as recommendation systems, there are difficult issues that we must confront. When services become good at predicting the content users want to see, they may end up showing them only opinions they already agree with, leading to echo chambers in which stereotypes, misinformation, and polarization can breed. We already know the impact that social media echo chambers can have on election campaigns.</p><p>When predictive analytics affect people&#8217;s lives, particularly pernicious problems arise because of self-reinforcing feedback loops. For example, consider the case of employers using credit scores to evaluate potential hires. You may be a good worker with a good credit score, but suddenly find yourself in financial difficulties due to a misfortune beyond your control. As you miss payments on your bills, your credit score suffers, and you will be less likely to find work. Joblessness pushes you toward poverty, which further worsens your score, making it even harder to find employment [<a href="https://www.amazon.com/Weapons-Math-Destruction-Increases-Inequality/dp/0553418815">17</a>]. It&#8217;s a downward spiral due to poisonous assumptions, hidden behind a camouflage of mathematical rigor and data.</p><p>As another example of a feedback loop, economists found that when gas stations in Germany introduced algorithmic prices, competition was reduced and prices for consumers went up because the algorithms learned to collude [<a href="https://economics.yale.edu/sites/default/files/clark_acex_jan_2021.pdf">21</a>].</p><p>We can&#8217;t always predict when such feedback loops may happen. However, many consequences can be predicted by thinking about an entire system (not just the computerized parts, but also the people interacting with it), in an approach known as &#8220;systems thinking&#8221; [<a href="https://www.amazon.nl/Thinking-Systems-Primer-Diana-Wright/dp/1844077268">22</a>]. We can try to understand how a data analysis system responds to different behaviors, structures, or characteristics. Does the system reinforce and amplify existing differences between people (e.g., making the rich richer or the poor poorer), or does it try to combat injustice? Even with the best intentions, we must beware of the possibility of unintended consequences.</p><h3>Surveillance</h3><p><em>The excerpt below is from another section in Chapter 14, &#8220;Doing the Right Thing&#8221;</em></p><p>As a thought experiment, try replacing the word &#8220;data&#8221; with &#8220;surveillance&#8221;, and observe whether common phrases still sound so good [<a href="https://x.com/hashbreaker/status/598076230437568512">23</a>]. How about this: &#8220;In our surveillance-driven organization we collect real-time surveillance streams and store them in our surveillance warehouse. Our surveillance scientists use advanced analytics and surveillance processing in order to derive new insights.&#8221;</p><p>This thought experiment is unusually polemical for this book, &#8220;<em>Designing <strong>Surveillance</strong>-Intensive Applications</em>&#8221;, but strong words are needed to emphasize this point. In our attempts to make software &#8220;eat the world&#8221; [<a href="https://a16z.com/why-software-is-eating-the-world/">24</a>], we have built the greatest mass surveillance infrastructure ever seen. We are rapidly approaching a world in which every inhabited space contains at least one internet-connected microphone, in the form of smartphones, smart TVs, voice-controlled assistant devices, baby monitors, and even children&#8217;s toys that use cloud-based speech recognition. Many of these devices have terrible security track records [<a href="https://arstechnica.com/information-technology/2016/01/how-to-search-the-internet-of-things-for-photos-of-sleeping-babies/">25</a>].</p><p>What is new compared to the past is that digitization has made it easy to collect large amounts of data about people. Surveillance of our location and movements, our social relationships and communications, our purchases and payments, and our health data has become almost unavoidable. A surveillance organization may end up knowing more about a person than that person knows about themselves; for example, identifying illnesses or economic problems before that individual is aware of them.</p><p>Even the most totalitarian, repressive regimes of the past could only dream of putting a microphone in every room and forcing every person to constantly carry a device capable of tracking their location and movements. Yet the benefits that we get from digital technology are so great that we now voluntarily accept this state of total surveillance. The difference is just that the data is being collected by corporations to provide us with services, rather than government agencies seeking control [<a href="https://www.schneier.com/books/data-and-goliath">26</a>].</p><p>Not all data collection necessarily qualifies as surveillance, but examining it as such can help us understand our relationship with the data collector. Why are we seemingly happy to accept surveillance by corporations? Perhaps you feel you have nothing to hide; in other words, you are totally in line with existing power structures, you are not a marginalized minority, and you needn&#8217;t fear persecution [<a href="https://grugq.tumblr.com/post/142799983558/nothing-to-hide">27</a>]. Not everyone is so fortunate. Or perhaps it&#8217;s because the purpose seems benign; it&#8217;s not overt coercion and conformance, merely better recommendations and more personalized marketing. However, combined with the discussion of predictive analytics from the last section, that distinction seems less clear.</p><p>We are already seeing behavioral data about driving, tracked by vehicles without drivers&#8217; consent, affecting their insurance premiums [<a href="https://www.ftc.gov/news-events/news/press-releases/2025/01/ftc-takes-action-against-general-motors-sharing-drivers-precise-location-driving-behavior-data">28</a>], and health insurance coverage that depends on people wearing a fitness tracking device. When surveillance is used to make decisions that hold sway over important aspects of life, such as insurance coverage or employment, it starts to appear less benign. Data analysis can also reveal surprisingly intrusive things; for example, the movement sensor in a smartwatch or fitness tracker can be used to work out what you are typing (e.g., passwords) with fairly good accuracy [<a href="https://arxiv.org/abs/1512.05616">29</a>]. Sensor accuracy and algorithms for analysis are only going to get better.</p><h2>Takeaways</h2><p>Thanks to Martin for writing this book, and to himself and Chris for doing a revamp for the second edition. The volume is now even more relevant to how we build systems in 2026 and beyond. You can purchase a hard copy from <a href="https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781098119058/">the publisher&#8217;s website</a> or <a href="https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1098119061">Amazon</a>.</p><p>The first edition has a timeless quality because it focused on the fundamentals of large systems, and the new second edition follows the same approach, as laid out in its preface:</p><blockquote><p>&#8220;Although the landscape of technologies for processing and storing data is diverse and fast-changing, the underlying principles endure. If you understand those principles, you&#8217;re in a position to see where each tool fits in, how to make good use of it, and how to avoid its pitfalls. This book focuses on those principles.&#8221;</p></blockquote><p>Since the first edition appeared nine years ago, some things have changed in the tech industry:</p><ul><li><p><strong>Much greater focus on the cloud. </strong>Building large systems on top of cloud infrastructure is more common. This brings lower complexity as cloud primitives hide a lot of implementation complexity, but it also means accepting more risk because when the cloud is down, so is your system.</p></li><li><p><strong>Systems which AI tools build upon are more relevant. </strong>Vector databases, <a href="https://www.geeksforgeeks.org/python/pandas-create-test-and-train-samples-from-dataframe/">DataFrames</a> (for training datasets), and the processing of large amounts of training data with batch processing systems are relevant to anyone building production AI systems.</p></li><li><p><strong>Local-first software. </strong>Martin focuses on this area in his work, and with AI, we could see more demand for running models locally. Operating systems like Ubuntu are also <a href="https://newsletter.pragmaticengineer.com/i/195753987/4-betting-on-local-first-and-plans-for-agentic-workflows">focusing on this</a>.</p></li><li><p><strong>Formal methods. </strong>The advent of AI-generated code means this topic is getting more attention industry-wide, and the second edition covers it.</p></li><li><p><strong>Regulation and legal context. </strong>Regulations like the EU&#8217;s General Data Protection Regulation (GDPR) are something software engineers increasingly need to know about, and the book now covers it.</p></li></ul><p>If I had to summarize the evolution of the book in its second edition, it would be more focus on cloud and AI, and more on local-first software, testing, and how regulations affect engineers. Interestingly, this mirrors how the tech industry has developed over time, too.</p><p>I very much appreciate that the book closes with the final chapter focused on &#8220;doing the right thing&#8221; as a software engineer. Software systems have wide-ranging societal impact, and engineers working on these systems have a great say in what gets built, and how it gets built. As engineers, we owe it the very least to ourselves to consider the broader impact of our decisions &#8212; and doing so might also force us to make important ethical choices. There&#8217;s less discussion of the ethics angle on software engineering: and I&#8217;m glad that Martin and Chris did not shy away from going deeper into this topic.</p><p>If you&#8217;d like to get more background on the book &#8211; and on the hard parts of building large-scale systems &#8211; check out <a href="https://newsletter.pragmaticengineer.com/p/designing-data-intensive-applications">our podcast episode with Martin Kleppmann.</a></p>]]></content:encoded></item><item><title><![CDATA[How will AI change operating systems? Part 1: Ubuntu and Linux]]></title><description><![CDATA[A deepdive with the Canonical team into how AI is changing Ubuntu, why they&#8217;re betting on local-first LLMs, and a look into other Linux distributions]]></description><link>https://newsletter.pragmaticengineer.com/p/ubuntu-and-ai</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/ubuntu-and-ai</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 28 Apr 2026 14:25:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4X83!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI is affecting how many of us software engineers build; we&#8217;re prompting more code and producing much more of it. The tools are also adapting, with command-line interfaces gradually becoming more popular than IDEs. But what about operating systems? To find out, I reached out to the leading Linux distribution &#8211; the team at Ubuntu &#8211; and the Windows team, about how AI is changing their operating systems.</p><p>Today&#8217;s article focuses on Linux and Ubuntu, and we&#8217;ll cover Windows in a follow-up issue.<em> Obviously, I reached out to Apple but heard nothing back, unsurprisingly. If you&#8217;re reading this and happen to work at Apple, it&#8217;d be great to learn more!</em></p><p><a href="https://jnsgr.uk/">Jon Seager</a> is VP of Engineering at Canonical &#8211; the company behind Ubuntu &#8211; and has provided new details about what the team there has built for AI support, and some new ideas that they&#8217;re brewing up. Today, we cover:</p><ol><li><p><strong>Hardware enablement: support for GPUs, NPUs and DPUs. </strong>When you turn on a machine with AI accelerators, Ubuntu aims for the hardware to perform at its full potential. This means having proper driver support for PCs and cloud data centers&#8217; computing units.</p></li><li><p><strong>Hardware partnerships. </strong>Working closely with NVIDIA, AMD, and Intel means Ubuntu can support those vendors&#8217; new hardware from release day.</p></li><li><p><strong>CPU architecture variants</strong>. New versions in a CPU family add to, or change, features. An operating system needs to support a new version of the CPU architecture variant in order to fully utilize it. Ubuntu does this for the x86&#8209;64 family, making it a <em>lot</em> more performant on newer CPUs &#8211; while still supporting older CPUs.</p></li><li><p><strong>Local-first bet &amp; plans for agentic workflows</strong>. There&#8217;s a big focus on running local models and using &#8220;inference snaps&#8221; which help choose the right model with the right quantization. There is the intention to support agentic workflows at the OS level, one day, which is currently at the early exploration stage.</p></li><li><p><strong>Developer ecosystem</strong>. There&#8217;s a plan to add more support for AI dev tools, a focus on sandboxing at the OS level, a push to support ARM64 laptops more, and we touch on the popularity of Windows Subsystem for Linux (WSL).</p></li><li><p><strong>Engineering culture. </strong>A skeptical attitude to AI at Canonical has given way to one where experimentation is encouraged and devs<strong> </strong>lean into AI tools, but there are no targets for token usage or amounts of AI-generated code.</p></li><li><p><strong>What other Linux distributions are doing. </strong>Arch Linux takes the &#8220;DIY your AI setup&#8221; approach, Omarchy makes it easy to install AI tools, while Red Hat Enterprise Linux ships with AI integrated into the command-line and support for AI accelerators &amp; popular AI tools.</p></li></ol><p><em>The bottom of this article could be cut off in some email clients. <a href="https://newsletter.pragmaticengineer.com/p/ubuntu-and-ai">Read the full article uninterrupted, online.</a></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.pragmaticengineer.com/p/ubuntu-and-ai&quot;,&quot;text&quot;:&quot;Read the full article online&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.pragmaticengineer.com/p/ubuntu-and-ai"><span>Read the full article online</span></a></p><h2>1. Hardware enablement: support for GPUs, NPUs &amp; DPUs</h2><p>Jon mentioned he detects a &#8220;Dotcom Boom&#8221;-era vibe in the industry, like around when &#8220;web 1.0&#8221; was created, and indeed, lots of startups today aim to be the Google-style success story of this &#8220;AI era&#8221;. At Canonical, the team asked: what does that mean for Ubuntu as an operating system?</p><p>For instance, should Ubuntu join the competition and try to position itself closer to AI, or keep focusing on what they&#8217;ve done for decades: build an operating system? Jon said:</p><blockquote><p>&#8220;We need to make sure to remain a relatable and accessible system. I don&#8217;t think we should blur the line between application features and the OS itself. So, the most powerful thing we can do is hardware enablement.&#8221;</p></blockquote><p>Hardware enablement means that if a computer (typically, a laptop) has AI-related hardware, Ubuntu should allow it to make full use of it. This involves adding support for GPUs, NPUs, DPUs and other types of accelerator cards. Let&#8217;s briefly go through each.</p><h3>GPUs</h3><p>As is likely widely known by readers, &#8216;GPU&#8217; stands for Graphics Processing Unit. Originally built for graphics rendering, its #1 use case is no longer in video games but for AI training and inference. GPUs come in two forms:</p><ul><li><p>Integrated GPUs: located on the same <a href="https://en.wikipedia.org/wiki/Die_(integrated_circuit)">die</a> (integrated circuit) as the CPU, like GPUs on Apple&#8217;s M-series processors</p></li><li><p>Discrete GPUs: separate chips on their own board; often for gaming, or in standalone GPU rigs for AI and ML workloads</p></li></ul><p>NVIDIA leads the market in discrete GPUs for rigs with its <a href="https://www.nvidia.com/en-us/data-center/technologies/blackwell-architecture/">Blackwell family</a>, and in standalone GPU cards with the <a href="https://www.nvidia.com/en-us/geforce/rtx/">NVIDIA RTX</a> series. Other vendors like AMD offer GPUs for data centers (like the <a href="https://www.amd.com/en/products/accelerators/instinct/mi300.html">Instinct MI300 Series</a>) and for PCs with the <a href="https://www.amd.com/en/products/graphics/desktops/radeon.html">AMD Radeon</a> series.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!unR1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!unR1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 424w, https://substackcdn.com/image/fetch/$s_!unR1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 848w, https://substackcdn.com/image/fetch/$s_!unR1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 1272w, https://substackcdn.com/image/fetch/$s_!unR1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!unR1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png" width="1440" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1440,&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_!unR1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 424w, https://substackcdn.com/image/fetch/$s_!unR1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 848w, https://substackcdn.com/image/fetch/$s_!unR1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 1272w, https://substackcdn.com/image/fetch/$s_!unR1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7757d200-11b3-4ad0-ac48-3cebcdcf78aa_1440x970.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Hands full: NVIDIA CEO Jensen Huang with the Blackwell GPU (left) and GB200 superchip. Source: <a href="https://fortune.com/2024/03/19/nvidia-new-blackwell-chip-ai-carbon-footprint-problem/">Forbes</a></em></figcaption></figure></div><h3>NPUs</h3><p>Neural Processing Units (NPUs) are also called &#8220;AI accelerators.&#8221; This is a dedicated block on the System-on-a-chip (SoC), on modern processors especially designed for running <a href="https://newsletter.pragmaticengineer.com/p/what-is-inference-engineering">AI inference</a> efficiently on&#8209;device. Since 2022, many modern processors have had a dedicated NPU block, including all Apple&#8217;s M-series chips (from M1 and up), Intel&#8217;s Core Ultra and Core Ultra &#8220;Series 2&#8221;, AMD&#8217;s Ryzen AI 300 series, and also Qualcomm&#8217;s Snapdragon X Elite and Snapdragon X Plus.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4X83!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4X83!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 424w, https://substackcdn.com/image/fetch/$s_!4X83!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 848w, https://substackcdn.com/image/fetch/$s_!4X83!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 1272w, https://substackcdn.com/image/fetch/$s_!4X83!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4X83!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png" width="1075" height="612" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:612,&quot;width&quot;:1075,&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_!4X83!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 424w, https://substackcdn.com/image/fetch/$s_!4X83!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 848w, https://substackcdn.com/image/fetch/$s_!4X83!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 1272w, https://substackcdn.com/image/fetch/$s_!4X83!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93367d9-f13e-4630-952d-68caf3c34f4e_1075x612.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>AMD&#8217;s Ryzen AI Pro Series 3000 processors have dedicated NPUs, like most modern laptop processors</em></figcaption></figure></div><p>A number shared for each NPU is TOPS. TOPS means Tera (trillions) of Operations Per Second, and the said operation is a &#8220;multiply-accumulate&#8221; (MAC) one, which <a href="https://www.qualcomm.com/news/onq/2024/04/a-guide-to-ai-tops-and-npu-performance-metrics">Qualcomm describes as:</a></p><blockquote><p>&#8220;A multiply-accumulate (MAC) operation executes the mathematical formulas at the core of AI workloads. A matrix multiply consists of a series of two fundamental operations: multiplication and addition to an accumulator. A MAC unit can, for example, run one of each per clock cycle, meaning it executes two operations per clock cycle. A given NPU has a set number of MAC units that can operate at varying levels of precision, depending on the NPU&#8217;s architecture.&#8221;</p></blockquote><p>How TOPS is calculated: TOPS = 2 &#215; MAC unit count &#215; Frequency / 1 trillion.</p><p>&#8220;Frequency&#8221; refers to the clock speed (cycles per second) at which an NPU and its MAC units (as well as a CPU or GPU) operate, which directly influences overall performance. Processors at higher frequencies allow for more operations, but higher frequencies also mean more energy consumed, heat generated, and battery life decreased. The TOPS number that&#8217;s quoted for processors is generally the peak operating frequency.</p><p>NPUs are often ideal for low-power, local inference, and for running smaller, local models. They can be useful for things like Local speech&#8209;to&#8209;text (dictation, captions, meeting transcription), video background blur/replacement or auto&#8209;framing, small local language summarization, etc. NPUs are more typical of laptop and PC processors, although some phone processors ship with them like the iPhone (A-series chips) and Google&#8217;s Tensor processor in Pixel phones. Basically, NPUs promise to bring efficiently-running local models on laptops one step closer.</p><h3>DPUs</h3><p>Data Processing Units (DPUs) are typically found in data centers, moving massive amounts of data fast. NVIDIA&#8217;s explanation:</p><blockquote><p>&#8220;The CPU is for general-purpose computing, the GPU is for accelerated computing, and the DPU, which moves data around the data center, does data processing.</p><p>A DPU is a new class of programmable processor that combines three key elements. A DPU is a system on a chip, or SoC, that combines:</p><ul><li><p>An industry-standard, high-performance, software-programmable, multi-core CPU, typically based on the widely used Arm architecture, tightly coupled to the other SoC components.</p></li><li><p>A high-performance network interface capable of parsing, processing and efficiently transferring data at line rate, or the speed of the rest of the network, to GPUs and CPUs.</p></li><li><p>A rich set of flexible and programmable acceleration engines that offload and improve applications&#8217; performance for AI and machine learning, zero-trust security, telecommunications, and storage, among others.&#8221;</p></li></ul></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DX7g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DX7g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 424w, https://substackcdn.com/image/fetch/$s_!DX7g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 848w, https://substackcdn.com/image/fetch/$s_!DX7g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!DX7g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DX7g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png" width="1456" height="990" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:990,&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_!DX7g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 424w, https://substackcdn.com/image/fetch/$s_!DX7g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 848w, https://substackcdn.com/image/fetch/$s_!DX7g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!DX7g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36c2607-8ed3-4da3-8fa9-c93d6dbf890d_1500x1020.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>NVIDIA BlueField-3 DPU</em></figcaption></figure></div><p>Several major chipmakers manufacture DPUs, of which NVIDIA&#8217;s BlueField family is the most widespread. Others include AMD Pensando DPUs (Elba, Giglio), and Intel IPU / DPU cards (E2100, E2200 series).</p><p>DPUs are most commonly deployed inside Hyperscale cloud providers (AWS, Azure, GCP, OCI), or in AI and high-performance computing (HPC) data centers, or larger private clouds. DPUs make sense when GPU traffic is huge, or when the network telemetry overhead is so great that it could overwhelm the CPUs processing the data transfer.</p><h2>2. Hardware partnerships</h2><p>It&#8217;s easiest to add support to hardware by working with leading chip manufacturers, so Ubuntu has relationships with hardware vendors for that reason. As a result, the OS sometimes offers day-one support for cutting-edge AI supercomputers.</p><h3>Partnership with NVIDIA</h3><p>In September 2025, Canonical announced it would package and distribute the full NVIDIA CUDA toolkit directly within Ubuntu&#8217;s repositories. This deal collapsed into a single standard <a href="https://linuxize.com/post/how-to-use-apt-command/">apt</a> install, something that had previously been a multi-step manual installation process of downloading from NVIDIA&#8217;s site, importing GPG keys, pinning a separate APT repo &#8211; and praying nothing broke.</p><p>Packaging and distributing the CUDA toolkit makes developing with CUDA easier. From Jon:</p><blockquote><p>&#8220;One of the trickiest things for developers who have to use this tech is the dance of matching the right version of Python, with the right version of CUDA, with the right driver. Projects end up with different versions of CUDA, and then machines end up breaking because the driver configuration gets inadvertently broken along the way.</p><p>The number one thing we can do as an operating system is to make this setup as easy as possible.&#8221;</p></blockquote><p>Ubuntu&#8217;s strategy of working directly with chipmakers seems to be working. NVIDIA recently discontinued its custom NVIDIA DGX OS &#8212; a modified Ubuntu it maintained for years &#8212; and now ships plain Ubuntu. Jon:</p><blockquote><p>&#8220;Previously, NVIDIA shipped NVIDIA DGX OS for which NVIDIA had an agreement with Canonical where they could take Ubuntu, modify it with the kernel modules and software they needed, do some product-specific optimization, and ship that as NVIDIA DGX OS.</p><p>This more recent development sees NVIDIA just shipping Ubuntu as it comes.</p><p>When NVIDIA released the DGX Spark, a $4,000 AI workstation with an ARM64 chipset, it shipped running vanilla Ubuntu as the only supported operating system.&#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_!4om0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4om0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 424w, https://substackcdn.com/image/fetch/$s_!4om0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 848w, https://substackcdn.com/image/fetch/$s_!4om0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 1272w, https://substackcdn.com/image/fetch/$s_!4om0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4om0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png" width="1456" height="923" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.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_!4om0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 424w, https://substackcdn.com/image/fetch/$s_!4om0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 848w, https://substackcdn.com/image/fetch/$s_!4om0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 1272w, https://substackcdn.com/image/fetch/$s_!4om0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87eb9b54-c572-4157-8593-a5e8798bd0cc_2048x1298.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>NVIDIA DGX Spark AI supercomputer: one of several NVIDIA DGX servers powered by NVIDIA&#8217;s DGX OS</em></figcaption></figure></div><p>At CES 2026 in January, Canonical <a href="https://canonical.com/blog/nvidia-vera-rubin-ubuntu-support">announced</a> Ubuntu support for the NVIDIA Vera Rubin NVL72 rack-scale architecture, with day-one platform readiness in Ubuntu, version <a href="https://documentation.ubuntu.com/release-notes/26.04/">26.04 LTS</a> (Long-Term Support: at least 15 years for enterprise customers).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ORn3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ORn3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!ORn3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!ORn3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!ORn3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ORn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;: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_!ORn3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!ORn3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!ORn3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!ORn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d5121a-c63e-48eb-8d00-83acb326d458_1200x675.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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 NVIDIA Vera Rubin NVL72 rack</em></figcaption></figure></div><h3>AMD and Intel</h3><p>It&#8217;s clear Ubuntu and NVIDIA enjoy a strong partnership, but Canonical aims to remain neutral, Jon says:</p><blockquote><p>&#8220;We have an amazing partnership with NVIDIA, but we do the same with Intel, the same with AMD, the same with Qualcomm, and the same with MediaTek because in reality there is hardware being released every day, and if we don&#8217;t maintain those partnerships, the ecosystem becomes even more fragmented than it already naturally is.&#8221;</p></blockquote><p>Last December, Ubuntu announced native support for AMD ROCm, and also ships with Intel&#8217;s OpenVINO toolkit. Ubuntu 26.04 LTS will be the first major distribution to natively package all three GPU compute stacks &#8212; NVIDIA, AMD, and Intel &#8212; with long-term enterprise support. Under Ubuntu Pro, ROCm LTS releases receive up to 15 years of security maintenance.</p><p><em>Security maintenance means that if vulnerabilities or critical incompatibilities are discovered in an LTS version, Canonical will patch them even if the upstream vendor no longer supports those versions and no longer backports security patches.</em></p><p>AMD Instinct accelerators are gaining traction in HPCs and sovereign AI deployments, as enterprises look for alternatives to CUDA-locked hardware. AMD&#8217;s SVP and Chief Software Officer, Andrej Zdravkovic, said the partnership would make it &#8220;easier for developers and enterprises to deploy AMD solutions on supported systems.&#8221;</p><p><strong>Chip vendors want to collaborate because it means less work for them to add operating system-level support.</strong> Jon:</p><blockquote><p>&#8220;It&#8217;s a win-win on both ends. Silicon companies are in the business of building the best chips they can, and partnering with Canonical means they have to concentrate on fewer things which are not their core focus. My hope is that partnering with Canonical helps them to focus on what they&#8217;re best at, while enabling us to help with what we&#8217;re best at: integrating, shipping and maintaining a Linux distribution.&#8221;</p></blockquote><h2>3. Architecture variants</h2><p>Modern x86 processors support multiple instruction set generations: x86_64 v1, v2, v3, v4, and v5. ARM has a similar hierarchy. Each generation adds capabilities, such as AVX-512 instructions that accelerate machine learning workloads.</p><p>Let&#8217;s take the x86_64 instruction set. The instruction set is versioned. These are the versions:</p><ul><li><p>For x86_64: v1, v2, v3, v4, v5&#8230;</p></li><li><p>For ARM: ARM v8.2, v8.3, v9&#8230;</p></li></ul><p><strong>Until recently, Ubuntu ran slower on newer CPUs in order to keep supporting older ones. </strong>So, when installing Ubuntu compiled for AMD64, the OS supported architecture variants for AMD64 v1.</p><p>Supporting v1 has the advantage that the oldest of AMD64 processors can run this Ubuntu version. But if Ubuntu decided to support v2 instructions, then v1 processors could not run the OS! The OS did not use the new instructions; for example, a modern processor with hardware accelerators like AVX-512, didn&#8217;t use them.</p><p><strong>Canonical has reworked its build infrastructure to produce binaries with </strong><em><strong>specific</strong></em><strong> architecture variant support.</strong> So, in the case of running an x86_64 v3 compatible processor, you can download an Ubuntu OS variant that&#8217;s compiled specifically for x86_64 v3.</p><p>One tradeoff the Ubuntu team had to make was building binaries several times, which takes up more processing time and storage at their end. Then again, the Ubuntu team doing this once means that users don&#8217;t need to do recompilation, which made it an easy tradeoff, Jon told me.</p><p>Now, Ubuntu supports x86_64 v3 as an architecture variant and plans to do more. Jon says:</p><blockquote><p>&#8220;Today, we&#8217;ve released x86_64 v3 as a variant, but the capability in our build and delivery pipelines unlocks the ability to add variants for the next RISC-V RVA versions, for ARMv9, ARMv10, ARMv11 and so on.</p><p>We will start now onboarding variants to make sure that when you go and buy your latest Snapdragon laptop, your operating system and all of the parts of it are using the silicon to its fullest.&#8221;</p></blockquote><p><strong>Adding support for architecture variants was a significant undertaking. </strong>Jon explains:</p><blockquote><p>&#8220;This work was especially complex because combined with having the hardware physically available in the build farm, Canonical also needed to make the build scheduler aware, and thread the capability through the build systems of Debian packages, Snaps, OCI images, virtual machine images, etc. As it stands, the capability exists for Debian packages, and support for further package types will land shortly.</p><p>In addition to the build infrastructure, work needed to be done on downstream package managers (apt, snap, &#8230;) and schedulers to ensure they pull the right version of packages, and consideration needs to be given to what happens if a VM containing x86_64 v3 code ends up trying to boot on v1 hardware, and so on.&#8221;</p></blockquote><h2>4. Betting on local-first &amp; plans for agentic workflows</h2><p>If you&#8217;ve tried to run an LLM locally on your machine, you&#8217;ll know it comes with friction. Jon:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/ubuntu-and-ai">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Learnings from conducting ~1,000 interviews at Amazon]]></title><description><![CDATA[Steve Huynh, formerly Principal Engineer at Amazon, shares observations from 10+ years of interviewing software engineers, and an excerpt from his new book, Technical Behavioral Interview]]></description><link>https://newsletter.pragmaticengineer.com/p/learnings-from-conducting-1000-interviews</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/learnings-from-conducting-1000-interviews</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 21 Apr 2026 12:49:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_3W5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Steve Huynh, formerly Principal Engineer at Amazon, shares observations from Bar Raiser, and an excerpt from his new book, Technical Behavioral Interview</em></p><p>Tech interviews have two parts: the technical interview &#8211; with a focus on things like coding, software architecture, problem solving &#8211; and the behavioral part &#8211; with a focus on past experience, and the situations that show you&#8217;d be a good fit at the company you&#8217;re interviewing with, along with things like attitude, motivation, culture fit. Technical interviews are going through a big change, thanks to AI tools: some companies are bringing in new, AI-assisted types of interviews, while others are trying to make &#8220;pre-AI&#8221; type interviews work.</p><p>What doesn&#8217;t seem to be changing is the second type of interviews: the behavioral ones. I&#8217;ve found the topic of behavioral interviews from a software engineer&#8217;s perspective somewhat under-discussed &#8211; even though this interview carries huge weight in securing an offer and what level you come in at. No matter how strong your technical skills are, especially at mid-sized and larger companies, you are unlikely to get an offer if you are deemed to not be a fit for what the company is looking for.</p><p>Steve Huynh was an engineer at Amazon for 17 years &#8211; I previously did a podcast episode with him on the reality of being a principal engineer at Amazon. During this time, Steve conducted nearly 1,000 interviews, of which around 600 were Bar Raiser ones. <em>Bar Raiser interviews are unique to Amazon: it&#8217;s an interview conducted by someone outside of the hiring team, with the goal of ensuring that the new hire raises the company&#8217;s talent bar.</em></p><p>After leaving the e-commerce giant, Steve spent 2 years researching and writing the book <a href="https://www.amazon.com/dp/1548441708">Technical Behavioral Interview: An Insider&#8217;s Guide</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_!_3W5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_3W5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_3W5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_3W5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_3W5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_3W5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.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_!_3W5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_3W5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_3W5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_3W5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc215ccd0-2cd3-4ab3-93a5-9ba11a7ba196_2048x1536.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 copy of <a href="https://www.amazon.com/dp/1548441708">Technical Behavioral Interview: an Insider&#8217;s Guide</a></em></figcaption></figure></div><p>Today, we cover two topics on interviews and behavioral interviews:</p><p><strong>1. Learnings from conducting ~1,000 behavioral interviews at Amazon</strong>. Steve reflects of major observations from his 17 years at Amazon, covering:</p><ul><li><p>You&#8217;re over-prepared for one interview and unprepared for the other</p></li><li><p>How you deliver the story matters as much as the story itself</p></li><li><p>The interview is an audition for what it&#8217;s like to work with you</p></li></ul><p><strong>2. What companies are looking for during behavioral interviews</strong>. An excerpt from Steve&#8217;s new book, Technical Behavioral Interview, covering ~75% of a full chapter of the book (out of the 14 total chapters.) We get into:</p><ul><li><p>Understanding fit: role and company</p></li><li><p>The four dimensions that determine your level</p></li><li><p>What each level looks like</p></li><li><p>Reading and calibrating your own level</p></li><li><p>Researching what companies really value</p></li></ul><p><em>Longtime readers might remember Steve from my podcast with him a year back: <a href="https://newsletter.pragmaticengineer.com/p/what-is-a-principal-engineer-at-amazon">What is a Principal Engineer at Amazon? With Steve Huynh</a></em></p><p><em>My usual disclaimer: as with all my recommendations, I was not paid for this article, and none of the links are affiliates. See <a href="https://blog.pragmaticengineer.com/ethics-statement/">my ethics statement</a> for more.</em></p><p>With this, it&#8217;s over to Steve:</p><div><hr></div><h2>1. Learnings from conducting ~1,000 behavioral interviews at Amazon</h2><p>A Bar Raiser is a specially trained interviewer whose job is to ensure that every hire raises the average talent level at Amazon. I had veto power over any candidate. I sat on nearly a thousand interview loops across every level from intern to Principal Engineer.</p><p>After 50 or so interviews as a Bar Raiser, the patterns became impossible to miss. And this was the biggest one:</p><p>The candidates who didn&#8217;t get offers seldom failed because they lacked technical skill. <strong>They failed because of how they presented themselves.</strong></p><p>For sure, technical preparation is crucial, and I&#8217;m not telling you to skip it. But most candidates have massive blind spots when it comes to non-technical matters, which is a big problem. Why? Because that blind spot is where most hiring decisions are made.</p><p>The Bar Raiser who trained me put it this way:</p><p>Technical skills are the ante. They get you into the game. But they&#8217;re not what wins you the hand.</p><p>I didn&#8217;t fully appreciate what that meant until I&#8217;d seen candidates who were technically very strong get rejected because of everything else.</p><p>Think about it. By the time you&#8217;re sitting in a final round of interviews, you&#8217;ve already passed at least one technical screen or take-home assignment. The company already knows you could probably do the job. They already know you want to work with them.</p><p>But that&#8217;s not what the final round is for.</p><p><strong>The final round is when the team figures out whether they want to work with you.</strong> Being technically proficient is part of it, but it&#8217;s not all of it. Can you explain your thinking clearly when you&#8217;re stumped? How do you handle it when things go wrong? Can they picture you in a design review or in a tough conversation with a partner team?</p><p>Fit.</p><p>Fit is what decides most hiring outcomes, yet it&#8217;s the thing most candidates spend the least time preparing for. After nearly a thousand interviews, I can tell you exactly where the gap is and how you can close it.</p><h3>Learning #1: You&#8217;re over-prepared for one interview and unprepared for the other</h3><p>The average candidate preparing for a tech interview probably spends 95% of their time on technical preparation and 5% on everything else. Some spend literally zero on everything else.</p><p>I get why. Technical preparation feels concrete. You can grind coding problems and measure your progress. You can study system design patterns and feel yourself getting sharper. There&#8217;s a clear input/output relationship. Do more problems, get better at problems.</p><p>For most technical interviews, even if you haven&#8217;t seen the exact problem before, you can still do a decent job. It&#8217;s simply not possible to prepare for every problem, so it&#8217;s expected that you can reason through an unfamiliar coding question and pick up on hints the interviewer gives you. You can work through a system design problem by applying fundamentals you already know. It&#8217;s expected that you will encounter new questions during an interview, so it isn&#8217;t fatal if you&#8217;re a competent engineer who can think on your feet.</p><p>However, the non-technical rounds are the opposite. You cannot wing them and expect to do well. When an interviewer says, &#8220;Tell me about a time something went wrong on a project and how you handled it&#8221; and you haven&#8217;t thought about that question before, there is no hint they can give you. There&#8217;s no reasoning your way through it in real time. You either have a prepared story ready to go, or you&#8217;re going to mumble your way through a word salad while the interviewer watches.</p><p>I&#8217;ve seen this play out hundreds of times. A candidate would crush the coding round, then I would ask them about a difficult decision they made, and they would fall apart. They would pick a half-remembered example, start rambling, backtrack to add context they forgot, in the process losing track of the question. Then, five minutes later, they would land on something like, &#8220;So, yeah, it worked out in the end.&#8221;</p><p>These candidates were often strong coders, but that didn&#8217;t matter. At the debriefs, the feedback was always some version of &#8220;I couldn&#8217;t get a concrete answer about their experience. Every story was vague and unconvincing.&#8221; We couldn&#8217;t extend an offer when a candidate couldn&#8217;t articulate how they worked.</p><p>The technical bar was met, but the hiring decision was made in the behavioral round.</p><p>Here&#8217;s what&#8217;s frustrating about this. Non-technical preparation takes a fraction of the time for technical.</p><p>If you&#8217;re going to spend 80 to 100 hours preparing for an interview cycle, spending a single weekend on your stories might be the highest-leverage investment you make.</p><p>Ten hours of story prep can completely change the outcome of your behavioral rounds. Meanwhile, your 80th hour of LeetCode will give you almost nothing you didn&#8217;t already have at 60.</p><p>The returns on technical prep diminish rapidly. The returns on story prep are exponential because almost nobody does it at all.</p><p><strong>What to do:</strong> How are you currently splitting your interview prep time? If it&#8217;s 99% technical and 1% everything else, you&#8217;re over-indexed on the part with diminishing returns and under-indexed on the part where hiring decisions get made. You don&#8217;t need to cut your technical prep dramatically. Just reallocate. If you&#8217;re planning to spend 80 hours preparing, take 10 of those hours and move them to non-technical preparation. That reallocation will do more for your odds than 10 more hours working on practice problems.</p><h3>Learning #2: How you deliver the story matters as much as the story itself</h3><p>You can have the most impressive accomplishment of your career ready for your interview and completely waste it with bad delivery. The most common version of this is what I call the &#8220;ramble and stumble.&#8221;</p><p>The candidate starts talking, and you genuinely can&#8217;t tell if they&#8217;re figuring out the story as they go or if they&#8217;ve simply never said these words out loud before. Or they might give you five minutes of context and then still backtrack to add details they forgot. By the time they reach the outcome, you&#8217;ve lost track of how you got there.</p><p>Here&#8217;s something that&#8217;s always struck me as odd. If you had a big presentation at work, you&#8217;d spend hours preparing for it, right?. You&#8217;d think about the structure, the flow, the key points. You&#8217;d rehearse it. You might even do a couple of dry runs with a colleague. Nobody wants to walk into a presentation and wing it.</p><p>But in a job interview, where the stakes are arguably higher than any single presentation you&#8217;ll ever give? People wing those constantly. They walk in having never practiced their stories out loud. They might have thought about them, but they&#8217;ve never spoken the words, heard how they sound, or timed how long they take. Then they&#8217;re surprised when the words come out as a mess.</p><p>Think about any other high-stakes skill. You wouldn&#8217;t expect to be good at golf without practicing at the driving range. You wouldn&#8217;t expect to give a great keynote the first time you stepped on stage. Nobody calls a musician fake for rehearsing before a concert.</p><p>But for some reason, many people feel that preparing interview stories is inauthentic. As if it&#8217;s cheating somehow. As if the &#8220;real&#8221; version of you is the one that stumbles through an unrehearsed answer under pressure.</p><p>It&#8217;s not. The real you communicates clearly what you&#8217;ve done and what you&#8217;re capable of.</p><p><strong>What to do: </strong>Good delivery doesn&#8217;t require a lot of charisma or natural presentation skills, but it does require practice. Start with the two questions that come up in virtually every interview: &#8220;Tell me about yourself&#8221; and &#8220;Why do you want to work here?&#8221; Write down your answers. Then record yourself delivering them. Watch the recording and take notes. Where did you ramble? Where did you fill space with filler words? Did you look nervous? Then do it again. And again. Keep going until you watch the recording back and think &#8220;That sounds like someone I&#8217;d like to work with.&#8221;</p><p>Once those two are solid, pick stories from your career and do the same thing. This process will be uncomfortable at first. Most people hate watching themselves on camera. Do it anyway. Thirty minutes of this will up-level your interview performance much more than 20 hours of coding exercises could ever do.</p><h3>Learning #3: The interview is an audition for what it&#8217;s like to work with you</h3><p>Most candidates think the interview is an exam. If you get the right answers, then you&#8217;ll pass the test and get the job. That&#8217;s simply not how it works. Yes, you are being evaluated, and what you say matters. But there is no answer key. The interviewer doesn&#8217;t have a rubric with the &#8220;correct&#8221; responses to which they compare your answers. They&#8217;re forming an impression of you as a person, and that impression is far more nuanced than &#8220;right&#8221; or &#8220;wrong.&#8221;</p><p>By the time you&#8217;re sitting across from the interviewer, you&#8217;ve already jumped through some technical hoops. The company already has evidence from your resume that you can code or design systems at the level they need. That bar has been cleared. The final round goes deeper on the technical side, but it&#8217;s also trying to answer a completely different question: Would we want this person on the team? Would we trust their judgment in a crisis? Would they make our team&#8217;s software better or worse?</p><p>As a Bar Raiser, my specific job was to determine whether a candidate would raise the bar, meaning that they would be better than at least 50% of the people already at the company in that role.</p><p>The thing most people don&#8217;t realize is that the type of coding we asked about in interviews wasn&#8217;t what we did on the job. Nobody was writing algorithms on a whiteboard during their workday. The questions we asked tested problem-solving ability in an artificial environment.</p><p>But the behavioral questions, the soft questions, those tested situations we dealt with every single day. Navigating disagreements, handling projects that were going sideways, influencing without authority, making tradeoffs with incomplete information. These weren&#8217;t hypothetical scenarios pulled out of a textbook. They were just another Tuesday.</p><p>So when I asked a candidate to tell me about a time they had to push back on a stakeholder, I wasn&#8217;t waiting to hear the right answer; I was picturing them in our next planning and prioritization meeting. When they described how they handled a conflict on their team, I was asking myself whether I&#8217;d want to be in that room with them. Every answer was a preview of what it would be like to work alongside that person day to day.</p><p>The candidates who treated it like a test tried to figure out what I wanted to hear and then gave me that answer. That&#8217;s exactly the wrong approach. They gave polished, rehearsed answers with no rough edges and perfect endings where everything worked out and every decision was the right one. I&#8217;d walk out thinking &#8220;I have no idea what it would actually be like to work with this person.&#8221; And when that uncertainty showed up across multiple interviews in the debrief, it almost always turned into a &#8220;No.&#8221;</p><p><strong>What to do: </strong>For each story you&#8217;re preparing, stop thinking about what the interviewer wants to hear. Instead, think about what you&#8217;d want to hear from someone interviewing to join your team. You&#8217;d want to hear how they actually think. You&#8217;d want the real version of what happened, including the parts that were hard and the calls that were close. You&#8217;d want to walk away feeling like you understood what it would be like to work with them on a tough problem. Give your interviewer that same thing. Be honest and let them see how you think. That&#8217;s worth more than any polished answer.</p><h3>What ~1,000 interviews taught me</h3><p>After all those interviews, the lesson I keep coming back to is simple.</p><p><strong>The people who get hired are the ones who can walk into a room and tell a clear story. </strong>This story is about their work and their capabilities, and makes the interviewer think, &#8220;I want to work with that person.&#8221;</p><p>Being able to tell this story is a skill. And like any skill, it gets better with practice. Most people never practice it because they don&#8217;t think of it as something you can prepare for, but you can. And a little preparation here goes further than almost anything else you can do for your career.</p><h2 style="text-align: justify;">2. What companies are looking for during behavioral interviews</h2><p><em>The below are excerpts from Chapter 2 from <a href="https://www.amazon.com/dp/1548441708">Technical Behavioral Interview: An Insider&#8217;s Guide</a>. Some sections have been cut out and lightly edited for this article. Copyright &#169; 2026 Steve Huynh. Used with permission.</em></p><div><hr></div><p style="text-align: justify;">Technical skills alone don&#8217;t determine your offer. Otherwise, those who can solve the coding and system design problems would get the same result. Instead, companies use behavioral interviews to answer two critical questions: <em>Do you fit with both the role and the company?</em> And if you do fit<em>, at what level will you be most effective?</em></p><p style="text-align: justify;"></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H27U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H27U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 424w, https://substackcdn.com/image/fetch/$s_!H27U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 848w, https://substackcdn.com/image/fetch/$s_!H27U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 1272w, https://substackcdn.com/image/fetch/$s_!H27U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H27U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png" width="1398" height="918" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:918,&quot;width&quot;:1398,&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_!H27U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 424w, https://substackcdn.com/image/fetch/$s_!H27U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 848w, https://substackcdn.com/image/fetch/$s_!H27U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 1272w, https://substackcdn.com/image/fetch/$s_!H27U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b79d6bb-4d5d-44eb-96eb-16014fdee589_1398x918.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Get both right, and you will receive an offer at the appropriate level. Get the fit wrong, and you&#8217;ll be rejected regardless of your skills. Get the level wrong, and you&#8217;ll be either down-leveled or rejected for being underqualified.</p><p style="text-align: justify;">This chapter explains how companies make their assessments of fit and level by analyzing the signals in your stories. Once you understand these dimensions, you&#8217;ll pick better stories and signal the right level.</p><h2 style="text-align: justify;">Understanding Fit: Role and Company</h2><p style="text-align: justify;">The primary consideration for any tech role is whether you have the technical skills to do the job. Companies will assess this mostly through the technical parts of the interview, for example, coding challenges, system design, or whatever technical evaluation matches your role. If you can&#8217;t demonstrate the core technical capability, nothing else matters.</p><p style="text-align: justify;">But technical skills alone don&#8217;t predict success. Companies learned this the hard way by hiring smart people who couldn&#8217;t work effectively in their environment. That&#8217;s why behavioral interviews focus on two additional types of fit:</p><p style="text-align: justify;"><strong>Role Fit:</strong> Can you handle the specific challenges and working conditions of this position? A backend role at a fast-growing startup requires different capabilities than a backend role at an established enterprise. The technical skills might be similar, but the role demands will be different.</p><p style="text-align: justify;"><strong>Company Fit:</strong> Will you thrive in the environment in which this organization operates? This goes beyond surface-level culture. They are assessing whether your working style, decision-making approach, and values match with how the company gets things done.</p><h2 style="text-align: justify;">How Companies Detect Fit Through Signals</h2><p style="text-align: justify;">Companies can&#8217;t directly ask the question, &#8220;Would you fit here?&#8221; What candidate would torpedo their chance of success by answering with a &#8220;No&#8221;? Instead, companies look for signals in your stories that indicate alignment or misalignment.</p><p style="text-align: justify;"><strong>Role Fit Signals</strong> emerge from how you describe handling situations similar to what the role requires:</p><ul><li><p style="text-align: justify;">If the role requires working with ambiguous requirements, do your stories show comfort with uncertainty?</p></li><li><p style="text-align: justify;">If the position involves cross-team coordination, do you show an ability to cope with organizational complexity?</p></li><li><p style="text-align: justify;">If the job needs rapid iteration, do your examples show shipping quickly and adjusting based on feedback?</p></li></ul><p style="text-align: justify;"><strong>Company Fit Signals</strong> come from the choices you made and how you describe them:</p><ul><li><p style="text-align: justify;">A company that values &#8220;bias for action&#8221; looks for stories that show you moving quickly despite incomplete information.</p></li><li><p style="text-align: justify;">An organization that prizes &#8220;customer obsession&#8221; wants to hear examples of you going deep to understand user needs.</p></li><li><p style="text-align: justify;">A place that emphasizes &#8220;radical transparency&#8221; seeks stories that show you sharing information openly, even when you&#8217;re uncomfortable.</p></li></ul><p style="text-align: justify;">The same story can send different signals to different companies. You spending three weeks perfecting a solution might demonstrate attention to quality at one company but analysis paralysis at another. Moving fast and fixing issues later demonstrates good judgment at a growth startup but recklessness at an established healthcare company.</p><h3 style="text-align: justify;">Common &#8220;Mis-Fits&#8221;</h3><p style="text-align: justify;">Even a talented candidate will get rejected sometimes if they are not a good fit. The same behaviors that are positive at one company can signal poor fit at another.</p><p style="text-align: justify;"><strong>Independence vs. Collaboration</strong>: This covers both how you work and how you make decisions. Some companies need people who pick up a problem, run with it, and come back with a solution. Others expect you to bring the team along at every step. These often go together: companies that want you to work solo also tend to want you to make calls on your own, and companies that want collaborative work also want group buy-in on decisions.</p><p style="text-align: justify;">If every story you tell involves going off and building something alone, consensus-driven companies will worry you&#8217;ll steamroll people or make choices that won&#8217;t stick. Flip it around: if every story involves checking with the group before you act, companies that prize individual ownership will wonder whether you can make a decision without a meeting.</p><p style="text-align: justify;"><strong>Speed vs. Thoroughness</strong>: Startups often need rapid experimentation, where you ship MVPs and iterate based on feedback, while companies in healthcare or finance require careful validation before any release. This tension also shows up in how teams think about code quality: some organizations will happily spend extra weeks on clean architecture, while others want a working solution on deadline even if the code needs cleanup later. Whereas stories about methodical testing might bore a startup, your &#8220;ship it and fix it&#8221; examples could terrify a medical device company.</p><p style="text-align: justify;"><strong>Excellence vs. Pragmatism</strong>: Some organizations value technical excellence and clean architecture above all else. Others need pragmatic solutions that ship on deadline even if imperfect. Focusing on perfect code fails at deadline-driven companies, just as accepting technical debt everywhere fails at companies maintaining critical infrastructure.</p><p style="text-align: justify;"><strong>Innovation vs. Stability</strong>: Some roles require creating new solutions and challenging existing approaches, while others need you to maintain and optimize proven systems. If you say that you&#8217;re constantly reinventing established processes, teams that value stability will not consider you a good fit. Conversely, stories that show you only follow existing patterns will disappoint teams that are looking for creative problem-solving</p><p style="text-align: justify;"><strong>Direct vs. Diplomatic</strong>: Some cultures prize radical candor and want you to say exactly what you think. Others value maintaining harmony and face-saving communication. If you are too blunt, you will not fit in well at a relationship-focused company. If you are not direct enough, you will not like working at a company that values &#8220;disagree and commit.&#8221;</p><p style="text-align: justify;"><strong>Data vs. Intuition</strong>: Some companies require data to justify every decision (&#8221;data-driven&#8221; cultures), while others trust experienced judgment and move on gut feel. Showing that you make decisions based on instinct does not impress analytical companies, and telling a company that values experienced judgment that you conduct three A/B tests to choose a button color will get you struck off their list.</p><p style="text-align: justify;"><strong>Specialist vs. Generalist</strong>: Large companies often want deep experts who master one domain, while smaller companies need people who are comfortable wearing multiple hats. Know which sort of company you are walking into.</p><p style="text-align: justify;">Once you understand fit, you can pick stories that match the company and the role.</p><h2 style="text-align: justify;">The Four Dimensions That Determine Your Level</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZC_j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZC_j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 424w, https://substackcdn.com/image/fetch/$s_!ZC_j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 848w, https://substackcdn.com/image/fetch/$s_!ZC_j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 1272w, https://substackcdn.com/image/fetch/$s_!ZC_j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZC_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png" width="1398" height="918" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:918,&quot;width&quot;:1398,&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_!ZC_j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 424w, https://substackcdn.com/image/fetch/$s_!ZC_j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 848w, https://substackcdn.com/image/fetch/$s_!ZC_j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 1272w, https://substackcdn.com/image/fetch/$s_!ZC_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17d2f9f7-4e20-440e-bfc8-b158f2668801_1398x918.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Companies assess your level through four dimensions that appear in every story you tell. Each dimension reveals different aspects of your capability. Together, they show the company where you operate most effectively.</p><h3>Scope (Dimension #1)</h3><p>Scope provides a measure of the number of people on your team and, extending outward as you advance, whose work was affected by your actions. The greater the number affected, the higher your level for this dimension.</p><p style="text-align: justify;"><strong>Entry Level:</strong> Your work affects your own productivity and starts to help other team members. For example, you might improve how you handle assigned tasks or fix issues that were slowing down a few teammates.</p><p style="text-align: justify;"><strong>Mid Level:</strong> Your work affects aspects of the team and shapes how it operates. You might redesign a process that changes a significant part of how your team works or solve problems that affect most of the team&#8217;s effectiveness.</p><p style="text-align: justify;"><strong>Senior Level:</strong> Your work directly impacts your entire team and is beginning to influence at least one other team. Perhaps you create solutions that change how your whole team operates and affect workflows in adjacent teams, or you solve problems that require coordination with other groups. You may also start collaborating more closely with product or design partners on your immediate team&#8217;s work.</p><p style="text-align: justify;"><strong>Staff Level:</strong> Your work directly impacts at least two teams and is beginning to have an influence on the broader division or organization. Examples of this include developing technical strategies that change how multiple teams make decisions and solving problems that require buy-in across several parts of engineering. Your influence extends beyond engineering into product, design, and program management as you shape solutions that affect how cross-functional partners work.</p><p style="text-align: justify;"><strong>Principal Level:</strong> Your work affects many teams or changes how large parts of the organization operate. Perhaps you have created technical strategies that have influenced how dozens of teams make decisions. Or you have solved problems that cut across a large engineering organization. At this level, your influence regularly extends into business strategy, shaping decisions alongside product, design, program, and business leadership.</p><h3 style="text-align: justify;">Contribution (Dimension #2)</h3><p>Contribution captures what you did, not what happened around you. It is important to be precise about the line between &#8220;I&#8221; and &#8220;we.&#8221; Companies will expect to see evidence of increasing leadership and ownership as you advance in your career.</p><p><strong>Entry Level:</strong> You execute assigned work and are beginning to take ownership of small pieces. Examples: implementing solutions designed by others; fixing bugs in existing systems; taking full responsibility for well-defined features within larger projects.</p><p style="text-align: justify;"><strong>Mid Level:</strong> You own complete solutions from problem to implementation while also guiding others. Perhaps you have identified issues, designed the approaches, implemented them, and you have verified that they work, and you have helped your teammates understand the reasons for your decisions.</p><p style="text-align: justify;"><strong>Senior Level:</strong> You lead initiatives requiring coordination. You&#8217;re expected to make progress even when the requirements are unclear or the path forward is uncertain. Examples of this include driving technical decisions for your team; mentoring others through complex problems; architecting solutions to be implemented by others; and ensuring quality work outcomes for many people.</p><p style="text-align: justify;"><strong>Staff Level:</strong> You lead cross-team initiatives and establish technical direction, often in situations where the right approach isn&#8217;t obvious and stakeholders have competing priorities. This could look like defining technical approaches that are adopted by multiple teams, creating systems that enable other teams to solve problems on their own, or driving agreement on complex technical decisions across several teams.</p><p style="text-align: justify;"><strong>Principal Level:</strong> You create organizational capabilities and establish new ways of working. At this level, you&#8217;re frequently operating in highly ambiguous environments where you must define the problem before you can solve it. You might define technical standards that guide dozens of teams, build systems that enable others to solve entire classes of problems, or transform how the organization approaches its hardest challenges.</p><h3 style="text-align: justify;">Impact (Dimension #3)</h3><p>Impact shows what changed for the better as a result of your work. Companies want to see that your work produced results worth the investment. Strong stories put numbers on the impact and connect technical wins to business or user outcomes.</p><p style="text-align: justify;"><strong>Entry Level:</strong> You improve your personal productivity and are starting to help the team work better. Examples include reducing the time you spend on repetitive tasks, fixing issues that were slowing down teammates, or improving the quality of code in the areas you touch. Even simple measures matter at this level: time saved or bugs prevented.</p><p style="text-align: justify;"><strong>Mid Level:</strong> You improve team effectiveness in specific areas and influence team-wide practices. Perhaps you reduced deployment times for specific workflows, eliminated categories of bugs in your domain, or you created tools that have made the team more productive in particular areas. You can quantify these improvements and connect them to broader outcomes like feature velocity or reliability.</p><p style="text-align: justify;"><strong>Senior Level:</strong> You transform how your entire team works and are starting to have an impact beyond your team. For example, you might have introduced new workflows that changed your team&#8217;s capabilities. Or perhaps you eliminated major sources of operational problems, or the improvements that you have created have been adopted by adjacent teams. Your impact extends beyond just engineering metrics to product outcomes, user experience, or operational costs.</p><p style="text-align: justify;"><strong>Staff Level</strong>: You improve how multiple teams operate and drive organizational improvements. These sorts of impact come from achievements such as establishing practices that several teams adopt, solving infrastructure problems that were impeding multiple teams, or creating new capabilities that open up new types of work across teams. Your measurable impact can be tied to business metrics like revenue, customer retention, or time-to-market.</p><p style="text-align: justify;"><strong>Principal Level</strong>: You create organizational capabilities and drive strategic changes. Impact at this level could come from establishing technical foundations that dozens of teams use to build upon, solving problems that were blocking major business initiatives, or creating leverage that compounds benefits across the company. Your impact is measured in business outcomes and strategic capability, not just technical improvements.</p><h3 style="text-align: justify;">Difficulty (Dimension #4)</h3><p>Difficulty reflects the complexity of problems you&#8217;ve tackled, the constraints you have faced, and the trade-offs you have managed. Under this category, solving easy problems with big impacts is less impressive than hard problems solved well.</p><p style="text-align: justify;"><strong>Entry Level:</strong> You work on straightforward problems within established patterns. For example, you might face challenges learning new technologies or debugging unfamiliar code, but the path forward becomes clearer once you understand the problem or ask for help.</p><p style="text-align: justify;"><strong>Mid Level:</strong> You work through challenges and obstacles in your work. The problems you tackle have more moving parts and less obvious solutions. These could be competing requirements or having to work through technical complexity you haven&#8217;t seen before. Or perhaps you have had to manage dependencies within your team that affected your timeline or figure out solutions when the approach wasn&#8217;t immediately obvious.</p><p style="text-align: justify;"><strong>Senior Level:</strong> You manage constraints and make technical decisions with team-level architectural implications. The problems you solve involve multiple interacting systems and competing concerns. You might have to balance needs across multiple stakeholders with different priorities. Maybe you make architectural decisions that affect how your whole team works, or you have to work around technical limitations that require creative solutions, or solve problems that require you to address both technical and business factors.</p><p style="text-align: justify;"><strong>Staff Level: </strong>You manage competing trade-offs across multiple teams while handling problems with significant technical and organizational complexity. Examples of difficulty at staff level include:</p><ul><li><p style="text-align: justify;">Balancing different technical approaches when teams have genuinely conflicting needs.</p></li><li><p style="text-align: justify;">Creating solutions that affect how several teams work together.</p></li><li><p style="text-align: justify;">Making architectural decisions that have to work across diverse contexts.</p></li><li><p style="text-align: justify;">Getting teams to agree when the technically optimal solution differs for each team.</p></li></ul><p style="text-align: justify;"><strong>Principal Level:</strong> You handle fundamental trade-offs between competing organizational needs or solve problems where no clear solution exists. The complexity at this level often involves novel problems that lack established patterns or precedents. You might balance technical excellence against delivery speed at organizational scale; work within organizational constraints while maintaining technical integrity; create approaches for entire classes of problems the company hasn&#8217;t solved before; or make decisions that affect company strategy and require executive buy-in.</p><h3 style="text-align: justify;">What Each Level Looks Like</h3><p style="text-align: justify;">Here&#8217;s how the same types of accomplishments look across each level. These aren&#8217;t templates. They&#8217;re meant to help you develop a sense for the difference between a mid-level story and a senior one. Compare adjacent levels and notice what actually changes as you move up and down.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KY-A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KY-A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 424w, https://substackcdn.com/image/fetch/$s_!KY-A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 848w, https://substackcdn.com/image/fetch/$s_!KY-A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 1272w, https://substackcdn.com/image/fetch/$s_!KY-A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KY-A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png" width="1398" height="897" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:897,&quot;width&quot;:1398,&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_!KY-A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 424w, https://substackcdn.com/image/fetch/$s_!KY-A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 848w, https://substackcdn.com/image/fetch/$s_!KY-A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 1272w, https://substackcdn.com/image/fetch/$s_!KY-A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac2b115d-cc3e-4f34-8143-a62b7b1b3eb1_1398x897.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2 style="text-align: justify;">Researching What Companies Really Value</h2><p style="text-align: justify;">You&#8217;ll never have perfect information about what a specific company values, but a little focused research will often reveal surprising insights that most other candidates will miss. The difference between having even partial intelligence and going in blind can be whether or not you emphasize the right things in your stories.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jzl-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jzl-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 424w, https://substackcdn.com/image/fetch/$s_!jzl-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 848w, https://substackcdn.com/image/fetch/$s_!jzl-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 1272w, https://substackcdn.com/image/fetch/$s_!jzl-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jzl-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png" width="1398" height="918" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7366e636-8732-48d6-bccc-7e508c635992_1398x918.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:918,&quot;width&quot;:1398,&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_!jzl-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 424w, https://substackcdn.com/image/fetch/$s_!jzl-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 848w, https://substackcdn.com/image/fetch/$s_!jzl-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 1272w, https://substackcdn.com/image/fetch/$s_!jzl-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7366e636-8732-48d6-bccc-7e508c635992_1398x918.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3 style="text-align: justify;">Start With Your Recruiter</h3><p style="text-align: justify;">Most candidates treat recruiters as gatekeepers to avoid, but if you do this, you will waste your best source of insider information. Recruiters want you to succeed, because their performance is based on the number of accepted offers received by the candidates they put forward. They have prep materials, they know the interviewers&#8217; focus areas, and they understand what they are looking for.</p><p style="text-align: justify;">Ask your recruiter directly: &#8220;What should I know about this company&#8217;s current challenges?&#8221; Or &#8220;What competencies matter most for this role?&#8221; Or &#8220;Can you share any interview prep materials?&#8221; Many recruiters have documents about interview format, team priorities, or even the specific behavioral competencies they evaluate. The questions that are used as examples in the prep materials have a high likelihood of being asked in the interviews.</p><h3 style="text-align: justify;">Mine Publicly Available Information</h3><p style="text-align: justify;">When companies repeat certain words when describing job opportunities, they&#8217;re telling you what matters. For example, a job posting that mentions &#8220;fast-paced&#8221; several times signals something different than one emphasizing compliance. Those words are there for a reason.</p><p style="text-align: justify;"><strong>Where to dig:</strong></p><ul><li><p style="text-align: justify;"><strong>Engineering blogs:</strong> How do they describe their wins? What problems do they celebrate solving?</p></li><li><p style="text-align: justify;"><strong>Tech talks and conferences:</strong> What topics do their engineers present? Speed of delivery? Scale? Innovation?</p></li><li><p style="text-align: justify;"><strong>Open source contributions:</strong> What they choose to open source reveals their priorities. If they open source developer tools, this suggests they value community. If they are happy to make internal tools public, this shows transparency.</p></li><li><p style="text-align: justify;"><strong>Technical documentation:</strong> The existence of public API docs or technical guides (and the quality thereof) shows how they support both users and their own teams.</p></li><li><p style="text-align: justify;"><strong>Status pages and postmortems:</strong> Companies that publish detailed postmortems demonstrate that they value learning from failure. A company that shares their incident response processes likely has a strong operational culture.</p></li></ul><p style="text-align: justify;">Even companies without engineering blogs will leave traces. Product release patterns tell you about their development pace. Technology choices show their priorities: newer frameworks suggest a focus on innovation, whereas relying on proven technologies indicates they prefer stability.</p><h3 style="text-align: justify;">Look for Patterns in Discussions</h3><p style="text-align: justify;">Glassdoor, Blind, and Reddit contain gold buried amongst rubble. Ignore the rubble (e.g., individual rants). Instead, look for patterns across multiple posts. If five different people mention &#8220;lots of process&#8221; or &#8220;no work-life balance&#8221; or &#8220;amazing learning culture,&#8221; that&#8217;s a pattern you will want to know about.</p><p style="text-align: justify;">Pay attention to what people complain about and what they praise. Complaints about &#8220;too many meetings&#8221; may suggest the company has a collaborative, consensus-driven culture, or, alternatively, that productivity within the company is inhibited by an excessive number of meetings. Praise for &#8220;autonomy&#8221; indicates they trust their people to make decisions without checking in. Both types of comments reveal what behaviors the companies will reward.</p><h3 style="text-align: justify;">Talk to Current Employees</h3><p style="text-align: justify;">If you know someone at the company, ask them directly what behaviors get rewarded and, conversely, what behaviors will cause people to struggle. Skip surface-level queries about culture, and ask specific questions:</p><ul><li><p style="text-align: justify;">&#8220;When someone gets promoted here, what do they do to earn it?&#8221;</p></li><li><p style="text-align: justify;">&#8220;What behaviors get negative feedback?&#8221;</p></li><li><p style="text-align: justify;">&#8220;How does the team make decisions when there&#8217;s disagreement?&#8221;</p></li><li><p style="text-align: justify;">&#8220;What surprised you most about working here?&#8221;</p></li></ul><p style="text-align: justify;">Current employees will tell you truths the company website never would. Perhaps they&#8217;ll tell you that at their company, &#8220;customer obsession&#8221; really means checking usage data before writing code, or that &#8220;ownership&#8221; means being available to resolve production issues at two o&#8217;clock in the morning.</p><h3 style="text-align: justify;">What You&#8217;re Really Looking For</h3><p style="text-align: justify;">All this research serves one purpose: understanding what stories will resonate at your interview. Think of it as finding the real intersection between your experience and what they care about.</p><p style="text-align: justify;">If research reveals they prize speed over perfection, then emphasize stories that tell how you shipped quickly and iterated. If they value technical depth, highlight examples of diving deep to understand root causes. If they care about collaboration, make sure your story focuses on cross-team work rather than solo accomplishments.</p><p style="text-align: justify;">The research will also help you decide whether this company is the right place for you. If everything you learn suggests they value the kinds of behaviors you don&#8217;t naturally demonstrate or don&#8217;t want to develop, then perhaps you don&#8217;t need to pursue that particular role.</p><h3 style="text-align: justify;">Putting It All Together</h3><p style="text-align: justify;">Companies aren&#8217;t just evaluating whether you can do the job. They&#8217;re also assessing whether you&#8217;ll thrive in their specific environment and at what level you&#8217;ll be most effective. These two dimensions determine not just whether you will get an offer, but also whether that offer will position you for success.</p><p style="text-align: justify;">Understanding fit helps you know which of your experiences will connect most with what the company values. This small company needs someone who ships fast and figures things out alone. That enterprise needs someone who navigates processes and builds consensus. Neither is inherently better than the other. They&#8217;re simply different environments that reward different approaches.</p><p style="text-align: justify;">Understanding levels helps you position your stories appropriately. The same project can demonstrate entry-level execution, mid-level ownership, or senior-level leadership depending on your actual contribution and how you frame it. Get this wrong and you will either get rejected for overreaching or down-leveled for not properly communicating your capabilities.</p><p style="text-align: justify;">The payoff is immediate. You&#8217;ll pick better stories, focus on the right details, and make it easier for interviewers to see what you can do. You&#8217;ll make better decisions about which roles actually match who you are and what you want to do. The goal isn&#8217;t to get <em>any</em> offer. The goal is to get the <em>right</em> offer at the <em>right</em> level at the <em>right</em> company to ensure your success.</p><h2 style="text-align: justify;">Takeaways</h2><p><em>Gergely, again. </em>Thanks to Steve for both sharing his learnings, as an interviewer, and for sharing nearly a full chapter from his whole book. The book goes a lot deeper than the above sample chapter. A few of the ones I found helpful:</p><ul><li><p>High-signal storytelling (Chapter 3): a framework for explaining your work in a way that &#8220;sticks&#8221; with the interviewer</p></li><li><p>9 competencies with many examples and stories throughout the book: ones like &#8220;delivery&#8221; (Chapter 6), &#8220;earning trust and dealing with conflict&#8221; (Chapter 8) and &#8220;Strategic leadership and thinking big (Chapter 13)&#8221;</p></li><li><p>Examples of what interviewers typically see as key signals, yellow flags and red flags</p></li></ul><p>If you would like to have a fresh resource to prepare for behavioural interviews at tech companies, the full book offers far more explanations, tactics and exercises to do so:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.amazon.com/dp/1548441708&quot;,&quot;text&quot;:&quot;Get the full book on Amazon&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.amazon.com/dp/1548441708"><span>Get the full book on Amazon</span></a></p><p><em>Steve also writes a newsletter titled <a href="https://alifeengineered.substack.com/about">A Life Engineered</a>: you can sign up to it <a href="https://alifeengineered.substack.com/about">here</a>.</em></p><p><strong>It&#8217;s helpful to understand how and why companies hire, and what they look for. </strong>To us engineers, hiring processes often look illogical from the outside. We&#8217;ll ask things like:</p><ul><li><p>&#8220;Why does the interview process not resemble day-to-day work?&#8221;</p></li><li><p>&#8220;I already have open source code I wrote: why does the company need to do a coding interview to confirm what is clear: that I need to code?&#8221;</p></li><li><p>&#8220;Why did I get a rejection, even though I did well on all of the interviews?&#8221;</p></li></ul><p>It feels to me that there are similarities between hiring and dating: both parties show up with goals and expectations in their head, which are often not communicated. Sometimes there&#8217;s a match; sometimes there is not. This phase of a relationship is often about &#8220;selling:&#8221; as a candidate on the job market, it&#8217;s about selling yourself, and convincing the company that you would be a fit for what they are looking for.</p><p><strong>Doing your research on the company is underrated, and not all that many candidates do so, in my observation. </strong>When I was a hiring manager at Uber, roughly half of the people who got on the call with me did not do <em>any</em> research about the company, and perhaps 1 out of 10 candidates did any research on the team they interviewed for &#8211; when we had public blog posts about our work, on the company blog! So those showing up prepared helped them stand out in the &#8220;motivation&#8221; dimension, from the get go.</p><p><strong>It all starts with being able to pass the &#8220;technical&#8221; interviews &#8211; but it&#8217;s a mistake to sleep on the &#8220;behavioural parts.&#8221; </strong>To state the obvious: candidates who do not do well on the technical interview rounds will not get offers. But I&#8217;ve personally had to say to several candidates who did great on the technical side of things, but turned out to be misaligned with what we were looking for, as confirmed on the behavioral rounds.</p><p>And I do believe you can uplevel in doing better on these behavioral rounds: starting with researching what the company&#8217;s culture is like, practicing how to present yourself better, and putting yourself in the shoes of the interviewers, understanding what they are looking for.</p><p>I know plenty of software engineers who refuse to do any preparation for interviews, staying &#8220;if the company doesn&#8217;t want me as I am, they don&#8217;t deserve me anyway.&#8221; This is a valid strategy, and can work for highly  in-demand professionals, the same way as showing up to a first date in sweatpants and slippers can still work out for highly attractive and desirable people. For the rest of us not as incredibly in-demand for a position we&#8217;re applying for: it&#8217;s probably worth putting in additional effort, in hopes for better outcomes during interviews.</p>]]></content:encoded></item><item><title><![CDATA[The impact of AI on software engineers in 2026: key trends. Part 1]]></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>See also two other articles in this mini-series:</p><ul><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">AI tooling for software engineers in 2026</a></strong>: a detailed summary of survey responses, covering the most-used AI tools, trends, AI agent usage, company size and usage, and tools engineers love.</p></li><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/ai-impact-on-software-engineers-part-2">The impact of AI on software engineers in 2026: key trends. Part  2</a></strong>. Tradeoffs of AI tooling, why adopting AI at company-level is hard, what&#8217;s changed in two years, and more. </p></li></ul><p><em>Full subscribers also have access to a more detailed, <a href="https://newsletter.pragmaticengineer.com/i/40654455/reports">65-page report on our findings.</a></em></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[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[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[“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[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[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[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>See also the follow-up parts:</p><ul><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/the-impact-of-ai-on-software-engineers-2026">The impact of AI on software engineers in 2026: key trends. Part 1</a></strong>. Concerns about mounting AI costs, more engineers hitting usage limits, and AI tools having uneven effects upon different types of engineers</p></li><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/ai-impact-on-software-engineers-part-2">The impact of AI on software engineers in 2026: key trends. Part  2</a></strong>. Tradeoffs of AI tooling, why adopting AI at company-level is hard, what&#8217;s changed in two years, and more. </p></li></ul><p><em>Full subscribers also have access to a more detailed, <a href="https://newsletter.pragmaticengineer.com/i/40654455/reports">65-page report on our findings.</a></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 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><item><title><![CDATA[How Codex is built]]></title><description><![CDATA[A deepdive into how OpenAI's Codex team builds its coding agent, how engineers use it, and what it could mean for the future of software engineering. Exclusive]]></description><link>https://newsletter.pragmaticengineer.com/p/how-codex-is-built</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/how-codex-is-built</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 17 Feb 2026 17:42:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4VEI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>More than a million developers <a href="https://x.com/sama/status/2019219967250669741?s=20">use</a> OpenAI&#8217;s multi-agent coding assistant every week. Named Codex, usage has increased 5x since the start of January, the team tells me. In the first week of February, OpenAI <a href="https://openai.com/index/introducing-the-codex-app/">launched</a> the Codex desktop app, a macOS application that CEO Sam Altman calls &#8220;the most loved internal product we&#8217;ve ever had&#8221;. A few days later, OpenAI <a href="https://openai.com/index/introducing-gpt-5-3-codex/">shipped</a> GPT-5.3-Codex, which they describe as the first model that helped create itself.</p><p>Personally, I&#8217;ve been warming up to Codex since doing an interview for The Pragmatic Engineer podcast <a href="https://newsletter.pragmaticengineer.com/p/the-creator-of-clawd-i-ship-code">with Peter Steinberger</a>, the creator of OpenClaw, in which he <a href="https://newsletter.pragmaticengineer.com/i/185922983/interesting-learnings-from-thow-peter-builds-software">revealed</a> that he writes all of OpenClaw with Codex, preferring longer-running agentic loops.<em> Update: on Monday, Peter <a href="https://steipete.me/posts/2026/openclaw">announced</a> he is joining OpenAI to work on building next-generation agents. It&#8217;s a major win for OpenAI and the Codex team, while OpenClaw remains independent and open source. Check out <a href="https://newsletter.pragmaticengineer.com/p/the-creator-of-clawd-i-ship-code">my podcast with Peter</a> in his first in-depth interview, around when OpenClaw (back then: Clawd) was getting massive momentum.</em></p><p>To find out how Codex was built, how teams at OpenAI use it, and what effect it&#8217;s having on software engineering practices at the ChatGPT maker, I spoke with three people at OpenAI:</p><ul><li><p><a href="https://www.linkedin.com/in/thibault-sottiaux-27195366/">Thibault Sottiaux</a> (Tibo), head of Codex.</p></li><li><p><a href="https://www.linkedin.com/in/sqmah/">Shao-Qian (SQ) Mah</a>, researcher on the Codex team who trains the models that power it.</p></li><li><p><a href="https://www.linkedin.com/in/emmaytang/">Emma Tang</a>, head of data infrastructure, who isn&#8217;t on the Codex team but whose team uses Codex heavily.</p></li></ul><p>This deep dive covers:</p><ol><li><p><strong>How it started.</strong> From an internal experiment in late 2024, to a product used by more than a million devs.</p></li><li><p><strong>Technology and architecture choices.</strong> Why Rust and open source? In-depth on how the agent loop works.</p></li><li><p><strong>How Codex builds itself.</strong> Codex itself writes more than 90% of the app&#8217;s code, the team estimates. Also: interesting engineering practices like tiered code review, Codex self-testing itself, and onboarding new engineers to the team via pairing.</p></li><li><p><strong>Research. </strong>Training the next Codex model with the current one has parallels with software engineering. Running evals, A/B testing and internal dogfooding.</p></li><li><p><strong>Codex usage at OpenAI.</strong> Emma&#8217;s data team built an internal &#8220;data agent&#8221; in two months &#8212; that would have  probably taken over a year, before. The number of PRs is so large that the traditional PR flow is starting to crack, though.</p></li><li><p><strong>How software engineering is changing at OpenAI.</strong> The &#8220;30/70 rule:,&#8221; some engineers returning to tab-complete, and the importance of &#8220;taste.&#8221;</p></li><li><p><strong>Next steps.</strong> GPT-5.2 step change, the capability overhang, and where Codex goes next.</p></li></ol><p>Last week&#8217;s debut Pragmatic Summit, in San Francisco, featured a fireside chat with Tibo, myself, and the audience, and featured new details about how Codex is built. Paid subscribers <a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-summit-recordings">can watch this recording now</a>. <em>Free subscribers will get access to all videos from the Pragmatic Summit in a couple of weeks.</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_!4VEI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4VEI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4VEI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4VEI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4VEI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4VEI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!4VEI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4VEI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4VEI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4VEI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F203166c0-3345-4162-9176-4f9a1cac804f_1600x1067.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>Tibo, Head of Codex at OpenAI (left), and Vijaye Raji, CTO of Applications at OpenAI (center), on stage at the maiden Pragmatic Summit, in SF. <a href="https://newsletter.pragmaticengineer.com/p/the-pragmatic-summit-recordings">See the full conversation here</a></em></figcaption></figure></div><p>Longtime readers might recall a deepdive entitled <a href="https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built">How Claude Code is built</a>, based on interviews with the founding engineers at Claude Code. Some comparisons with today&#8217;s topic are obvious: Codex and Claude Code have each made bets that seem to be paying off. I was initially skeptical when I talked with the Codex team last October because the cloud-first, long-running task approach didn&#8217;t click with me. But I&#8217;ve now changed my mind.</p><h2>1. How it started</h2><p>In 2024, OpenAI was experimenting with various approaches for building a software agent. That fall, the company declared that building an <strong>aSWE</strong> (Autonomous Software Engineer) was to be a top-line goal for 2025. This vision came from the top: Greg Brockman and Sam Altman believed they should have an autonomous software engineer working alongside teams. Tibo describes the thinking:</p><blockquote><p>&#8220;Greg and Sam had the strong conviction: &#8216;eventually, we should have an autonomous software engineer working alongside us and with the capabilities seen from <a href="https://openai.com/o1/">o1</a>-preview, the time is now to have a group absolutely dedicated to making this a reality&#8217;&#8221;.</p></blockquote><p>A number of folks who&#8217;d worked on earlier prototypes were pulled into the effort, which featured:</p><ul><li><p><a href="https://www.linkedin.com/in/michael-bolin-7632712/">Michael Bolin</a>: tech lead for the Codex <a href="https://github.com/openai/codex">open source repository</a>.</p></li><li><p><a href="https://www.linkedin.com/in/gpeal/">Gabriel Peal</a>: who subsequently built the VS Code extension, mostly solo, and built the foundations of the Codex desktop app.</p></li><li><p><a href="https://www.linkedin.com/in/fouadmatin/">Fouad Matin</a>: who led the initial release of the Codex CLI, and is responsible for Codex&#8217;s safety and security approach.</p></li></ul><p>OpenAI had two teams tackle different segments of the problem space: Codex Web would focus on an async, cloud-based solution, while Codex CLI targeted iterative, local development. Both products would launch in the spring, with Codex CLI being <a href="https://openai.com/index/introducing-o3-and-o4-mini/?utm_source=chatgpt.com">announced</a> in April 2025, and Codex in ChatGPT <a href="https://openai.com/index/introducing-codex/">introduced</a> in May.</p><h2>2. Technology and architecture choices</h2><p>An obvious difference between Codex and Claude Code is the programming language. Claude Code is written in TypeScript, &#8220;<a href="https://newsletter.pragmaticengineer.com/i/174356873/2-tech-stack-and-architecture">on distribution</a>&#8221;, which plays to the underlying model&#8217;s strengths. Meanwhile, the Codex CLI is written in Rust. Tibo explains why:</p><blockquote><p>&#8220;We debated TypeScript, Go, and Rust. All three seemed like solid contenders for different time horizons. In the end, our reasoning came down to a few layers:</p></blockquote><ul><li><p><strong>Performance</strong>: We want to eventually run this agent at a massive scale where every millisecond matters. Performance is also important when running locally in a sandboxed environment.</p></li><li><p><strong>Correctness</strong>: We wanted to choose a language that helps eliminate a class of errors with things like strong typing and memory management.</p></li><li><p><strong>Engineering culture and engineering quality: </strong>There&#8217;s this interesting thing that language choice does: it gets you to think about the engineering bar you set. We decided to pick Rust because it&#8217;s extremely important for our core agent implementation to be extremely high quality&#8221;.</p></li></ul><p>There was also a practical concern about dependencies. Choosing TypeScript means using the npm package manager. Using npm often means building on top of packages that may not be fully understood &#8211; which could clearly be problematic. By going with Rust, the team has very few dependencies and can thoroughly look through the few dependencies there are.</p><p>They also want to eventually run the Codex agent in all sorts of environments &#8211; not just laptops and data centers &#8211; and even places like embedded systems. Rust makes this more achievable from a performance perspective than TypeScript or Go.</p><p>Tibo tells me that while Codex&#8217;s early performance was less standout with Rust than with TypeScript, they expected the model to catch up. Plus, choosing Rust gave them one more engineering challenge to work with. The Codex team also hired the maintainer of<a href="https://github.com/ratatui/ratatui"> </a><a href="https://ratatui.rs/">Ratatui</a> &#8211; the Rust library for building terminal user interfaces (TUIs). He&#8217;s now full-time on the Codex team, doing open source work.</p><p>The core agent and CLI are<a href="https://github.com/openai/codex"> fully open source</a> on GitHub.</p><h3>How Codex works</h3><p>The core loop is a state machine, and the agent loop is the core logic in the Codex CLI. This loop orchestrates the interaction between the user, the model, and the tools the model uses. This &#8220;agent loop&#8221; is something every AI agent uses, not just Codex, and below is how Codex implements it, at a high 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_!tS11!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tS11!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 424w, https://substackcdn.com/image/fetch/$s_!tS11!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 848w, https://substackcdn.com/image/fetch/$s_!tS11!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!tS11!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tS11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png" width="1456" height="1080" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127939,&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/188285137?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.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_!tS11!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 424w, https://substackcdn.com/image/fetch/$s_!tS11!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 848w, https://substackcdn.com/image/fetch/$s_!tS11!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!tS11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff87295a7-0941-47ed-928d-cb17d1567fe1_1640x1216.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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 Codex works, at a high level</figcaption></figure></div><ol><li><p><strong>Prompt assembly</strong>: the agent takes user input and prepares the prompt to pass to the model. On top of user input, the prompt includes system instructions (coding standards, rules), a list of available tools (including MCP servers), and the actual input: text, images, files, AGENTS.md contents, and local environment info.</p></li><li><p><strong>Inference</strong>: the prompt is converted to tokens and fed to the model, which streams back output events: reasoning steps, tool calls, or a response.</p></li><li><p><strong>Response</strong>:</p><ol><li><p>Stream the response to the user by showing it on the terminal.</p></li><li><p>If the model decides to use a tool, make this tool call: e.g. read a file, run a bash command, write code. If a command fails, the error message goes back to the model, the model attempts to diagnose the issue, and may decide to retry.</p></li></ol></li><li><p><strong>Tool response</strong> (optional): if a tool was invoked, return the response to the model. Repeat steps 3 and 4 for as long as more tool calls are needed.</p></li><li><p><strong>Assistant message</strong>: the &#8220;final message&#8221; intended for the user which closes one step in the loop. The loop then starts again with a new user message.</p></li></ol><p><strong>Compaction</strong> is an important technique for efficiently running agents. As conversations grow lengthy, the context window fills up. Codex uses a compaction strategy: once the conversation exceeds a certain token count, it calls a special Responses API endpoint, which generates a <em>smaller</em> representation of the conversation history. This smaller version replaces the old input and avoids quadratic inference costs. <em>We covered how self-attention scales quadratically <a href="https://newsletter.pragmaticengineer.com/i/141865286/scalability-challenge-from-self-attention">in our 2024 ChatGPT deepdive</a>.</em></p><p><strong>Safety</strong> is an important consideration because LLMs are nondeterministic. Codex runs in a sandbox environment that restricts network access and filesystem access by default. Tibo reflects on this choice:</p><blockquote><p>&#8220;We take a stance with the sandboxing that hurts us in terms of general adoption. However, we do not want to promote something that could be unsafe by default. As a dev, you can always go into your configuration and disable these settings if you want.</p><p>We made this default setting because many of our users are not that technical. We don&#8217;t want to give them something that could have unintended consequences&#8221;.</p></blockquote><p><strong>There are several releases per week. </strong>Internally, the team ships a new version of Codex up to three or four times a day. Externally, new releases are cut every few days and are distributed via package managers, Homebrew, and npm.</p><p>Michael Bolin&#8217;s recent blog post, &#8220;<a href="https://openai.com/index/unrolling-the-codex-agent-loop/">Unrolling the Codex Agent Loop</a>,&#8221; lays out the internals of how the agent loop works.</p><h2>3. How Codex builds itself</h2><p><strong>More than ninety percent of the Codex app&#8217;s code was generated by Codex itself,</strong> the team estimates, which happens to be roughly in line with what Anthropic has reported for Claude Code, according to what its creator Boris Cherny <a href="https://newsletter.pragmaticengineer.com/i/174356873/2-tech-stack-and-architecture">told me</a>. Both AI labs share the meta-circularity of using the coding tools to write their own code.</p><p>Tibo tells me that a typical engineer on the Codex team runs between four and eight parallel agents, which do any one of a number of tasks:</p><ul><li><p>Feature implementation</p></li><li><p>Code review</p></li><li><p>Security review</p></li><li><p>Codebase understanding</p></li><li><p>Going through plans and summarizing</p></li><li><p>Going through what team members have done and summarizing changes</p></li><li><p>Bugfixes</p></li><li><p>&#8230; and more.</p></li></ul><p><strong>Codex engineers are now &#8220;agent managers&#8221;</strong> and no longer just write code. Tibo says it&#8217;s common for an engineer to walk into the office with several tabs open on their laptop: a code review running in one, a feature being implemented in another, a security audit in a third, and a codebase summary being generated in a different tab. He says:</p><blockquote><p>&#8220;Codex is really built for multitasking. There&#8217;s this understanding that most tasks will just get done to completion.</p><p>People on our team have figured out what Codex is and isn&#8217;t capable of. There is a tricky thing in all of this, though: we have to relearn these capabilities with every model&#8221;.</p></blockquote><h3>Frequently-used &#8220;skills&#8221;</h3><p>&#8220;<a href="https://developers.openai.com/codex/skills/">Agent Skills</a>&#8221; are ways to extend Codex with task-specific capabilities, which is pretty much the same concept as <a href="https://code.claude.com/docs/en/skills">Claude Code&#8217;s skills</a>. Internally, the Codex team built 100+ Skills to share and choose from. Three interesting examples:</p><ul><li><p><strong>Security best-practices skill</strong>: a comprehensive write-up of all security practices adopted by the team. When invoked, Codex goes through each practice, checks the code, and generates patches for anything missing.</p></li><li><p><strong>&#8220;Yeet&#8221; skill:</strong> takes any code change, writes up the PR title and description based on the original plan, and creates a draft PR in one step.</p></li><li><p><strong>Datadog integration skill</strong>: Codex connects to Datadog, reviews alerts and issues, finds problems, and tries to generate a fix for them.</p></li></ul><p>The way Tibo thinks about skills is that they help steer the model to more specific behaviors, and they can also be combined. Skills are continuously published internally and team members copy from each other.</p><h3>Tiered code review</h3><p>The team set up AI code review and it always runs. The team trained a bespoke model for code review, optimizing it for signal over noise. Around nine out of 10 comments point out valid issues, says Tibo, which is equal to or slightly better than human reviewers. AI reviews are run automatically whenever a pull request moves from &#8220;draft&#8221; state to &#8220;in-review&#8221; state, and are automated via a GitHub webhook.</p><p>Following an AI review, there are two possible next steps:</p><ul><li><p><strong>Non-critical code: can be merged with no further human review.</strong> For non-critical parts of the code where speed matters more than perfection, the engineer running the agent can decide to merge the code following an AI review, when they decide it&#8217;s ready.</p></li><li><p><strong>Key parts of the codebase: mandatory human review.</strong> For key code parts such as the core agent and open source components, the team insists on careful human code reviews.</p></li></ul><h3>Other engineering practices on the team</h3><p>Here are more practices that Tibo rates as helpful for the Codex team:</p><ul><li><p><strong>AGENTS.md.</strong> Instructions stored inside a repository. On the Codex team, these files tell the agent how to navigate the codebase, which commands to run for testing, and how to follow the project&#8217;s standards. These are a bit like README files, but written for AI agents instead of humans. Agents.md has become a de facto standard across agents, and the only major agent not to use it is Claude Code. See <a href="https://agents.md/">agents.md</a> for more details.</p></li><li><p><strong>Structure code for agents: have tests!</strong> The team has deliberately structured their codebase &#8220;to make it inevitable for the model to succeed&#8221;. Structuring means having tests in-place, clear module boundaries, and instructions on how the model should run validation (eg: tests, linting, etc). When the model implements something incorrectly, a test fails, the agent notices, and it tries to figure out what went wrong. Since the model is trained to be persistent, it keeps trying until it gets it right. Tasks can run for 20 to 30 minutes, or sometimes an hour.</p></li><li><p><strong>Codex running the test suite to test itself. </strong>In what is an interesting meta-testing capability, Codex can fully test itself, using a specific skill. This skill runs tests for all of Codex&#8217;s own features. Amusingly, Codex seems to invoke this skill more often than expected.</p></li><li><p><strong>Overnight, Codex runs to generate suggested fixes.</strong> The team set up nightly runs of Codex, instructed to look for issues across Codex. Every morning, engineers review issues that Codex identified with the codebase, with fixes waiting for review.</p></li><li><p><strong>Onboarding to the Codex team via pairing. </strong>New joiners are asked to keep an open mind about how the Codex team does development, and are warned that the &#8220;how&#8221; of building software is different than at most places. A new joiner is paired with an engineer on the team and shadows them for the first part of the day, observing how they develop with Codex. They are then assigned a task in the second half of the day, and are expected to ship it to production on the same day.</p></li><li><p><strong>Unlimited Codex usage. </strong>To put everything in this deepdive in context, OpenAI employees &#8211; just like at Anthropic &#8211; have no usage cap on LLMs. This makes sense given they are building a tool they want customers to use as much as possible. However, it&#8217;s in contrast to non-AI labs. <em>Keep this in mind as we go through how the team operates.</em></p></li></ul><h3>Using Codex to debug Codex</h3><p>The Codex team holds meetings to discuss Codex, during which it&#8217;s common for engineers to fire off a thread within Codex to see if it can come back with some information. This January, something interesting began happening, Tibo told me:</p><blockquote><p>&#8220;When we asked questions related to why Codex runs in a certain way, Codex decided to debug its own systems. It connected to logs, SSH&#8217;d into research dev boxes, and analyzed ML instabilities.</p><p>It figured out a lot of useful information, and wrote a little report we could present on the screen. So, we ended up going through this doc in the meeting&#8221;.</p></blockquote><p>This feels like another meta-circularity of Codex debugging itself &#8211; or at least systems that power it!</p><h2>4. Research</h2><p>Codex is built by researchers as well as software engineers, of whom one is <a href="https://www.linkedin.com/in/sqmah/">SQ Mah</a>. He managed to move into research from software engineering by competing in the <a href="https://scrollprize.org/">Vesuvius Challenge</a>, of reading millennia-old carbonized scrolls from the ancient Roman town of Pompeii which were buried by a cataclysmic volcanic eruption of Mount Vesuvius in AD 79. SQ finished second in the contest by renting GPUs on Google Cloud, training models, taking research ideas and turning them into useful algorithms.</p><p>So, what is &#8220;research&#8221; like at OpenAI? SQ&#8217;s take:</p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/how-codex-is-built">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Steve Yegge on AI Agents and the Future of Software Engineering]]></title><description><![CDATA[Steve Yegge on the 8 levels of AI adoption, why big companies may be doomed, and why he and many AI-adopters feel drained from using agents non-stop]]></description><link>https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 10 Feb 2026 22:14:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!y0gL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb258ddb9-4482-44d1-a597-d8503cf89232_2048x1148.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Note: I&#8217;m currently in San Francisco. Last night, I attended AI Night with WorkOS, and tomorrow I&#8217;ll be hosting <a href="https://www.pragmaticsummit.com/">The Pragmatic Summit</a>.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6gca!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6gca!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png 424w, https://substackcdn.com/image/fetch/$s_!6gca!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png 848w, https://substackcdn.com/image/fetch/$s_!6gca!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png 1272w, https://substackcdn.com/image/fetch/$s_!6gca!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6gca!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png" width="1456" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&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_!6gca!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png 424w, https://substackcdn.com/image/fetch/$s_!6gca!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png 848w, https://substackcdn.com/image/fetch/$s_!6gca!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.png 1272w, https://substackcdn.com/image/fetch/$s_!6gca!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1479a6-12f4-4060-b5d7-caefa6656db0_1600x506.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>More than 200 people attended a packed <a href="https://luma.com/workos-pragmatic">AI Night event</a>, featuring hands-on demos and a fireside chat between WorkOS founder <a href="https://x.com/grinich">Michael Grinich</a> (in the middle, to the left of me) and myself</em></figcaption></figure></div><p><em>The next podcast episode <a href="https://newsletter.pragmaticengineer.com/p/the-programming-language-after-kotlin">with Kotlin&#8217;s creator, Andrey Breslav,</a> will be out on Thursday instead of tomorrow (Wednesday). Regular scheduling, including <a href="https://newsletter.pragmaticengineer.com/s/the-pulse">The Pulse</a>, resumes next week. We&#8217;ll release session recordings from the Pragmatic Summit to paid subscribers first, and later to everyone.</em></p><p><em>Please wish me luck with this event tomorrow, it&#8217;s the first ever in-person event by The Pragmatic Engineer, and there&#8217;s a full house of 500 attendees. If you&#8217;re there, come and say hi!</em></p><div><hr></div><p>Steve Yegge has been a software engineer for over 40 years, with stints at GeoWorks, Amazon, Google, and Grab. He&#8217;s known for provocative, entertaining blog posts, of which the most famous might be <a href="https://gist.github.com/chitchcock/1281611">Stevey&#8217;s Google platform rant</a>.</p><p>Steve recently published the book <em>&#8220;Vibe Coding&#8221;,</em> has also built <a href="https://github.com/steveyegge/gastown">Gas Town</a>, an open-source AI agent orchestrator, and created documentation site and community hub <a href="https://gastownhall.ai/">Gas Townhall</a> around the project. A year ago, we did <a href="https://newsletter.pragmaticengineer.com/p/amazon-google-and-vibe-coding-with">a podcast</a> focusing on his career, including how he used AI for coding. Last week, Steve and I sat down again in Salt Lake City and explored what&#8217;s changed in terms of using LLMs for coding, and also the wider tech industry.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u5UR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u5UR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u5UR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u5UR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u5UR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u5UR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7db99a33-23b5-4f42-9fff-0036150bab74_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;: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_!u5UR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u5UR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u5UR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u5UR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db99a33-23b5-4f42-9fff-0036150bab74_1600x1200.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Steve (right) and I in Salt Lake City</em></figcaption></figure></div><p>In this article, we cover:</p><ol><li><p><strong>LLMs, the end of coding by hand, and the S-curve. </strong>Initially skeptical of LLMs, Steve became a convert after trying out Claude Code. He now argues the industry is headed into a steep exponential curve that shows no signs of stopping.</p></li><li><p><strong>&#8220;50% dial&#8221; and deep cuts</strong>. Could big companies cut up to 50% of their staff in order to make way for AI tools? Such a trend might dwarf pandemic-era layoffs.</p></li><li><p><strong>Eight levels of AI adoption.</strong> A spectrum of AI adoption, from &#8220;no AI&#8221;, to &#8220;building your own orchestrator&#8221;. Steve fears engineers stuck at the lower levels will be left behind.</p></li><li><p><strong>The Dracula effect: the drain of using AI. </strong>Vibe coding at full speed can be physically draining, and Steve argues that employers shouldn&#8217;t reasonably expect more than three hours of AI-augmented work from engineers, per day.</p></li><li><p><strong>Big companies are doomed &#8211; but don&#8217;t know it. </strong>Innovation at large companies is effectively dead, and the real action will come from small, AI-augmented teams &#8211; like when cloud computing shifted the balance of power.</p></li><li><p><strong>Redundant values in the AI era. </strong>Knowing how to code doesn&#8217;t make engineers special any more, but demand for software will keep growing.</p></li><li><p><strong>Debugging and programming languages. </strong>Agents may not need good debugging tools, and language choices have never mattered less.</p></li><li><p><strong>Grieving the demise of coding by hand. </strong>Steve endured a grieving process when he realized many skills are obsolete, BUT building software is now more fun than ever.</p></li><li><p><strong>Predictions.</strong> Steve&#8217;s non-coder wife could be the top contributor to their video game, <a href="https://store.steampowered.com/app/1541710/Wyvern/">Wyvern</a>.</p></li></ol><p>Related The Pragmatic Engineer articles featuring Steve:</p><ul><li><p><a href="https://newsletter.pragmaticengineer.com/p/amazon-google-and-vibe-coding-with">Amazon, Google, and Vibe Coding with Steve Yegge</a> (podcast episode in 2025)</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/steve-yegge">The full circle of developer productivity with Steve Yegge</a> (deepdive in 2022)</p></li></ul><p>Originally, I had audio quality issues with this recording. Fortunately, I managed to improve the audio and remove echos, and the episode is also available as a podcast now:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.pragmaticengineer.com/p/from-ides-to-ai-agents-with-steve&quot;,&quot;text&quot;:&quot;Listen to the podcast version&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.pragmaticengineer.com/p/from-ides-to-ai-agents-with-steve"><span>Listen to the podcast version</span></a></p><h2>1. LLMs, the end of coding by hand, and the S-curve</h2><p><strong>One thing about you is that you&#8217;re pretty pragmatic. You were always into compilers, debugger tools, and worked on hard problems at Amazon and Google. When AI came out, I don&#8217;t remember you saying, &#8220;this is amazing!&#8221; What was your initial reaction to LLMs?</strong></p><p><strong>Steve: </strong>&#8220;I was pretty blown away that they could write fairly coherent Emacs and Lisp functions. The original ChatGPT in December 2022 could already write code in a weird language, right? Not very much of it, and it was janky; but for me, that was the beginning. I&#8217;ve had friends who were saying for 20 years, &#8220;any minute now, any day now&#8221; about AI. But 2022 was the first time that it was like, &#8220;okay, I see now.</p><p>I was still skeptical when the rumors emerged about Claude Code at the start of last year, that Anthropic had a tool internally that was writing code for them and it was a command line tool. Like many others, my reaction was &#8220;no, it&#8217;s not!&#8221; Then I used it and was like, &#8220;oh, I get it. We&#8217;re all doomed.&#8221;  It was then that I wrote <a href="https://sourcegraph.com/blog/the-death-of-the-junior-developer">The Death of the Junior Developer</a>.</p><p>So, was I a skeptic? Yes. But did I pay attention to the curves from the very beginning? Also yes. It was at that point that I thought we&#8217;re on a curve, this is a ride, and it&#8217;s not stopping, so let&#8217;s get on board and see where it goes.&#8221;</p><p>I dived in. I was feeling behind because I didn&#8217;t know AI, I didn&#8217;t know its fundamentals, or the lingo. I spent a year doing nothing but reading papers and catching up&#8221;.</p><p><strong>Your book,</strong><em><strong> &#8216;Vibe Coding&#8217;,</strong></em><strong> says on its rear cover: &#8220;the days of coding by hand are over&#8221;. When did you decide this?</strong></p><p><strong>Steve: </strong>&#8220;It was a year ago [early 2025] and that wasn&#8217;t even my quote. It&#8217;s <a href="https://en.wikipedia.org/wiki/Erik_Meijer_(computer_scientist)">Dr. Erik Meijer</a>, the inventor of many things in the programming world, and one of the most important compiler people in the world. He spent his life building technology for developers to be able to write code, and he&#8217;s saying developers aren&#8217;t going to write code anymore. That&#8217;s what caused <a href="http://www.realgenekim.me/">Gene Kim</a> (author of The Phoenix Project and former CTO of Tripwire) and I to both say that if someone this prolific in the tech world says &#8216;we&#8217;re done writing code&#8217;, then what does he see that we don&#8217;t?</p><p>He sees the curves; it&#8217;s that simple. It&#8217;s like exponential curves, they get real steep, real fast, and we&#8217;re heading into the steep part this year&#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_!NJf5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NJf5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 424w, https://substackcdn.com/image/fetch/$s_!NJf5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 848w, https://substackcdn.com/image/fetch/$s_!NJf5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 1272w, https://substackcdn.com/image/fetch/$s_!NJf5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NJf5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png" width="1456" height="904" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:904,&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_!NJf5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 424w, https://substackcdn.com/image/fetch/$s_!NJf5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 848w, https://substackcdn.com/image/fetch/$s_!NJf5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 1272w, https://substackcdn.com/image/fetch/$s_!NJf5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1fd5c-d230-41f2-af26-6af3b72dc3f2_1524x946.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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 copy of <a href="https://itrevolution.com/product/vibe-coding-book/">Vibe Coding</a> written by Gene Kim and Steve. Published mid-2025, it predicts &#8220;the days of coding by hand are over&#8221; on the rear cover</em></figcaption></figure></div><p><strong>One thing about being an engineer is that you can draw curves, but you never know when they end, or if they flatten. What makes you believe that this curve will continue? There&#8217;s also the question of how long they will scale for.</strong></p><p><strong>Steve: </strong>&#8220;The world is filled with unbelievers; people who think the S curve goes up and then flattens, and that we&#8217;re at the hump stage right now. They have thought that ever since GPT-3.5 came out. They&#8217;re like, &#8216;it&#8217;s not going to get any better&#8217;, but then GPT-4 comes out and they think that&#8217;s as good as it gets. Now Opus 4.5 is out and most people haven&#8217;t played with it, and don&#8217;t realize what&#8217;s there. But that thing is already two months old.</p><p>The half-life between models has gone from about four months at the beginning of last year to two months from Anthropic at the beginning of this year, and we&#8217;re going to see another model from them soon, which will be so much further up the curve that people will really freak out. All the bugs, all the mistakes they&#8217;re complaining about get fed right back in as training, so it doesn&#8217;t make them next time. This is what people aren&#8217;t understanding.</p><p>Also, time continues, and there&#8217;s this inevitable collision of curves: there will be societal upheaval. It&#8217;s already started and people are justifiably mad. And I&#8217;m mad too. I&#8217;m mad at Amazon for laying off 16,000 people and blaming AI without an AI strategy. Many of those people are not going to be able to find jobs, by and large, and they&#8217;re the first of many to come. Nobody has a plan for this&#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_!DaLa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DaLa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 424w, https://substackcdn.com/image/fetch/$s_!DaLa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 848w, https://substackcdn.com/image/fetch/$s_!DaLa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 1272w, https://substackcdn.com/image/fetch/$s_!DaLa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DaLa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png" width="1456" height="858" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:858,&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_!DaLa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 424w, https://substackcdn.com/image/fetch/$s_!DaLa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 848w, https://substackcdn.com/image/fetch/$s_!DaLa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 1272w, https://substackcdn.com/image/fetch/$s_!DaLa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02fe07b1-c0cf-4991-bef3-00281d26f6fb_2048x1207.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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>Steve talking how many people will be worried when they see how capable the next model is, compared to the current one</em></figcaption></figure></div><h2>2. The &#8220;50% dial&#8221; and large cuts</h2><p><strong>Why do you think Amazon did those layoffs if they don&#8217;t have an AI strategy?</strong></p><p><strong>Steve:</strong> &#8220;People will hate me for saying this, and me saying it doesn&#8217;t make it true: it was true already.  Every company has a dial [of the percentage of staff they can lay off] that they turn from zero to a hundred. It just has a default setting of what percentage of your engineers you need to get rid of in order to pay for the rest of them to have AI &#8211; because they&#8217;re all starting to spend their own salaries on tokens.</p><p>And so, at least for a while, if you want engineers to be as productive as possible, you&#8217;re going to have to get rid of half of them to make the other half maximally productive. And as it happens, half your engineers don&#8217;t want to prompt anyway and are ready to quit.</p><p>So what&#8217;s happening is that everybody on average is setting that dial to about 50%, and we&#8217;re going to lose around half the engineers from big companies, which is scary&#8221;.</p><p><strong>That would be more than during the Covid-19 pandemic and afterwards.</strong></p><p><strong>Steve:</strong> &#8220;It&#8217;s going to be way bigger. It&#8217;s going to be awful. But at the same time, something else is happening, which is that AI is enabling non-programmers to write code. It&#8217;s also enabling engineers who have seen the light and believe the curves are going to continue to go up to actually get together in groups and start to do things that rival the output of big companies that are tripping over themselves.</p><p>So, we&#8217;ve got this mad rush of innovation coming up, bottom up. And we&#8217;ve got knowledge workers being laid off by big companies because clearly big businesses are not the right size anymore.</p><p>Even Andy Jassy [Amazon&#8217;s CEO] is saying they&#8217;re going to do the same thing with fewer people. So, does this mean we&#8217;re going to have a million times more companies? Is there going to be a massive explosion of software, or are people going to get out of software altogether and do other stuff? I&#8217;m very curious about where all this goes&#8221;.</p><h2>3. Eight levels of AI adoption</h2><p><strong>Elsewhere, you&#8217;ve said something that might trigger many people, that if you use an IDE today, then you&#8217;re a bad engineer.</strong></p><p><strong>Steve: </strong>&#8220;Well, you&#8217;ve got to be a little provocative! I&#8217;m not going to say you&#8217;re a <em>bad </em>engineer because I know some very good engineers &#8211; better than me &#8211; who are still at level one or two in my chart. But I feel sorry for people who are good engineers &#8211; or who used to be &#8211; and they use Cursor, ask it questions sometimes, review its code really carefully, and then check it in. And I&#8217;m like: &#8216;dude, you&#8217;re going to get fired [because you are not keeping up with modern tools] and you&#8217;re one of the best engineers I know!&#8217;&#8221;</p><p><strong>Tell us about your chart and these eight levels.</strong></p><p><strong>Steve: </strong>&#8220;I drew it on a board in Australia for a big group of people to show what happens, as I saw them all as being at different phases. Some had their IDEs open, some had a big, wide coding agent, and others had a really narrow coding agent. I put them all on a spectrum just to show what&#8217;s going on. Here&#8217;s the levels:</p><ul><li><p><strong>Level 1:</strong> no AI</p></li><li><p><strong>Level 2: </strong>Coding agent in your IDE, permissions turned on</p></li><li><p><strong>Level 3: </strong>Coding agent in IDE, &#8220;YOLO mode.&#8221; Your trust is going up.</p></li><li><p><strong>Level 4:</strong> you&#8217;re starting to not look at the diffs anymore, but at what the agent is doing. You&#8217;re not reviewing as much, you&#8217;re letting more of it through, and you&#8217;re really focused on the conversation with the agent.</p></li><li><p><strong>Level 5:</strong> your approach is: &#8220;I just want the agent and I&#8217;ll look at the code in my IDE later, but I&#8217;m not coding with my IDE&#8221;.</p></li><li><p><strong>Level 6:</strong> several agents. You&#8217;re bored because your agent&#8217;s busy and you want to do something, so you fire up another agent, then another. And you find yourself just multiplexing between them, and you can&#8217;t &#8220;leave&#8221; [you start to get addicted to using more agents.]</p></li><li><p><strong>Level 7: </strong>10+ agents, managed by hand. This is where you typically say &#8220;oh gosh, I&#8217;ve made a mess! I accidentally texted the wrong agent and didn&#8217;t realize. How do I coordinate all these agents? What if Claude Code could run Claude Code?&#8221;</p></li><li><p><strong>Level 8:</strong> you build your own orchestrator to coordinate more agents&#8221;.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UdJX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UdJX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 424w, https://substackcdn.com/image/fetch/$s_!UdJX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 848w, https://substackcdn.com/image/fetch/$s_!UdJX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 1272w, https://substackcdn.com/image/fetch/$s_!UdJX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UdJX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png" width="1456" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&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_!UdJX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 424w, https://substackcdn.com/image/fetch/$s_!UdJX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 848w, https://substackcdn.com/image/fetch/$s_!UdJX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 1272w, https://substackcdn.com/image/fetch/$s_!UdJX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3322b1f1-3617-46e1-b210-dc220d55fe05_1600x890.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Steve explaining his eight levels of AI usage mental model</figcaption></figure></div><h2>4. The Dracula effect: the drain of using AI</h2><p><strong>One thing you&#8217;ve mentioned is that AI can really &#8220;drain&#8221; people.</strong></p><p><strong>Steve: </strong>&#8220;There is something happening that we need to start talking about as a community. There&#8217;s a vampiric effect with AI, where it gets you excited and you work really hard, and you&#8217;re capturing a ton of value.</p><p>I find myself napping during the day, and I&#8217;m talking to friends at startups and they&#8217;re finding themselves napping during the day. We&#8217;re starting to get tired and cranky.</p><p>Companies are set up to extract value from you, and then pay you for it. The way all companies have always been set up is that they will give you more work until you break. People have to learn the art of pushing back. Let&#8217;s say an engineer can be a hundred times more productive, who gets to capture all that value? Well, if the engineer goes to work and works eight hours a day and produces a hundred times as much, the company captures all that value, and that is not a fair exchange.</p><p>There&#8217;s another group of people who are capturing all the value for themselves. They go in and work for 10 minutes a day and get a hundred times as much done, they don&#8217;t tell anyone, and they&#8217;ve captured all the value. And that&#8217;s not really ideal either, right?</p><p>I think that the answer is that each and every one of us has to learn how to say &#8220;no&#8221; real fast, and get real good at it.</p><p>I seriously think founders and company leaders and engineering leaders at all levels, all the way down to line managers, have to be aware of this and realize that you might only get three productive hours out of a person who&#8217;s vibe coding at max speed. But they&#8217;re still a hundred times as productive as they would be without AI. So, do you let them work for three hours a day? The answer is yes, or your company&#8217;s going to break [because people get burnt out]&#8221;.</p><h2>5. Big companies are doomed &#8211; but don&#8217;t know it</h2><p><strong>With non-technical people getting into building software, could there be jobs for engineers to take over maintenance? For example, with websites you don&#8217;t need an engineer to build one because there&#8217;s Wix, WordPress, etc. But there are frontend engineers at big businesses where the website actually matters, and you want all these advanced bells and whistles. Could this be a thing with AI?</strong></p><p><strong>Steve:</strong> &#8220;There are going to be a lot of engineers doing software engineering, and I just think we&#8217;re all going to be doing it with AI. I think it&#8217;ll be quite some time before companies are comfortable trusting their code to be written and deployed by AI without any human involvement at all. The important point that the naysayers and the skeptics are missing is that AI is <em>not</em> coming to replace your job. It&#8217;s not a replacement function. It&#8217;s an augmentation function. It&#8217;s here to make you better at your job. And that&#8217;s not a bad thing, actually&#8221;.</p><p><strong>Assuming AI makes engineers and teams more efficient, why don&#8217;t we see more and better software being produced? Could it be that engineering teams are focusing on building internal tools around AI, not products?</strong></p><p><strong>Steve: </strong>&#8220;I&#8217;ll turn it around and ask whether what we&#8217;re seeing is innovation dying at large companies? What if we are only going to see innovation in small places? This is kind of what happened when the cloud came out.</p><p>Also, look at Meta. It feels like the biggest company in the world right now, but back in the day it was one dude. When a new enabling platform technology substrate appears, you&#8217;re going to see innovation at the fringes because of the innovator&#8217;s dilemma [when successful companies fail by ignoring innovation elsewhere]. Big companies can&#8217;t innovate. They&#8217;re all running into this problem.</p><p>Big companies may have hyper-productive engineers who are producing at a very, very high rate, but the company itself can&#8217;t absorb that work. Downstream, they&#8217;re just hitting bottlenecks and these engineers are getting shut down and they&#8217;re quitting. So, I think what&#8217;s happening is that we&#8217;re all looking at big companies going, &#8220;When are you going to give us something?&#8221; And the answer is we&#8217;re looking at big, dead companies. We just don&#8217;t know they&#8217;re dead yet&#8221;.</p><h2>6. Redundant values in the AI era</h2><p><strong>What are some beliefs from your earlier career which no longer apply because of AI?</strong></p><p><strong>Steve: </strong>&#8220;&#8216;Engineers are special&#8217;. There&#8217;s one. Sure, we learned how to do something by hand that computers can do now. Kind of cool, I guess&#8221;.</p><p><strong>But what about the &#8220;engineer mindset&#8221;? It&#8217;s not just coding that we do, right?</strong></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/steve-yegge-on-ai-agents-and-the">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>