<?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[Engineering Enablement]]></title><description><![CDATA[Research and perspectives on developer productivity. ]]></description><link>https://newsletter.getdx.com</link><image><url>https://substackcdn.com/image/fetch/$s_!Niij!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbd433b-6f11-4042-8b7d-0edb3b172966_1024x1024.png</url><title>Engineering Enablement</title><link>https://newsletter.getdx.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 11 Oct 2026 22:58:25 GMT</lastBuildDate><atom:link href="https://newsletter.getdx.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Abi Noda]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[abinoda@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[abinoda@substack.com]]></itunes:email><itunes:name><![CDATA[Abi Noda]]></itunes:name></itunes:owner><itunes:author><![CDATA[Abi Noda]]></itunes:author><googleplay:owner><![CDATA[abinoda@substack.com]]></googleplay:owner><googleplay:email><![CDATA[abinoda@substack.com]]></googleplay:email><googleplay:author><![CDATA[Abi Noda]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Don’t measure AI Code Percentage on its own]]></title><description><![CDATA[Treat it like a lens, not a KPI.]]></description><link>https://newsletter.getdx.com/p/dont-measure-ai-code-percentage-on</link><guid isPermaLink="false">https://newsletter.getdx.com/p/dont-measure-ai-code-percentage-on</guid><dc:creator><![CDATA[Scott Carey]]></dc:creator><pubDate>Wed, 07 Oct 2026 09:02:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2cb9247b-2a38-44e8-a9e5-4c5c2b164746_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Welcome to the latest issue of Engineering Enablement,</strong> a weekly newsletter sharing research and perspectives on developer productivity.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Hi everyone, I&#8217;m Scott, the new Managing Editor at DX.</p><p>Each week I&#8217;ll share what I am seeing from across the industry, with a particular focus on AI enablement, metrics, and software team dynamics. You&#8217;ll still regularly hear from <a href="https://www.linkedin.com/in/brianhouck/">Brian Houck</a>, <a href="https://www.linkedin.com/in/justinreock/">Justin Reock</a>, <a href="https://www.linkedin.com/in/eirini-kalliamvakou-1016865/">Eirini Kalliamvakou</a>, <a href="https://www.linkedin.com/in/gratiana-fu/">Gratiana Fu</a>, and our extended research community.</p><p>This week, I&#8217;m going to hand things over to Brian, who&#8217;s been thinking about the popular AI code percentage metric, and why, in a world where almost every developer has adopted AI coding tools, it needs to be applied as a lens and not a KPI.</p><div><hr></div><p><strong>Brian: </strong>The question of whether developers are using AI, and whether it is writing a lot of their code, is settled.</p><p><a href="https://newsletter.getdx.com/p/the-state-of-ai-impact-in-engineering">Across more than 500 companies</a>, weekly active AI usage now exceeds 95%. And the percentage of code being generated by AI keeps climbing. In Q3 of 2025, an average of 19% of all merged code was AI-authored. By Q2 of 2026, that figure had reached 52%.</p><p>When AI was new, the percentage of AI-authored code was a useful proxy for adoption. Moving from 10% to 30% meant developers were working differently than they had been, and it was fair to read that as progress. However, adoption is no longer an open question, so the metric has lost the role it was originally intended for.</p><p>That doesn&#8217;t mean AI Code Percentage (AICP) should come out of our measurement systems. It means being clear about its role in them.</p><h2>A useful research variable can be a bad target</h2><p>This distinction matters to me as a researcher. I want to know how much code is being generated by AI.</p><p>AICP lets us split developers or teams into cohorts and ask much more interesting questions. As AI-authored code increases, what happens to:</p><ul><li><p>PR throughput and cycle time?</p></li><li><p>Change failure rate and other quality measures?</p></li><li><p>Code review wait time?</p></li><li><p>Time spent on new capabilities versus maintenance?</p></li><li><p>Developer experience?</p></li><li><p>Developers&#8217; confidence in the changes they&#8217;re shipping?</p></li></ul><p>Most of those map onto dimensions <a href="https://newsletter.getdx.com/p/revisiting-the-dx-core-4">the Core 4</a> already tracks: Speed, Effectiveness, Quality, Impact. AICP isn&#8217;t one of them. It&#8217;s the variable you segment by in order to answer why those dimensions may be changing, which makes it an input to better understanding engineering performance, rather than a measure of engineering performance itself.</p><p>In research terms, AICP is often more interesting as an independent variable than a dependent variable. For engineering leaders, I&#8217;d put it more simply:</p><p><strong>AI Code Percentage is more useful for explaining outcomes than as an outcome itself.</strong></p><p>Being a good diagnostic doesn&#8217;t make it a good target. The test I apply to any metric someone wants to use as a goal is whether gaming it still produces the outcome you wanted. Time-to-First-PR passes this test. Push a new hire to open a trivial PR in their first week and you&#8217;ve still forced the onboarding environment to work, which was the thing you cared about. Gaming it and doing it properly are hard to tell apart, and that&#8217;s what makes it a good target.</p><p>AICP fails badly. Tell a team its AICP needs to reach 60% and they can deliver that within a quarter by routing work through agents that would have been a ten-line human change. Benchmarking also falls apart. Suppose the measurement was perfect and you knew your organization sat at 40%, while a peer sat at 60%. You&#8217;d have learned that two companies produce code differently. You still wouldn&#8217;t know which one gets more value from AI, and the gap on its own gives you no reason to move in either direction.</p><h2>Activity metrics aren&#8217;t the problem</h2><p>One of the central ideas behind the <a href="https://queue.acm.org/doi/10.1145/3454122.3454124">SPACE framework</a> was that developer productivity cannot be reduced to a single measure, and that activity should not be confused with productivity.</p><p>Activity data isn&#8217;t useless. Quite the opposite. Commits, pull requests, deployments and other observable behaviors can tell us a great deal about how a software engineering system works.</p><p>Though on the other side of the argument is lines-of-code, which has earned its reputation as a meaningless activity metric. Producing twice as much code doesn&#8217;t mean you&#8217;ve produced twice as much value, or even that you&#8217;ve done twice as much work. Often the best solution is the one that needs the least code.</p><p>AICP sidesteps that trap. It isn&#8217;t a count, it&#8217;s a rate. Since it is a proportion, more code doesn&#8217;t inherently mean a higher score, and a larger team doesn&#8217;t automatically outperform a smaller one. The question shifts from &#8220;How much code are we producing?&#8221; to &#8220;How much of our code production involves AI?&#8221;</p><p>AICP does share one limitation with lines of code: a higher number doesn&#8217;t necessarily mean a better outcome. It tells us how much of our code production involves AI, not how effectively we&#8217;re using it.</p><h2>The same AI Code Percentage can describe very different ways of working</h2><p>This problem gets more complicated as we move from autocomplete toward agents.</p><p>Imagine two teams that both report 60% AI-authored code. On the first team, developers use AI primarily as sophisticated autocomplete. They decide what to build, decompose the problem, write most of the implementation logic, inspect suggestions as they&#8217;re produced, and retain the useful ones. On the second team, developers delegate entire tasks. They describe the desired outcome, an agent explores the repository, implements a solution, runs tests and submits a pull request.</p><p>Both teams might produce the same AICP, but the role AI plays in their work is radically different.</p><p>This is why <strong>autonomy </strong>is becoming a more interesting dimension of AI adoption. Knowing that AI produced a piece of code doesn&#8217;t tell us how much of the surrounding task AI performed, how much human guidance it required, or where human judgment entered the process.</p><h2>Generated isn&#8217;t the same as shipped</h2><p>Suppose an AI agent generates 1,000 lines of code. A developer accepts 800 of them, rewrites 300 during review, removes another 200 before merge, and six weeks later half of what&#8217;s left has been replaced.</p><p>How much AI-authored code was there? The answer depends heavily on <em>when</em> you measure it.</p><p>Attributing code to AI is inherently messy. AI generates code that humans modify. Humans move and refactor AI-generated code. Suggestions get partially accepted. Developers work across multiple tools and interfaces. Agents behave differently from IDE autocomplete.</p><p>This is why I think <strong>survivorship</strong> is an increasingly important companion to AI Code Percentage. A useful way to think about AI output is as a funnel:</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p7di!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 424w, https://substackcdn.com/image/fetch/$s_!p7di!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 848w, https://substackcdn.com/image/fetch/$s_!p7di!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 1272w, https://substackcdn.com/image/fetch/$s_!p7di!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p7di!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png" width="1456" height="92" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:92,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46887,&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.getdx.com/i/219110134?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.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_!p7di!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 424w, https://substackcdn.com/image/fetch/$s_!p7di!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 848w, https://substackcdn.com/image/fetch/$s_!p7di!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 1272w, https://substackcdn.com/image/fetch/$s_!p7di!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f017331-db09-4e98-a5a9-c8c0bae08c5a_2508x158.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><p><a href="https://arxiv.org/abs/2601.16809?utm_source=chatgpt.com">Recent research</a> is beginning to look at exactly this question. A 2026 study of more than 200,000 code units across 201 open-source projects examined the subsequent fate of agent-authored code rather than simply measuring how much was generated.</p><p>The researchers found meaningful differences in how AI and human-authored code evolved after merge. More interestingly, they found significant differences in survivorship between different AI tools. The survival rate of code from Claude was nearly twice that of code from Devin.</p><h2>How I&#8217;d actually use it</h2><p>At DX, we think AICP should be treated as a lens, not a KPI. Read it alongside throughput, cycle time, quality, time allocation, and developer experience. If AICP rises, look for whether teams are delivering faster, maintaining quality, and spending less time on work they find tedious. If those metrics don&#8217;t improve, perhaps AI is exposing new bottlenecks. The patterns won&#8217;t establish cause and effect on their own, but they tell you where to investigate.</p><p>Review it quarterly, not weekly. This is the part I see missed most often. AICP describes a structural property of how a team works, and structural properties move slowly. A metric earns a weekly slot when you expect it to respond to something you did last sprint. AICP mostly won&#8217;t. Watching it closely generates noise, and it creates a temptation to force the line to move upwards.</p><p>As agentic development matures, we&#8217;ll need measures AICP was never designed to provide: how much autonomy agents are given, <a href="https://newsletter.getdx.com/p/introducing-cafes-a-framework-for">the quality of the context</a> and requirements they receive, how reliably they accomplish what the developer actually wanted, and what happens to their output after it merges.</p><p>AICP has a place in that system. It just shouldn&#8217;t be the point of it.</p><p>Don&#8217;t ask, &#8220;How do we increase our AI Code Percentage?&#8221; Ask, &#8220;What changes when our AI Code Percentage increases?&#8221;</p><p>A lens only works if you&#8217;re looking through it at something else.</p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.<br>-Scott</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/dont-measure-ai-code-percentage-on?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/dont-measure-ai-code-percentage-on?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[How Meta reduced diff authoring time by 40%]]></title><description><![CDATA[Meta researcher Moritz Beller shares how Meta measures developer productivity and how AI is changing engineers&#8217; work, metrics, and testing.]]></description><link>https://newsletter.getdx.com/p/how-meta-reduced-diff-authoring-time</link><guid isPermaLink="false">https://newsletter.getdx.com/p/how-meta-reduced-diff-authoring-time</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Fri, 02 Oct 2026 14:40:54 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/218108782/32da7f4f8b157f1e5c5f5d76f7454ce3.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Listen and watch now on <strong><a href="https://youtu.be/d1gFQ_6OWAQ">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/engineering-enablement-by-abi-noda/id1619140476">Apple</a>, and <a href="https://open.spotify.com/show/3NxjyIsuxeDMQtisDqBy7D">Spotify</a></strong>.</p><p>In this episode of Engineering Enablement, I talk with Meta researcher Moritz Beller about how Meta measures developer productivity. Moritz explains diff authoring time and how the company uses it to evaluate tools and guide engineering decisions. We explore how AI is changing engineers&#8217; work and revealing gaps in traditional metrics. We also revisit his highly influential &#8220;Mind the Gap&#8221; study and discuss the promise and risks of AI agents for testing.</p><div id="youtube2-d1gFQ_6OWAQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;d1gFQ_6OWAQ&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/d1gFQ_6OWAQ?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><h2><strong>Some takeaways: </strong></h2><h3><strong>Diff authoring time enables more precise productivity measurement</strong></h3><ul><li><p><strong>Diff authoring time measures the active work involved in creating, testing, and reviewing a specific code change.</strong> This gives Meta more precision than metrics averaged across an entire day.</p></li><li><p><strong>No single diff metric provides a complete picture of productivity.</strong> Meta considers authoring time alongside throughput, diff size, and quality to make changes in the data easier to interpret.</p></li><li><p><strong>Meta does not use diff authoring time to evaluate individual developers.</strong> It is used at the team, organizational, and company levels to identify trends, regressions, and opportunities for improvement.</p></li></ul><h3><strong>A/B experiments help Meta prioritize engineering investments</strong></h3><ul><li><p><strong>Diff-level measurement allows Meta to quantify whether changes to developer tools and frameworks save engineers time.</strong> This helps leaders decide which improvements deserve further investment.</p></li><li><p><strong>Automatic memoization in the React compiler reduced diff authoring time by roughly 30% compared with implementing caching manually.</strong> Results of that magnitude suggest that foundational improvements can be more valuable than small interface optimizations.</p></li></ul><h3><strong>AI is changing how engineers spend their time</strong></h3><ul><li><p><strong>Meta&#8217;s year-over-year diff authoring time has fallen by more than 40%, while developers are producing more and larger diffs.</strong> Moritz views the company-wide pattern as a strong signal of AI&#8217;s impact.</p></li><li><p><strong>It is not yet clear where all the saved authoring time goes.</strong> Moritz believes engineers are spending more time gathering context and performing work adjacent to coding, while relatively little time goes into writing prompts.</p></li><li><p><strong>As code becomes cheaper to generate, intent becomes more valuable.</strong> The important question is increasingly whether the finished code accurately reflects what the developer intended to build.</p></li></ul><h3><strong>Traditional telemetry misses important engineering work</strong></h3><ul><li><p><strong>Activities like whiteboarding, brainstorming, and architectural alignment are difficult to connect to code changes through conventional telemetry.</strong> Meeting transcripts and other AI-generated records could help make that work more visible.</p></li><li><p><strong>Cheaper code generation does not eliminate the need for architecture.</strong> Skipping a design document can simply transfer the cost to reviewers, who must reconstruct the intended design from the implementation.</p></li></ul><h3><strong>Developer productivity is both measured and perceived</strong></h3><ul><li><p><strong>Moritz&#8217;s &#8220;Mind the Gap&#8221; study connected automatically measured activity with developers&#8217; perceptions of their own productivity.</strong> Time spent coding was an important predictor, but sleep, interruptions, and on-call responsibilities also mattered.</p></li><li><p><strong>A modern version of the study would need to account for agentic work.</strong> Moritz would examine how developers interact with agents, how much they trust them, and whether managing parallel work creates cognitive overload.</p></li><li><p><strong>Higher output does not necessarily improve developer experience.</strong> Brian points to research showing that output can rise while flow, cognitive load, and overall experience remain flat or worsen.</p></li></ul><h3><strong>AI makes testing easier but not necessarily safer</strong></h3><ul><li><p><strong>Agents make it inexpensive to generate unit and end-to-end tests.</strong> This could fill gaps left by developers who previously did little testing.</p></li><li><p><strong>Passing tests can create false confidence when both the implementation and tests reflect the same misunderstanding.</strong> The agent may satisfy its interpretation of an underspecified request without delivering what the developer actually intended.</p></li><li><p><strong>Specification-driven development could become a new form of test-driven development.</strong> Defining correctness before implementation may matter more as agents take on more of the coding.</p></li></ul><h3><strong>Collaboration remains one of the hardest parts of productivity to measure</strong></h3><ul><li><p><strong>Interpersonal dynamics, alignment, and knowledge sharing are central to engineering productivity but poorly captured by existing metrics.</strong> Faster implementation also makes it easier for teams to unknowingly duplicate one another&#8217;s work.</p></li><li><p><strong>Reducing low-quality meetings can produce major throughput gains, but eliminating collaboration creates different problems.</strong> Teams still need enough interaction to generate ideas, share context, and stay aligned.</p></li><li><p><strong>Small human interactions can have measurable value.</strong> Brian&#8217;s research found that informal conversation before and after meetings predicted self-reported productivity better than internet quality.</p></li></ul><h2><strong>In this episode, we cover:</strong></h2><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=130s">02:10</a>) Moritz&#8217;s role at Meta</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=241s">04:01</a>) Measuring diff authoring time</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=500s">08:20</a>) Measuring A/B experiments</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=731s&amp;pp=0gcJCWMAwfN6Pr3D">12:11</a>) What diff authoring time reveals</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=885s">14:45</a>) Planning and leadership reporting</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=1116s">18:36</a>) Why Meta measures teams, not individuals</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=1353s">22:33</a>) Where developer time goes with AI</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=1566s">26:06</a>) AI&#8217;s impact on junior and senior developers</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=1638s">27:18</a>) Capturing invisible work with AI</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=1772s">29:32</a>) The &#8220;Mind the Gap&#8221; study</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=2020s">33:40</a>) Revisiting &#8220;Mind the Gap&#8221; in 2026</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=2312s">38:32</a>) AI agents for software testing</p><p>(<a href="https://www.youtube.com/watch?v=d1gFQ_6OWAQ&amp;t=2509s">41:49</a>) What remains hard to measure</p><p><strong>Where to find Moritz Beller:</strong></p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/inventitech">https://www.linkedin.com/in/inventitech</a></p><p>&#8226; X: <a href="https://x.com/Inventitech">https://x.com/Inventitech</a></p><p>&#8226; GitHub: <a href="https://github.com/Inventitech">https://github.com/Inventitech</a></p><p>&#8226; Website: <a href="https://inventitech.com">https://inventitech.com</a></p><p><strong><span>Where to find Brian Houck:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/brianhouck"><span>https://www.linkedin.com/in/brianhouck</span></a></p><h2><strong>Referenced:</strong></h2><p>&#8226; <a href="https://getdx.com/report/State-of-AI-Impact-in-Engineering-Q2-Report">State of AI Impact in Engineering Q2 Report 2026</a></p><p>&#8226; <a href="https://arxiv.org/abs/2606.00438">GitHub Copilot and Developer Productivity: An Observational Dose-Response Analysis</a></p><p>&#8226; <a href="https://qb4.acm.org/detail.cfm?id=3807966">From Technical Debt to Cognitive and Intent Debt</a></p><p>&#8226; <a href="https://arxiv.org/abs/2012.07428">Mind the Gap: On the Relationship Between Automatically Measured and Self-Reported Productivity</a></p><p>&#8226; <a href="https://arxiv.org/abs/2605.23135">The Impact of AI Coding Assistants on Software Engineering: A Longitudinal Study</a></p><p>&#8226; <a href="https://dl.acm.org/doi/10.1145/2786805.2786843">When, how, and why developers (do not) test in their IDEs | Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering</a></p><p>&#8226; <a href="https://getdx.com/guide/dora-space-devex/">DORA, SPACE, and DevEx: Which framework should you use</a></p><p>&#8226; <a href="https://arxiv.org/abs/2008.11147">A Tale of Two Cities: Software Developers Working from Home During the COVID-19 Pandemic</a></p>]]></content:encoded></item><item><title><![CDATA[Do you really need another framework? ]]></title><description><![CDATA[Where CAFE(S) fits with your existing measurement and evaluation stack.]]></description><link>https://newsletter.getdx.com/p/do-you-really-need-another-framework</link><guid isPermaLink="false">https://newsletter.getdx.com/p/do-you-really-need-another-framework</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Wed, 30 Sep 2026 10:01:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e59f71f7-7d4f-43c7-abae-b2c86a8c9f7c_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Welcome to the latest issue of Engineering Enablement,</strong> a weekly newsletter sharing research and perspectives on developer productivity.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Whenever a new evaluation framework shows up, the first reasonable question is which existing one it competes with. That reflex is healthy. New frameworks often overlap with things you&#8217;re already measuring, and every addition comes with some cost. Anyone who has watched a measurement program collapse under its own weight has learned to ask what is being displaced before adopting something new.</p><p>I wanted to answer that question for my <a href="https://getdx.com/whitepaper/the-cafes-framework/">recently published CAFE(S) framework</a>, because it doesn&#8217;t compete with what you&#8217;re already running. CAFE(S) is a framework for evaluating the quality of the context we give AI agents across five dimensions: Clarity, Actionability, Fidelity, Efficiency, and (Security). It asks whether the information agents have to work with is good enough for the tasks they&#8217;re trying to accomplish.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Engineering Enablement! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><a href="https://www.atlassian.com/devops/frameworks/dora-metrics">DORA</a> looks at your delivery system. <a href="https://queue.acm.org/doi/10.1145/3454122.3454124">SPACE</a>, <a href="https://getdx.com/research/measuring-developer-productivity-with-the-dx-core-4/">DX Core 4</a>, and <a href="https://queue.acm.org/doi/10.1145/3819080">EngThrive</a> look at developers and the outcomes they&#8217;re working toward. Retrieval and model evals assess what the AI retrieved and produced. OWASP looks at the risk surface. Context and harness engineering guidance tells you how to build the environment the agent works in.</p><p>What none of your existing frameworks were built to look at is the information the agent was handed in the first place. <a href="https://newsletter.getdx.com/p/your-agent-doesnt-have-a-model-problem">I&#8217;ve argued that AI didn&#8217;t create a context problem,</a> but pushed an existing issue past its breaking point.</p><p>This isn&#8217;t an argument to drop what you&#8217;re already running, or to blindly bolt one more framework onto the stack. The rest of this piece looks at where CAFE(S) sits alongside existing frameworks you may be using. In doing so, I hope to make the boundaries between all of them a little clearer.</p><h3>Delivery and experience metrics tell you something is wrong, not where</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xmm3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xmm3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 424w, https://substackcdn.com/image/fetch/$s_!xmm3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 848w, https://substackcdn.com/image/fetch/$s_!xmm3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!xmm3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xmm3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png" width="1456" height="1159" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1159,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157822,&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.getdx.com/i/217846456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.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_!xmm3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 424w, https://substackcdn.com/image/fetch/$s_!xmm3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 848w, https://substackcdn.com/image/fetch/$s_!xmm3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!xmm3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97bcef15-63f6-4f71-bf26-e93eccc8d4d0_2512x2000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>DORA, SPACE, DX Core 4, and EngThrive are all anchored to outcomes, which is exactly why they&#8217;ve survived several technology cycles and <a href="https://newsletter.getdx.com/p/revisiting-the-dx-core-4">why I don&#8217;t expect AI to invalidate any of them</a>.</p><p>But an outcome moving in the wrong direction is a problem, not a diagnosis. Change failure rate climbing, DXI sliding, or innovation rate stagnating tells you where to start asking questions, not what caused the change.</p><p>Core 4 and EngThrive both explicitly carry diagnostic dimensions alongside the outcome ones, so this isn&#8217;t a clean lagging vs. leading split, but those diagnostics aren&#8217;t focused on the assembled context as a first-class engineering artifact.</p><p>We&#8217;re still trying to accomplish the same top-level outcomes in our agentic workflows as we were before. What has changed is the diagnostic surface, requiring us to look in new places for answers when we&#8217;re not achieving them.</p><blockquote><p><strong>Ask yourself: </strong>when a delivery or experience metric moves the wrong way, can you tell whether the information your agents worked from had anything to do with it?</p></blockquote><h3>Retrieval evals tell you whether retrieval worked, not whether the context worked</h3><p>Retrieval-augmented generation (<a href="https://aclanthology.org/2024.eacl-demo.16/">RAG) evaluation frameworks</a> measure the quality of the information retrieved and the responses generated from it, which touches on the Fidelity and Efficiency dimensions of CAFE(S). If you run RAG evals well, you already have two of the five properties partially covered.</p><p>The other three (Clarity, Actionability, and Security) are outside their frame. A retrieval eval does not ask whether the task was stated in a way that admits a single interpretation, whether anyone defined what finished looks like, or whether attacker-controlled content made it into the window.</p><p>There&#8217;s an important difference in what gets evaluated. A retrieval eval scores the information your retriever fetched. The agent reasons over the whole assembled context, which also includes the human&#8217;s prompt, the root <a href="http://agents.md">AGENTS.md</a> file, tool output, prior turns, and whatever memory the harness decided to carry forward. Most of that never passed through your retriever, so most of it never appears in your eval.</p><blockquote><p><strong>Ask yourself:</strong> are you evaluating the passages your retriever returned, or everything the agent actually read?</p></blockquote><h3>OWASP evaluates security risk, not context quality</h3><p><a href="https://genai.owasp.org/llm-top-10/">OWASP</a> goes much deeper on security risk than CAFE(S) does. The &#8216;S&#8217; pillar is one property among five; OWASP provides focused security guidance. If you&#8217;re choosing between them for security depth, you shouldn&#8217;t choose CAFE(S). But you shouldn&#8217;t have to choose between them.</p><p>CAFE(S) puts security inside a broader quality model for context. That&#8217;s useful because security and usefulness aren&#8217;t always separable. Oversharing, for example, can be both a security failure and an efficiency failure. Trimming unnecessary context can simultaneously reduce token spend and shrink the attack surface.</p><p>Failures of the first four dimensions of CAFE(S) make agents less effective. Failures of security make them unsafe.</p><blockquote><p><strong>Ask yourself: </strong>are you evaluating your context for both usefulness and safety?</p></blockquote><h3>Context engineering tells you how to build context, not whether it&#8217;s good</h3><p><a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents">Anthropic&#8217;s context engineering guidance</a>, <a href="https://martinfowler.com/articles/harness-engineering.html">Birgitta B&#246;ckeler&#8217;s harness engineering</a> guidance, and <a href="https://openai.com/index/harness-engineering/">OpenAI&#8217;s harness engineering</a> guide all offer practices for building better context and harnesses. CAFE(S) starts at the other end: given the context an agent actually received, was it any good?</p><p>That&#8217;s the difference between prescriptive and evaluative. You can follow good context engineering practices and still end up with context that is ambiguous, incomplete, stale, bloated, or unsafe. Conversely, CAFE(S) doesn&#8217;t tell you which retrieval strategy, memory architecture, or harness design to use. It gives you properties for evaluating the result.</p><blockquote><p><strong>Ask yourself:</strong> do you have a definition of good context that is independent of how you built it?</p></blockquote><h3>TRUCE evaluates code quality, not context quality</h3><p><a href="https://doi.org/10.1145/3528579.3529177">TRUCE</a> is a multidimensional framework for evaluating code quality and is the closest conceptual sibling to CAFE(S).</p><p>CAFE(S) applies a similar idea to a different engineering artifact. As context becomes a first-class input to agentic software development, its quality matters independent of the quality of the code that eventually comes out.</p><p>TRUCE gives us a language for thinking about the quality of code. CAFE(S) is intended to do the same for context.</p><blockquote><p><strong>Ask yourself: </strong>if context is becoming a first-class engineering artifact, do you have a way to evaluate its quality?</p></blockquote><h2>Final thoughts</h2><p>So, do you need another framework? Maybe that&#8217;s the wrong question.</p><p>DORA, SPACE, retrieval evals, OWASP, TRUCE, and CAFE(S) aren&#8217;t competing ways to measure the same thing. They answer different questions about different parts of the engineering system.</p><p>CAFE(S) adds one that has become increasingly important in agentic development: was the context we gave the agent any good?</p><p>It doesn&#8217;t replace what you&#8217;re already using. It fills the gaps between them.</p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/do-you-really-need-another-framework?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/do-you-really-need-another-framework?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Introducing CAFE(S): A framework for defining AI context quality]]></title><description><![CDATA[Five durable properties for evaluating the context we hand to AI agents]]></description><link>https://newsletter.getdx.com/p/introducing-cafes-a-framework-for</link><guid isPermaLink="false">https://newsletter.getdx.com/p/introducing-cafes-a-framework-for</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Thu, 24 Sep 2026 16:42:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/08cff1d6-246b-418c-91f4-1a13cf42d7c4_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Welcome to the latest issue of Engineering Enablement,</strong> a weekly newsletter sharing research and perspectives on developer productivity.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p>&#128467; <a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness?utm_source=newsletter">Join DX&#8217;s live research panel today</a> as we introduce CAFE(S), a framework for improving AI agent effectiveness through better context. <a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness?utm_source=newsletter">Register here.</a></p><div><hr></div><p><span>This special issue marks the release of </span><strong><span>CAFE(S)</span></strong><span>, a new framework for evaluating the quality of context assembled for AI systems. I had the privilege of co-authoring it with Max Kanat-Alexander (Capital One), Eirini Kalliamvakou (DX, formerly GitHub), Margaret-Anne Storey (University of Victoria), and Nicole Forsgren (Google). </span></p><p><span>It is out now in </span><em><span>ACM Queue</span></em><span>, and you can </span><strong><a href="https://getdx.com/whitepaper/the-cafes-framework/"><span>download the paper here.</span></a></strong></p><h2><span>Low-quality context now exacts a high price</span></h2><p><span>For most of software&#8217;s history, knowledge management has been a major source of developer pain. Engineers have struggled with out-of-date documentation, unclear specifications, and conflicting requirements for decades. Poor context might have been a drag on developer experience, but that pain could be absorbed because a developer could go over and ask a peer for clarification.</span></p><p><span>What&#8217;s changed isn&#8217;t that context started mattering. It&#8217;s that the consequences now arrive immediately, at scale, and usually with a number attached.</span></p><p><strong><span>Tokens</span></strong><span>. Every token sent to an agent is paid for, and context is where tokens accumulate. When Notion engineered its context for reuse through prompt caching, costs dropped roughly 90 percent with no loss in output quality, because reading cached context is far cheaper than retransmitting the same information.</span></p><p><strong><span>Liability</span></strong><span>. In February 2024, the British Columbia Civil Resolution Tribunal found Air Canada liable for a refund its customer service chatbot promised and its actual policy did not provide. Air Canada argued the chatbot was effectively responsible for its own statements. The tribunal disagreed. The damages were modest. The precedent was not.</span></p><p><strong><span>Security</span></strong><span>. EchoLeak (CVE-2025-32711) was the first documented prompt injection to achieve real-world data exfiltration from a production AI system. A single crafted email, never opened by the user, caused Microsoft 365 Copilot to pull internal documents into its working context and leak them. Untrusted information became part of the agent&#8217;s context, and the agent acted on it, faithfully.</span></p><h2><span>Translating human intent for intelligent models</span></h2><p><span>Our creative ideas aren&#8217;t automatically absorbed by intelligent models. They need to be translated before an agent can act on them. This simple pipeline describes how human intent becomes agent behavior.</span></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C6yb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 424w, https://substackcdn.com/image/fetch/$s_!C6yb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 848w, https://substackcdn.com/image/fetch/$s_!C6yb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 1272w, https://substackcdn.com/image/fetch/$s_!C6yb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C6yb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png" width="1456" height="211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:211,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27335,&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.getdx.com/i/215696862?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.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_!C6yb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 424w, https://substackcdn.com/image/fetch/$s_!C6yb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 848w, https://substackcdn.com/image/fetch/$s_!C6yb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 1272w, https://substackcdn.com/image/fetch/$s_!C6yb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6fe269-6999-4641-81d0-e20fff742aea_1974x286.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><p><span>Intent is what a person ultimately wants to accomplish. That </span><strong><span>intent</span></strong><span> must then be translated into </span><strong><span>context</span></strong><span>, which is the information that represents the task, its constraints, and the surrounding knowledge. A </span><strong><span>harness</span></strong><span> applies that context through orchestration, retrieval, tools, memory, and execution logic before passing it to a </span><strong><span>model</span></strong><span>, which supplies the underlying intelligence that produces a result.</span></p><p><span>Every layer matters, and three of them have serious disciplines behind them. Machine learning research improves models. Harness engineering improves how those models are orchestrated. Product and requirements work improves how we create and refine intent in the first place. The translation from intent into context is the one that gets relatively little attention, despite increasingly determining whether an otherwise capable agent succeeds or fails.</span></p><p><span>Some disciplines get close, but answer different questions. Knowledge management asks whether the information exists and is maintained. Information retrieval asks whether it can be found. Context engineering asks how to select and assemble it for a model. But none of those tell you whether the context itself is fit for the task at hand.</span></p><p><span>That&#8217;s the gap CAFE(S) is meant to fill.</span></p><h2><span>The five properties</span></h2><p><span>CAFE(S) names five properties of good context. The first four ask whether the context lets agents do good work. The fifth, set slightly apart in parentheses, asks whether the context is safe to use at all.</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_!8OU4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8OU4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 424w, https://substackcdn.com/image/fetch/$s_!8OU4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 848w, https://substackcdn.com/image/fetch/$s_!8OU4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 1272w, https://substackcdn.com/image/fetch/$s_!8OU4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8OU4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png" width="1456" height="401" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:401,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:136897,&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.getdx.com/i/215696862?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.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_!8OU4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 424w, https://substackcdn.com/image/fetch/$s_!8OU4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 848w, https://substackcdn.com/image/fetch/$s_!8OU4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 1272w, https://substackcdn.com/image/fetch/$s_!8OU4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d87c8e-b359-4033-a5a8-d9880b3d13d2_4200x1156.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><ul><li><p><strong><span>Clarity</span></strong><span>: can the agent interpret the request as intended? Clear context resolves the same way for the author and for the agent. When it is ambiguous, the agent may choose an incorrect interpretation, often silently, and every step after that compounds the choice.</span></p></li><li><p><strong><span>Actionability</span></strong><span>: can the agent proceed, and know when it&#8217;s done? Actionable context states the objective, relevant constraints, and what &#8220;done&#8221; looks like. Without those, agents spiral into execution loops, stop early, or declare success against a target they inferred rather than one they were given.</span></p></li><li><p><strong><span>Fidelity</span></strong><span>: can the agent trust that this context is true? Faithful context is accurate, current, internally consistent, and drawn from sources worth trusting. When it isn&#8217;t, agents reason confidently from stale guidance, or fill a gap with a guess that then becomes indistinguishable from fact.</span></p></li><li><p><strong><span>Efficiency</span></strong><span>: can the agent focus on what matters? Efficient context carries a high signal-to-noise ratio. Irrelevant material doesn&#8217;t merely take up room, it competes for the model&#8217;s attention, which is how the one detail that mattered ends up lost in the middle. And every unnecessary token is paid for.</span></p></li><li><p><strong><span>Security</span></strong><span>: should the agent have this context at all? Secure context is safe and appropriate for the agent to access and process. Failures here look like prompt injection, data leakage, and policy violations rather than merely disappointing results.</span></p></li></ul><p><span>A fair question is why we stopped at five, when timeliness, cost, and provenance are all plausible candidates. Our bar was that a property earns its own pillar only if it isn&#8217;t derivable from the others, can be acted on independently, and names a failure the others miss. Most fold in cleanly. Stale context is context that&#8217;s no longer true, which makes timeliness a facet of fidelity, and cost is a downstream consequence of efficiency rather than a property of the artifact.</span></p><p><span>What&#8217;s left is genuinely independent. Context can be clear but not faithful, describing the system as it was rather than as it is. It can be efficient and faithful but not actionable, never saying what finishing looks like. A single bad instruction can fail several pillars at once, but each one names something you can reason about, review for, and fix on its own.</span></p><p><span>Security sits in parentheses because it evaluates the same artifact while asking a different kind of question about it. Failures of the first four make agents less effective. Failures of security make them unsafe.</span></p><h2><span>Putting CAFE(S) into practice</span></h2><p><span>Understanding the five properties is a start. The value comes from treating the context you hand to agents as a first-class engineering artifact, which means someone owns it, someone reviews it, and it gets maintained as the system changes.</span></p><p><span>First, the information must be </span><strong><span>accessible</span></strong><span>; the best context is useless if it is out of the agent&#8217;s reach. Second, the system must be capable of </span><strong><span>cutting through the noise</span></strong><span> to retrieve the exact slice of data needed across scattered systems, without exhausting token budgets or context windows. Finally, the knowledge must </span><strong><span>exist in the first place</span></strong><span>. No retrieval architecture or context engineering can surface the undocumented hallway decisions and unrecorded conversations that live only in people&#8217;s heads. Only after information is captured, connected, and retrievable do the properties of CAFE(S) become the operative standard for quality.</span></p><p><span>Once you&#8217;re past those, here are the highest-leverage moves against each property.</span></p><ul><li><p><strong><span>For clarity and actionability</span></strong><span>: introduce a review discipline for shared context files like AGENTS.md or checked-in specs. You wouldn&#8217;t merge unreviewed code. Review these the same way, and scale the scrutiny to how widely they get reused. A repository-wide file shaping thousands of sessions deserves far more attention than a working note between two engineers.</span></p></li><li><p><strong><span>For fidelity</span></strong><span>: assign clear ownership and a review cadence to critical context sources, including runbooks, architecture decision records, and API schemas. Information decays as systems evolve, and an owner is what gets stale guidance pruned before an agent turns it into a confident mistake. Ownership should follow teams rather than individuals, so context survives reorgs.</span></p></li><li><p><strong><span>For efficiency</span></strong><span>: put guidance where it&#8217;s actually used. The same words can be high quality in one location and harmful in another. An instruction about running the test suite belongs in a root AGENTS.md, because nearly every session needs it. An instruction about one rarely touched file does not, because it gets injected into thousands of sessions that have nothing to do with it. Move that instruction into a comment inside the file it describes and it becomes high quality, available exactly when it&#8217;s relevant. Nothing about the words changed. Only their location did.</span></p></li><li><p><strong><span>For security</span></strong><span>: hold a hard boundary between trusted instructions and untrusted data. Emails, tickets, and pull request content are inputs, not instructions. Treating them as instructions is the mechanism behind the attack I described earlier.</span></p></li></ul><p><span>The paper goes considerably further on what individuals, teams, and organizations can do to improve context quality along the dimensions of CAFE(S).</span></p><h2><span>Final thoughts</span></h2><p><span>CAFE(S) provides a definition of context quality, not a measurement system. Our goal is to give engineering teams a shared vocabulary to discuss context, review it as a first-class asset, and intervene before bad context causes failures. While empirical metrics and automated evaluations will follow, meaningful measurement first requires a precise definition of what high-quality context actually looks like.</span></p><p><span>As software development shifts toward greater human-agent collaboration, high-quality context becomes a fundamental prerequisite for agent autonomy. Clear, actionable, faithful, efficient, and secure context creates the baseline conditions where delegating complex work becomes reasonable, though never fully guaranteed. CAFE(S) doesn&#8217;t claim good context is sufficient to hand an agent the keys; it simply shows why, without it, you shouldn&#8217;t.</span></p><div><hr></div><p><span>You can read the full paper here: </span><strong><a href="https://getdx.com/whitepaper/the-cafes-framework/"><span>CAFE(S): Your Agent Is Only as Good as Its Context</span></a></strong></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.<br>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/introducing-cafes-a-framework-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/introducing-cafes-a-framework-for?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Your agent doesn't have a model problem]]></title><description><![CDATA[The context problems humans have been quietly fixing for decades and what happens when agents inherit them.]]></description><link>https://newsletter.getdx.com/p/your-agent-doesnt-have-a-model-problem</link><guid isPermaLink="false">https://newsletter.getdx.com/p/your-agent-doesnt-have-a-model-problem</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Wed, 16 Sep 2026 10:03:38 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0fc84c32-104b-45b9-a67e-8b1ab0477321_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong><span>Welcome to the latest issue of Engineering Enablement, </span></strong><span>a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p><span>&#128467; </span><a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness/#content"><span>Join our live research panel on September 24</span></a> <span>as we introduce CAFE(S), a framework for improving AI agent effectiveness through better context. </span><a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness?utm_source=newsletter"><span>Register here.</span></a></p><div><hr></div><p><span>Some of the most publicized AI failures of the last few years came from the legal profession. </span><a href="https://natlawreview.com/article/more-sanctions-inquiries-against-lawyers-judges-cite-hallucinations"><span>Lawyers have now been sanctioned</span></a><span>, more than once, for filing briefs containing citations to cases that did not exist. It is tempting to blame these hallucinations entirely on model failure, but that offers an incomplete picture.</span></p><p><span>A brief was drafted, reviewed, and filed. Somewhere along that chain, an unsupported claim produced by a probabilistic language model became something a human was willing to represent as fact. The hallucination was the visible failure, but the root cause was the information environment surrounding the model.</span></p><p><span>A better model might hallucinate less often, but it won&#8217;t eliminate the need for the information and safeguards required to separate the plausible from the true.</span></p><p><span>That distinction is critical, and it&#8217;s showing up everywhere software gets built.</span></p><h3><span>Picking up where the code left off</span></h3><p><span>Recently, I wrote about </span><a href="https://newsletter.getdx.com/p/the-quality-paradox-of-ai-generated"><span>what AI is doing to software quality,</span></a><span> using a definition of quality that some colleagues and I developed back in 2020. The conclusion I landed on was that code is becoming a late place to look. More of what determines quality is settled before any code exists.</span></p><p><span>I ended that piece with five sentences that have stuck with me since:</span></p><blockquote><p><em><span>Reuse requires knowing what already exists in the codebase. Review requires knowing what a change was meant to accomplish. Evolvability requires knowing why the system is structured the way it is. Handoff requires knowing what the previous person was thinking. Serving user needs requires knowing what problem the software was supposed to solve in the first place.</span></em></p></blockquote><p><span>None of that knowledge necessarily lives in the code. It lives in tickets, design docs, runbooks, architecture decision records, and Slack threads. A fair amount of it lives nowhere at all except in somebody&#8217;s head.</span></p><p><span>When we hand a task to an agent, we hand over some representation of that knowledge with it. That representation is the context. And when context fails, it does not fail randomly, the same shapes keep recurring.</span></p><h3><span>We have a vocabulary for this, just not for context</span></h3><p><span>Software engineers have a rich language for recurring problems in code. Say </span><strong><a href="https://wiki.c2.com/?CodeSmell"><span>code smell</span></a></strong><span> and everyone knows you mean something that isn&#8217;t a bug, but reliably signals trouble ahead. Long method. Feature envy. Shotgun surgery. Those names are useful precisely because they convert a vague unease into something you can point at in a review.</span></p><p><span>We have almost nothing equivalent for context when working with agents. When an agent produces something wrong, the diagnosis usually stops at &#8220;the model got confused,&#8221; which explains nothing and suggests no action.</span></p><p><span>So let me offer a starting vocabulary. Call them </span><em><span>context smells</span></em><span>. Here are six I keep running into. None of them are model limitations, and all of them survive a model upgrade.</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_!XWM9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XWM9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 424w, https://substackcdn.com/image/fetch/$s_!XWM9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 848w, https://substackcdn.com/image/fetch/$s_!XWM9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 1272w, https://substackcdn.com/image/fetch/$s_!XWM9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XWM9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png" width="1456" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59066,&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.getdx.com/i/213041998?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.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_!XWM9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 424w, https://substackcdn.com/image/fetch/$s_!XWM9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 848w, https://substackcdn.com/image/fetch/$s_!XWM9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 1272w, https://substackcdn.com/image/fetch/$s_!XWM9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246d658b-a5f4-4a97-8848-3f259a82deaf_2048x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><span>Confident hallucination</span></strong><span>. The model asserts something untrue with exactly the fluency it uses for things that are true. We treat this as a model defect, and partly it is. But a model can only separate supported claims from unsupported ones if something in its context gives it a way to do that. The </span><a href="https://en.wikipedia.org/wiki/Mata_v._Avianca,_Inc."><span>sanctioned lawyers</span></a><span> weren&#8217;t undone by fabrication alone. They were undone by a workflow in which nothing downstream of the fabrication was designed to catch it.</span></p><p><strong><span>Specification ambiguity</span></strong><span>. This is the one I find most underappreciated. Faced with an obviously underdetermined request, an agent will often stop and ask for clarification. Faced with a semi-ambiguous request, it does something considerably more dangerous. </span><a href="https://arxiv.org/abs/2304.14399v1"><span>It picks an interpretation and proceeds</span></a><span>. If that first read is wrong, every subsequent step compounds it, and the work looks confident the entire way down. Nothing was missing from the context. It simply admitted more than one reasonable reading, and nobody noticed which one got chosen.</span></p><p><strong><span>Stale guidance</span></strong><span>. Context that accurately describes </span><a href="https://engineering.fb.com/2026/04/06/developer-tools/how-meta-used-ai-to-map-tribal-knowledge-in-large-scale-data-pipelines/"><span>a system that no longer exists</span></a><span>. The runbook that was correct two migrations ago. The architecture doc written before the service was split. A human reading these usually senses the mismatch and goes looking for why. An agent has no such reflex, and treats them as current.</span></p><p><strong><span>Lost in the middle</span></strong><span>. More context is not reliably better. Model performance degrades as input grows, and it degrades unevenly, </span><a href="https://doi.org/10.1162/tacl_a_00638"><span>with material buried in the middle of a long context</span></a><span> getting overlooked in favor of what sits at the edges. This one is genuinely counterintuitive, because nothing is missing. The agent has everything it needs and still fails, because the signal is competing with too much else for attention. Agents, like people, can get distracted.</span></p><p><strong><span>Lost in the details</span></strong><span>. Context that supplies plenty of implementation detail and none of the reasoning behind it. The agent optimizes local mechanics beautifully while losing track of what the task was actually for. Margaret-Anne Storey calls the underlying condition </span><a href="https://queue.acm.org/detail.cfm?id=3807966"><span>intent debt</span></a><span>, the gradual disappearance of recorded rationale from the artifacts a system leaves behind. It&#8217;s the difference between knowing that a timeout is set to 300 milliseconds and knowing whether that number came from a benchmark, a support incident, or somebody&#8217;s afternoon guess.</span></p><p><strong><span>Weekend runaway</span></strong><span>. An agent given a task with no definition of success may never discover that it&#8217;s finished. So it retries, widens scope, and </span><a href="https://arxiv.org/abs/2503.13657"><span>keeps exploring an objective that may not even be achievable</span></a><span>. The result is consumed time, consumed tokens, and occasionally a genuinely startling bill on Monday morning. This may be the least intellectually interesting failure on the list, but maybe the one most likely to get a leader&#8217;s attention.</span></p><h3><span>None of these are new</span></h3><p><span>Read that list again and notice how little of it is actually about AI.</span></p><p><span>Ambiguous specifications have been the central concern of requirements engineering for decades. Documentation that drifts out of sync with the system it describes is one of the oldest complaints in software maintenance. Signal drowning in noise is the founding problem of information retrieval. Rationale vanishing from the artifacts a team leaves behind is what knowledge management has always been about.</span></p><p><span>None of these challenges are new.  Bad context has always been a normal fact-of-life for software organizations. What kept it from being catastrophic is that humans quietly repaired it, constantly, without anyone noticing.</span></p><p><span>A new engineer handed an ambiguous ticket walks over and asks what it means. Handed a runbook that doesn&#8217;t match production, they notice the discrepancy and go find someone who knows. Handed two documents that contradict each other, they work out which one smells current, or they ask in a channel and get an answer in four minutes. Every organization I&#8217;ve studied runs on documentation that would fail inspection, and it works anyway, because a layer of human judgment sits between the bad context and the actual work.</span></p><p><span>Agents don&#8217;t reliably have that same repair loop, especially as we race to make them more autonomous. Handed the same ambiguous ticket, the same stale runbook, the same contradictory pair of documents, they proceed. Confidently, quickly, and at a scale that used to be impossible.</span></p><p><span>I don&#8217;t think AI created a context problem. I think it withdrew the error correction that had been hiding one. The information environment we&#8217;ve been tolerating was always this bad. If that&#8217;s right, it may also help explain one of DORA&#8217;s more interesting findings about AI adoption. </span><a href="https://dora.dev/research/2025/"><span>Their 2025 research</span></a><span> describes AI as an amplifier. It tends to magnify the strengths and weaknesses of the systems already surrounding agents. That&#8217;s usually framed as an organizational capability problem, but I wonder if part of it is an information problem. Teams with clearer specifications, better documentation, and more accessible organizational knowledge may simply have less damage for the human buffer to absorb in the first place.</span></p><h3><span>What you can do</span></h3><p><span>Most of what I&#8217;ve described sounds like it needs instrumentation we don&#8217;t have yet. It doesn&#8217;t (at least not to start).</span></p><p><span>Before handing a task to an agent, ask whether a competent new colleague could complete it with what you&#8217;re making available. Not a senior engineer who already knows your system. A capable person with no additional access to what&#8217;s in your head.</span></p><p><span>That test is deliberately low-tech, and it catches a surprising amount. The specification that admits two readings. The runbook describing last year&#8217;s architecture. The fifty-page dump with the one important constraint on page thirty-one. The task with no stated definition of done.</span></p><p><span>A competent new colleague would probably stop at each of those. Which interpretation did you mean? Is this runbook still current? Which of these fifty pages actually matters? What does done look like? Those questions are the human repair loop in action. The more autonomous we make agents, the less we should assume that loop will save bad context.</span></p><p><span>Naming these patterns is a start, but only a start. Context smells give us a vocabulary for recognizing trouble. They don&#8217;t give us a systematic way to evaluate the quality of context before an agent starts working. That second problem is considerably harder, and it&#8217;s where I&#8217;ve been spending most of my time lately. Over the coming weeks, I&#8217;ll be publishing a framework describing the dimensions of context quality, followed by an approach to measuring those dimensions.</span></p><p><span>For now, though, the question I&#8217;d put to any team frustrated with their agents isn&#8217;t which model they should be using.</span></p><p><span>It&#8217;s whether they&#8217;d have given the same task to a new hire and expected them to get it right.</span></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/your-agent-doesnt-have-a-model-problem?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/your-agent-doesnt-have-a-model-problem?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[How Okta sets guardrails and context for AI agents]]></title><description><![CDATA[Okta Chief Architect Robert Lucero explains how organizations can securely deploy AI agents while improving engineering productivity, testing, and software delivery.]]></description><link>https://newsletter.getdx.com/p/how-okta-governs-ai-agents-at-enterprise</link><guid isPermaLink="false">https://newsletter.getdx.com/p/how-okta-governs-ai-agents-at-enterprise</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Fri, 11 Sep 2026 15:26:03 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/214945154/730bcabfb8f2312341627e1d34c47850.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Listen and watch now on <strong><a href="https://youtu.be/KgA5wy4BINk">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/engineering-enablement-by-abi-noda/id1619140476">Apple</a>, and <a href="https://open.spotify.com/show/3NxjyIsuxeDMQtisDqBy7D">Spotify</a></strong>.</p><p><span>In this episode of Engineering Enablement, I sit down with Robert Lucero, Chief Architect at Okta, to discuss how agentic AI is changing identity and access management. We explore how organizations should define agent identities, why authentication and authorization remain foundational, and how sandboxing, fine-grained permissions, and just-in-time access let agents operate autonomously without creating unacceptable risk.</span></p><p><span>Robert shares what Okta has learned from driving AI adoption among security-minded engineers, what makes a repository ready for AI agents, and why strong testing, CI, and review processes matter even more as AI generates more code. We also discuss AI&#8217;s role in software validation, the need for human judgment, and whether AI will ultimately give the advantage to security teams or attackers.</span></p><div id="youtube2-KgA5wy4BINk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;KgA5wy4BINk&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/KgA5wy4BINk?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><h2><strong>Some takeaways: </strong></h2><h3><strong><span>Identity becomes critical when AI agents move beyond content generation</span></strong></h3><ul><li><p><strong><span>AI agents need access to documents, source code, CI systems, ticketing tools, and other resources to perform useful work.</span></strong><span> Identity systems determine which resources they can access and what actions they can take.</span></p></li><li><p><strong><span>Non-determinism makes tightly scoped access especially important.</span></strong><span> Organizations need dynamic policies, fine-grained permissions, and visibility when agents attempt to operate beyond their boundaries.</span></p></li></ul><h3><strong><span>The definition of an agent identity is still evolving</span></strong></h3><ul><li><p><strong><span>Organizations have not yet settled on whether every agent or ephemeral workload needs its own identity.</span></strong><span> An agent might instead operate under an orchestrator, a service account, or the identity of a human owner.</span></p></li><li><p><strong><span>The fundamentals of identity remain the same.</span></strong><span> Agents still need to be authenticated before organizations can apply authorization policies, governance, and access controls.</span></p></li></ul><h3><strong><span>Treat AI agents like new hires</span></strong></h3><ul><li><p><strong><span>Start agents in a sandbox with tightly scoped access and clearly defined tasks.</span></strong><span> Like new employees, agents may seek out tools or information when their environment is missing something they need.</span></p></li><li><p><strong><span>Rely on technical controls rather than assuming an agent has earned trust.</span></strong><span> Sandboxing, guardrails, and just-in-time access can limit the blast radius of unpredictable behavior.</span></p></li></ul><h3><strong><span>Identity systems are a control plane, not an orchestration layer</span></strong></h3><ul><li><p><strong><span>The identity layer governs what agents can access, trigger, and call.</span></strong><span> The workflows connecting coding, review, testing, and deployment agents will likely be orchestrated elsewhere.</span></p></li><li><p><strong><span>Identity systems can provide essential visibility into agent relationships.</span></strong><span> A relational record of agent-to-agent and agent-to-resource access makes it possible to investigate why an agent was able to take a particular action.</span></p></li></ul><h3><strong><span>Successful AI adoption depends on useful outcomes</span></strong></h3><ul><li><p><strong><span>Okta&#8217;s security-minded engineers were initially skeptical because early tools did not reliably help them do their jobs.</span></strong><span> Adoption increased as coding models improved and became more effective in real engineering workflows.</span></p></li><li><p><strong><span>The value of AI extends far beyond writing code.</span></strong><span> Engineers can use it to summarize documentation, review product specs, investigate production issues, and respond to customer requests more efficiently.</span></p></li></ul><h3><strong><span>AI readiness starts with engineering fundamentals</span></strong></h3><ul><li><p><strong><span>Repositories need clear instructions, discoverable dependencies, compatible harnesses, and defined development practices before agents can work effectively.</span></strong></p></li><li><p><strong><span>Strong testing, CI, linting, and code review provide the safety nets AI-generated changes require.</span></strong><span> Improving a repository for AI agents often makes it easier for human developers to work in as well.</span></p></li></ul><h3><strong><span>Passing tests does not prove that AI-generated code is correct</span></strong></h3><ul><li><p><strong><span>An agent can write tests and produce code that passes them without understanding the intended business outcome.</span></strong><span> Reliable validation depends on giving agents access to the right requirements and context.</span></p></li><li><p><strong><span>Human judgment remains essential for determining whether software actually solves the problem.</span></strong><span> Developers, designers, test engineers, and product owners must still evaluate whether the result meets user and business needs.</span></p></li></ul><h2><strong>In this episode, we cover:</strong></h2><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=136s">02:16</a>) Meet Robert Lucero</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=176s">02:56</a>) Why identity becomes critical as AI agents access more systems</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=367s">06:07</a>) Governing automated access for non-deterministic agents</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=481s">08:01</a>) Defining and managing agent identities</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=632s">10:32</a>) Authentication and authorization for AI agents</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=813s">13:33</a>) Determining how much autonomy to give AI agents</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=1184s">19:44</a>) Identity systems as the control plane for AI agents</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=1360s">22:40</a>) Driving AI adoption among security-minded engineers</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=1548s">25:48</a>) Why AI&#8217;s impact on engineering extends beyond coding</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=1724s">28:44</a>) The three components of AI readiness for repositories</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=1855s">30:55</a>) AI&#8217;s role in software testing and validation</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=2066s">34:26</a>) Whether AI gives defenders or attackers the advantage</p><p>(<a href="https://www.youtube.com/watch?v=KgA5wy4BINk&amp;t=2161s">36:01</a>) Where to find the best food in the country</p><p><strong><span>Where to find Robert Lucero:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/rlucero"><span>https://www.linkedin.com/in/rlucero</span></a></p><p><strong><span>Where to find Brian Houck:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/brianhouck"><span>https://www.linkedin.com/in/brianhouck</span></a></p><h2><strong>Referenced:</strong></h2><p><span>&#8226; </span><a href="https://getdx.com/report/State-of-AI-Impact-in-Engineering-Q2-Report"><span>State of AI Impact in Engineering Q2 Report 2026</span></a></p><p><span>&#8226; </span><a href="https://www.okta.com/"><span>Okta</span></a></p><p><span>&#8226; </span><a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/"><span>The Hugging Face incident and the road ahead | OpenAI</span></a></p><p><span>&#8226; </span><a href="https://github.com/features/copilot"><span>GitHub Copilot &#183; Your AI pair programmer</span></a></p><p><span>&#8226; </span><a href="https://claude.com/product/claude-code"><span>Claude Code by Anthropic | AI Coding Agent, Terminal, IDE</span></a></p><p><span>&#8226; </span><a href="https://queue.acm.org/doi/10.1145/3807963"><span>Eight Myths on Software Engineering and GenAI | Queue</span></a></p><p><span>&#8226; </span><a href="https://www.linkedin.com/in/adriana-corona/"><span>Adriana Corona</span></a></p>]]></content:encoded></item><item><title><![CDATA[AI accelerates output, not innovation]]></title><description><![CDATA[AI output explains 63% of developer time savings but shows a weak link to increased innovation ratio.]]></description><link>https://newsletter.getdx.com/p/ai-accelerates-output-not-innovation</link><guid isPermaLink="false">https://newsletter.getdx.com/p/ai-accelerates-output-not-innovation</guid><dc:creator><![CDATA[Grace Fu]]></dc:creator><pubDate>Wed, 09 Sep 2026 10:03:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d4e1b8f4-50be-481f-ab99-a577b227a255_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong><span>Welcome to the latest issue of Engineering Enablement,</span></strong><span> a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p><span>&#128467; </span><a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness?utm_source=newsletter"><span>Join DX&#8217;s live research panel on September 24</span></a><span> as Brian Houck introduces CAFE(S), a framework for improving AI agent effectiveness through better context. </span><a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness?utm_source=newsletter"><span>Register here.</span></a></p><div><hr></div><p><span>As reported in our </span><a href="https://getdx.com/report/State-of-AI-Impact-in-Engineering-Q2-Report/?utm_source=newsletter"><span>Q2 AI Impact Report</span></a><span>, time saved thanks to AI continues to increase, with developers reporting saving 6.1 hours per week in Q2 2026 compared to 3 hours in Q3 2025. However, it raises the question for engineering leaders:</span></p><p><em><span>What are developers doing with that time?</span></em></p><p><span>While AI is frequently positioned as a way to reclaim time for innovation, our data reveals a disconnect between AI-driven output and actual shifts in work composition.</span><em><span> </span></em><span>Organizations are investing in AI with the hope that the time AI saves will directly translate into faster roadmap execution and more innovation. DX tracks this using innovation ratio, the percent of engineering effort dedicated to new capabilities versus maintenance.</span></p><p><span>We used multivariate regression on a sample of 500+ DX customers to test the innovation ratio against 15 workflow metrics, including AI output, shipping velocity, and operational drag. We analyzed AI output according to how much AI-authored code, agent-delivered work, and PR throughput teams produce.</span><em><span> </span></em><span>Our analysis shows that while</span><strong><span> AI output has a powerful link to AI-driven time savings, it does not reliably translate into a higher innovation ratio.</span></strong></p><h3><span>Information-seeking may be the hidden barrier to innovation</span></h3><p><span>While AI tools are delivering measurable speed, our data suggests that reclaiming capacity for new features requires clearing organizational friction, rather than assuming AI will lead to innovation.</span></p><ol><li><p><strong><span>AI is a lever for speed</span></strong><span>. The data confirms that AI does what it promises. AI output accounts for 63% of the variation in developer time savings, suggesting that developers with higher AI output save more time.</span></p></li><li><p><strong><span>Speed doesn&#8217;t convert to innovation</span></strong><span>. Despite increased time savings, AI output suggests a weak link to innovation (p &lt; 0.01, &#946;=0.16). No single workflow metric emerged as a reliable predictor of innovation, indicating that dedicating more time for new features and capabilities is not a byproduct of moving faster.</span></p></li><li><p><strong><span>The impact of operational friction</span></strong><span>. The clearest signal tied to lower innovation ratio is information-seeking, referring to time lost hunting for context, documentation, or answers (p &lt; 0.01, &#946;=-0.19). It is not a large effect and needs additional validation, but this developer-reported friction represents a significant hypothesis for engineering leaders. It suggests that reducing operational drag may be a more effective path to increasing innovation than AI (or AI alone).</span></p></li></ol><blockquote></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BkZh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BkZh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BkZh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BkZh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BkZh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BkZh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg" width="1456" height="1029" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1029,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;: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_!BkZh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BkZh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BkZh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BkZh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f375706-f86b-47d4-8845-042a16d3a02b_2048x1448.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 buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><span>Key takeaways for engineering leaders</span></h2><ol><li><p><strong><span>Decouple AI strategy from innovation goals</span></strong><span>. AI delivers speed, but there is no evidence it automatically shifts teams toward new-feature work. Treat innovation as a separate objective requiring its own strategy</span></p></li><li><p><strong><span>Test the operational friction hypothesis</span></strong><span>. Focus on reducing time lost to information-seeking. While not yet a proven driver of innovation, it is the most promising lead for improving developer conditions.</span></p></li><li><p><strong><span>Use this as a diagnostic.</span></strong><span> Because our model accounted for only 13% of the differences in innovation ratio, much of what drives new-feature work remains unique to each company. The most valuable next step is running this analysis against your own team&#8217;s data; your strongest predictors might differ from the aggregate.</span></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.<br>-Grace</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/ai-accelerates-output-not-innovation?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/ai-accelerates-output-not-innovation?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p></li></ol>]]></content:encoded></item><item><title><![CDATA[The quality paradox of AI-generated code]]></title><description><![CDATA[What a five-part definition of quality from 2020 tells us about software development in the age of AI.]]></description><link>https://newsletter.getdx.com/p/the-quality-paradox-of-ai-generated</link><guid isPermaLink="false">https://newsletter.getdx.com/p/the-quality-paradox-of-ai-generated</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Wed, 02 Sep 2026 10:03:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7ba4ba74-fbe8-4295-8b68-7c0cb012b63c_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong><span>Welcome to the latest issue of Engineering Enablement, </span></strong><span>a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p>&#128467; <a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness/#content">Join our live research panel on September 24</a> as we introduce CAFE(S), a framework for improving AI agent effectiveness through better context. <a href="https://getdx.com/webinar/cafes-framework-improving-agent-effectiveness?utm_source=newsletter">Register here.</a></p><div><hr></div><p><span>Two numbers from the </span><a href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=newsletter"><span>2026 Q2 State of AI Impact report</span></a><span> have raised a lot of questions for me about the impact of AI on &#8220;quality&#8221;.</span></p><p><span>Across a sample of more than 500 companies, </span><em><span>code maintainability</span></em><span> improved 3.8% between Q1 and Q2. Over the same period </span><em><span>change confidence</span></em><span> fell 6.1%. Maintainability asks how easy the codebase is to understand and modify. Change confidence asks whether developers trust that their changes won&#8217;t break things.</span></p><p><span>Those two measures have historically moved together. Code you understand is code you feel safe changing. Now they are moving in opposite directions.</span></p><p><span>Layering in other findings from the report makes the picture even less clear. Documentation quality, code maintainability, and production debugging had some of the biggest improvements in the quarter&#8212;all signals we might expect to provide tailwinds to quality. At the same time, review turnaround declined, incremental delivery fell sharply, and pull requests continued to get larger&#8212;all signals that we might expect to provide headwinds.</span></p><p><span>Perhaps </span><em><span>quality </span></em><span>isn&#8217;t simply going up or down. Perhaps different parts of it are moving in different directions.</span></p><p><span>To help me frame the problem, I went back to a definition of quality that a couple of colleagues and I developed in 2020, several years before generative AI complicated the picture. I wanted to know whether our definition could help make sense of what we&#8217;re seeing now.</span></p><p><span>Turns out, the places where the data appears most contradictory make considerably more sense once we stop treating &#8220;quality&#8221; as one thing.</span></p><h3><span>What developers mean by quality, before AI could complicate it</span></h3><p><a href="https://arxiv.org/pdf/2111.04302"><span>In January 2020, Margaret-Anne Storey, Tom Zimmermann and I surveyed 131 developers and 34 engineering managers</span></a><span> at Microsoft about how they define productivity and quality, in their own words. </span><a href="https://newsletter.getdx.com/p/define-productivity"><span>(Paper summary here.)</span></a><span> We coded the open-text answers inductively, and five dimensions of quality fell out. We called these dimensions TRUCE, which are defined below:</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_!SSUr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SSUr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 424w, https://substackcdn.com/image/fetch/$s_!SSUr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 848w, https://substackcdn.com/image/fetch/$s_!SSUr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 1272w, https://substackcdn.com/image/fetch/$s_!SSUr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SSUr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png" width="1456" height="855" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:855,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67150,&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.getdx.com/i/211766445?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.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_!SSUr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 424w, https://substackcdn.com/image/fetch/$s_!SSUr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 848w, https://substackcdn.com/image/fetch/$s_!SSUr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 1272w, https://substackcdn.com/image/fetch/$s_!SSUr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a9425f-e1ed-42c9-b649-9f8fc4b74da5_1830x1074.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Six years later, TRUCE gives us a useful lens for interpreting what otherwise looks like contradictory evidence about AI and software quality.</span></p><h3><span>Robustness is unsettled, but we can see it</span></h3><p><span>Start with the dimension we instrument best.</span></p><p><span>Change failure rate volatility widened in Q2, with many organizations now swinging plus or minus three percentage points against a 4% industry benchmark. The distribution of failed deployment recovery time is leaning longer, even though developers&#8217; experience with production debugging improved slightly.</span></p><p><span>In other words, teams report getting better at diagnosing production problems while recovery outcomes are becoming more variable.</span></p><p><span>It&#8217;s important not to turn correlation into causation here. This data doesn&#8217;t tell us that AI created volatility, or even that AI amplified it. What we can say is that robustness is becoming less predictable during the same period in which AI-authored code has accelerated dramatically.</span></p><p><span>Robustness itself isn&#8217;t mysterious; we know what we&#8217;re trying to observe. Many metrics exist to try and measure robustness: failure rates, recovery times, incidents, defects, test outcomes, and more. We can debate exactly which measures are best, but when robustness changes, we have a reasonably mature vocabulary for describing what happened.</span></p><p><span>Hold onto that, because robustness turns out to be the exception. The dimensions that follow are roughly ordered by how well we can measure them, and as that measurement thins out, something consistent happens: the dimension stops behaving like one thing. Whether those two facts are related is a question I want to come back to.</span></p><h3><span>Evolvability is splitting into two things</span></h3><p><span>TRUCE derived evolvability from developers defining quality as &#8220;</span><em><span>Easy to test, </span><strong><span>easy to change</span></strong></em><span>.&#8221;  It&#8217;s natural to assume that code you understand is code you can feel safe changing. Recent academic research suggests something different may be happening when we zoom out from individual code changes to the systems they become part of.</span></p><p><span>In </span><em><a href="https://arxiv.org/abs/2601.21276"><span>More Code, Less Reuse</span></a></em><span>, Huang and colleagues compared pull requests generated by AI agents with those written by human developers. They found that AI agents were more likely to miss opportunities to reuse existing code, introducing greater redundancy. Interestingly, reviewers still tended to respond neutrally or positively to the AI-generated contributions. The authors describe this as a disconnect between the &#8220;surface-level plausibility&#8221; of the code and the technical debt accumulating underneath it.</span></p><p><span>Another recent study makes the distinction even clearer. </span><em><a href="https://arxiv.org/abs/2603.27745"><span>Needle in the Repo</span></a></em><span> evaluated 23 AI coding configurations on repository-level tasks designed to test maintainability, not just whether the resulting code worked. Across those configurations, 13.3% of outcomes passed every functional test while still failing the study&#8217;s structural maintainability criteria. Performance was especially poor on architectural concerns such as dependency control and responsibility decomposition.</span></p><p><span>Both findings point toward the same distinction. A piece of code can be easy to understand. It can work. Reviewers can even think it looks good. But the system it belongs to can still become harder to evolve.</span></p><p><span>The emerging pattern is that locally good code doesn&#8217;t guarantee a healthy system. Generated code may be perfectly understandable in isolation while duplicating something that already exists, introducing an unnecessary dependency, or putting functionality in a place that makes the broader system harder to change.</span></p><p><span>And that brings us back to the numbers I started with. Maintainability improved 3.8%. Change confidence fell 6.1%. Perhaps those measures aren&#8217;t disagreeing after all. They may simply be looking at different parts of evolvability.</span></p><h3><span>Collaboration is splitting too</span></h3><p><span>One of my favorite definitions of quality from the TRUCE paper came from a developer describing collaboration, one of the least frequently mentioned dimensions: </span></p><blockquote><p><em><span>&#8220;Quality is code or solutions that solve a problem and don&#8217;t need undue maintenance or lengthy handoff. If I get hit by a bus and the company can still easily use the code I&#8217;ve written, I&#8217;ve made a quality solution.&#8221;</span></em></p></blockquote><p><span>We wrote at the time that enabling collaboration or reuse by others &#8220;is often invisible and hard to measure,&#8221; which likely explains why it was a less frequently mentioned dimension, &#8220;and yet it is very important.&#8221; I did not expect that sentence to age the way it has.</span></p><p><span>This is where the data gets strange. Documentation quality was among the clearest wins in the quarter. That matters for collaboration. Documentation supports handoff, comprehension, and the ability of someone else to pick up your work.</span></p><p><span>At the same time, review turnaround declined. Incremental delivery, which asks whether developers work in small, testable changes, showed the sharpest decrease of any driver. Median PR size nearly doubled over the year, increasing the amount of unfamiliar code developers need to understand at once.</span></p><p><span>So we have better documentation attached to larger changes that are harder to review, written increasingly by something that isn&#8217;t on the team. Documentation quality and shared understanding aren&#8217;t the same thing. AI can document what the code does without transferring the reasoning that led to it. It can make handoff easier while making shared ownership harder.</span></p><p><span>That&#8217;s what makes the bus-factor definition feel so different to me now. AI may be improving the explicit artifacts that support handoff while making the implicit knowledge surrounding the work more difficult to maintain.</span></p><p><span>The collaboration dimension that only 17% of developers thought to mention in 2020 suddenly looks much more important. And we said at the time that we couldn&#8217;t see it very well.</span></p><h3><span>Timeliness is not the same thing as speed</span></h3><p><span>Only 7% of developers named timeliness as a dimension of quality in 2020, the lowest of the five dimensions. It is now the site of perhaps the cleanest decoupling in the data.</span></p><p><span>Median normalized PR Throughput rose 37% over four quarters. Deployment frequency is up across nearly every segment. However, over the same period, developers&#8217; perceived rate of delivery was flat.</span></p><p><span>That looks contradictory only if we assume delivery speed and timeliness are the same thing. Timeliness was not intended to be a pipeline property. It was about whether what was needed arrived when it was needed.</span></p><p><span>AI can increase the amount of code flowing through a system without changing how quickly an engineer feels able to get the thing that matters into a customer&#8217;s hands. More PRs can run into slower reviews. Faster implementation can expose bottlenecks in testing, deployment, requirements, or coordination. Additional output can simply create additional work downstream.</span></p><p><span>The pipeline got measurably faster. The felt experience of delivering on time did not.</span></p><p><span>Once again, TRUCE makes the apparent contradiction easier to understand. Our delivery-speed metrics and our experience of timeliness are measuring related things, but they aren&#8217;t measuring the same thing.</span></p><h3><span>User needs is the dimension we still can&#8217;t see</span></h3><p><span>It would be a stretch to say much of anything about AI&#8217;s impact on this dimension from the available data. That is itself a finding.</span></p><p><span>The closest available proxy in the Q2 data is perceived software quality, and it says something counterintuitive. Traditional industries and financial services, the slowest-moving segments on throughput, report the highest perceived quality.</span></p><p><span>That is self-reported and may say as much about expectations as about software, so I&#8217;d stop short of any claim stronger than this: speed and perceived quality are not moving together.</span></p><p><span>I also went looking for external research on whether the people who use software are experiencing it differently as AI authorship climbs. I came up mostly empty.</span></p><p><span>There is a great deal on defect rates, vulnerability counts, code quality, and QA workload. We have remarkably detailed telemetry about how much code AI writes, how quickly pull requests move, how frequently teams deploy, and how often changes fail. We know considerably less about whether the resulting software is actually solving people&#8217;s problems better.</span></p><p><span>That&#8217;s a striking asymmetry.</span></p><p><span>One developer in the study told us &#8220;</span><em><span>Quality is doing what the customer wants.</span></em><span>&#8221; Four years into this shift, we can measure changes in the machinery of software production with extraordinary precision while remaining largely blind to what may be the most important dimension of quality: did the thing we built serve the people using it?</span></p><h3><span>Quality was never just about the code</span></h3><p><span>Put the five dimensions back together and the story isn&#8217;t that AI is improving quality. It also isn&#8217;t that AI is destroying it. The story is that &#8220;quality&#8221; was never a scalar.</span></p><p><span>Seen this way, the maintainability/change-confidence paradox that started this piece doesn&#8217;t look like a paradox anymore. It looks like exactly what we should expect when a multidimensional construct is being pushed in different directions at once.</span></p><p><span>Six years on, I don&#8217;t think AI makes TRUCE less useful. If anything, it makes the framework more useful by reminding us what we&#8217;re actually trying to preserve. We still want software that is robust, evolvable, collaborative, timely, and serves the people using it.</span></p><p><span>What may be changing is where we need to look to understand whether we&#8217;ll get those things.</span></p><p><span>Reuse requires knowing what already exists in the codebase. Review requires knowing what a change was meant to accomplish. Evolvability requires knowing why the system is structured the way it is. Handoff requires knowing what the previous person was thinking. Serving user needs requires knowing what problem the software was supposed to solve in the first place.</span></p><p><span>None of that knowledge necessarily lives in the code.</span></p><p><span>Margaret-Anne Storey, my TRUCE co-author, has arrived somewhere similar from a different direction. Her </span><a href="https://queue.acm.org/detail.cfm?id=3807966"><span>triple debt model</span></a><span> separates technical debt, which lives in code, from cognitive debt, which lives in a team&#8217;s shared understanding, and intent debt, which lives in the artifacts recording what a system is for.</span></p><p><span>Her argument is that AI may reduce one kind of debt while accelerating the others, and that code is no longer necessarily the binding constraint on software health.</span></p><p><span>Her model maps to the findings we just walked through. Technical debt is visible in the evolvability problem. Cognitive debt shows up in the collaboration split. And intent debt helps explain why it is so difficult to know whether a system is meeting real user needs, the dimension we can barely see at all. Hers is a conceptual model rather than an empirical one, so I&#8217;d call this convergence rather than confirmation. But two frameworks built for different purposes landed on the same three places.</span></p><p><span>There&#8217;s a small irony worth noting. When </span><a href="https://aka.ms/aipaper"><span>Mansi Khemka and I asked developers in 2023</span></a><span> what they most wanted AI help with, authoring and refactoring code ranked fifth, at 25%. Documentation ranked third at 37%.</span></p><p><span>Documentation is now one of the clearest quality wins in the data. Refactoring is one of the structural signals moving most sharply in the other direction.</span></p><p><span>I wouldn&#8217;t read too much into a single comparison. But it is interesting to me that the dimension holding up best is the one where the tooling matched what developers said they wanted.</span></p><p><span>Which brings me back to the artifact itself. We have spent decades learning to evaluate code. It is worth asking whether code is still the thing that carries the most information about whether these five dimensions will hold.</span></p><h3><span>Code is not the only artifact worth evaluating</span></h3><p><span>For most of software&#8217;s history, code was the currency of software engineering. A developer understood the requirement, carried some model of the architecture in their head, knew what neighboring systems did, made a series of design decisions, and eventually expressed those decisions as code. That made code an unusually information-rich artifact, and it is why evaluating the code was a critical way to evaluate the work.</span></p><p><span>That is changing. The Q2 report found that 52.7% of code is AI-authored, up from 24% in Q4 2025 and 34% in Q1 2026. Increasingly, a developer doesn&#8217;t translate everything they know directly into code. They express an intent, provide some representation of the relevant context, and ask a machine to produce the implementation.</span></p><p><span>Intent and context aren&#8217;t quite the same thing. Intent is what a person ultimately wants to accomplish. That intent must then be translated into context, which is the information that represents the task, its constraints, and the surrounding knowledge. More of the knowledge a developer once carried implicitly now has to be externalized before the work can begin.</span></p><p><span>TRUCE still gives us language for evaluating the artifact at the end of that chain, and AI doesn&#8217;t change that. What concerns me is that the end of the chain is becoming a late place to look. As development shifts from writing implementations toward expressing intent, more of the conditions that determine all five dimensions are set before any code exists.</span></p><p><span>We know how to ask whether the artifact is good. We&#8217;re only beginning to develop the vocabulary for asking whether the context that produced it was good enough to begin with.</span></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/the-quality-paradox-of-ai-generated?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/the-quality-paradox-of-ai-generated?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Code Quality & AI Readiness at Capital One]]></title><description><![CDATA[Max Kanat-Alexander, Executive Distinguished Engineer at Capital One, discusses how AI is reshaping software development and why strong engineering fundamentals matter more than ever.]]></description><link>https://newsletter.getdx.com/p/how-capital-one-assesses-ai-readiness</link><guid isPermaLink="false">https://newsletter.getdx.com/p/how-capital-one-assesses-ai-readiness</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Wed, 26 Aug 2026 11:31:48 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/212730058/1af29867e3619ccf46328c74fd14afa7.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Listen and watch now on <strong><a href="https://youtu.be/gEuD4bP17uc">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/engineering-enablement-by-abi-noda/id1619140476">Apple</a>, and <a href="https://open.spotify.com/show/3NxjyIsuxeDMQtisDqBy7D">Spotify</a></strong>.</p><p><span>In this episode of Engineering Enablement, I sit down with Max Kanat-Alexander, Executive Distinguished Engineer at Capital One, to discuss how AI is changing software development and why strong engineering fundamentals matter more than ever.</span></p><p><span>We explore how the skills engineers need are expanding, why AI amplifies both the strengths and weaknesses of the development lifecycle, and how teams should think differently about code review, quality, and testing. Max also shares how leaders can assess whether their organizations are ready for more advanced AI workflows and why we need more research into how junior engineers become senior engineers.</span></p><div id="youtube2-gEuD4bP17uc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;gEuD4bP17uc&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/gEuD4bP17uc?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><h2><strong>Some takeaways: </strong></h2><h3><strong><span>AI amplifies the engineering system you already have</span></strong></h3><ul><li><p><strong><span>Strong engineering fundamentals matter even more with AI.</span></strong><span> AI amplifies everything that is good or bad about a software development lifecycle, so teams with strong tooling, CI, testing, and workflows are positioned to see the greatest gains.</span></p></li><li><p><strong><span>Faster coding doesn&#8217;t solve problems elsewhere in the development lifecycle.</span></strong><span> If engineers spend significant time navigating broken processes, waiting for reviews, or dealing with poor tooling, accelerating code generation only addresses a small part of their work.</span></p></li></ul><h3><strong><span>The skills engineers need are changing</span></strong></h3><ul><li><p><strong><span>Clearly expressing requirements and providing feedback are becoming increasingly important engineering skills.</span></strong><span> These are capabilities senior engineers have traditionally developed through years of experience, but they become essential much earlier when working effectively with coding agents.</span></p></li><li><p><strong><span>Deep technical knowledge still helps engineers recognize when something is wrong.</span></strong><span> Experience with languages, systems, and software design develops the pattern recognition needed to spot a flawed approach without reviewing hundreds of lines of AI-generated code.</span></p></li><li><p><strong><span>Domain understanding and problem definition are becoming more valuable.</span></strong><span> As AI gets better at reproducing knowledge found in documentation, engineers can differentiate themselves through understanding what needs to be built and why.</span></p></li></ul><h3><strong><span>Code review is fundamentally about maintainability</span></strong></h3><ul><li><p><strong><span>Human code review shouldn&#8217;t be the primary way teams catch bugs.</span></strong><span> Tests, static analysis, and other automation are more effective and scalable ways to detect defects.</span></p></li><li><p><strong><span>Human judgment remains important for evaluating maintainability and design.</span></strong><span> Reviewers can assess whether code is understandable, structured appropriately, and aligned with the longer-term intent of a system.</span></p></li><li><p><strong><span>The right quality bar depends on the codebase.</span></strong><span> A disposable script and enterprise software expected to operate for a decade shouldn&#8217;t be subjected to identical standards because the consequences and costs of getting them wrong are very different.</span></p></li></ul><h3><strong><span>Not every change needs the same review process</span></strong></h3><ul><li><p><strong><span>Code review is an important tool for developing less experienced engineers.</span></strong><span> Max says reviewing someone&#8217;s code is the most effective way he has found to improve their core software engineering skills.</span></p></li><li><p><strong><span>Trusted engineers may not need every change reviewed on codebases they deeply understand.</span></strong><span> That trust should be specific to the combination of the person and the codebase, rather than becoming a blanket exemption from review.</span></p></li><li><p><strong><span>The risk of the individual change can also determine whether human review is necessary.</span></strong><span> Teams can evaluate confidence and potential consequences rather than requiring the same review process for every PR.</span></p></li></ul><h3><strong><span>AI can create a vicious cycle of declining code quality</span></strong></h3><ul><li><p><strong><span>AI struggles when it has to build on poorly structured, poorly tested code.</span></strong><span> When weak review allows its bad output back into the codebase, the code becomes even harder for AI to work with, creating a cycle that can eventually leave teams with systems they can&#8217;t understand or maintain.</span></p></li><li><p><strong><span>AI can also help teams reverse that cycle.</span></strong><span> Agents can write tests, improve testability, and are particularly effective at refactoring when engineers deliberately direct them toward improving the codebase.</span></p></li><li><p><strong><span>Refactoring should support forward progress on product goals.</span></strong><span> Rather than attempting to clean up an entire codebase, teams should improve the parts they need to touch for upcoming work and make the necessary developer experience improvements along the way.</span></p></li></ul><h3><strong><span>AI readiness depends on how far left rigor extends</span></strong></h3><ul><li><p><strong><span>Fixing an existing software development lifecycle is much harder than building a good one from the beginning.</span></strong><span> Organizations with weak engineering practices often have to start with production problems and work backward through incident management, observability, deployment, testing, and earlier stages of development.</span></p></li><li><p><strong><span>How far left rigor extends is a useful signal of AI readiness.</span></strong><span> Organizations without strong controls around production, code review, and testing may introduce significant risk by giving engineers tools that allow them to move much faster.</span></p></li><li><p><strong><span>Leaders should evaluate the organization they actually have rather than following the AI hype cycle.</span></strong><span> Max is bullish on AI adoption, but argues that organizations need the engineering foundations to support the additional velocity it creates.</span></p></li></ul><h3><strong><span>The industry needs a better way to develop senior engineers</span></strong></h3><ul><li><p><strong><span>We still know surprisingly little about what reliably turns junior engineers into senior engineers.</span></strong><span> Mentorship and apprenticeship are widely considered important, but the practices that actually produce experienced engineers have not been deeply studied.</span></p></li><li><p><strong><span>AI makes understanding that development path more urgent.</span></strong><span> Senior engineers rely on experience to recognize failure patterns, which raises questions about how newer engineers will acquire that judgment as AI takes on more of the implementation work.</span></p></li><li><p><strong><span>AI may ultimately increase the need for engineering expertise rather than reduce it.</span></strong><span> As hundreds of millions more people gain the ability to build software and the rate of change accelerates, Max believes the world will need more experienced engineers to manage that complexity.</span></p></li></ul><h2><strong>In this episode, we cover:</strong></h2><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=114s">01:54</a>) Max&#8217;s role at Capital One</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=172s">02:52</a>) Where to invest in engineering organizations</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=396s">06:36</a>) The new entry-level engineering skills to pay attention to</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=639s">10:39</a>) Why deepening your understanding still matters</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=749s">12:29</a>) The bottlenecks around code review</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=1180s">19:40</a>) Why human code reviews still have value</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=1520s">25:20</a>) Why not all PRs need human review</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=1571s">26:11</a>) The vicious cycle of AI-driven development</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=1813s">30:13</a>) Using LLMs for refactoring</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=2038s">33:58</a>) AI readiness and why fixing engineering systems is so hard</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=2322s">38:42</a>) Why research is needed on creating good senior engineers</p><p>(<a href="https://www.youtube.com/watch?v=gEuD4bP17uc&amp;t=2460s">41:00</a>) Why AI will increase the need for engineers</p><p><strong><span>Where to find Max Kanat-Alexander:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/mkanat"><span>https://www.linkedin.com/in/mkanat</span></a></p><p><span>&#8226; X: </span><a href="https://x.com/mkanat"><span>https://x.com/mkanat</span></a></p><p><span>&#8226; Blog: </span><a href="https://www.codesimplicity.com">https://www.codesimplicity.com</a></p><p><strong><span>Where to find Brian Houck:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/brianhouck"><span>https://www.linkedin.com/in/brianhouck</span></a></p><h2><strong>Referenced:</strong></h2><p><span>&#8226; </span><a href="https://getdx.com/corefour"><span>DX Core 4 Productivity Framework</span></a></p><p><span>&#8226; </span><a href="https://www.capitalone.com/"><span>Capital One</span></a></p><p><span>&#8226; </span><a href="https://google.github.io/eng-practices/review/"><span>Code Review Guidelines at Google</span></a></p><p><span>&#8226; </span><a href="https://www.amazon.com/dp/1449313892?lv=shuf&amp;channelId=500&amp;plpRedirect=mhFallback"><span>Code Simplicity by Max Kanat-Alexander</span></a></p><p><span>&#8226; </span><a href="https://getdx.com/podcast/how-microsoft-sees-engineering-bottlenecks-changing-with-ai/"><span>How Microsoft sees engineering bottlenecks changing with AI</span></a></p>]]></content:encoded></item><item><title><![CDATA[Can “Predictable Delivery” be measured?]]></title><description><![CDATA[Five statistical techniques for turning delivery history into forecasting confidence.]]></description><link>https://newsletter.getdx.com/p/can-predictable-delivery-be-measured</link><guid isPermaLink="false">https://newsletter.getdx.com/p/can-predictable-delivery-be-measured</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Fri, 21 Aug 2026 10:03:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/32476bde-2e45-4b1f-8301-94cff44d0a13_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong><span>Welcome to the latest issue of Engineering Enablement,</span></strong><span> a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><span>An engineering leader recently asked me how to measure whether their team is predictable in their software delivery. While organizations collect many engineering metrics (cycle time, throughput, review latency, deployment frequency, etc.), there is rarely a single metric that directly measures predictability.</span></p><p><span>The central question is:</span></p><blockquote><p><strong><span>Can we use the metrics we already collect to quantify delivery predictability?</span></strong></p></blockquote><p><span>Higher delivery predictability enables more accurate release planning, resource allocation, dependency management, and stakeholder communication. Improving predictability is therefore not simply about increasing throughput; it is about increasing confidence in engineering plans.</span></p><h3><span>Key observation</span></h3><p><span>Delivery predictability is not another engineering metric; it is a statistical property of a delivery process.</span></p><p><span>Traditional metrics tell us how much work teams complete or how long work takes. Predictability tells us, given historical performance, how confidently can we forecast future delivery? Predictability is a measure of uncertainty. For example, a team that consistently delivers 20 work items each sprint is highly predictable. A team that alternates between delivering 5 and 35 work items may have the same average throughput, but is far less predictable. The distinction is not average performance. It is variation.</span></p><p><span>A note on two lenses. &#8220;Delivery predictability&#8221; can mean two related but distinct things. The first is flow stability: how consistent and low-variance a team&#8217;s delivery is over time. The second is commitment reliability: how closely actual delivery matches what was committed (a ratio of committed vs. completed work). This article focuses on flow stability, because it can be derived directly from the metrics most organizations already collect.</span></p><h3><span>Example</span></h3><p><span>Let&#8217;s walk through a practical example of two hypothetical teams&#8217; count of completed work items, by sprint:</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_!Ztij!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ztij!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 424w, https://substackcdn.com/image/fetch/$s_!Ztij!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 848w, https://substackcdn.com/image/fetch/$s_!Ztij!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 1272w, https://substackcdn.com/image/fetch/$s_!Ztij!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ztij!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png" width="1456" height="475" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:475,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30221,&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.getdx.com/i/210658582?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.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_!Ztij!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 424w, https://substackcdn.com/image/fetch/$s_!Ztij!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 848w, https://substackcdn.com/image/fetch/$s_!Ztij!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 1272w, https://substackcdn.com/image/fetch/$s_!Ztij!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7df4f5-980e-4ffc-b5f5-5c0194466eeb_1722x562.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Both teams deliver exactly the same average throughput. The difference is that Team A is predictable while Team B is not. The remainder of this article describes several statistical techniques that quantify this difference.</span></p><h3><span>What different statistical techniques tell us</span></h3><p><span>The following statistical techniques each answer a different question about delivery predictability using the Team A and Team B example.</span></p><h4><span>Standard deviation</span></h4><p><span>Standard deviation measures how much a team&#8217;s delivery typically varies from its average. A low standard deviation means delivery is consistent from sprint to sprint, while a high standard deviation indicates greater volatility.</span></p><p><span>In our example, both teams average 20 completed work items per sprint. However, Team A&#8217;s delivery stays tightly clustered around that average, while Team B swings between 10 and 30. Team B therefore has a much larger standard deviation, despite identical average throughput.</span></p><p><strong><span>Leadership takeaway:</span></strong><em><span> </span></em><span>Standard deviation answers the question, &#8220;How much does this team&#8217;s delivery naturally fluctuate?&#8221; It is often the simplest way to quantify delivery consistency.</span></p><h4><span>Coefficient of variation</span></h4><p><span>Standard deviation alone can be misleading when comparing teams of different sizes. A team delivering 80 &#177; 5 work items is more variable in absolute terms than Team A (20 &#177; 1.3), but proportionally it is just as predictable.</span></p><p><span>The coefficient of variation normalizes the standard deviation by the team&#8217;s average throughput, allowing comparisons across teams regardless of scale.</span></p><p><span>Although Teams A and B have the same average in our example, this measure becomes valuable when comparing organizations with very different delivery volumes.</span></p><p><strong><span>Leadership takeaway:</span></strong><em><span> </span></em><span>Which teams are most predictable relative to the amount of work they deliver?</span></p><h4><span>Percentiles and distribution shape</span></h4><p><span>The sections above use throughput per sprint. Percentiles are most illuminating on a per-item measure such as cycle time, the number of days a work item takes to go from </span><em><span>started</span></em><span> to </span><em><span>done</span></em><span>, so this section shifts to that lens.</span></p><p><span>Averages describe the typical case, but predictability is usually broken by the atypical case. Percentiles, rather than the mean, show how often delivery runs long and by how much.</span></p><p><span>Consider two teams that both have a median (P50) cycle time of 4 days. If the first team&#8217;s 95th percentile (P95) is 7 days while the second team&#8217;s P95 is 21 days, they are not equally predictable. The first team&#8217;s slowest work is only modestly slower than its typical work. The second team&#8217;s slowest work takes three weeks, even though half its items finish in under four days.</span></p><p><span>The gap between P50 and P95 is, in effect, a predictability measure of its own. A tight gap means most work behaves like the typical case. A wide gap means the typical case tells you little about the work that actually puts a commitment at risk.</span></p><p><span>This is why a healthy median can still mask an unpredictable process: it is the tail, not the middle, that causes missed forecasts.</span></p><p><strong><span>Leadership takeaway</span></strong><span>: When we commit to a date, are we planning against the typical case or the realistic worst case? Percentiles let us answer, &#8220;X% of work of this type finishes within N days,&#8221; a far more honest basis for a forecast than an average.</span></p><h4><span>Statistical process control (control charts)</span></h4><p><span>Control charts answer a different question. Rather than measuring overall variability, they determine whether a delivery process has fundamentally changed.</span></p><p><span>Suppose Team A suddenly delivered 9 work items in Sprint 4 instead of its usual ~20. While the average throughput might not change much immediately, a control chart would likely flag Sprint 4 as outside the team&#8217;s normal operating range.</span></p><p><span>This often indicates that something meaningful occurred, such as a production incident, staffing change, organizational restructuring, or dependency bottleneck.</span></p><p><strong><span>Leadership takeaway:</span></strong><span> Did something change that warrants investigation, or is this simply normal variation?</span></p><h4><span>Prediction intervals</span></h4><p><span>Prediction intervals translate historical variability into forward-looking planning confidence. Rather than forecasting that Team A will complete exactly 20 work items next sprint, we estimate the range it is likely to land in.</span></p><p><span>Using a 95% prediction interval, Team A is forecast to deliver roughly 17 to 23 work items next sprint. Team B, with the identical average, is forecast at 0 to 40.</span></p><p><span>That second range deserves a moment. Team B&#8217;s forecast spans from delivering nothing to delivering twice its average. It is technically correct and completely useless for planning, which is precisely the point. Team B does not have a throughput problem. It has a forecasting problem, and no average will ever surface it. Notice that neither team&#8217;s average changed. Only the confidence around that average did.</span></p><p><span>The practical implication is that interval width, maybe more than the forecast itself, is the thing worth tracking over time. A team whose range narrows is becoming more predictable, even if its average never moves.</span></p><p><strong><span>Leadership takeaway</span></strong><span>: How confidently can we forecast future delivery, and how wide is the range we should plan against?</span></p><h3><span>Beyond the spreadsheet: machine learning</span></h3><p><span>Everything above can be done in a spreadsheet. That&#8217;s deliberate. But if you have the data volume and the appetite, traditional machine learning (not LLMs) extends three of these techniques in genuinely useful ways.</span></p><p><strong><span>Conditional forecasting</span></strong><span>. The prediction intervals above are team-level, with one range for everything the team does. Quantile regression forests and conformal prediction produce intervals conditioned on the specific item. Given its size, component, and the current queue depth, this work finishes in 3 to 12 days with 90% confidence. That&#8217;s a better input to a release plan than a team-wide average.</span></p><p><strong><span>Survival analysis </span></strong><span>for work in flight. Cycle time statistics only describe items that have already finished, which quietly biases the picture toward work that went well. Survival models handle still-open items correctly and answer the question planners actually ask: what is the probability this item ships before the release date?</span></p><p><strong><span>Driver attribution</span></strong><span>. Identifying what explains variation is hard, and the place modeling can really earn its keep. A gradient-boosted model with SHAP values can rank which operational signals (review latency, WIP, incident load, dependency count) account for the most variance in delivery. Treat the output as associational and as a hypothesis generator, not as evidence of cause.</span></p><p><span>Two caveats. Many teams don&#8217;t have enough history for any of this. Eight sprints is a worked example, not a training set. And the second caveat is that you need good workflow data hygiene. A model trained on tickets that sat in &#8220;In Review&#8221; for three weeks after they were actually merged will confidently forecast fiction.</span></p><p><span>Start with the spreadsheet.</span></p><h3><span>Recommendation: Avoid a single predictability score</span></h3><p><span>While it may be tempting to distill delivery predictability into a single score, I recommend against doing so. A single number simplifies reporting, but it can also obscure important differences between teams and make it difficult to identify the underlying causes of delivery risk.</span></p><p><span>For example, teams may all receive similar scores while exhibiting fundamentally different delivery characteristics:</span></p><ul><li><p><strong><span>Consistently fast</span></strong><span> &#8211; High throughput with low variability.</span></p></li><li><p><strong><span>Consistently slow</span></strong><span> &#8211; Lower throughput, but reliable and predictable.</span></p></li><li><p><strong><span>Highly variable</span></strong><span> &#8211; Similar average performance, but large sprint-to-sprint fluctuations.</span></p></li><li><p><strong><span>Steadily improving</span></strong><span> &#8211; Predictability changing over time as the team&#8217;s delivery process matures, which a point-in-time score hides entirely.</span></p></li></ul><p><span>Rather than reducing predictability to a single KPI, I recommend reporting three complementary views:</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_!Vz2E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vz2E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 424w, https://substackcdn.com/image/fetch/$s_!Vz2E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 848w, https://substackcdn.com/image/fetch/$s_!Vz2E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 1272w, https://substackcdn.com/image/fetch/$s_!Vz2E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vz2E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png" width="1456" height="521" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d679f649-1997-42f8-91ff-9134fb68df08_2400x858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:521,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:213647,&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.getdx.com/i/210658582?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.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_!Vz2E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 424w, https://substackcdn.com/image/fetch/$s_!Vz2E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 848w, https://substackcdn.com/image/fetch/$s_!Vz2E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 1272w, https://substackcdn.com/image/fetch/$s_!Vz2E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd679f649-1997-42f8-91ff-9134fb68df08_2400x858.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>This approach preserves the information leaders need for planning while providing engineering teams with actionable insights into where process improvements will have the greatest impact.</span></p><h3><span>Recommendation: Use a multi-step approach</span></h3><p><span>I recommend measuring delivery predictability in four steps:</span></p><ol><li><p><strong><span>Select a delivery outcome</span></strong><span>. Choose a metric that represents delivery performance, such as throughput, completed work items, cycle time, or PR completion time.</span></p></li><li><p><strong><span>Measure historical variability</span></strong><span>. Quantify how consistently that outcome is achieved over time using techniques such as standard deviation, percentiles, and control charts.</span></p></li><li><p><strong><span>Forecast future delivery</span></strong><span>. Use prediction intervals to estimate a range of likely outcomes rather than relying on a single point estimate.</span></p></li><li><p><strong><span>Identify the drivers of variation</span></strong><span>. Use existing engineering metrics, such as review latency, incident load, build reliability, focus time, or team composition, to explain changes in predictability and surface opportunities for improvement.</span></p></li></ol><p><span>The goal is not to eliminate variation, but to understand it well enough to plan around it.</span></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/can-predictable-delivery-be-measured?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/can-predictable-delivery-be-measured?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Is there a relationship between cycle time and PR throughput?]]></title><description><![CDATA[There&#8217;s a closer relationship between the two in high-throughput organizations. In low-throughput organizations, there are other variables at play.]]></description><link>https://newsletter.getdx.com/p/is-there-a-relationship-between-cycle</link><guid isPermaLink="false">https://newsletter.getdx.com/p/is-there-a-relationship-between-cycle</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Wed, 19 Aug 2026 10:01:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b634985d-db98-4738-ae3d-aa1c5eccd060_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong><span>Welcome to the latest issue of Engineering Enablement, </span></strong><span>a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p><span>DX&#8217;s Q2 AI Impact Report is now available with the latest research on AI&#8217;s impact across engineering organizations. </span><a href="https://getdx.com/resources/?utm_source=newsletter">Read the full report.</a></p><div><hr></div><p><span>When teams reduce the time it takes to complete a pull request, it&#8217;s natural to assume they&#8217;ll be able to deliver more work, but this relationship is rarely quantified at scale. A customer recently brought this question to DX&#8217;s Research team, asking us to look into the relationship between PR cycle time and PR throughput.</span></p><blockquote><p><strong><span>Key takeaway: </span></strong><span>High-throughput organizations are highly sensitive to long cycle times, potentially indicating that bottlenecks like review wait times are particularly acute for these orgs. For lower-throughput teams, there is no meaningful relationship between cycle time and throughput, suggesting bottlenecks exist elsewhere.</span></p></blockquote><h3><span>Queuing theory behind cycle time and throughput</span></h3><p><a href="https://en.wikipedia.org/wiki/Little%27s_law"><span>Little&#8217;s Law</span></a><span>, a theorem from queuing theory, helps explain the relationship between three things: how much work is in progress (WIP), how quickly work gets completed, and how long each piece of work takes. For software teams, we can think of these as:</span></p><ul><li><p><span>WIP: the number of pull requests currently open,</span></p></li><li><p><span>Pull Request (PR) Throughput: number of pull requests merged over a period of time, and</span></p></li><li><p><span>PR cycle time: how long a pull request takes to move from development through review and merge.</span></p></li></ul><p><span>The equation is straightforward. When the amount and type of work stay relatively consistent, work that moves through the process faster can help a team complete more work over time. This relationship is commonly used to explain how software teams improve flow but it hasn&#8217;t yet been quantified in the developer productivity space.</span></p><p><a href="https://dl.acm.org/doi/10.1145/3544791"><span>Research by Maddila et al.</span></a><span> shows that pull requests often spend significant amounts of time waiting, not being actively coded or reviewed, and implies that cycle time isn&#8217;t a fixed metric. Teams can recover some of that waiting time by improving the workflow around development and review, without changing the process of writing code.</span></p><p><span>To understand how PR cycle time relates to throughput, we looked at the relationship between median PR cycle time and average PR throughput per developer across organizations using data from 500+ DX customers from January-July 2026, inclusive.</span></p><h3><span>Cycle time matters more for high-throughput organizations than it does low-throughput organizations</span></h3><p><span>Our analysis suggests that PR cycle time is not a reliable standalone predictor of throughput. In the raw data, organizations with similar review speeds show a wide range of throughput levels, indicating that other factors, like PR size and organizational context, likely play an important role in determining output.</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_!dNMV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dNMV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 424w, https://substackcdn.com/image/fetch/$s_!dNMV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 848w, https://substackcdn.com/image/fetch/$s_!dNMV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 1272w, https://substackcdn.com/image/fetch/$s_!dNMV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dNMV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png" width="1456" height="920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1201873,&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.getdx.com/i/211734214?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.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_!dNMV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 424w, https://substackcdn.com/image/fetch/$s_!dNMV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 848w, https://substackcdn.com/image/fetch/$s_!dNMV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 1272w, https://substackcdn.com/image/fetch/$s_!dNMV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F447a4744-154e-4ccc-b7d5-575359cb2d8c_4200x2654.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>The median trend is relatively flat across most of the distribution, with throughput beginning to decline more noticeably only at longer cycle times. This indicates that reducing cycle time may not automatically increase throughput for every organization, particularly when teams are already operating within a typical throughput range.</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_!IacL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IacL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 424w, https://substackcdn.com/image/fetch/$s_!IacL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 848w, https://substackcdn.com/image/fetch/$s_!IacL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 1272w, https://substackcdn.com/image/fetch/$s_!IacL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IacL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png" width="1456" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1397532,&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.getdx.com/i/211734214?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.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_!IacL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 424w, https://substackcdn.com/image/fetch/$s_!IacL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 848w, https://substackcdn.com/image/fetch/$s_!IacL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 1272w, https://substackcdn.com/image/fetch/$s_!IacL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73faa85b-8f8c-4c75-a8b1-4fcf57632255_4200x2884.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Because median results can obscure differences across the performance distribution, we also used quantile regression to look at this relationship at the 25th, 50th, 75th, and 90th percentiles of throughput. This approach allows us to look at whether the association between cycle time and throughput changes for lower-, median-, and higher-throughput organizations.</span></p><p><span>The results show that the relationship between cycle time and throughput is concentrated among higher-performing organizations.</span></p><ul><li><p><span>At the 25th percentile, there is no statistically significant relationship between cycle time and throughput (p=0.366, &#946;=-1.1).</span></p></li><li><p><span>At the median, there is a modest but statistically significant negative relationship (p=0.0008, &#946;=-4.0).</span></p></li><li><p><span>At the 75th and 90th percentiles, the negative relationship becomes substantially stronger and remains statistically significant (p=0.000, &#946;=-11.7; p=0.000, &#946;=-12.8).</span></p></li></ul><p><span>In practical terms, high-throughput teams are the most sensitive to cycle time slowdowns. For teams already in the bottom 25% of throughput, cycle time barely matters. For teams in the top 10%, it matters quite a bit.</span></p><h2><span>Final thoughts: Speed is a safeguard but not a universal solution</span></h2><p><span>Across most organizations, throughput stays fairly steady as PR cycle time increases. The relationship between the two becomes more noticeable around 17 hours. Beyond that point, median throughput starts to decline. This makes 17 hours a useful inflection point, not a universal target. For teams below that point, reducing cycle time may not lead to a meaningful increase in throughput. But once cycle times go beyond it, longer review cycles may start to limit teams that have the capacity to deliver more.</span></p><p><span>Think of the 17-hour mark as a warning sign and not a productivity cutoff. Teams with longer cycle times may benefit from looking more closely at review queues, reviewer availability, PR size, and other sources of waiting. These results show an association, not proof that longer cycle times directly cause lower throughput. Cycle time is most useful when considered alongside quality, work complexity, team structure, and other developer-experience measures, not as a standalone productivity target.</span></p><div><hr></div><p><span>This week&#8217;s featured DevProd job openings. See more </span><a href="https://getdx.com/resources/devex-jobs/">open roles here</a><span>.</span></p><ul><li><p><strong>Ashby</strong><span> is hiring an </span><a href="https://jobs.ashbyhq.com/Ashby/0f5dbf59-687b-4d88-88a7-73ee0a66b48d?utm_source=PRgMeEgv1Z">Staff Platform Engineer</a><span> | Remote</span></p></li><li><p><strong>Carta</strong><span> is hiring a </span><a href="https://www.linkedin.com/jobs/view/4404135082">Sr. Software Engineer II, Developer Experience</a><span> | Santa Clara, CA; San Francisco, CA; New York, NY</span></p></li><li><p><strong>Figma</strong><span> is hiring a </span><a href="https://job-boards.greenhouse.io/figma/jobs/5790627004?gh_jid=5790627004&amp;gh_src=db0ijm3x4us">Staff Software Engineer, Developer Experience</a><span> | Remote; US</span></p></li><li><p><strong>Mastercard</strong> is hiring a <a href="https://mastercard.wd1.myworkdayjobs.com/CorporateCareers/job/New-York-City-New-York/Vice-President--Software-Engineering_R-286632">Vice President, Software Engineering</a> | New York</p></li><li><p><strong>Notion</strong><span> is hiring a </span><a href="https://jobs.ashbyhq.com/notion/49bdf081-6e20-4323-8c73-6d6b19544ff5">Software Engineer, Developer Experience</a><span> | Hybrid; Hyderabad, India</span></p></li></ul><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/is-there-a-relationship-between-cycle?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/is-there-a-relationship-between-cycle?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[AI in engineering: Q2 2026 benchmarks & research readout]]></title><description><![CDATA[Brian Houck and Justin Reock unpack DX&#8217;s latest AI Impact Report, exploring where AI is improving engineering velocity and where those gains are failing to translate into better outcomes.]]></description><link>https://newsletter.getdx.com/p/ai-in-engineering-q2-2026-benchmarks</link><guid isPermaLink="false">https://newsletter.getdx.com/p/ai-in-engineering-q2-2026-benchmarks</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Fri, 14 Aug 2026 16:00:48 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/210943019/2e9703b85b75b80db162b7168468cc74.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Listen and watch now on <strong><a href="https://youtu.be/Bf44cPeNPjg">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/engineering-enablement-by-abi-noda/id1619140476">Apple</a>, and <a href="https://open.spotify.com/show/3NxjyIsuxeDMQtisDqBy7D">Spotify</a></strong>.</p><p><span>AI adoption among software developers is approaching 100%, AI-authored code now makes up more than half of merged code, and developers report saving more time with AI every quarter. But those gains aren&#8217;t translating evenly into better outcomes.</span></p><p><span>In this episode of Engineering Enablement, I sit down with Justin Reock, Deputy CTO at DX, to unpack findings from our latest AI Impact Report. We explore where AI is improving engineering velocity and developer experience, where concerns are emerging around PR size, change confidence, and failure rates, and why rising AI spend has yet to produce a comparable increase in innovation.</span></p><p><span>We also discuss how AI is changing the meaning of code maintainability and where developers&#8217; AI-driven time savings may actually be going.</span></p><div id="youtube2-Bf44cPeNPjg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Bf44cPeNPjg&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/Bf44cPeNPjg?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><h2><strong>Some takeaways: </strong></h2><h3><strong><span>AI adoption is no longer the interesting question</span></strong></h3><ul><li><p><strong><span>AI adoption is approaching 100%, making adoption itself a less useful measure of success.</span></strong><span> DX sees 95% adoption through telemetry, and even developers outside that group are merging AI-generated code into production.</span></p></li><li><p><strong><span>The more important question is how effectively developers are using AI.</span></strong><span> As adoption becomes nearly universal, organizations need to look beyond usage and understand how sophisticated their AI usage is and whether or not it is producing meaningful outcomes.</span></p></li></ul><h3><strong><span>AI is increasing engineering velocity, but the gains need context</span></strong></h3><ul><li><p><strong><span>Developers report saving more time with AI each quarter, while PR throughput and deployment frequency are also increasing.</span></strong><span> Recent causal research gives additional evidence that AI is contributing to the increase in throughput.</span></p></li><li><p><strong><span>More than half of merged code is now AI-authored.</span></strong><span> But metrics like time saved, code generated, and PR throughput don&#8217;t tell us on their own whether teams are creating more customer value.</span></p></li></ul><h3><strong><span>Larger PRs create risks that extend beyond code review</span></strong></h3><ul><li><p><strong><span>Average PR size has increased from 42 to 72 lines of code, raising concerns about quality and code understanding.</span></strong><span> Larger PRs are harder to review and revert, more likely to be rubber-stamped, and can move more slowly through the development system.</span></p></li><li><p><strong><span>Code bloat can also create a vicious cycle of rising AI costs.</span></strong><span> As agents generate larger codebases, future agents have more code to read into context, consuming additional tokens repeatedly rather than creating only a one-time cost.</span></p></li></ul><h3><strong><span>Developers can change code more easily while trusting it less</span></strong></h3><ul><li><p><strong><span>Code maintainability is improving while change confidence is declining, even though those measures have historically been closely correlated.</span></strong><span> AI may make code easier to understand and modify while leaving developers less confident that their changes won&#8217;t break something in production.</span></p></li><li><p><strong><span>AI may be changing what &#8220;maintainable&#8221; code actually means.</span></strong><span> If developers increasingly rely on agents to understand and modify code, traditional measures of maintainability and ownership may no longer capture the same things they once did.</span></p></li></ul><h3><strong><span>AI is amplifying differences between engineering organizations</span></strong></h3><ul><li><p><strong><span>Change failure rates are becoming more volatile rather than moving uniformly in one direction.</span></strong><span> Some organizations continue to perform well while others are seeing higher failure rates, suggesting that AI can amplify existing strengths and weaknesses.</span></p></li><li><p><strong><span>Developer experience is also showing concerning signals despite clear improvements in areas like documentation.</span></strong><span> DX&#8217;s Developer Experience Index has fallen about 2% over two quarters, with declines in drivers such as incremental delivery outweighing some of AI&#8217;s benefits.</span></p></li></ul><h3><strong><span>AI spending is growing much faster than measurable innovation</span></strong></h3><ul><li><p><strong><span>AI spend has risen dramatically, reaching roughly 28 times year-ago levels among the largest companies in the dataset.</span></strong><span> At the same time, developer ramp-up has improved, but the innovation ratio has increased by only about one percentage point.</span></p></li><li><p><strong><span>Time saved by AI can easily be absorbed by existing organizational friction.</span></strong><span> Meeting-heavy days, interruptions, build and test wait times, developer environment toil, and review delays remain major sources of lost time. In one real-world case study, reducing unnecessary meetings produced roughly twice the PR-throughput gains achieved through AI.</span></p></li><li><p><strong><span>Ultimately, AI efficiency only matters if it translates into customer value.</span></strong><span> Removing friction and increasing throughput are useful, but the larger question is whether those gains allow organizations to ship more valuable software.</span></p></li></ul><h2><strong>In this episode, we cover:</strong></h2><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=105s">01:45</a>) How the current AI impact report is tied to Core 4</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=204s">03:24</a>) The state of AI adoption</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=312s">05:12</a>) How much time AI is saving developers and percentage of AI-authored code</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=467s">07:47</a>) AI&#8217;s impact on PR throughput and deployment frequency</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=669s">11:09</a>) How EMs are shipping more code</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=782s">13:02</a>) Why larger PRs may be problematic</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=1101s">18:21</a>) The growing gap between code maintainability and change confidence</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=1308s">21:48</a>) How perceived code quality varies by organization size</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=1429s">23:49</a>) The growing volatility in change failure rates</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=1687s">28:07</a>) What the Developer Experience Index reveals</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=1940s">32:20</a>) Cost, dev ramp-up, and innovation ratio</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=2138s">35:38</a>) Where AI time savings are getting lost</p><p>(<a href="https://www.youtube.com/watch?v=Bf44cPeNPjg&amp;t=2231s">37:11</a>) Questions and wrap-up</p><p><strong><span>Where to find Justin Reock:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/justinreock"><span>https://www.linkedin.com/in/justinreock</span></a></p><p><strong><span>Where to find Brian Houck:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/brianhouck"><span>https://www.linkedin.com/in/brianhouck</span></a></p><h2><strong>Referenced:</strong></h2><p><span>&#8226; </span><a href="https://getdx.com/corefour"><span>DX Core 4 Productivity Framework</span></a></p><p><span>&#8226; </span><a href="https://getdx.com/report/State-of-AI-Impact-in-Engineering-Q2-Report/"><span>AI Impact report</span></a></p><p><span>&#8226; </span><a href="https://newsletter.getdx.com/p/the-ai-native-developer"><span>The AI-native developer - by Brian Houck</span></a></p><p><span>&#8226; </span><a href="https://arxiv.org/pdf/2606.00438"><span>GitHub Copilot and Developer Productivity: An Observational Dose-Response Analysis</span></a></p><p><span>&#8226; </span><a href="https://www.nber.org/papers/w35275"><span>Writing Code vs. Shipping Code: Productivity Effects Across Generations of AI Coding Tools | NBER</span></a></p><p><span>&#8226; </span><a href="https://annievella.com/posts/the-productivity-experience-paradox/"><span>The Productivity-Experience Paradox - Annie Vella</span></a></p><p><span>&#8226; </span><a href="https://arxiv.org/abs/2605.04259"><span>EngThrive: Make It Fast and Easy to Do Great Work</span></a></p><p><span>&#8226; </span><a href="https://newsletter.getdx.com/p/the-ai-efficiency-plateau"><span>The AI efficiency plateau - by Brian Houck</span></a></p><p><span>&#8226; </span><a href="https://martinfowler.com/bliki/TradableQualityHypothesis.html"><span>Tradable Quality Hypothesis</span></a></p>]]></content:encoded></item><item><title><![CDATA[“Your benchmarks don't apply to us"]]></title><description><![CDATA[Why benchmark trends matter more than you think.]]></description><link>https://newsletter.getdx.com/p/your-benchmarks-dont-apply-to-us</link><guid isPermaLink="false">https://newsletter.getdx.com/p/your-benchmarks-dont-apply-to-us</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Fri, 14 Aug 2026 10:06:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/75569f0c-76b2-48a4-a27c-f05caba4b8b4_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Welcome to the latest issue of Engineering Enablement, a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p><span>DX&#8217;s updated 2026 engineering benchmarks are now available to all customers, with new Core 4 data across industries and geographies. </span><a href="https://getdx.com/research/benchmarks/"><span>See 2026 benchmarks here.</span></a></p><div><hr></div><p><span>Many engineering leaders are right when they tell me that industry benchmarks don&#8217;t apply to them. They&#8217;re just wrong about what that means.</span></p><p><span>Most have already looked at a benchmark, compared it to their own numbers, and concluded the comparison isn&#8217;t useful. The mistake isn&#8217;t recognizing that their organization is different&#8212;it&#8217;s expecting a benchmark to answer a question it was never designed to answer.</span></p><p><span>Organizational context genuinely matters. Smaller engineering organizations consistently outperform larger ones on many metrics. Technology companies spend more time on new features than traditional enterprises. Mobile engineering has sufficiently different workflows that it warrants its own benchmark segment. Even survey response styles differ systematically across regions, making some absolute comparisons misleading. </span></p><p><span>The mix of factors goes far beyond things we can easily segment. Every engineering organization has its own governance model, release process, architecture, regulatory requirements, engineering culture, and history. Some require five approvals before deployment; others deploy continuously. Some invest heavily in internal platforms;others rely on commercial tooling. These choices can dramatically affect developer metrics, making two organizations within the same industry or size cohort look very different from each other.</span></p><p><span>Those differences are real, but they don&#8217;t make benchmarking useless. They simply mean we&#8217;ve been asking benchmarks to answer the wrong question.</span></p><p><strong><span>Exec summary</span></strong></p><ul><li><p><span>Engineering leaders are often right that benchmark values don&#8217;t directly apply to them, but they are wrong to dismiss benchmarks entirely.</span></p></li><li><p><span>Benchmarks, internal trends, and benchmark trends each answer a different question:</span></p><ul><li><p><strong><span>Benchmark levels </span></strong><span>&#8594; </span><em><span>Are we normal?</span></em></p></li><li><p><strong><span>Internal trends</span></strong><span> &#8594; </span><em><span>Are we improving?</span></em></p></li><li><p><strong><span>Benchmark trends</span></strong><span> &#8594; </span><em><span>Are we improving faster than everyone else?</span></em></p></li></ul></li><li><p><span>The third question (&#8220;Are we improving faster than everyone else?&#8221;) is often the most important when evaluating investments like AI tools or process changes.</span></p></li><li><p><span>Benchmark trends help separate your results from broader industry tailwinds (e.g., AI adoption, economic shifts)</span></p></li><li><p><span>Benchmark values are still useful for identifying unusual performance and areas worth investigating.</span></p></li><li><p><span>DX data shows metrics consistently move in the same direction across very different organizations year over year, suggesting organizations are less unique than they may believe.</span></p></li><li><p><span>Changing metrics, survey instruments, or org structure mid-window makes it challenging to use benchmarks to measure change</span></p></li><li><p><span>Benchmark trends won&#8217;t prove causation, but they meaningfully reduce uncertainty about what would have happened anyway.</span></p></li><li><p><span>The real value of benchmarks isn&#8217;t knowing if you&#8217;re average, it&#8217;s reasoning more carefully about change.</span></p></li></ul><h2><span>Benchmarks and trends answer different questions</span></h2><p><span>Benchmarks and trends answer fundamentally different questions.</span></p><ul><li><p><span>A benchmark answers: Is this normal? That question is often more valuable than we give it credit for. Knowing that your review latency or deployment frequency is unusual can help identify where deeper investigation is warranted, even if the benchmark itself doesn&#8217;t explain why. It tells you where you sit within a distribution. That&#8217;s a question about </span><strong><span>levels</span></strong><span>, and levels are influenced by things you may never be able to change like your industry, your size, your regulatory environment, your architecture, and the countless organizational decisions that shape how engineering gets done.Your own historical trend answers a different question: Are we improving? That&#8217;s a question about </span><strong><span>change</span></strong><span>. Because you&#8217;re comparing yourself to yourself, most of the differences that make your organization unique simply cancel out.</span></p></li></ul><p><span>Both questions are valuable, but neither is the question engineering leaders usually care about most. The question they really want answered is:</span><em><span> Are we improving faster or slower than everyone else?</span></em><span>That&#8217;s a fundamentally different question, and it&#8217;s one that neither a benchmark nor an internal trend can answer on its own.</span></p><p><span>Suppose your deployment frequency improves by 15% over the next year. Is that good? If the rest of the industry improved by only 5%, you&#8217;re pulling ahead. If everyone else improved by 30%, you&#8217;re falling behind. In other words,improvement alone can&#8217;t tell you whether you&#8217;re pulling ahead or just keeping pace. Likewise, a benchmark can&#8217;t answer it by itself either. Knowing you&#8217;re at the 60th percentile today doesn&#8217;t tell you whether you&#8217;ve been gaining ground or losing it.</span></p><p><span>To answer the question leaders actually care about, you need both.That&#8217;s where benchmarks show their value, even for organizations that genuinely are unique. They don&#8217;t require your absolute metrics to be directly comparable to another company&#8217;s. They simply show you that the change in your organization can be interpreted alongside the change in everyone else&#8217;s.</span></p><p><span>And that, it turns out, is a far easier condition to satisfy.</span></p><h3><span>Benchmark trends as an observational control group</span></h3><p><span>The reason I find benchmark trends so valuable has very little to do with benchmarking. It has to do with causal inference.</span></p><p><span>Now suppose that 15% improvement in deployment frequency followed an investment in an internal developer platform. Was the platform responsible? Maybe. But maybe AI coding assistants became dramatically better during the same period. Maybe developer workflows improved across the industry. Maybe a slowing economy reduced feature work and increased engineering capacity everywhere.</span></p><p><span>A simple before-and-after comparison can&#8217;t distinguish between those explanations. That&#8217;s where benchmark trends really begin to shine. They don&#8217;t tell you what your metrics should have been; they tell you what happened to comparable organizations over the same period. They become an observational control group, a way of estimating the background improvement that would likely have occurred even if you had done nothing.</span></p><p><span>They&#8217;re not perfect. Organizations aren&#8217;t randomly assigned to different engineering strategies, and no benchmark population is identical to yours. My point is that they don&#8217;t have to be. If your deployment frequency improves 15% while comparable organizations improve 5%, that&#8217;s evidence that something beyond the broader industry trend may be happening inside your organization.</span></p><p><span>This is actually how measurement teams already communicate internally, even if they don&#8217;t describe it this way. </span><a href="https://queue.acm.org/detail.cfm?id=3819080"><span>When one engineering organization</span></a><span> of roughly 3,000 developers adopted an AI agent to reduce live-site toil, the result wasn&#8217;t reported as the absolute changes in incident mitigation time. It was reported that mitigation time improved </span><strong><span>2.4x faster than the company as a whole</span></strong><span>.</span></p><p><span>Nobody cared whether that organization&#8217;s services looked like the company average. The claim wasn&#8217;t about absolute performance. It was about relative improvement.</span></p><h3><span>Your organization is less unusual than you think</span></h3><p><span>At this point, there is still a reasonable objection.</span></p><p><span>Organizations don&#8217;t just differ in their absolute metrics, they also respond differently to new tools, new processes, and new ways of working. If every company has its own architecture, engineering culture, governance model, and technical debt, why should we expect benchmark trends to tell us anything useful at all?</span></p><p><span>I don&#8217;t think there&#8217;s a complete answer to that question, but I do think there is strong evidence that benchmark trends are more transferable than we expect.</span></p><p><span>Part of the reason is psychological. </span><a href="https://hbr.org/2025/03/the-uniqueness-trap"><span>Researchers have studied</span></a><span> our tendency to believe that our own situation is more unusual than it actually is. It&#8217;s called uniqueness</span><em><span> </span></em><span>bias. Organizations can fall into the same trap. Every company has a list of reasons why their engineering organization is unlike everyone else&#8217;s, and many of those reasons are legitimate. Organizational theorists </span><a href="https://doi.org/10.2307/2095101"><span>have argued for decades</span></a><span> that organizations facing similar environments tend to converge in their structures and practices, despite many local differences.</span></p><p><span>I&#8217;ve seen this in DX&#8217;s own benchmark data, and the pattern keeps repeating year after year. </span><a href="https://getdx.com/blog/introducing-2025-dx-benchmarks/"><span>In our 2025 benchmarks</span></a><span>, change confidence improved across every segment, with the median rising more than 12 points. Cross-team collaboration declined across every segment. </span><a href="https://getdx.com/blog/2026-dx-benchmarks-are-now-available/"><span>In 2026</span></a><span>, different metrics told the same kind of story. Documentation improved across every segment and customer focus rose across all of them, while review turnaround and incremental delivery declined across most.</span></p><p><span>These segments differ by size, by sector, and by geography, and their absolute values differ substantially. Yet year after year they move in the same direction at roughly the same time. If organizational context dominated the way the uniqueness objection assumes, we would expect these trajectories to diverge. Mostly they don&#8217;t. Those organizations weren&#8217;t identical, but they were responding to many of the same underlying forces.</span></p><p><span>It should be noted that direction and timing are shared, magnitude isn&#8217;t. Segments improved on the same metrics in the same years without improving by the same amounts, and individual organizations within a segment vary more still. Benchmark trends need both properties. Shared direction is what makes the baseline trustworthy. Dispersion around it is where your own signal lives. A control group is useful precisely because it behaves predictably, and the same is true here. Co-movement isn&#8217;t evidence that there&#8217;s nothing left to detect. It&#8217;s what makes detection possible.</span></p><p><span>This isn&#8217;t unique to engineering metrics, either. Economists routinely compare countries with different political systems, cultures, and industrial structures. Healthcare researchers compare hospitals serving very different patient populations. Education researchers compare schools with very different student demographics. None of these comparisons are randomized experiments, and none produce perfect control groups. Yet they&#8217;re still valuable because the alternative is to assume that nothing else in the world changed while your intervention took place.</span></p><p><span>I don&#8217;t think benchmark trends eliminate that uncertainty, but I do think they substantially reduce it. They&#8217;re not a replacement for understanding your own organization. They&#8217;re a way of putting your organization&#8217;s improvement into context.</span></p><h3><span>You can&#8217;t trend against a moving ruler</span></h3><p><span>Aligning to this way of thinking does change some of the advice </span><a href="https://newsletter.getdx.com/p/2024-benchmarks-for-the-dx-core-4"><span>we&#8217;ve historically given</span></a><span>. We&#8217;ve encouraged organizations to improve their benchmark position over time, and I still think that&#8217;s good advice. Absolute benchmark values provide valuable context. They help answer whether your organization looks unusual relative to similar organizations, identify potential areas of opportunity, and highlight where deeper investigation might be worthwhile.</span></p><p><span>But once you understand where you stand today, the more interesting question becomes whether you&#8217;re improving faster than the background trend.</span></p><p><span>That distinction matters because organizations don&#8217;t improve in isolation. New tools, changing engineering practices, AI adoption, and broader industry shifts all influence engineering metrics over time. Benchmark trends help separate improvements that are happening everywhere from improvements that may reflect something unique about your organization.</span></p><p><span>This also explains why organizations that don&#8217;t trust absolute benchmark values shouldn&#8217;t dismiss benchmark data entirely. Even if your architecture, culture, or regulatory environment makes direct comparisons difficult, organizations facing similar external forces can still provide valuable context for understanding how quickly the world around you is changing.</span></p><p><span>That said, comparing changes only works for the things that hold still. If you reorganized, acquired a company, or changed how you count engineers during the same window, those differences don&#8217;t cancel either, and your trend becomes as hard to interpret as your levels were. Changing a metric definition or a survey instrument partway through does the same damage. You can&#8217;t trend against a moving ruler, which is why, for trend analysis, consistency in how you measure matters more than precision in what you measure.</span></p><p><span>None of this makes benchmark cohorts less important. The better your comparison group, the better your estimate of that background trend.</span></p><p><span>Absolute benchmarks tell you where you are. Internal trends tell you whether you&#8217;re improving. Benchmark trends help answer whether you&#8217;re improving faster than you would reasonably have expected.</span></p><h3><span>What we still don&#8217;t know</span></h3><p><span>I can&#8217;t yet prove that benchmark trends consistently produce better decisions than benchmark levels alone. I also don&#8217;t know which comparison groups produce the most useful estimates of background improvement, or how similar two organizations need to be before their trends become informative.</span></p><p><span>Those are empirical questions, and I think they&#8217;re worth studying.</span></p><p><span>My intuition is that benchmark trends won&#8217;t eliminate uncertainty. They simply provide another source of evidence. Like any observational control, they&#8217;re imperfect. But imperfect evidence can still improve decision making when it&#8217;s interpreted appropriately.</span></p><h2><span>Final thoughts</span></h2><p><span>Benchmark trends aren&#8217;t a replacement for internal metrics, experiments, or randomized trials. Whenever we can run controlled experiments, we should.</span></p><p><span>But most engineering organizations don&#8217;t make decisions under laboratory conditions. We launch AI coding assistants to everyone at once. We reorganize teams. We change review processes. We invest in developer platforms. We rarely have the luxury of a true control group.</span></p><p><span>That means engineering leaders spend much of their time making decisions from imperfect evidence.</span></p><p><span>Benchmark trends make that evidence meaningfully stronger. They don&#8217;t eliminate uncertainty. They don&#8217;t prove causation. They don&#8217;t guarantee that one intervention caused another outcome. They simply provide a better estimate of what might have happened anyway.</span></p><p><span>To me, that&#8217;s the real value of benchmarks. Not because they tell us whether we&#8217;re average. But because they help us reason more carefully about change.</span></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/your-benchmarks-dont-apply-to-us?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/your-benchmarks-dont-apply-to-us?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[DX Annual 2027: San Francisco and London]]></title><description><![CDATA[Next year DX Annual is returning to San Francisco and heading to London for the first time. Here's what to expect and how to register your interest.]]></description><link>https://newsletter.getdx.com/p/dx-annual-2027-san-francisco-and</link><guid isPermaLink="false">https://newsletter.getdx.com/p/dx-annual-2027-san-francisco-and</guid><dc:creator><![CDATA[Justin Reock]]></dc:creator><pubDate>Tue, 11 Aug 2026 15:03:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/384d549a-7522-4640-bef4-1bcfdfe3a768_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dys8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dys8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dys8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dys8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dys8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dys8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg" width="1456" height="458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:458,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2226212,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.getdx.com/i/210621976?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dys8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dys8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dys8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dys8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d360bc4-ecc3-4488-8542-48adb0705fba_3240x1020.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 buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Building on this year&#8217;s </span><a href="https://getdx.com/dxannual/2026/"><span>inaugural event</span></a><span>, which brought together 500 senior engineering leaders from companies like Microsoft, Airbnb, Uber, Vanguard, Dell, and BNY, we&#8217;re expanding to two cities for 2027.</span></p><p><span>In both San Francisco and London, DX Annual will be a single-day event with keynotes, fireside chats, and peer roundtables built around how organizations are rethinking developer productivity and how software is delivered with AI. The event will once again focus on curated attendance, meaningful peer connections, and sessions led by practitioners.</span></p><p><strong><span>Save the dates &#8595;</span></strong></p><ul><li><p><span>San Francisco &#8212; May 6, 2027</span></p></li><li><p><span>London &#8212; September 23, 2027</span></p></li></ul><div class="callout-block" data-callout="true"><p><span>Attendance is curated and space will be limited. Register your interest at </span><a href="https://getdx.com/dxannual/"><span>dxannual.com</span></a><span> and we&#8217;ll be in touch with details.</span></p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://getdx.com/dxannual/&quot;,&quot;text&quot;:&quot;Register your interest&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://getdx.com/dxannual/"><span>Register your interest</span></a></p><div><hr></div><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df0be96f-10d1-46c7-9565-61de76b7c202_2738x1825.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3e8a85b-af79-412e-8834-a09d63aa7844_2738x1825.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c68a2197-ae33-44ac-b5ff-649592780c61_2738x1825.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/066d86a3-1b7f-4632-abab-81b606e1a520_2738x1825.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/925dbcb9-703b-4d06-bc4f-a22e1f263ba3_2738x1825.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67c69cf7-ff87-475b-b213-8f46c4dde7a9_2738x1825.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f1cc3cf-be1a-4284-b9cd-5d0d18910665_1456x964.png&quot;}},&quot;isEditorNode&quot;:true}"></div>]]></content:encoded></item><item><title><![CDATA[How Microsoft sees engineering bottlenecks changing with AI]]></title><description><![CDATA[Tim Bozarth, Microsoft CoreAI CVP, explains how AI is changing engineering productivity, why outcomes matter more than output, and what engineering leaders should measure instead.]]></description><link>https://newsletter.getdx.com/p/how-microsoft-sees-engineering-bottlenecks</link><guid isPermaLink="false">https://newsletter.getdx.com/p/how-microsoft-sees-engineering-bottlenecks</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Fri, 07 Aug 2026 15:47:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209296274/1135b2a44ce3e5af0cd78de10f17d202.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Listen and watch now on <strong><a href="https://youtu.be/fdofQkhpgDE">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/engineering-enablement-by-abi-noda/id1619140476">Apple</a>, and <a href="https://open.spotify.com/show/3NxjyIsuxeDMQtisDqBy7D">Spotify</a></strong>.</p><p><span>In this episode of Engineering Enablement, I sit down with Tim Bozarth, Corporate Vice President in Microsoft CoreAI and leader of Microsoft&#8217;s Engineering Thrive initiative. We discuss Engineering Thrive, Microsoft&#8217;s framework for measuring and improving engineering productivity, and why AI makes outcome-based metrics more important than ever.</span></p><p><span>Tim shares how AI is reshaping the software development lifecycle, where new bottlenecks are emerging, and why verification and confidence may become more valuable than code generation itself. We also explore why the purpose of engineering remains the same despite rising levels of abstraction, the skills that remain durable in an AI-driven world, and why engineering leaders should focus on outcomes rather than activity metrics.</span></p><div id="youtube2-fdofQkhpgDE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;fdofQkhpgDE&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/fdofQkhpgDE?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><h2><strong>Some takeaways: </strong></h2><h3><strong><span>Engineering Thrive gives Microsoft a common language for improving productivity</span></strong></h3><ul><li><p><strong><span>Engineering Thrive defines productivity through speed, ease, and quality.</span></strong><span> Its goal is to make it fast and easy to do great work by identifying friction across the developer experience rather than optimizing isolated activities.</span></p></li><li><p><strong><span>Speed, ease, and quality should not be treated as opposing goals.</span></strong><span> Engineering Thrive applies a &#8220;do no harm&#8221; principle: an improvement in one dimension should not be celebrated if it makes another materially worse.</span></p></li><li><p><strong><span>The framework helps Microsoft identify bottlenecks and invest where they will have the greatest impact.</span></strong><span> Tim argues that developer time is one of the company&#8217;s most valuable resources, making productivity improvements a strategic investment.</span></p></li></ul><h3><strong><span>AI makes outcome-based metrics more important, not obsolete</span></strong></h3><ul><li><p><strong><span>The industry is returning to activity metrics it rejected years ago.</span></strong><span> Tim sees renewed attention to lines of code, pull request counts, and similar measures as a search for easy answers to how AI is affecting productivity.</span></p></li><li><p><strong><span>More engineering activity does not necessarily mean more value.</span></strong><span> Engineering Thrive instead measures outcomes such as product quality, end-to-end speed, and the amount of time engineers can devote to innovation.</span></p></li><li><p><strong><span>A web of outcome metrics is harder to game than any individual measure.</span></strong><span> Looking across speed, ease, quality, and innovation time creates a more durable picture of whether an organization is actually improving.</span></p></li></ul><h3><strong><span>Planning and validation are becoming the new bottlenecks</span></strong></h3><ul><li><p><strong><span>Before AI, most engineering time was spent creating and operating software.</span></strong><span> Tim estimates that those phases historically accounted for more than 90% of engineering time, with operations alone consuming roughly 70% to 80%.</span></p></li><li><p><strong><span>On frontier teams, the bottlenecks have already shifted to planning and validation.</span></strong><span> Code creation is taking dramatically less time, while deciding what to build and determining whether the result is trustworthy are consuming a greater share of the work.</span></p></li><li><p><strong><span>The create phase may continue to shrink as models and agent harnesses improve.</span></strong><span> Tim expects planning and validation to remain durable constraints over the next several years, even as other parts of the software development lifecycle become increasingly automated.</span></p></li></ul><h3><strong><span>The code review bottleneck is really a confidence bottleneck</span></strong></h3><ul><li><p><strong><span>Higher PR throughput has increased the amount of change humans must evaluate.</span></strong><span> Enterprise software still requires a level of trust that teams cannot achieve by simply accepting AI-generated code without review.</span></p></li><li><p><strong><span>Code review is only one way to establish confidence.</span></strong><span> Testing, continuous rollouts, feature flags, canaries, and deployment practices all contribute signals about whether a change is reliable.</span></p></li><li><p><strong><span>The next generation of verification should help humans ask higher-level questions.</span></strong><span> Rather than inspecting every branch or class, engineers should be able to assess the scope, complexity, impact, and fundamental purpose of a change.</span></p></li></ul><h3><strong><span>More abstraction does not change the purpose of engineering</span></strong></h3><ul><li><p><strong><span>AI will reduce the time engineers spend on low-level implementation details.</span></strong><span> Tim sees that as another step in the long history of abstractions that allow engineers to spend more time describing system behavior and intended outcomes.</span></p></li><li><p><strong><span>Great engineers have never been defined by their ability to write a line of code.</span></strong><span> Their value comes from systems thinking, understanding objectives, and expressing functional and nonfunctional requirements coherently.</span></p></li><li><p><strong><span>Producing more software increases the need for strong engineering judgment.</span></strong><span> The faster organizations can build, the more important it becomes to ensure that their systems remain coherent, valid, and reliable.</span></p></li></ul><h3><strong><span>A maker&#8217;s mindset and ability to experiment effectively remain durable advantages</span></strong></h3><ul><li><p><strong><span>The maker&#8217;s mindset is relentlessly oriented toward producing a valuable final outcome.</span></strong><span> It combines a clear vision of what should be built with the ability to understand the needs of the customer using it.</span></p></li><li><p><strong><span>Engineers will need to continuously experiment and evaluate changes in outcomes.</span></strong><span> Tim argues that this discipline is no longer limited to model trainers; everyone using AI tools must determine whether a new approach actually improves the result.</span></p></li><li><p><strong><span>Using AI is not itself the goal.</span></strong><span> The goal is to accomplish more, and sometimes the best way to do that will be not to use AI at all.</span></p></li></ul><h3><strong><span>Engineering leaders should measure idea-to-value, not PR velocity</span></strong></h3><ul><li><p><strong><span>PR velocity says little about the success of an engineering organization.</span></strong><span> Tim urges leaders to stop evaluating teams through activity measures the industry already recognized as inadequate years ago.</span></p></li><li><p><strong><span>Idea-to-value connects engineering work to meaningful outcomes.</span></strong><span> Leaders should also examine how much time engineers spend innovating compared with keeping the lights on or handling corporate overhead.</span></p></li><li><p><strong><span>Product quality and business results should remain the ultimate measures of success.</span></strong><span> Focusing on outcomes can improve developer happiness, productivity, margins, and the value delivered by the organization.</span></p></li></ul><h2><strong>In this episode, we cover:</strong></h2><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=133s">02:13</a>) What Engineering Thrive is and the problem it solves</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=286s">04:46</a>) Why Engineering Thrive isn&#8217;t specific to Microsoft</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=550s">09:10</a>) The impact of Engineering Thrive at Microsoft</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=871s">14:31</a>) Why AI makes outcome-based productivity metrics more important</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=1102s">18:22</a>) Where AI is creating new bottlenecks in the SDLC</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=1477s">24:37</a>) Why more abstraction doesn&#8217;t change the purpose of engineering</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=1645s">27:25</a>) The durable skills of good engineers</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=1983s">33:03</a>) The changing economics of software development</p><p>(<a href="https://www.youtube.com/watch?v=fdofQkhpgDE&amp;t=2216s">36:56</a>) Advice for leaders: measure outcomes, not activity</p><p><strong><span>Where to find Tim Bozarth:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="http://linkedin.com/in/tbozarth"><span>linkedin.com/in/tbozarth</span></a></p><p><strong><span>Where to find Brian Houck:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/brianhouck"><span>https://www.linkedin.com/in/brianhouck</span></a></p><h2><strong>Referenced:</strong></h2><p><span>&#8226; </span><a href="https://getdx.com/corefour"><span>DX Core 4 Productivity Framework</span></a></p><p><span>&#8226; </span><a href="https://spawn-queue.acm.org/doi/10.1145/3819080"><span>EngThrive: Make It Fast and Easy to Do Great Work: Building a durable model for outcome-oriented engineering measurement</span></a></p><p><span>&#8226; </span><a href="https://www.goodreads.com/quotes/10278659-tell-me-how-you-measure-me-and-i-ll-tell-you"><span>Quote by Eliyahu M. Goldratt: &#8220;Tell me how you measure me and...&#8221;</span></a></p><p><span>&#8226; </span><a href="https://en.wikipedia.org/wiki/Jevons_paradox"><span>Jevons paradox - Wikipedia</span></a></p>]]></content:encoded></item><item><title><![CDATA[What are code reviews even for?]]></title><description><![CDATA[AI didn't break code review. It just made the parts we'd been ignoring impossible to ignore.]]></description><link>https://newsletter.getdx.com/p/what-are-code-reviews-even-for</link><guid isPermaLink="false">https://newsletter.getdx.com/p/what-are-code-reviews-even-for</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Wed, 05 Aug 2026 10:40:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f4489e75-06a9-44a8-98bb-ea29694f42e9_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Welcome to the latest issue of Engineering Enablement,</strong><span> a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p>DX&#8217;s Q2 AI Impact Report is now available with the latest research on AI&#8217;s impact across engineering organizations. <a href="https://getdx.com/resources/?utm_source=newsletter">Read the full report.</a></p><div><hr></div><p><span>Something is straining in the review queue.</span></p><p><a href="https://arxiv.org/abs/2605.30208"><span>Over the past year at Meta</span></a><span>, significant lines of code per human-landed diff increased by 106%. Diffs per developer per month rose 51%. More than 80% of that growth came from agentic AI. Meanwhile, the percentage of diffs reviewed within 24 hours is declining. In some large groups, reviewers are staring down thousands of pending reviews.</span></p><p><span>This isn&#8217;t a Meta-specific problem. Across the industry, AI coding tools are producing code faster than humans can meaningfully evaluate it. </span><a href="https://newsletter.getdx.com/p/ai-authored-code-has-nearly-doubled"><span>Our own DX analysis</span></a><span> found that AI is increasing both the number of pull requests and the size of each one (median pull request size grew by 64%). Without a corresponding increase in reviewer capacity, the review process will eventually buckle under its own weight.</span></p><p><span>Unfortunately, we don&#8217;t have more hours in the day, and even if we did, we wouldn&#8217;t want to spend them reviewing code written by AI. </span><a href="https://www.microsoft.com/en-us/research/publication/time-warp-the-gap-between-developers-ideal-vs-actual-workweeks-in-an-ai-driven-era/?msockid=15af30cf0f0662a5037e27800ec7634a"><span>In previous research</span></a><span>, we found developers ideally only want to spend about 7% of their time reviewing code. Asking developers to review more isn&#8217;t a sustainable answer.</span></p><p><span>The math doesn&#8217;t work.</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_!Mu5k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mu5k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 424w, https://substackcdn.com/image/fetch/$s_!Mu5k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 848w, https://substackcdn.com/image/fetch/$s_!Mu5k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 1272w, https://substackcdn.com/image/fetch/$s_!Mu5k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mu5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png" width="1456" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:225359,&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.getdx.com/i/204342182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.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_!Mu5k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 424w, https://substackcdn.com/image/fetch/$s_!Mu5k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 848w, https://substackcdn.com/image/fetch/$s_!Mu5k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 1272w, https://substackcdn.com/image/fetch/$s_!Mu5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5710e33-dbf6-468c-8f44-b7159744f561_4200x2884.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>But before we ask AI to solve this problem, it&#8217;s worth asking a different question:</span></p><blockquote><p><strong><span>What problem was code review solving before AI arrived?</span></strong></p></blockquote><p><span>If the answer were as simple as &#8220;finding defects,&#8221; then a fully automated review starts to sound inevitable (and appealing).</span></p><p><span>But if code review was also how teams shared knowledge, built collective ownership, spread architectural understanding, and taught junior engineers how experienced developers think, then the answer becomes much less obvious.</span></p><p><span>That&#8217;s the mistake I think many organizations are about to make, and the reason we need to rethink what code review is actually for.</span></p><h3><span>We&#8217;ve known better for years</span></h3><p><span>Here&#8217;s an uncomfortable truth: a significant portion of the review burden we&#8217;re feeling right now is self-inflicted.</span></p><p><span>The frustrating part is that none of this is new. The research on what makes code review effective has been unambiguous. Keep changes small. Write a meaningful description of what changed and why. Run automated checks before asking a human to look. Review frequently, in bounded sessions, focused on substance over style. Select reviewers who actually know the code, but avoid concentrating review responsibility on the same small group of experts whenever possible.</span></p><p><a href="https://ieeexplore.ieee.org/document/7950877"><span>A 2016 Microsoft study</span></a><span> of 911 developers found that timely feedback, review size, and understanding the motivation for a change were the top three challenges in code review. Those challenges should sound familiar. The research had already identified many of the practices that improve review quality, yet only 26% of developers said they always wrote a detailed description of the code being reviewed. &#8220;Bikeshedding&#8221;&#8212;disputing minor issues while more serious ones went unexamined&#8212;remained one of the most common review failures. We didn&#8217;t need new guidance. We needed to consistently apply what we already knew.</span></p><p><span>AI didn&#8217;t create this situation. It inherited it, and then amplified it. Larger PRs, higher review volume, less context per change, these aren&#8217;t new symptoms. They&#8217;re old ones, scaled up.</span></p><p><span>Before asking AI to fix your code review process, ask whether your team has built the habits that make code review effective in the first place. Small, well-explained changes. Protected reviewer time. Automated routine checks so humans can focus on judgment.</span></p><p><span>AI can absolutely improve code review. But it can&#8217;t compensate for a review culture that was already struggling. It doesn&#8217;t eliminate bad review habits. It amplifies them.</span></p><h3><span>AI can help, if we use it wisely</span></h3><p><span>Once the fundamentals are in place, AI has a real role to play in code review. That&#8217;s exactly what we found in our </span><a href="https://www.microsoft.com/en-us/research/publication/ai-where-it-matters-where-why-and-how-developers-want-ai-support-in-daily-work/"><span>AI Where It Matters</span></a><span> research. Developers don&#8217;t want code review to disappear. They want AI to remove the parts of review that don&#8217;t require human judgment so reviewers can spend more time on the parts that do.</span></p><p><span>What they want AI to do: catch security and compliance issues, flag high-risk changes, generate test scaffolding, surface the impact of a change across the codebase, and handle the high-volume routine so human attention can go where it matters. As one developer put it: </span><em><span>&#8220;Should be able to detect high risk changes and derisk them.&#8221;</span></em></p><p><span>What they explicitly don&#8217;t want: AI that auto-merges, auto-commits, or takes final accountability. </span><em><span>&#8220;I don&#8217;t want AI to just act as a red-light / green-light. It should raise issues&#8230; and still require human review.&#8221;</span></em><span> Developers aren&#8217;t asking for a replacement, they&#8217;re asking for a better collaborator.</span></p><p><span>Interestingly, one of the most sophisticated production deployments I&#8217;ve seen tries to walk that line.</span></p><p><a href="https://arxiv.org/abs/2605.30208"><span>Meta&#8217;s RADAR</span></a><span> (Risk Aware Diff Auto Review) system automates review for a carefully selected subset of low-to-medium risk changes while routing higher-risk diffs to human reviewers. It combines static analysis, machine learning, LLM-based review, and deterministic validation before anything lands.</span></p><p><span>The results are striking: more than 535,000 diffs reviewed, over 331,000 landed, a revert rate roughly one-third that of non-RADAR diffs, a production incident rate one-fiftieth as high, and a 3.3x faster median time to close (roughly a 70% reduction).</span></p><p><span>RADAR isn&#8217;t simply &#8220;AI reviewing code.&#8221; It&#8217;s a carefully engineered system built around the principle that scarce human attention should be reserved for changes where human judgment and accountability matter most.</span></p><p><span>Just as importantly, the RADAR team also acknowledges a trade-off. Automated review can dramatically improve efficiency, but as automation expands, the knowledge transfer provided by human review could suffer. They identify this as something engineering organizations should actively monitor.</span></p><p><span>That&#8217;s the distinction I think many organizations miss. AI shouldn&#8217;t eliminate human review. It should make human review more valuable. AI-enabled review should have discipline around it: clear eligibility criteria, thoughtful risk stratification, and a deliberate decision about which changes deserve human attention, and why.</span></p><p><span>If you&#8217;re evaluating an AI review system, don&#8217;t start by asking, </span><em><span>&#8220;Does it work?&#8221;</span></em><span> Start by asking, </span><em><span>&#8220;How does it maximize the time and value of human judgment?&#8221;</span></em></p><h3><span>Don&#8217;t lose what review was actually doing</span></h3><p><span>Here&#8217;s the part that gets left out of the AI review conversation: code review was never just about finding defects.</span></p><p><a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/ICSE202013-codereview.pdf?msockid=15af30cf0f0662a5037e27800ec7634a"><span>A landmark Microsoft study</span></a><span> found that while most developers identified defect detection as a primary motivation for code review, defect-related comments made up only 14% of actual review comments. In practice, code review serves many other purposes. More than half of developers said they use reviews to explore alternative solutions, while many also pointed to knowledge transfer and gaining awareness of what their teammates are building.</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_!5YOe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5YOe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 424w, https://substackcdn.com/image/fetch/$s_!5YOe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 848w, https://substackcdn.com/image/fetch/$s_!5YOe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 1272w, https://substackcdn.com/image/fetch/$s_!5YOe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5YOe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png" width="1456" height="1165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1165,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181227,&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.getdx.com/i/204342182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.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_!5YOe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 424w, https://substackcdn.com/image/fetch/$s_!5YOe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 848w, https://substackcdn.com/image/fetch/$s_!5YOe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 1272w, https://substackcdn.com/image/fetch/$s_!5YOe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d57450-a491-4dcf-a1c1-3ad706041cea_3604x2884.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="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;Modern Code Review&#8221; (Bacchelli &amp; Bird, ICSE 2013)</figcaption></figure></div><p><strong><span>The visible output of code review is better code. The invisible output is a better engineering organization.</span></strong></p><p><span>Code review is how teams build shared understanding of a system. It&#8217;s how junior developers learn from experienced ones. It&#8217;s how architectural intent gets surfaced, questioned, and refined. It&#8217;s how one engineer&#8217;s mental model gradually becomes the team&#8217;s mental model. Organizations don&#8217;t become resilient because one person understands a subsystem. They become resilient because many people do.</span></p><p><span>This is why the stakes around AI review are so high. Automate the review of a diff, and you may have successfully reviewed that diff. But you haven&#8217;t transferred any knowledge. You haven&#8217;t built shared ownership. You haven&#8217;t given a newer engineer a window into how a more experienced teammate reasons about trade-offs. You haven&#8217;t surfaced the design rationale that someone will need six months from now when they&#8217;re trying to respond to customer feedback.</span></p><p><span>Developers in our </span><em><span>AI Where It Matters</span></em><span> research understood this instinctively. One participant wrote, </span><em><span>&#8220;I can&#8217;t fully delegate the final code review to AI&#8212;my approval puts my name on it.&#8221;</span></em><span> Another warned, </span><em><span>&#8220;Intellectual offloading can result in errors that eventually no one understands.&#8221;</span></em><span> That&#8217;s the slow-moving risk. The gradual erosion of a team&#8217;s ability to reason about its own software.</span></p><p><span>Margaret-Anne Storey&#8217;s </span><a href="https://queue.acm.org/detail.cfm?id=3807966"><span>recent work</span></a><span> gives this phenomenon a name. As AI accelerates software development, teams don&#8217;t just accumulate technical debt. They accumulate cognitive and intent debt&#8212;a growing gap between what the system does and what the organization collectively understands about why it does it. Those debts don&#8217;t appear on a dashboard. They surface months later, during an outage, a handoff, or a redesign, when nobody remembers the reasoning that once lived inside a code review conversation. By then, recovering that understanding is far more expensive than preserving it would have been.</span></p><p><span>This future isn&#8217;t inevitable. But it also won&#8217;t arrive all at once. It will emerge through a series of individually reasonable decisions: this change is low risk, this review can be automated, this approval can be skipped. Each decision saves a little time. Taken together, they may slowly eliminate one of the primary ways engineering teams build shared understanding.</span></p><p><span>The challenge isn&#8217;t choosing between AI and human review. It&#8217;s deciding which parts of code review are too valuable to automate away.</span></p><h2><span>What to actually do</span></h2><p><span>Three things, in order.</span></p><p><strong><span>Fix the basics first.</span></strong><span> Audit your current review process. Are pull requests small enough to review meaningfully? Do change descriptions explain </span><em><span>why</span></em><span>, not just </span><em><span>what</span></em><span>? Are reviewers protected from overload? Are automated tools already handling the routine work they should (e.g. formatting, linting, and obvious style issues)?</span></p><p><strong><span>Design AI around human judgment.</span></strong><span> Developers consistently describe code review as high-value, high-accountability work. They don&#8217;t want AI making the decision; they want AI helping them make better ones. That means risk stratification instead of blanket automation. It means AI that surfaces issues, not AI that silently resolves them. It means conservative eligibility thresholds, auditability, and clear human accountability.</span></p><p><strong><span>Protect what review is actually building.</span></strong><span> The easiest thing to measure about code review is defects. The most valuable thing it produces is shared understanding. Measure review health beyond throughput. Are junior developers learning? Is architectural knowledge spreading across the team? Are reviewers engaging with substance or simply rubber-stamping? Design your AI review strategy so automation absorbs the routine while humans spend more time on the conversations that create understanding, ownership, and better engineering judgment.</span></p><p><span>Code review is one of the highest-leverage practices in software engineering, and right now it&#8217;s under pressure from every direction. The answer isn&#8217;t to make it faster by making it shallower. It&#8217;s to get serious about doing it well&#8212;with or without AI&#8212;and then use AI deliberately, in the places where it earns trust and preserves what the practice was accomplishing all along.</span></p><p><strong><span>AI should absolutely reduce the time we spend reviewing code. It just shouldn&#8217;t reduce the amount we learn from it.</span></strong></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/what-are-code-reviews-even-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/what-are-code-reviews-even-for?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[The unexpected things developer metrics can measure]]></title><description><![CDATA[We built metrics to evaluate developer tools. They turned out to explain everything from office design to Daylight Saving Time.]]></description><link>https://newsletter.getdx.com/p/the-unexpected-things-developer-metrics</link><guid isPermaLink="false">https://newsletter.getdx.com/p/the-unexpected-things-developer-metrics</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Fri, 31 Jul 2026 10:45:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/61bbaac1-db67-4e66-a5fa-19896e84c651_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Welcome to the latest issue of Engineering Enablement</strong><span>, a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p><span>DX&#8217;s Q2 AI Impact Report is now available with the latest research on AI&#8217;s impact across engineering organizations. </span><a href="https://getdx.com/resources/?utm_source=newsletter">Read the full report.</a></p><div><hr></div><p><em><span>A quick heads-up: this issue is a little different from our usual format. Instead of sharing a finding from our research and conversations, this issue is more of a reframe of how to think about what developer metrics are actually for.</span></em></p><p><span>Here is a sentence I never expected to write: Developer-experience metrics can measure the impact of Daylight Saving Time.</span></p><p><span>Not a survey asking developers how they feel about the time change. An actual, measurable shift in engineering behavior, detected using the same kinds of outcome metrics we use to evaluate AI coding assistants, build systems, and code review workflows.</span></p><p><span>That sounds like an absurd thing to measure. And yet, </span><a href="https://www.linkedin.com/posts/brianhouck_developerexperience-daylightsavingtime-productivity-activity-7305671070206869504-VNgj?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAbL-CEB_GIa71OGfWkh-nZOd86fsAhsAZc"><span>that&#8217;s exactly what we found</span></a><span>.</span></p><p><span>When Daylight Saving Time begins, developers in Seattle (one of the highest-latitude major cities in the continental United States) show a measurable shift relative to developers closer to the equator, where seasonal daylight changes are much smaller. Across three years of data, active coding time increased by roughly 6%, while pull requests completed about 8% faster, driven largely by quicker code reviews.</span></p><p><span>The most plausible explanation is also the simplest: an extra hour of evening daylight appears to keep people engaged with their work a little longer.</span></p><p><span>I&#8217;d resist reading that as purely good news. More engagement isn&#8217;t automatically healthier. If some of that extra time is coming at the expense of sleep or recovery, that&#8217;s a trade-off worth measuring, not celebrating.</span></p><p><span>At first glance, this has nothing to do with software engineering. After all, developer metrics are supposed to measure developer things: faster builds, better IDEs, improved code reviews, AI-assisted coding.</span></p><p><span>Or so I thought.</span></p><p><span>The more I&#8217;ve worked with developer-experience metrics, the more I&#8217;ve come to believe we&#8217;ve been thinking about them too narrowly. We often describe them as a way to evaluate developer tools and engineering workflows. But that&#8217;s not really what they&#8217;re measuring. They&#8217;re measuring the experience of doing software engineering. And that experience is shaped by far more than software.</span></p><h3><span>Measuring outcomes, not interventions</span></h3><p><span>When people think about developer-experience metrics, they naturally think about the interventions we introduce: a new AI coding assistant, a faster build system, a different code review process, a new deployment pipeline.</span></p><p><span>But those aren&#8217;t actually what the metrics care about.</span></p><p><span>Good developer-experience metrics measure outcomes. They tell us whether developers are able to do focused, meaningful, high-quality work. Once you measure outcomes instead of interventions, something interesting happens.</span></p><p><span>The intervention no longer has to be software. It can be an office redesign. A meeting policy. The weather. Even Daylight Saving Time.</span></p><p><span>That doesn&#8217;t mean engineering leaders suddenly own the weather, facilities, or company policy. But measurement doesn&#8217;t have to imply ownership. Sometimes it helps explain why an outcome changed. Other times it gives you evidence to influence the people who </span><em><span>do</span></em><span> own the lever.</span></p><p><span>That realization changed how I think about developer metrics. They&#8217;re still excellent for evaluating developer tools. They just turn out to be useful for much more.</span></p><p><span>Once I started looking through this lens, examples kept appearing, not just in my own research, but across entirely different disciplines. And they weren&#8217;t limited to software engineering. Researchers have found that </span><a href="https://docs.iza.org/dp12632.pdf"><span>higher indoor air pollution</span></a><span> correlates to more errors by chess players, </span><a href="https://www.aeaweb.org/articles?id=10.1257/pol.20180612"><span>warmer classrooms</span></a><span> are associated with lower student performance, and </span><a href="https://www.sciencedirect.com/science/article/abs/pii/S0272494411000429"><span>high-noise environments</span></a><span> measurably degrade memory and motivation. Different domains, different outcomes, but the same underlying lesson: our environment shapes performance.</span></p><p><span>The difference is that developer-experience metrics give us a language for asking the same kinds of questions about software engineering.</span></p><p><span>Some of those influences are things organizations can change. Others aren&#8217;t. Both leave measurable fingerprints on the developer experience.</span></p><h3><span>The spaces your developers work in</span></h3><p><span>Daylight Saving Time is an unusual example because there isn&#8217;t much an engineering leader can do about it. Office space is different. Organizations make decisions about where and how developers work all the time, yet those decisions are often driven by cost, convenience, or intuition rather than evidence.</span></p><p><a href="https://www.microsoft.com/en-us/research/publication/the-best-of-both-worlds-unlocking-the-potential-of-hybrid-work-for-software-engineers/"><span>When we asked developers</span></a><span> what they actually value about coming into the office, the answers were overwhelmingly human. The top response, by a wide margin, was other people: seeing colleagues face to face, the conversations that get sparked, the camaraderie. Office design came next (whiteboards, rooms to hash out problems), followed by food and coffee. This isn&#8217;t just a list of office perks. It&#8217;s a window into the parts of the developer experience that still depend on the physical world.</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_!HIkS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HIkS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 424w, https://substackcdn.com/image/fetch/$s_!HIkS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 848w, https://substackcdn.com/image/fetch/$s_!HIkS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!HIkS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HIkS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png" width="1456" height="1044" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1044,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:219849,&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.getdx.com/i/208387583?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.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_!HIkS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 424w, https://substackcdn.com/image/fetch/$s_!HIkS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 848w, https://substackcdn.com/image/fetch/$s_!HIkS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!HIkS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F957195e1-477c-46bd-bb32-9ddfbd19e1ef_2788x2000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>The specifics ranged from the practical to the personal. One developer&#8217;s entire reason for coming in: &#8220;I don&#8217;t have to fight with my cats.&#8221; However they phrased it, the pattern was the same. What draws developers to the office is overwhelmingly human, and largely physical, the parts of the experience that software still hasn&#8217;t managed to replace.</span></p><p><span>Those findings explain </span><em><span>why</span></em><span> the office matters. Developer metrics can help answer the next question: </span><strong><span>how much does it matter?</span></strong></p><p><span>In a previously unpublished analysis, I looked at teams relocating between office spaces. The building itself moved the numbers.</span></p><p><span>One team relocated into a well-designed, high-performance office and saw developer engagement, measured through active coding time, increase by roughly 13% relative to comparable peer teams. The really interesting part came later. When that same team eventually moved back into their original office, their active coding time returned almost exactly to its previous level.</span></p><p><span>I also saw the opposite pattern. Teams moving into poorly designed office spaces experienced productivity declines on the order of 10%.</span></p><p><span>This is observational, not a controlled experiment, so we should be cautious about claiming causality. Office moves often coincide with organizational changes, new teammates, and countless other confounding factors. But the pattern is still striking. The same outcome metrics we might use to evaluate a new AI coding assistant also measured the impact of an office redesign. The intervention changed. The measurement didn&#8217;t.</span></p><p><span>That changes the conversation. Office space is usually treated as a facilities expense to be minimized. But if a better workspace meaningfully improves the developer experience, it becomes a productivity investment instead. A useful rule of thumb is that facilities costs are roughly 10% of payroll. That means an improvement in developer effectiveness on the order of 10% has the potential to offset the entire cost of the workspace, before considering any additional benefits such as hiring, retention, or collaboration.</span></p><p><span>Interestingly, our earlier hybrid-work research found another version of the same idea. Developers who chose whether to work from home or the office based on the type of work they planned to do reported higher productivity than those choosing primarily for personal convenience. Different environments appear to support different kinds of work, and developer metrics give us a way to test those assumptions rather than simply debate them.</span></p><h3><span>When the weather is a variable</span></h3><p><span>Daylight Saving Time at least has policy debates attached to it. Weather is even simpler. No engineering leader can change it.</span></p><p><span>And yet </span><a href="https://queue.acm.org/detail.cfm?id=3819080"><span>it still shows up in the data</span></a><span>.</span></p><p><span>In Seattle, you can often identify winter snow days simply by looking at engineering activity. Active coding time drops by roughly 18%. The reasons are easy to imagine: disrupted commutes, childcare, school closures, or simply the irresistible pull of a rare Pacific Northwest snow day. Untangling those mechanisms is difficult, and I wouldn&#8217;t claim a clean causal story.</span></p><p><span>But the mechanism isn&#8217;t really the point.</span></p><p><span>The point is that the measurement detected the change.</span></p><p><span>At first glance, measuring something you can&#8217;t control might seem pointless. I think the opposite is true. If a team&#8217;s delivery slows during a snowstorm, that isn&#8217;t necessarily a performance problem to solve. It&#8217;s the context that helps explain what happened.</span></p><p><span>That&#8217;s one of the underappreciated benefits of developer-experience metrics. Sometimes their greatest value isn&#8217;t telling you what to change. It&#8217;s telling you what not to blame.</span></p><p><span>Knowing that a metric moved because of external circumstances prevents organizations from chasing the wrong explanations, setting unrealistic expectations, or concluding that a team suddenly became less effective when nothing about the team actually changed.</span></p><h3><span>The durable part</span></h3><p><span>There is a reason I keep coming back to these examples, and it is not just that they are fun to share at a dinner party.</span></p><p><span>It is tempting to think of developer-experience metrics as a way to evaluate developer tools. But that is too narrow. Good developer metrics measure outcomes, not interventions. They tell us whether developers can do focused, meaningful, high-quality work. The intervention itself might be a faster build, a better office, a meeting policy, or even something as unexpected as Daylight Saving Time.</span></p><p><span>That distinction is what makes these measurement systems durable.</span></p><p><span>Five years ago, organizations were asking different questions than they are today. Five years from now, they&#8217;ll ask different questions again. AI is the dominant topic today, just as cloud development environments, CI/CD, or code review tooling were at other points in time. The interventions evolve. The outcomes we care about&#8212;Speed, Ease, Quality, and Thriving&#8212;do not.</span></p><p><span>That&#8217;s why I don&#8217;t think AI is a special case. It is simply the latest intervention whose impact we want to understand. The questions remain the same: Does it help developers do better work? Does it reduce friction? Does it improve quality? Does it help people thrive?</span></p><p><span>The tools will continue to change. The interventions will continue to change. The measurement doesn&#8217;t have to.</span></p><p><span>It also leaves an interesting question for another day: if these ideas apply so well to software engineering, how much further do they extend?</span></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Brian</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/the-unexpected-things-developer-metrics?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/the-unexpected-things-developer-metrics?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Measuring the impact of AI coding tools: Capacity, not horsepower]]></title><description><![CDATA[Separate what to measure from how, then measure across dimensions.]]></description><link>https://newsletter.getdx.com/p/measuring-the-impact-of-ai-coding</link><guid isPermaLink="false">https://newsletter.getdx.com/p/measuring-the-impact-of-ai-coding</guid><dc:creator><![CDATA[Brian Houck]]></dc:creator><pubDate>Wed, 29 Jul 2026 10:42:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e0058d22-6461-4cf5-995b-bcecb2f63961_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Welcome to the latest issue of Engineering Enablement</strong><span>, a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p><span>DX&#8217;s Q2 AI Impact Report is now available with the latest research on AI&#8217;s impact across engineering organizations. </span><a href="https://getdx.com/resources/?utm_source=newsletter">Read the full report.</a></p><div><hr></div><p><span>When an organization invests in an AI coding tool, the next question is almost always some version of &#8220;How do we prove it&#8217;s working?&#8221; It&#8217;s a fair question, and one many organizations are wrestling with today.</span></p><p><span>I was recently asked to weigh in on one such proposal: a metric called &#8220;Developer Horsepower,&#8221; defined as useful work per day and calculated by multiplying AI-assisted pull requests by an estimate of the human effort each would have required. It&#8217;s an intuitive idea, and a genuinely thoughtful attempt at a hard problem. But I think it starts one step too early.</span></p><p><span>Rather than asking how much human work the AI replaced, I&#8217;d ask whether AI has increased the organization&#8217;s capacity to deliver innovation (and whether that additional capacity is sustainable). That framing leads to a very different measurement strategy, and one that I believe is both easier to defend and more actionable.</span></p><h3><span>First, separate &#8220;what&#8221; from &#8220;how&#8221;</span></h3><p><span>Two different questions get tangled together in most measurement conversations. The first is what to measure. The second is how: not just how you collect the data (surveys versus telemetry) but how strong your evidence needs to be. Is a correlation enough, or do you need a full causal study?</span></p><p><span>Proving causation is genuinely valuable, and I&#8217;d never talk someone out of it. If you&#8217;re doing something novel, or you want to publish in a peer-reviewed journal, there are good approaches available, from difference-in-differences designs to dose-response studies. But for most organizations, a full causal study is overkill. There is now </span><a href="https://newsletter.getdx.com/p/five-studies-that-are-changing-how"><span>substantial causal evidence</span></a><span> that AI coding tools can improve coding throughput under many conditions. You don&#8217;t need to re-prove that AI increases coding throughput; the field has done that work. In most cases you can measure the correlations in your own environment and lean on the existing causal literature to interpret them. That&#8217;s a far lighter lift, and it&#8217;s honest (as long as you&#8217;re not claiming something the literature doesn&#8217;t support).</span></p><p><span>With that settled, the interesting question is what to measure.</span></p><h3><span>What to measure: innovation capacity, across dimensions</span></h3><p><span>The goal isn&#8217;t to isolate the tool. It&#8217;s to answer whether your engineering system now has more capacity to deliver innovation, and whether that capacity is sustainable. I&#8217;d build that up in layers.</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_!luT0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!luT0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 424w, https://substackcdn.com/image/fetch/$s_!luT0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 848w, https://substackcdn.com/image/fetch/$s_!luT0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 1272w, https://substackcdn.com/image/fetch/$s_!luT0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!luT0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png" width="1456" height="962" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:962,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:416952,&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.getdx.com/i/208356729?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.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_!luT0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 424w, https://substackcdn.com/image/fetch/$s_!luT0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 848w, https://substackcdn.com/image/fetch/$s_!luT0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 1272w, https://substackcdn.com/image/fetch/$s_!luT0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085238b0-c071-4870-b15b-8de6ffb5c961_2400x1586.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><span>Throughput: Is more total work happening?</span></strong><span> PR throughput is a perfectly valid system-level signal for whether more work, in aggregate, is moving through your engineering system. It gets criticized, and rightly so, as a measure of any individual developer, because not all PRs are equal in size or complexity. But at the system level it holds up well. If you can normalize for PR complexity, that&#8217;s better still (</span><a href="https://getdx.com/truethroughput/"><span>TrueThroughput</span></a><span> is one approach to doing that). But even without normalization, aggregate throughput remains a useful directional indicator. I explore this in more depth in the recent article: </span><a href="https://newsletter.getdx.com/p/revisiting-the-dx-core-4"><span>Revisiting the DX Core 4 in the age of AI</span></a></p><p><strong><span>Deployments: Does the work survive to shipped software?</span></strong><span> This is the step most teams skip, and it&#8217;s the most important one. Recent research shows that AI increases coding activity far more than it increases shipped software. In </span><a href="https://www.nber.org/papers/w35275"><span>one large study of over 100,000 developers</span></a><span>, coding agents raised commit volume by up to 180%, yet the effect on actual releases attenuated to roughly 20-30%. The authors attribute the gap to a &#8220;weak link&#8221;: the upstream speedup runs into human bottlenecks downstream, in review, integration, and release.</span></p><p><span>Counting merged PRs alone may overstate impact, because a large share of that activity attenuates before it reaches production. Tracing your throughput increase all the way through to deployments tells you how much of the upstream gain actually survives.</span></p><p><span>I&#8217;d frame the result as innovation capacity: the organization&#8217;s realized capacity to deliver innovation. Note the deliberate boundary. Whether that additional capacity translates into business value is a separate question, and often not an engineering one. Deployment frequency is the practical proxy for delivered work; business impact is the true north if you can reach it. Conflating the two is how measurement programs lose credibility.</span></p><p><strong><span>Innovation Time Ratio: Are the savings being reinvested?</span></strong><span> AI only creates organizational value if the time it saves is reinvested in higher-value work. This is exactly what a metric like </span><a href="https://queue.acm.org/detail.cfm?id=3819080"><span>Innovation Time Ratio</span></a><span> captures: the share of developer time spent creating new value versus running the business or carrying administrative load. For most organizations, survey data is the logical place to start, unless you already have robust calendar and development telemetry. And self-report is less of a concern here than it first appears, because you&#8217;re looking at change over time. Whatever reporting bias exists tends to stay consistent across measurements, so it largely cancels out in the delta.</span></p><p><strong><span>Quality: A guardrail, not an afterthought.</span></strong><span> More work moving faster is only progress if it isn&#8217;t just churn. A quality signal such as change failure rate or incident mitigation time keeps the speed gains honest. If throughput climbs while failure rates climb with it, you haven&#8217;t gained capacity. You&#8217;ve moved the cost somewhere less visible.</span></p><p><strong><span>Satisfaction: The sustainability guardrail.</span></strong><span> Finally, watch developer satisfaction. Throughput and experience can decouple, and gains bought by burning out your engineers aren&#8217;t gains you get to keep. Sustainable capacity requires healthy developers. If higher throughput comes at the expense of satisfaction, you&#8217;ve likely borrowed from future capacity rather than increased it.</span></p><p><span>Taken together, those layers answer the question leadership is actually asking: not &#8220;how much code did the tool produce?&#8221; but &#8220;does our system have more capacity to deliver innovation, and can we sustain it?&#8221;</span></p><h3><span>&#8220;Developer Horsepower&#8221;</span></h3><p><span>Which brings me back to the proposal I was asked about. I understand the appeal of a single &#8220;horsepower&#8221; number, but ultimately I&#8217;d recommend a different approach.</span></p><p><span>To be clear, my aim isn&#8217;t to single out this particular metric. It&#8217;s a reasonable attempt at a real problem, and the team that proposed it is asking exactly the right question. I want to use it as a worked example of the kind of probing I do whenever someone hands me a composite score: what is the unit actually measuring, and how much variation is it hiding? Those questions apply to any single-figure productivity metric, not just this one.</span></p><p><span>My concern isn&#8217;t that &#8220;Developer Horsepower&#8221; is impossible to calculate. It&#8217;s that I&#8217;m not sure it is answering the question that really needs answering. Leadership doesn&#8217;t ultimately care how many &#8220;human-equivalent hours&#8221; an AI system replaced. They care whether their engineering organization can deliver more innovation, more reliably, and more sustainably than before.</span></p><p><span>The core problem is that it tries to collapse a multidimensional question into one figure. That runs against a principle the field has largely converged on: </span><a href="https://www.microsoft.com/en-us/research/publication/the-space-of-developer-productivity-theres-more-to-it-than-you-think/"><span>engineering productivity can&#8217;t be captured by a single metric</span></a><span>. A single number simplifies reporting, but it obscures the tradeoffs that matter and makes it difficult to understand what&#8217;s actually driving change.</span></p><p><span>The specific construction compounds this in several ways.</span></p><p><span>First, the normalization itself is non-standard and difficult to interpret. &#8220;Human-equivalent hours&#8221; isn&#8217;t an industry term, and a figure built on a bespoke conversion is difficult for anyone outside the team to trust or reason about.</span></p><p><span>More fundamentally, it&#8217;s not obvious what those hours are supposed to represent.</span></p><p><span>One of the more surprising findings from our </span><em><a href="https://queue.acm.org/detail.cfm?id=3807961"><span>AI Native Developer</span></a></em><span> research was that developers spend only about 14% of their work week actively writing code. The rest is spread across activities like design, code review, debugging, learning, meetings, planning, documentation, and coordinating with teammates. AI doesn&#8217;t simply replace coding time; it changes how engineers spend time across many of those activities. Some work disappears, some shifts, and entirely new work (like reviewing AI-generated code or managing context) emerges.</span></p><p><span>Trying to convert an AI-assisted pull request into a fixed number of &#8220;human hours saved&#8221; assumes those relationships are stable and additive. In practice, they&#8217;re neither.</span></p><p><span>Even if &#8220;human-equivalent hours&#8221; were the right unit, a flat estimate is almost certainly inaccurate. Eight hours per PR treats every pull request as identical, but PRs vary enormously in size, complexity, and review effort.</span></p><p><span>The research also increasingly suggests that AI and human effort remain largely </span><a href="https://www.nber.org/papers/w35275"><span>complements rather than substitutes</span></a><span>. Engineers still spend substantial time reviewing, integrating, validating, testing, and coordinating around AI-generated code. A clean &#8220;hours replaced&#8221; conversion assumes substitution where the evidence points toward augmentation.</span></p><h3><span>Where to start</span></h3><p><span>If this sounds like more than you can measure today, start anyway. You do not need to be able to measure all of this with a mature telemetry stack in order to begin.</span></p><p><span>Don&#8217;t have the telemetry? Use surveys. If you have precise, telemetry-driven data for every commit, review, build, and deployment, you&#8217;re in an uncommonly good position. Most organizations aren&#8217;t, and that&#8217;s fine. Targeted surveys will get you moving quickly, and they&#8217;re better suited to some of these dimensions than telemetry is anyway (reinvested time and satisfaction, for instance). The usual objection is self-report bias, but it matters less than people expect here, because you&#8217;re watching change over time. Whatever bias exists tends to stay consistent across measurements, so it largely cancels out in the delta. The measure only has to be directionally correct to be useful.</span></p><p><span>Don&#8217;t feel lost if you can only start with a couple of metrics. You don&#8217;t need all five dimensions on day one. Pick one or two metrics per dimension, balancing an objective signal with a subjective one, and add more as your instrumentation matures. A speed metric from telemetry paired with a satisfaction question from a survey tells you more than five telemetry metrics alone. Too many metrics dilute focus and make it harder to see what&#8217;s actually changing. Start small, learn what moves, and expand deliberately.</span></p><p><span>As your instrumentation matures, work toward the full picture. The richer your measurement, the more confidently you can answer whether your capacity to deliver innovation is real and sustainable.</span></p><h2><span>The bottom line</span></h2><p><span>The pressure to produce one clean number that proves an AI tool&#8217;s horsepower is understandable, but it answers the wrong question. The better question is whether your engineering system has more capacity to deliver innovation, and whether that capacity is sustainable. Measure that across a few well-chosen dimensions, lean on the causal work the field has already done, and you&#8217;ll have something far more defensible than any single horsepower figure, and far more useful for deciding what to do next. AI shouldn&#8217;t be judged by how much human work it appears to replace. It should be judged by whether it gives your engineering organization a greater and more sustainable capacity to deliver innovation.</span></p><div><hr></div><p><span>This week&#8217;s featured DevProd job openings. See more </span><a href="https://getdx.com/resources/devex-jobs/">open roles here</a><span>.</span></p><ul><li><p><strong>Ashby</strong><span> is hiring an </span><a href="https://jobs.ashbyhq.com/Ashby/0f5dbf59-687b-4d88-88a7-73ee0a66b48d?utm_source=PRgMeEgv1Z">Staff Platform Engineer</a><span> | Remote</span></p></li><li><p><strong>Cart</strong><span> is hiring a </span><a href="https://www.linkedin.com/jobs/view/4404135082">Sr. Software Engineer II, Developer Experience</a><span> | </span>Santa Clara, CA; San Francisco, CA; New York, NY</p></li><li><p><strong>Cashea</strong><span> is hiring an </span><a href="https://cashea.na.teamtailor.com/jobs/579773-infrastructure-developer-productivity-platform-engineering-manager">Infrastructure &amp; Developer Productivity Platform Engineering Manager</a><span> | Remote</span></p></li><li><p><strong>Figma</strong><span> is hiring a </span><a href="https://job-boards.greenhouse.io/figma/jobs/5790627004?gh_jid=5790627004&amp;gh_src=db0ijm3x4us">Staff Software Engineer, Developer Experience</a><span> | Remote; US</span></p></li><li><p><strong>Morgan Stanely </strong><span>is hiring an </span><a href="https://www.linkedin.com/jobs/view/4393043964/">AI Platform Engineer - Vice President</a><span> | New York</span></p></li><li><p><strong>Notion</strong> is hiring a <a href="https://jobs.ashbyhq.com/notion/49bdf081-6e20-4323-8c73-6d6b19544ff5">Software Engineer, Developer Experience</a> | Hybrid; Hyderabad, India</p></li></ul><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/measuring-the-impact-of-ai-coding?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/measuring-the-impact-of-ai-coding?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Research briefing with Brian Houck: Measuring AI agents and revisiting the Core 4]]></title><description><![CDATA[Justin Reock and Brian Houck explore how AI coding agents are reshaping engineering metrics and what leaders need to measure in the age of AI.]]></description><link>https://newsletter.getdx.com/p/research-briefing-with-brian-houck</link><guid isPermaLink="false">https://newsletter.getdx.com/p/research-briefing-with-brian-houck</guid><dc:creator><![CDATA[Justin Reock]]></dc:creator><pubDate>Fri, 24 Jul 2026 13:50:33 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207581348/14162e401718c8fcc01f420bcb2cbc98.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Listen and watch now on <strong><a href="https://youtu.be/U3p-rqOrAts">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/engineering-enablement-by-abi-noda/id1619140476">Apple</a>, and <a href="https://open.spotify.com/show/3NxjyIsuxeDMQtisDqBy7D">Spotify</a></strong>.</p><p><span>AI coding agents are changing how software gets built, but they&#8217;re also forcing us to rethink how we measure engineering effectiveness. Traditional developer experience metrics were designed for humans, not AI agents, so how should engineering leaders adapt?</span></p><p><span>In this webinar, I&#8217;m joined by Brian Houck, Distinguished Scientist at DX and co-author of the SPACE framework, to explore the emerging field of agent experience and how it builds on developer experience rather than replacing it. We discuss how organizations can prepare for AI-assisted software development, how the DX Core 4 applies in the age of AI, why metrics like token usage and PR throughput don&#8217;t tell the whole story, and the growing importance of documentation. We also examine the impact AI-driven pressure is having on burnout and cognitive overload.</span></p><p><span>Throughout the conversation, we share practical guidance for building engineering organizations where both developers and AI agents can do their best work.</span></p><div id="youtube2-U3p-rqOrAts" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;U3p-rqOrAts&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/U3p-rqOrAts?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><h2><strong>Some takeaways: </strong></h2><h2><strong><span>Agent experience builds on developer experience</span></strong></h2><ul><li><p><strong><span>Agent experience focuses on creating the conditions for AI agents to succeed.</span></strong><span> Brian defines agent experience as the environment surrounding AI agents, including the quality of context, documentation, validation, and feedback they receive. As agents become part of software teams, improving those conditions becomes increasingly important.</span></p></li><li><p><strong><span>Model quality is only one part of successful AI adoption.</span></strong><span> Organizations often focus on choosing the best model, but Brian argues that context, clear intent, and effective workflows often have a greater impact on outcomes than incremental improvements in model capability.</span></p></li><li><p><strong><span>The same systems that help developers often help AI agents.</span></strong><span> Investments in documentation, development workflows, and engineering platforms create a stronger foundation for both humans and AI to produce high-quality work.</span></p></li></ul><h2><strong><span>Developer experience and agent experience don&#8217;t always align</span></strong></h2><ul><li><p><strong><span>Many improvements benefit both developers and AI agents.</span></strong><span> Better documentation, clearer context, and stronger engineering practices improve outcomes across the board, making existing developer experience investments even more valuable.</span></p></li><li><p><strong><span>Optimizing for one doesn&#8217;t automatically optimize for the other.</span></strong><span> Brian explains that organizations will increasingly encounter situations where workflows that help AI agents introduce friction for developers, or vice versa.</span></p></li><li><p><strong><span>Organizations should measure both independently.</span></strong><span> Rather than assuming every AI optimization improves the developer experience, engineering leaders should evaluate where the two reinforce each other and where they diverge.</span></p></li></ul><h2><strong><span>Preparing for AI requires organizational change</span></strong></h2><ul><li><p><strong><span>Successful AI adoption requires more than coding tools.</span></strong><span> Justin and Brian describe AI readiness as a combination of developer tooling, engineering platforms, and organizational practices rather than a single technology decision.</span></p></li><li><p><strong><span>The DX Core 4 still provides a useful foundation.</span></strong><span> Instead of abandoning existing engineering metrics, organizations should reinterpret them for AI-assisted development while continuing to focus on business outcomes rather than activity.</span></p></li><li><p><strong><span>Validation becomes more important as generation becomes easier.</span></strong><span> As AI produces more code, engineering organizations need stronger review, testing, and verification processes to ensure quality keeps pace with productivity.</span></p></li></ul><h2><strong><span>Documentation becomes infrastructure for AI agents</span></strong></h2><ul><li><p><strong><span>Documentation is no longer just for people.</span></strong><span> AI agents rely on high-quality documentation to understand systems, follow conventions, and complete work accurately, making documentation a core engineering asset rather than an afterthought.</span></p></li><li><p><strong><span>Not all documentation delivers equal value.</span></strong><span> Brian highlights that the biggest returns come from documenting information that helps agents understand systems, architecture, and engineering intent rather than simply producing more documentation.</span></p></li><li><p><strong><span>Capturing organizational knowledge improves both human and AI performance.</span></strong><span> Teams that make important context explicit reduce repeated questions, improve onboarding, and enable AI agents to work more effectively.</span></p></li></ul><h2><strong><span>Engineering metrics need to evolve with AI</span></strong></h2><ul><li><p><strong><span>Token usage is a cost metric, not a productivity metric.</span></strong><span> Brian cautions against treating token consumption as a measure of engineering effectiveness because it reflects AI usage rather than business value or software quality.</span></p></li><li><p><strong><span>PR throughput tells only part of the story.</span></strong><span> Larger pull requests and faster code generation may indicate increased AI adoption, but they can also increase review complexity and cognitive load if organizations measure throughput in isolation.</span></p></li><li><p><strong><span>Outcome metrics matter more than activity metrics.</span></strong><span> Justin emphasizes measuring whether engineering teams deliver value, improve quality, and create better developer experiences instead of rewarding raw AI utilization.</span></p></li></ul><h2><strong><span>AI changes how engineering work feels&#8212;not just how it&#8217;s done</span></strong></h2><ul><li><p><strong><span>AI pressure is contributing to burnout and cognitive overload.</span></strong><span> Brian describes growing pressure to move faster with AI while simultaneously reviewing larger code changes and maintaining confidence in increasingly AI-generated systems.</span></p></li><li><p><strong><span>Software engineering is much more than writing code.</span></strong><span> Even as AI accelerates code generation, engineers remain responsible for judgment, communication, system design, validation, and building trust in what gets shipped.</span></p></li><li><p><strong><span>The long-term challenge is balancing speed with confidence.</span></strong><span> Organizations that move faster than their ability to verify AI-generated work risk increasing technical debt, developer stress, and uncertainty rather than creating sustainable productivity gains.</span></p></li></ul><h2><strong>In this episode, we cover:</strong></h2><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts">00:00</a>) Intro</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=86s">01:26</a>) Justin&#8217;s new role at DX</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=233s">03:53</a>) What agent experience is and why engineering leaders should care</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=535s">08:55</a>) How to improve agent experience at the platform level</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=685s">11:25</a>) How agent experience and developer experience influence each other</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=881s">14:41</a>) Preparing engineering teams for agentic work</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=1298s">21:38</a>) Why the DX Core 4 still matters in the age of AI</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=1643s">27:23</a>) What PR throughput actually measures</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=1967s">32:47</a>) The limits of token metrics</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=2230s">37:10</a>) What the data shows about documentation and developer experience</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=2372s">39:32</a>) Improving documentation for AI agents</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=2443s">40:43</a>) AI-washing, burnout, and cognitive overload</p><p>(<a href="https://www.youtube.com/watch?v=U3p-rqOrAts&amp;t=2735s">45:35</a>) Brian&#8217;s upcoming research on agent experience</p><p><strong><span>Where to find Brian Houck:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/brianhouck"><span>https://www.linkedin.com/in/brianhouck</span></a></p><p><strong><span>Where to find Justin Reock:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/justinreock"><span>https://www.linkedin.com/in/justinreock</span></a></p><h2><strong>Referenced:</strong></h2><p><span>&#8226; </span><a href="https://getdx.com/corefour"><span>DX Core 4 Productivity Framework</span></a></p><p><span>&#8226; </span><a href="https://spawn-queue.acm.org/doi/10.1145/3807964"><span>The SPACE of AI | Queue</span></a></p><p><span>&#8226; </span><a href="https://www.linkedin.com/in/sarachizari/"><span>Sara Chizari on LinkedIn</span></a></p><p><span>&#8226; </span><a href="https://annievella.com/posts/the-middle-loop/"><span>The Middle Loop - Annie Vella</span></a></p><p><span>&#8226; </span><a href="https://github.com/gastownhall/gastown"><span>gastownhall/gastown: Gas Town - multi-agent workspace manager &#183; GitHub</span></a></p><p><span>&#8226; </span><a href="https://getdx.com/guide/dora-space-devex/"><span>DORA, SPACE, and DevEx: Which framework should you use?</span></a></p><p><span>&#8226; </span><a href="https://getdx.com/blog/ai-impact-report-q1-2026/"><span>AI Impact Report: Q1 2026</span></a></p><p><span>&#8226; </span><a href="https://newsletter.getdx.com/p/ai-authored-code-has-nearly-doubled"><span>AI-authored code has nearly doubled, but so has PR size</span></a></p><p><span>&#8226; </span><a href="https://spawn-queue.acm.org/doi/10.1145/3819080"><span>EngThrive: Make It Fast and Easy to Do Great Work: Building a durable model for outcome-oriented engineering measurement</span></a></p><p><span>&#8226; </span><a href="https://psychsafety.com/googles-project-aristotle/"><span>Google&#8217;s Project Aristotle - Psychological Safety</span></a></p><p><span>&#8226; </span><a href="https://zapier.com"><span>Zapier</span></a></p>]]></content:encoded></item><item><title><![CDATA[The State of AI Impact in Engineering: Q2 2026]]></title><description><![CDATA[Data from 500+ teams reveals that AI is delivering measurable velocity gains, but velocity alone isn't the story.]]></description><link>https://newsletter.getdx.com/p/the-state-of-ai-impact-in-engineering</link><guid isPermaLink="false">https://newsletter.getdx.com/p/the-state-of-ai-impact-in-engineering</guid><dc:creator><![CDATA[Justin Reock]]></dc:creator><pubDate>Wed, 22 Jul 2026 10:02:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/28554c65-1e7d-432a-9e62-b017f371f383_2400x1254.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong><span>Welcome to the latest issue of Engineering Enablement,</span></strong><span> a weekly newsletter sharing research and perspectives on developer productivity.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.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.getdx.com/subscribe?"><span>Subscribe now</span></a></p><p><span>&#128467; </span><a href="https://getdx.com/webinar/ai-in-engineering-q2-2026-benchmarks-research-readout/?utm_source=newsletter"><span>Join me and Brian Houck on July 23</span></a><span> for a readout of this report, where we&#8217;ll discuss new findings from DX&#8217;s data on AI tool usage, spend, and impact across 500+ organizations. Register </span><a href="https://getdx.com/webinar/ai-in-engineering-q2-2026-benchmarks-research-readout/?utm_source=newsletter"><span>here.</span></a></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i6Pp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i6Pp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png 424w, https://substackcdn.com/image/fetch/$s_!i6Pp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png 848w, https://substackcdn.com/image/fetch/$s_!i6Pp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!i6Pp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i6Pp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.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;:1634649,&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.getdx.com/i/205958887?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.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_!i6Pp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png 424w, https://substackcdn.com/image/fetch/$s_!i6Pp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png 848w, https://substackcdn.com/image/fetch/$s_!i6Pp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!i6Pp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471c6aab-292d-4e15-b164-5be4355550ce_2400x1254.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 buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>We are excited to announce our Q2 2026 AI impact report.</span></p><p><span>When we first began tracking the impact of AI on engineering teams, our primary goal was to measure AI cohorts against historical baselines to answer the question of what happens to software output after adoption. With industry-wide AI adoption exceeding 90%, comparing AI users against a non-user control group is no longer a viable measurement strategy.</span></p><p><span>Engineering leaders are now under immense pressure to justify exponentially-increasing AI budgets. The data from our Q2 report reveals that while AI is delivering objective gains in velocity, those gains are highly uneven.</span></p><p><span>Download the full analysis </span><strong><a href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/?utm_source=newsletter"><span>here.</span></a></strong></p><p><span>In the new report, we&#8217;ve uncovered a number of critical trends, including:</span></p><p><strong><span>1. Over 50% of code is now generated by AI. </span></strong><span> This metric has accelerated rapidly, increasing from 34% in Q1 2026 to 52% in Q2 2026. This steep trajectory indicates that once AI tools are deployed, the code they generate rapidly scales across codebases, frequently moving through reviews, dependencies, and shared workflows.</span></p><p><strong><span>2. Quality may be declining. </span></strong><span>During the same period that AI adoption has increased, median pull request sizes have nearly doubled. Increases in PR size can serve as an early indicator of technical debt, as higher code volumes generally correlate with increased complexity and potential for bugs. This trend can also introduce additional friction in the review process, as more lines of code generated means more lines of code to review.</span></p><p><strong><span>3. Some aspects of developer experience are declining.</span></strong><span> The Developer Experience Index (DXI) dropped from 67 to 65 over four quarters. AI is improving some aspects of the developer experience&#8212;documentation quality, code maintainability, onboarding speed&#8212;while creating new friction in others: larger PRs, slower reviews, less incremental delivery. In aggregate, the net effect is currently negative. Velocity metrics alone will tell you things are improving. Developer experience metrics will tell you whether that&#8217;s actually true</span><strong><span>.</span></strong></p><p><strong><span>4. AI is making codebases easier to understand, but it&#8217;s also making the code it generates harder to trust. </span></strong><span>The Q2 data highlights a striking divergence between two historically correlated software quality metrics. Specifically, from Q1 2026, Code Maintainability improved by 3.8%, whereas Change Confidence decreased by 6.1%. Code Maintainability indicates how easily developers can understand the codebase, while Change Confidence measures their trust that modifications won&#8217;t cause production failures. Traditionally, highly maintainable code results in higher confidence when making changes. However, this data reveals a new tension: although AI helps developers understand the code in front of them, they exhibit less trust in the code they are pushing to production.</span></p><p><strong><span>5. Saved time isn&#8217;t converting into innovation. </span></strong><span>AI users are now saving an estimated 4 to 6 hours per week. However, the innovation ratio, defined as the percentage of time spent on building new features versus maintenance and overhead, has remained flat over the same period of study. This flat trend indicates that the time saved by AI is not currently converting into increased capacity for creating new value. Leaders should keep a close eye on this metric over time. Ideally, innovation ratio will increase as AI frees up engineers to work on more new features.</span></p><p><strong><span>6. AI spend is accelerating faster than outcomes.</span></strong><span> Median quarterly organizational AI spend climbed from ~$1.5K to ~$44K over four quarters. Tech-sector spend increased nearly 28x. These numbers will draw scrutiny. Leaders who cannot connect this investment to downstream outcomes (feature velocity, innovation ratio, quality) may face increasingly difficult budget conversations in the back half of 2026.</span></p><h3><span>What this means for leaders</span></h3><p><span>The Q2 2026 data indicates that the industry is shifting from base AI deployment to evaluating concrete return on investment. As AI expenditures accelerate, engineering leaders must shift their focus from simply acquiring AI tools to optimizing the surrounding development pipelines and resolving systemic bottlenecks. To achieve true ROI, leaders must ensure that saved hours are reinvested into product innovation rather than absorbed by existing organizational friction.</span></p><p><span>To explore the full data and benchmark your team against 500+ organizations on measures of throughput, quality, and AI tooling cost, </span><strong><a href="https://getdx.com/report/state-of-ai-impact-in-engineering-q2-report/"><span>download the full report here.</span></a></strong></p><div><hr></div><p>That&#8217;s it for this week. Thanks for reading.</p><p>-Justin</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.getdx.com/p/the-state-of-ai-impact-in-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.getdx.com/p/the-state-of-ai-impact-in-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item></channel></rss>