<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Artem Koltunov</title>
    <description>The latest articles on DEV Community by Artem Koltunov (@artem-koltunov).</description>
    <link>https://dev.to/artem-koltunov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3836488%2F8adebb7a-7494-467f-bedc-25a1bf112dcd.jpg</url>
      <title>DEV Community: Artem Koltunov</title>
      <link>https://dev.to/artem-koltunov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/artem-koltunov"/>
    <language>en</language>
    <item>
      <title>The Assimilation Problem: Why AI-Generated Code Becomes Legacy Faster Than You Think</title>
      <dc:creator>Artem Koltunov</dc:creator>
      <pubDate>Tue, 19 May 2026 14:13:23 +0000</pubDate>
      <link>https://dev.to/artem-koltunov/the-assimilation-problem-why-ai-generated-code-becomes-legacy-faster-than-you-think-4ebf</link>
      <guid>https://dev.to/artem-koltunov/the-assimilation-problem-why-ai-generated-code-becomes-legacy-faster-than-you-think-4ebf</guid>
      <description>&lt;p&gt;&lt;em&gt;What happens when you merge code you don't understand&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  A New Kind of Legacy
&lt;/h2&gt;

&lt;p&gt;Every developer knows what legacy code is. Old, tangled, written by people who left the company long ago. No documentation, no context, nobody remembers why the code is structured the way it is. Legacy emerges over time: people leave, requirements change, knowledge dissipates.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Traditional legacy = knowledge lost over time.&lt;br&gt;
AI-legacy = knowledge never created.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI-legacy is different. It does not become legacy with age. It is born as legacy.&lt;/p&gt;

&lt;p&gt;When AI generates code and a developer accepts it without deep understanding, there was no context to begin with. There was no decision-making process. There was no moment when an engineer consciously chose one architecture over another. The code appeared, passed tests, was accepted into the codebase — and from that point on, nobody on the team truly owns it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-legacy is code that was accepted faster than it was understood.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Margaret-Anne Storey (University of Victoria) named the result of this process &lt;strong&gt;cognitive debt&lt;/strong&gt; (Storey, 2026). In her model: technical debt lives in the code — it's a conscious trade-off the team makes, knowing they'll come back to fix it. Cognitive debt lives in people — it's the gap between the state of the system and the team's understanding of it. Martin Fowler developed the concept further in his Fragments series (Fowler, 2026), formulating the key question: do we need a discipline analogous to refactoring, but for team understanding? AI-legacy is an artifact in the codebase. Cognitive debt is the cost of not understanding it, paid by the developers.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/artem-koltunov/ai-coding-tools-in-practice-what-a-25-40-productivity-gain-really-looks-like-2eo8"&gt;first article of this series&lt;/a&gt;, we described the results of three experiments with AI tools on real production code. We measured a sustainable productivity gain of 25-40% — but only with thorough code review. There, we showed what happens without review. Now — why it happens and how AI-legacy forms.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Story of One Image ID
&lt;/h2&gt;

&lt;p&gt;In the third experiment, two developers integrated a JS SDK into a product using Cursor. A Redux environment was set up, Figma was connected, layouts were generated, business logic was integrated. Working code appeared in ~20 hours instead of the estimated ~40.&lt;/p&gt;

&lt;p&gt;Everything compiled. The UI worked. Basic tests passed.&lt;/p&gt;

&lt;p&gt;During code review, one of the developers noticed an anomaly. The image identifier was already contained in the object being passed through the system. Logically, the code should have simply used that ID — one line, one reference.&lt;/p&gt;

&lt;p&gt;Instead, the AI-generated implementation took the long way around:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Retrieve the image ID&lt;/li&gt;
&lt;li&gt;Download the blob by that ID&lt;/li&gt;
&lt;li&gt;Create a new file from the blob&lt;/li&gt;
&lt;li&gt;Upload that file back to the server&lt;/li&gt;
&lt;li&gt;Receive a new identifier&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Five steps instead of one. Additional network requests on every call. Data duplication. Growing resource consumption.&lt;/p&gt;

&lt;p&gt;Nothing was broken on the outside. Inside, the system was doing several times more work than necessary.&lt;/p&gt;

&lt;p&gt;This problem was discovered by a person who understood the domain logic. Not a linter. Not tests. Not another AI model. A person who had a mental model of the system, and the code before their eyes didn't match that model.&lt;/p&gt;

&lt;p&gt;And here's the key question: why could this code have passed review without a single objection?&lt;/p&gt;

&lt;p&gt;Because it looked like code written by a competent developer. Clean formatting. Meaningful variable names. Logical structure. Green tests. The only thing missing was a human understanding of why the code was structured that way.&lt;/p&gt;

&lt;p&gt;And this is where the central problem of AI-assisted development emerges — not code generation, but code assimilation. When a developer writes code themselves, understanding is built into the creation process: every architectural decision passes through their mental model of the system. With AI-generated code, this link is severed. The code appears ready-made, but the reasoning behind it exists in no human mind. If the developer doesn't reconstruct that reasoning during review, the code enters the system without cognitive ownership. This is the exact moment AI-generated code becomes AI-legacy — not because it's wrong, but because it was integrated into the system faster than it was understood.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Assimilation Model: Why This Happens
&lt;/h2&gt;

&lt;p&gt;The gap between generation and understanding is closed through a process we propose calling &lt;strong&gt;assimilation&lt;/strong&gt; — by analogy with cognitive psychology and the Gestalt approach.&lt;/p&gt;

&lt;p&gt;In psychology, assimilation is the active processing of experience, after which the result of contact with something external becomes part of a person's internal model. The opposite of assimilation is introjection: acceptance without processing, "swallowing whole" (Perls, Hefferline, Goodman, 1951). In cognitive psychology, this is confirmed by levels-of-processing theory: durable understanding requires active processing, not passive perception (Craik &amp;amp; Lockhart, 1972).&lt;/p&gt;

&lt;p&gt;Let's map this onto engineering practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assimilation of AI code:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The developer reads the generated code&lt;/li&gt;
&lt;li&gt;Asks questions: why this way, not another?&lt;/li&gt;
&lt;li&gt;Compares against the system's architecture&lt;/li&gt;
&lt;li&gt;Rewrites parts that don't fit&lt;/li&gt;
&lt;li&gt;Can explain the reasoning behind each decision to a colleague&lt;/li&gt;
&lt;li&gt;Merge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Introjection of AI code:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code looks functional&lt;/li&gt;
&lt;li&gt;Tests pass&lt;/li&gt;
&lt;li&gt;"Looks good"&lt;/li&gt;
&lt;li&gt;Merge&lt;/li&gt;
&lt;li&gt;Nobody understands why the code is structured that way&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An important clarification: this is an analytical model, not a literal claim that therapeutic mechanisms operate in software engineering. But the parallel is useful — it explains why accepting code without understanding creates a specific and predictable kind of technical debt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model vs Evidence.&lt;/strong&gt; The assimilation model is an explanatory framework, not an empirically proven mechanism. Existing research does not measure assimilation directly. It documents phenomena — rising review costs, the illusion of productivity, quality variance — that the assimilation model helps explain.&lt;/p&gt;

&lt;p&gt;In Storey and Fowler's terms, every act of introjection — accepting code without processing — increases the team's cognitive debt. Assimilation is the process that prevents this debt from accumulating. Cognitive debt is not a side effect of AI-assisted development. It is a direct and predictable result of the absence of assimilation.&lt;/p&gt;




&lt;h2&gt;
  
  
  When It Matters: The Scale Boundary
&lt;/h2&gt;

&lt;p&gt;The assimilation model raises a natural question: when is it even applicable? If the project is a 200-line script, a personal utility, a hackathon prototype — is assimilation necessary? Why understand something you can recreate in half an hour?&lt;/p&gt;

&lt;h3&gt;
  
  
  The Regeneration Paradigm
&lt;/h3&gt;

&lt;p&gt;In February 2025, Andrej Karpathy gave this approach a name — &lt;strong&gt;vibe coding&lt;/strong&gt;: "There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists." Don't understand it — don't need to. It works — good enough. It broke — regenerate.&lt;/p&gt;

&lt;p&gt;This is neither fantasy nor irony. a16z (Anish Acharya, August 2025) described an entirely new class of software — &lt;strong&gt;disposable software&lt;/strong&gt;: "Building small, throwaway apps is starting to feel like doodling in a notebook and that shift changes why we build software in the first place." Personal scripts, event utilities, one-off tools for a specific task. For this category, assimilation is genuinely unnecessary. The code is meant to be discarded, not maintained.&lt;/p&gt;

&lt;p&gt;The AI-legacy model doesn't apply to them. And we honestly acknowledge that.&lt;/p&gt;

&lt;p&gt;But where does the boundary lie?&lt;/p&gt;

&lt;h3&gt;
  
  
  Three Thresholds
&lt;/h3&gt;

&lt;p&gt;The boundary isn't binary (small/large). It's defined by three thresholds, each of which imposes its own constraint on the "just regenerate" paradigm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The context threshold: does the project fit in one head?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Human working memory holds about four independent entities simultaneously (Cowan, 2001). AI has its own analogue: MindStudio and Chroma Research (2026) described &lt;strong&gt;context rot&lt;/strong&gt; — predictable degradation of output quality as the context window fills. The effective limit is around 130,000 tokens, after which generation becomes locally correct but globally incoherent. A small project fits entirely in the context window — the AI reasons about all of it. A large one doesn't, and the AI begins creating code that contradicts parts of the system already pushed out of context.&lt;/p&gt;

&lt;p&gt;When task complexity exceeds working memory capacity — both human and machine — understanding becomes impossible (Sweller, 1988). AI reduces routine load — it writes faster, removes mechanical work. But essential load — the connections within the domain — remains unchanged. Generation doesn't reduce the complexity of understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The specification threshold: can you recreate from a description?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In April 2026, METR and Epoch AI published MirrorCode results — a benchmark in which Claude Opus reassembled gotree, a bioinformatics CLI tool of ~16,000 lines of Go. The result is impressive — equivalent to 2-17 weeks of human work. But there's a critical nuance: the reassembly relied on hundreds of end-to-end tests as a machine-verifiable specification. In real projects, such a specification almost never exists.&lt;/p&gt;

&lt;p&gt;Margaret-Anne Storey, in "From Technical Debt to Cognitive and Intent Debt: Rethinking Software Health in the Age of AI" (University of Victoria, arXiv:2603.22106, 2026), called this &lt;strong&gt;intent debt&lt;/strong&gt; — the loss of externalized knowledge about intentions. Storey formalized three interacting types of debt: technical debt (lives in code — conscious trade-offs), cognitive debt (lives in people — erosion of shared team understanding), and intent debt (lives in artifacts — the absence of recorded rationale for decisions). Intent debt determines whether a system can be recreated: if intentions and rationale aren't documented, the specification exists only in people's heads. And people leave, forget, and Slack threads drown in archives.&lt;/p&gt;

&lt;p&gt;Ward Cunningham (1992) created the technical debt metaphor. Martin Fowler popularized it. Storey expanded the model with two categories Cunningham didn't foresee — because in 1992, all code was written by humans, and knowledge had passed through someone's head at least once. With AI generation, intent debt arises at the moment of code creation: there was no person making the decision — there's nothing to externalize.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The state threshold: does the project have a life beyond the code?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Andreas Kirsch (Google DeepMind, March 2026), in his essay "The Flawed Ephemeral Software Hypothesis," articulated the strongest argument against the naive "just regenerate" paradigm: "Generation cost was never the dominant term for mature software systems; discovery, validation, integration, and coordination were." Generation is a small part of the cost. The bulk is discovering correct behavior, validation, integration, coordination.&lt;/p&gt;

&lt;p&gt;And more precisely: "Continuous regeneration with minimal persisted code artifacts is unstable at scale, and systems that start there migrate toward persisted artifacts as they accumulate users, state, and integration complexity." A project that started small and regenerable eventually accumulates users, data, integrations — and regenerating it means losing all of that. You can regenerate code. You can't regenerate database migrations, user sessions, or external API contracts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The formula:&lt;/strong&gt; below ALL three thresholds — the "just regenerate" paradigm is rational, vibe coding works, AI-legacy doesn't matter. Above ANY threshold — assimilation is mandatory.&lt;/p&gt;

&lt;p&gt;In practice, the question is simple: does the system now contain state, users, integrations, or behavior that cannot be safely recreated from tests? If yes, regeneration is no longer a strategy. Assimilation becomes part of engineering hygiene.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connections, Not Lines of Code
&lt;/h3&gt;

&lt;p&gt;Where exactly does each threshold lie? The intuitive answer is "it depends on lines of code." But software engineering has long known that lines of code are a poor measure of complexity.&lt;/p&gt;

&lt;p&gt;As early as 1972, David Parnas showed that two modules with identical LOC can have radically different complexity — everything depends on what they hide and how they're connected. A 100K-line project with clean interfaces can be more comprehensible than a chaotic 10K with dense coupling. Fred Brooks in &lt;em&gt;The Mythical Man-Month&lt;/em&gt; (1975) formalized this: the number of potential dependencies between n components grows as n(n-1)/2 — with 10 modules that's 45 connections, with 50 it's 1,225. A large system isn't merely "bigger" than a small one — it has a fundamentally different structure of relationships. In &lt;em&gt;No Silver Bullet&lt;/em&gt; (1986), Brooks took the argument to its conclusion: the complexity of software is an essential property, not an accidental one. AI generation removes accidental complexity — syntax, boilerplate, tooling. But essential complexity — domain connections, edge cases, state transitions — doesn't compress.&lt;/p&gt;

&lt;p&gt;Empirical research confirms this: metrics of connections between modules — dependency graphs, information flow (fan-in/fan-out) — predict defects and effort significantly better than lines of code (Zimmermann &amp;amp; Nagappan, Henry &amp;amp; Kafura, McConnell).&lt;/p&gt;

&lt;p&gt;The practical conclusion: assimilation thresholds should be determined not by lines of code, but by connection density — dependencies, integrations, data flows between components.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Gradient, Not a Wall
&lt;/h3&gt;

&lt;p&gt;Thresholds aren't a wall a project crashes into at a single moment. They're a gradient that projects ascend — sometimes without the team noticing.&lt;/p&gt;

&lt;p&gt;BayTech Consulting (January 2026) gave this transition a name — &lt;strong&gt;Spaghetti Point&lt;/strong&gt;: "While Vibe Coding may appear faster in the first week of a project, the 'crossing point' typically occurs around month 3," when a vibe-coded project "hits a wall of complexity where adding new features breaks existing ones." Three months is a rough empirical estimate. A project that started small enough to regenerate gradually accumulates complexity until one day, adding a new feature begins breaking old ones.&lt;/p&gt;

&lt;p&gt;Lehman's Laws of Software Evolution (1974-1996) explain why: a system's complexity increases over time unless active effort is made to reduce it. This isn't a hypothesis — it's an empirical law, confirmed on Apache Tomcat, Apache Ant, and dozens of other projects. And AI generation accelerates this process: research by Zhu, Tsantalis, and Rigby (arXiv:2605.02741, May 2026) discovered the "Volume-Quality Inverse Law" — the volume of AI-generated code turned out to be an almost perfect predictor of structural degradation. The more code AI generates, the worse the architecture. AI doesn't merely fail to reduce essential complexity — it actively increases coupling.&lt;/p&gt;

&lt;p&gt;Kirsch strengthens the argument: even projects conceived as small and regenerable migrate above the thresholds over time — "systems that start there migrate toward persisted artifacts as they accumulate users, state, and integration complexity." A user uploaded their data. An external service connected via API. Permanent URLs appeared. Regeneration was no longer possible.&lt;/p&gt;

&lt;p&gt;Andrej Karpathy illustrated this with his own biography. Inventor of vibe coding (February 2025) → declared it obsolete and introduced "agentic engineering" (February 2026) → and ultimately hand-coded his serious project Nanochat, because AI agents "didn't work well enough at all and net unhelpful, possibly the repo is too far off the data distribution." The person who defined the "forget that the code even exists" paradigm, when working on a real project, returned to human understanding.&lt;/p&gt;

&lt;p&gt;And Addy Osmani (Google, March 2026) showed that comprehension debt accumulates even when the developer is alone. Osmani introduced the term &lt;strong&gt;comprehension debt&lt;/strong&gt; — "the growing gap between how much code exists in your system and how much of it any human being genuinely understands." The danger is that existing metrics don't notice this gap: "The reason comprehension debt is so dangerous is that nothing in your current measurement system captures it. Velocity metrics look immaculate. DORA metrics hold steady. PR counts are up. Code coverage is green." A project can look perfectly healthy across all dashboards — while nobody understands it.&lt;/p&gt;

&lt;p&gt;Research by Anthropic (arXiv:2601.20245, 52 engineers, randomized controlled trial) confirms this quantitatively: developers who used AI scored 17% lower on tests of understanding their own code (50% vs 67%), with the largest drop in debugging — precisely the area where understanding internal logic is critical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The scale boundary is not static.&lt;/strong&gt; Projects start below the thresholds and migrate above them. AI generation accelerates this migration. The question isn't "is my project small or large," but "when will it cross the threshold — and will I be ready?"&lt;/p&gt;

&lt;p&gt;These thresholds aren't a theoretical construct. The data shows what happens when teams operate above them.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Data Shows
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The illusion of understanding.&lt;/strong&gt; A randomized controlled trial by METR (July 2025) showed: experienced developers with AI tools spent 19% more time while subjectively estimating they were 20% faster. The gap between perception and reality — 39 percentage points. This is consistent with the well-known illusion of competence: the developer thinks they've assimilated the result, but objectively — they haven't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cost of review.&lt;/strong&gt; Sonar's State of AI in Code report (January 2026): 95% of developers spend significant effort reviewing AI code. 38% find reviewing AI code more labor-intensive than reviewing human code. Assimilating AI code is objectively harder because it has no "author" you can ask about intentions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quality.&lt;/strong&gt; According to industry analysis by CodeRabbit (470 pull requests), AI code may contain significantly more issues than human code. Unassimilated code carries more defects because the reviewer lacks the context in which the code was created — that context doesn't exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Systemic effect.&lt;/strong&gt; Google's DORA Report 2024 recorded: a 25% increase in AI usage correlates with a 7.2% decrease in delivery stability. This may indicate a systemic effect — when unassimilated code accumulates not in one developer's work, but across the entire team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical debt.&lt;/strong&gt; Research by HFS Research + Unqork (November 2025): 43% of Global 2000 organizations acknowledge that AI creates new technical debt. GitClear (2025) shows: with generation speed increasing 20-55%, the volume of "durable code" (not rewritten within weeks) grows by only ~10%. Most AI code gets rewritten — meaning it wasn't assimilated the first time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Commit as an Act of Responsibility
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;git commit&lt;/code&gt; is not a technical action. It's an act of taking responsibility for code.&lt;/p&gt;

&lt;p&gt;Responsibility presupposes understanding. You're responsible for code because you know what it does, why it's structured that way, and what consequences it has for the system.&lt;/p&gt;

&lt;p&gt;When a developer commits AI code they haven't assimilated, a gap emerges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Formally&lt;/strong&gt; — they're responsible. Their name is in &lt;code&gt;git blame&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitively&lt;/strong&gt; — they don't own this code. They can't explain why it's structured one way and not another.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Commit creates formal ownership. Assimilation creates cognitive ownership.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;When the two diverge — AI-legacy begins.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is &lt;strong&gt;responsibility in name only&lt;/strong&gt;. The system has changed, but the team's mental model hasn't.&lt;/p&gt;

&lt;p&gt;The gap between the system's state and the team's understanding — this is the definition of debt. But what kind exactly? Storey and Fowler draw the line: technical debt is a conscious trade-off in code; cognitive debt is an unconscious loss of understanding in people (Storey, 2026; Fowler, 2026). AI-legacy falls into the second category.&lt;/p&gt;

&lt;p&gt;Ordinary tech debt grows when a team consciously makes a trade-off — "we know this needs refactoring, but there's no time right now." Cognitive debt grows when the team doesn't realize a trade-off was even made. And unlike technical debt, it accumulates not at the speed of development, but at the speed of generation.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to Do About It
&lt;/h2&gt;

&lt;p&gt;The problem isn't AI tools. The problem is the absence of assimilation. Here's a practical framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The assimilation test.&lt;/strong&gt; Before merge, ask yourself one question: "Can I explain to a colleague why the code solves the problem this way, and not another?" If the answer is "no" — the code isn't assimilated. That doesn't mean it needs to be rewritten. It means it needs to be understood before it's accepted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Review as a mechanism for distributed assimilation.&lt;/strong&gt; When a reviewer asks questions and the author answers — assimilation distributes across the team. Knowledge stops being concentrated in one person. Bus factor decreases. But this only works if the questions are substantive, not perfunctory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bottleneck is not generation, but understanding.&lt;/strong&gt; The real constraint on productivity isn't the speed at which AI generates code, but the speed at which the team understands it. What needs optimizing is not prompts, but the review process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI code requires deeper review than human code.&lt;/strong&gt; When a colleague wrote code, you can ask them: "Why did you do it this way?" AI code has no author. The decision context doesn't exist. The only way to obtain that context is to reconstruct it yourself through review.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/artem-koltunov/ai-coding-tools-in-practice-what-a-25-40-productivity-gain-really-looks-like-2eo8"&gt;first article of this series&lt;/a&gt;, we showed that with this approach, our team achieved a sustainable 25-40% gain. Not because AI generated perfect code. But because the team assimilated every decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AI tools don't create legacy code by themselves. Legacy is created by the absence of assimilation — accepting code without understanding it.&lt;/p&gt;

&lt;p&gt;This is not an argument against AI. This is an argument for a conscious integration process. Every merge is a moment of choice: understand the code or take it on faith. The first path is slower. The second creates debt faster — debt that will have to be paid.&lt;/p&gt;

&lt;p&gt;From this follows a simple but important conclusion: the primary limit on productivity in AI-assisted development is no longer the speed of writing code, but the speed of assimilating it. Cognitive debt is the price a team pays for every skipped step in this process. Code generation scales nearly linearly — each new model makes it faster. Assimilation scales much more slowly, because it requires human understanding. Therefore, the central engineering challenge of the coming years is not learning to generate more code, but learning to understand it faster and more reliably.&lt;/p&gt;

&lt;p&gt;This challenge has two dimensions. The first is cognitive: how a developer claims ownership of key decisions in AI code without reading every line, through directed learning and active engagement with the code. The second is engineering: how a team transforms understanding into verifiable artifacts — specifications, state machines, architectural tests, metrics — so that AI operates within formalized engineering constraints rather than as a free-form author. Both paths — in the next articles.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is the second article in the series. First: &lt;a href="https://dev.to/artem-koltunov/ai-coding-tools-in-practice-what-a-25-40-productivity-gain-really-looks-like-2eo8"&gt;"AI Coding Tools in Practice: What a 25-40% Productivity Gain Really Looks Like"&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Source Overview
&lt;/h2&gt;

&lt;p&gt;This article draws on 31 sources from five domains. Below is a grouping by role in the argument; full references follow in the next section.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cognitive Foundations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Perls, Hefferline &amp;amp; Goodman (1951)&lt;/strong&gt; — the concept of assimilation and introjection in Gestalt psychology. The basis for the analogy: accepting code without processing = introjection. &lt;strong&gt;Craik &amp;amp; Lockhart (1972)&lt;/strong&gt; — levels-of-processing theory: durable understanding requires active processing, not passive perception. &lt;strong&gt;Cowan (2001)&lt;/strong&gt; — revised "magic number": real working memory capacity is about four chunks, which limits the number of components a developer can simultaneously hold during review. &lt;strong&gt;Sweller (1988)&lt;/strong&gt; — cognitive load theory: AI reduces mechanical load (extraneous), but the essential domain load (intrinsic) remains unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Classical Software Engineering Complexity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Brooks (1975, 1986)&lt;/strong&gt; — quadratic growth of dependencies between components; the distinction between essential and accidental complexity. AI reduces accidental — tooling, syntax. Essential — domain connections, edge cases — doesn't compress. &lt;strong&gt;Parnas (1972)&lt;/strong&gt; — information hiding: complexity is determined not by LOC, but by what modules hide and how they're connected. &lt;strong&gt;Zimmermann &amp;amp; Nagappan (ICSE 2008)&lt;/strong&gt; — empirical confirmation on the Windows Server 2003 codebase: dependency graph metrics predict defects 10 percentage points better than code complexity metrics; network measures identified 60% of critical binaries (twice as many as complexity metrics). &lt;strong&gt;Henry &amp;amp; Kafura (IEEE TSE, 1981)&lt;/strong&gt; — information flow between modules (FAN-IN x FAN-OUT) highly correlates with effort; LOC showed weak correlation. &lt;strong&gt;McConnell (2004, Code Complete, Ch. 27)&lt;/strong&gt; — practical benchmark: below 2,000 LOC individual skill determines everything; above — exponential effort growth (10K LOC = 13.5 person-months, 100K = 170 person-months instead of the linear 135). &lt;strong&gt;Lehman (1974-1996)&lt;/strong&gt; — laws of software evolution: a system's complexity increases over time unless active effort is made to reduce it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Debt of the AI Era
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Storey (arXiv:2603.22106, 2026)&lt;/strong&gt; — Triple Debt Model: technical debt (in code), cognitive debt (in people), intent debt (in artifacts). The key expansion of Cunningham's model for the era of AI generation. &lt;strong&gt;Fowler (Fragments, 2026)&lt;/strong&gt; — development of the cognitive debt concept: do we need a discipline analogous to refactoring, but for team understanding? &lt;strong&gt;Osmani (March 2026)&lt;/strong&gt; — comprehension debt: the gap between the volume of code and what a human actually understands. The danger is that existing metrics (velocity, DORA, coverage) don't notice it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Empirical Evidence on AI-Assisted Development
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;METR (arXiv:2507.09089, 2025)&lt;/strong&gt; — RCT: experienced developers 19% slower with AI, while subjectively estimating +20% speedup. Perception gap — 39 pp. &lt;strong&gt;Sonar (2026)&lt;/strong&gt; — 95% of developers spend significant effort reviewing AI code; 38% find it harder than human code. &lt;strong&gt;Google DORA (2024)&lt;/strong&gt; — 25% increase in AI usage correlates with 7.2% decrease in delivery stability. &lt;strong&gt;Anthropic (arXiv:2601.20245, 2026)&lt;/strong&gt; — RCT, 52 engineers: AI users scored 17% lower on tests of understanding their own code. &lt;strong&gt;GitClear (2025)&lt;/strong&gt; — with generation speed increasing 20-55%, the volume of "durable code" grows by only ~10%. &lt;strong&gt;HFS Research + Unqork (2025)&lt;/strong&gt; — 43% of Global 2000 acknowledge AI creates new tech debt. &lt;strong&gt;CodeRabbit&lt;/strong&gt; — analysis of 470 PRs: AI code contains significantly more issues. &lt;strong&gt;Zhu, Tsantalis &amp;amp; Rigby (arXiv:2605.02741, 2026)&lt;/strong&gt; — Volume-Quality Inverse Law: AI code volume is an almost perfect predictor of structural degradation.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Regeneration Paradigm and Its Limits
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Karpathy (2025-2026)&lt;/strong&gt; — introduced vibe coding (February 2025), declared it obsolete and proposed agentic engineering (February 2026), hand-coded Nanochat. His biography illustrates the paradigm's boundary. &lt;strong&gt;a16z / Acharya (2025)&lt;/strong&gt; — disposable software as a new class of software for which assimilation is unnecessary. &lt;strong&gt;Kirsch (Google DeepMind, 2026)&lt;/strong&gt; — "generation cost was never the dominant term" for mature systems; projects that start as disposable migrate toward persisted artifacts. &lt;strong&gt;METR / Epoch AI (MirrorCode, 2026)&lt;/strong&gt; — AI reassembled a 16K LOC Go project, but relied on hundreds of end-to-end tests as a specification; in real projects such specifications almost never exist. &lt;strong&gt;BayTech Consulting (2026)&lt;/strong&gt; — Spaghetti Point: ~3 months until a vibe-coded project hits the complexity wall. &lt;strong&gt;MindStudio / Chroma Research (2026)&lt;/strong&gt; — context rot: predictable degradation of AI output after ~130K tokens.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Perls, F., Hefferline, R., &amp;amp; Goodman, P. (1951). &lt;em&gt;Gestalt Therapy: Excitement and Growth in the Human Personality&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Craik, F. I. M., &amp;amp; Lockhart, R. S. (1972). Levels of processing: A framework for memory research. &lt;em&gt;Journal of Verbal Learning and Verbal Behavior&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Parnas, D. L. (1972). On the Criteria to Be Used in Decomposing Systems into Modules. &lt;em&gt;Communications of the ACM&lt;/em&gt; — &lt;a href="https://dl.acm.org/doi/10.1145/361598.361623" rel="noopener noreferrer"&gt;https://dl.acm.org/doi/10.1145/361598.361623&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Brooks, F. P. (1975). &lt;em&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Brooks, F. P. (1986). No Silver Bullet — Essence and Accident in Software Engineering — &lt;a href="https://worrydream.com/refs/Brooks_1986_-_No_Silver_Bullet.pdf" rel="noopener noreferrer"&gt;https://worrydream.com/refs/Brooks_1986_-_No_Silver_Bullet.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Henry, S. &amp;amp; Kafura, D. (1981). Software Structure Metrics Based on Information Flow. &lt;em&gt;IEEE TSE&lt;/em&gt;, SE-7(5) — &lt;a href="https://ieeexplore.ieee.org/document/1702877/" rel="noopener noreferrer"&gt;https://ieeexplore.ieee.org/document/1702877/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sweller, J. (1988). Cognitive Load During Problem Solving: Effects on Learning. &lt;em&gt;Cognitive Science&lt;/em&gt;, 12(2)&lt;/li&gt;
&lt;li&gt;Cunningham, W. (1992). The WyCash Portfolio Management System — &lt;a href="http://c2.com/doc/oopsla92.html" rel="noopener noreferrer"&gt;http://c2.com/doc/oopsla92.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Lehman, M. M. (1996). Laws of Software Evolution Revisited — &lt;a href="https://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cowan, N. (2001). The magical number 4 in short-term memory. &lt;em&gt;Behavioral and Brain Sciences&lt;/em&gt; — &lt;a href="https://www.cambridge.org/core/journals/behavioral-and-brain-sciences/article/magical-number-4-in-shortterm-memory-a-reconsideration-of-mental-storage-capacity/44023F1147D4A1D44BDC0AD226838496" rel="noopener noreferrer"&gt;https://www.cambridge.org/core/journals/behavioral-and-brain-sciences/article/magical-number-4-in-shortterm-memory-a-reconsideration-of-mental-storage-capacity/44023F1147D4A1D44BDC0AD226838496&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;McConnell, S. (2004). &lt;em&gt;Code Complete&lt;/em&gt;, 2nd ed., Chapter 27: How Program Size Affects Construction — &lt;a href="https://www.oreilly.com/library/view/code-complete-2nd/0735619670/ch27s04.html" rel="noopener noreferrer"&gt;https://www.oreilly.com/library/view/code-complete-2nd/0735619670/ch27s04.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Boehm, B. W. (1981). &lt;em&gt;Software Engineering Economics&lt;/em&gt; (COCOMO model) — &lt;a href="https://en.wikipedia.org/wiki/COCOMO" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/COCOMO&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Zimmermann, T. &amp;amp; Nagappan, N. (2008). Predicting Defects using Network Analysis on Dependency Graphs. &lt;em&gt;ICSE 2008&lt;/em&gt; — &lt;a href="https://thomas-zimmermann.com/publications/files/zimmermann-icse-2008.pdf" rel="noopener noreferrer"&gt;https://thomas-zimmermann.com/publications/files/zimmermann-icse-2008.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Karpathy, A. (2025). Vibe Coding. X/Twitter — &lt;a href="https://x.com/karpathy/status/1886192184808149383" rel="noopener noreferrer"&gt;https://x.com/karpathy/status/1886192184808149383&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Karpathy, A. (2025-2026). Nanochat: inventor of vibe coding hand-codes his project. &lt;em&gt;Futurism&lt;/em&gt; — &lt;a href="https://futurism.com/artificial-intelligence/inventor-vibe-coding-doesnt-work" rel="noopener noreferrer"&gt;https://futurism.com/artificial-intelligence/inventor-vibe-coding-doesnt-work&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Acharya, A. / a16z (2025). Disposable Software — &lt;a href="https://a16z.com/disposable-software/" rel="noopener noreferrer"&gt;https://a16z.com/disposable-software/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;METR (2025). Measuring the Impact of Early 2025 AI on Experienced Open-Source Developers — &lt;a href="https://arxiv.org/abs/2507.09089" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2507.09089&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sonar (2026). State of AI in Code Report — &lt;a href="https://www.sonarsource.com/resources/developer-survey-report/" rel="noopener noreferrer"&gt;https://www.sonarsource.com/resources/developer-survey-report/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CodeRabbit. AI Code Quality Analysis (470 PRs)&lt;/li&gt;
&lt;li&gt;Google DORA Report 2024 — &lt;a href="https://dora.dev/research/2024/dora-report/" rel="noopener noreferrer"&gt;https://dora.dev/research/2024/dora-report/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;HFS Research + Unqork (2025). AI and Technical Debt — &lt;a href="https://www.hfsresearch.com/press-release/ai-wont-save-enterprises-from-tech-debt-unless-they-change-the-architecture-first/" rel="noopener noreferrer"&gt;https://www.hfsresearch.com/press-release/ai-wont-save-enterprises-from-tech-debt-unless-they-change-the-architecture-first/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitClear (2025). AI Assistant Code Quality Research (211M lines) — &lt;a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research" rel="noopener noreferrer"&gt;https://www.gitclear.com/ai_assistant_code_quality_2025_research&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Storey, M.-A. D. (2026). From Technical Debt to Cognitive and Intent Debt: Rethinking Software Health in the Age of AI. arXiv:2603.22106 — &lt;a href="https://arxiv.org/abs/2603.22106" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2603.22106&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Fowler, M. (2026). Fragments on Cognitive Debt. martinfowler.com — &lt;a href="https://martinfowler.com/fragments/2026-02-13.html" rel="noopener noreferrer"&gt;https://martinfowler.com/fragments/2026-02-13.html&lt;/a&gt;, &lt;a href="https://martinfowler.com/fragments/2026-04-02.html" rel="noopener noreferrer"&gt;https://martinfowler.com/fragments/2026-04-02.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kirsch, A. (2026). The Flawed Ephemeral Software Hypothesis. Google DeepMind — &lt;a href="https://www.blackhc.net/essays/future_of_software/" rel="noopener noreferrer"&gt;https://www.blackhc.net/essays/future_of_software/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Osmani, A. (2026). Comprehension Debt: The Hidden Cost of AI-Generated Code — &lt;a href="https://addyosmani.com/blog/comprehension-debt/" rel="noopener noreferrer"&gt;https://addyosmani.com/blog/comprehension-debt/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Anthropic (2026). How AI Impacts Skill Formation. arXiv:2601.20245 — &lt;a href="https://arxiv.org/abs/2601.20245" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2601.20245&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MindStudio / Chroma Research (2026). Context Rot — &lt;a href="https://www.mindstudio.ai/blog/context-rot-ai-coding-agents-explained" rel="noopener noreferrer"&gt;https://www.mindstudio.ai/blog/context-rot-ai-coding-agents-explained&lt;/a&gt; | &lt;a href="https://research.trychroma.com/context-rot" rel="noopener noreferrer"&gt;https://research.trychroma.com/context-rot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;METR / Epoch AI (2026). MirrorCode Preliminary Results — &lt;a href="https://metr.org/blog/2026-04-10-mirrorcode-preliminary-results/" rel="noopener noreferrer"&gt;https://metr.org/blog/2026-04-10-mirrorcode-preliminary-results/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;BayTech Consulting (2026). AI Technical Debt: How Vibe Coding Increases TCO — &lt;a href="https://www.baytechconsulting.com/blog/ai-technical-debt-how-vibe-coding-increases-tco-and-how-to-fix-it" rel="noopener noreferrer"&gt;https://www.baytechconsulting.com/blog/ai-technical-debt-how-vibe-coding-increases-tco-and-how-to-fix-it&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Zhu, Y., Tsantalis, N., &amp;amp; Rigby, P. C. (2026). AI-Generated Smells. arXiv:2605.02741 — &lt;a href="https://arxiv.org/abs/2605.02741v1" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2605.02741v1&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>AI Coding Tools in Practice: What a 25-40% Productivity Gain Really Looks Like</title>
      <dc:creator>Artem Koltunov</dc:creator>
      <pubDate>Sat, 25 Apr 2026 17:29:40 +0000</pubDate>
      <link>https://dev.to/artem-koltunov/ai-coding-tools-in-practice-what-a-25-40-productivity-gain-really-looks-like-2eo8</link>
      <guid>https://dev.to/artem-koltunov/ai-coding-tools-in-practice-what-a-25-40-productivity-gain-really-looks-like-2eo8</guid>
      <description>&lt;p&gt;&lt;em&gt;Our JavaScript team tested AI-assisted development on production code. Here's what we measured, what surprised us, and why we think the real gain is 25-40% -- not the 10x you keep hearing about.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Over the past year, AI coding tools have been surrounded by bold claims: "Develop twice as fast." "10x developer productivity." "Code that practically writes itself."&lt;/p&gt;

&lt;p&gt;We decided to test these claims on real work -- not demo projects, but production code. The kind of long-lived repositories that power SDKs and developer platforms, systems that must be maintained, reviewed, and understood years after the code is written.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Tested
&lt;/h2&gt;

&lt;p&gt;Our JavaScript team works with AI models like GPT Codex, GPT-5.2, Opus 4.5, and Gemini 3.5 through IDE plugins -- specifically GitHub Copilot Chat in WebStorm and IntelliJ IDEA.&lt;/p&gt;

&lt;p&gt;Recently, we also got access to &lt;a href="https://cursor.com" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;, an IDE with deeply integrated AI that can operate across an entire project. Unlike traditional AI plugins where you manually select files and copy code into prompts, Cursor sees the whole codebase, creates files in the right locations, and applies changes directly.&lt;/p&gt;

&lt;p&gt;The biggest immediate impact wasn't smarter code generation -- it was the disappearance of small mechanical tasks. Less time copying code, managing context, and stitching pieces together. That alone produced an early productivity improvement of roughly &lt;strong&gt;20%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To see where this advantage held up -- and where it didn't -- we ran three experiments on active codebases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Experiments
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Important note:&lt;/strong&gt; The first two experiments used GitHub Copilot Chat inside WebStorm, our usual IDE. The third introduced Cursor, which gave us a chance to compare a traditional AI plugin approach with a full-project AI environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Experiment 1: Extending a Production SDK
&lt;/h3&gt;

&lt;p&gt;We added new AI-related functionality to an existing JavaScript SDK: AI Summarize (generating summaries from ~1000 chat messages) and AI Gateway (recognizing text in images and generating descriptions). The task included API integration, SDK adaptation, tests, and usage examples.&lt;/p&gt;

&lt;p&gt;For this task we used GitHub Copilot Chat inside WebStorm. The AI could generate useful code, but we still had to gather context manually -- selecting files, pasting snippets, and explaining how modules interact -- before integrating whatever came back.&lt;/p&gt;

&lt;p&gt;Even with that overhead, AI assistance made a noticeable difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; ~18 hours with AI vs. 24+ hours without. A gain of &lt;strong&gt;30-35%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What sped things up wasn't deep architectural insight. It was the smaller tasks: generating scaffolding, following existing patterns, and wiring pieces together faster than a human would type them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Experiment 2: Untangling Long-Lived Branches
&lt;/h3&gt;

&lt;p&gt;Several parallel branches had been evolving separately since &lt;strong&gt;2021&lt;/strong&gt;. They contained overlapping logic, slightly different implementations, and subtle behavioral differences.&lt;/p&gt;

&lt;p&gt;Normally, merging something like this is slow and mentally draining. It requires reading a lot of unfamiliar code and carefully comparing approaches.&lt;/p&gt;

&lt;p&gt;Using Copilot Chat, we could feed sections of each branch to the model, ask it to highlight overlaps and divergences, and get explanations of unfamiliar code. That made it much easier to focus on the important part of the job -- deciding which implementation actually made sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; ~1.5 days with AI vs. ~1 week without. Acceleration was &lt;strong&gt;several times&lt;/strong&gt; for tasks involving analysis and comparison of large codebases.&lt;/p&gt;

&lt;p&gt;The biggest advantage here wasn't generating code at all. It was simply making large amounts of existing code easier to understand.&lt;/p&gt;

&lt;h3&gt;
  
  
  Experiment 3: Integrating an SDK Into a Product (with Cursor)
&lt;/h3&gt;

&lt;p&gt;This experiment used Cursor. Two developers worked in parallel using different AI models (GPT-5.2 Codex and Opus 4.5). We created a complete Redux environment, connected Figma, generated layouts, and integrated business logic.&lt;/p&gt;

&lt;p&gt;At first, the results looked impressive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; ~20 hours with Cursor vs. ~40 hours without. Getting to working code &lt;strong&gt;2x faster&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But this experiment also exposed a limitation that didn't show up in the earlier tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Problem With AI-Generated Code
&lt;/h2&gt;

&lt;p&gt;The AI-generated code from Experiment 3 compiled, the interface behaved correctly, and the basic tests passed. If we had stopped there, we would have considered the integration complete.&lt;/p&gt;

&lt;p&gt;But during code review, one of the developers noticed something odd.&lt;/p&gt;

&lt;p&gt;An image identifier already existed inside one of the objects being passed through the system. Logically, the code should have simply reused that ID. Instead, the generated implementation took a much longer route: it fetched the ID, downloaded the associated blob, created a new file from it, uploaded that file back to the server, and then returned a new identifier.&lt;/p&gt;

&lt;p&gt;From the outside, nothing was broken. Internally, the process was doing far more work than necessary. Each time the logic ran, it duplicated data, added network calls, and quietly increased resource usage.&lt;/p&gt;

&lt;p&gt;We discovered this only because we opened the code and read it carefully.&lt;/p&gt;

&lt;p&gt;This turned out to be a pattern we started noticing more often with AI-generated code. The output usually &lt;em&gt;works&lt;/em&gt;, but the logic behind it doesn't always match the architecture of the system it's being added to. In shared components like SDKs, such inefficiencies can spread quietly through every product that depends on them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Industry Research Shows
&lt;/h2&gt;

&lt;p&gt;While we were running these experiments, we studied key industry research. Our experience aligned closely with what independent analysts are measuring.&lt;/p&gt;

&lt;h3&gt;
  
  
  Productivity and Code Quality
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research" rel="noopener noreferrer"&gt;GitClear's 2025 analysis&lt;/a&gt; found that AI tools can increase development speed by 20-55%, but the amount of "sustainable code" -- code that stays in the codebase without being rewritten -- grows by only about 10%. Developers produce code faster, but a noticeable portion still ends up being revised or refactored later. &lt;a href="https://gitclear-public.s3.us-west-2.amazonaws.com/GitClear-AI-Copilot-Code-Quality-2025.pdf" rel="noopener noreferrer"&gt;Full PDF report&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;randomized controlled study by METR (July 2025)&lt;/a&gt; produced a striking result: experienced developers working on their own mature projects actually spent &lt;strong&gt;19% more time&lt;/strong&gt; with AI tools, while &lt;strong&gt;subjectively estimating&lt;/strong&gt; a 20% speedup. The key takeaway: perceived speed and actual speed are different things. Full data on &lt;a href="https://arxiv.org/abs/2507.09089" rel="noopener noreferrer"&gt;arXiv&lt;/a&gt; and &lt;a href="https://github.com/METR/Measuring-Early-2025-AI-on-Exp-OSS-Devs" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Cost of Reviewing AI Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.sonarsource.com/blog/state-of-code-developer-survey-report-the-current-reality-of-ai-coding/" rel="noopener noreferrer"&gt;Sonar's State of AI in Code report (January 2026)&lt;/a&gt; found that &lt;strong&gt;95% of developers&lt;/strong&gt; spend significant effort checking AI-generated code, and &lt;strong&gt;38% consider it harder&lt;/strong&gt; to review than human-written code. Developers read and verify code far more slowly than AI generates it, which creates a natural ceiling on productivity gains. &lt;a href="https://www.sonarsource.com/state-of-code-developer-survey-report.pdf" rel="noopener noreferrer"&gt;Full PDF&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architectural Limitations of AI-Generated Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.ox.security/resource-category/whitepapers-and-reports/army-of-juniors/" rel="noopener noreferrer"&gt;Ox Security's "Army of Juniors" report (October 2025)&lt;/a&gt; describes AI-generated code as "highly functional but systematically lacking architectural thinking." This explains why the code works but accumulates hidden problems. &lt;a href="https://www.ox.security/wp-content/uploads/2025/10/Army-of-Juniors-The-AI-Code-Security-Crisis.pdf" rel="noopener noreferrer"&gt;Report PDF&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical Debt
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.hfsresearch.com/press-release/ai-wont-save-enterprises-from-tech-debt-unless-they-change-the-architecture-first/" rel="noopener noreferrer"&gt;HFS Research + Unqork (November 2025)&lt;/a&gt; surveyed 123 respondents from Global 2000 organizations: while 84% expect AI to reduce costs, &lt;strong&gt;43% admit that AI creates new technical debt&lt;/strong&gt;. Opinions on long-term impact are split almost evenly -- 55% expect debt reduction, 45% expect increase.&lt;/p&gt;

&lt;p&gt;Forrester predicts that by 2026, 75% of tech leaders will face moderate or serious technical debt, with AI code generation without engineering discipline being a key factor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Impact on Delivery Stability
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://dora.dev/research/2024/dora-report/" rel="noopener noreferrer"&gt;Google DORA Report 2024&lt;/a&gt; found a critical correlation: a &lt;strong&gt;25% increase in AI usage leads to a 7.2% decrease in delivery stability&lt;/strong&gt;. There's a 2.1% productivity gain and 2.6% job satisfaction increase -- but at the cost of 1.5% throughput decrease and 7.2% stability decrease. &lt;a href="https://services.google.com/fh/files/misc/2024_final_dora_report.pdf" rel="noopener noreferrer"&gt;Full PDF&lt;/a&gt;. The &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;2025 DORA Report&lt;/a&gt; confirms these findings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Real Gain Is 25-40%
&lt;/h2&gt;

&lt;p&gt;Looking across both our experiments and the broader research, the same pattern keeps appearing.&lt;/p&gt;

&lt;p&gt;AI tools clearly speed up certain parts of development: reducing boilerplate, navigating large codebases, scaffolding new functionality, and accelerating the path to a working implementation.&lt;/p&gt;

&lt;p&gt;But those gains come with a counterweight. The code still needs to be understood, reviewed, and integrated into an existing system. Developers reason about code far more slowly than AI can generate it.&lt;/p&gt;

&lt;p&gt;Without proper review, teams accumulate what we call "AI legacy code" -- code that works but nobody on the team truly understands. Over time, it becomes easier to regenerate than to modify. But regeneration means spending time and resources on problems that were already solved. In high-debt environments, losses reach 30-40% of the change budget and 10-20% of system operation costs.&lt;/p&gt;

&lt;p&gt;This situation can develop within months after active AI code adoption without full developer involvement.&lt;/p&gt;

&lt;p&gt;That's why the dramatic claims about "10x productivity" rarely hold up in real engineering environments. In practice, the gains stabilize in the &lt;strong&gt;25-40% range&lt;/strong&gt; -- meaningful enough to matter, but not so large that engineering judgment becomes unnecessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AI coding tools are most useful when treated as assistants rather than replacements for engineering judgment.&lt;/p&gt;

&lt;p&gt;They excel at analyzing and comparing large volumes of code -- tasks that take humans significant time, AI handles very quickly. They reduce friction in everyday development and can meaningfully accelerate time-to-working-code.&lt;/p&gt;

&lt;p&gt;At the same time, tasks requiring deep understanding of business logic and architectural optimization are often solved by AI in suboptimal ways. The resulting code works but is redundant. The system functions correctly on the surface, but hidden problems related to performance, resource usage, and maintainability can form inside.&lt;/p&gt;

&lt;p&gt;Architectural decisions, quality control, and responsibility for results must stay with the team. With this discipline in place, AI tools deliver a real, measurable, and sustainable productivity boost.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Productivity and Code Quality
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research" rel="noopener noreferrer"&gt;GitClear: AI Assistant Code Quality 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gitclear.com/research/ai_tool_impact_on_developer_productive_output_from_2022_to_2025" rel="noopener noreferrer"&gt;GitClear: AI Tool Impact on Developer Output 2022-2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2507.09089" rel="noopener noreferrer"&gt;METR: Measuring AI Impact on Experienced Developers (arXiv)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/METR/Measuring-Early-2025-AI-on-Exp-OSS-Devs" rel="noopener noreferrer"&gt;METR: Study Data and Code (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI Code Review and Security
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sonarsource.com/resources/developer-survey-report/" rel="noopener noreferrer"&gt;Sonar: State of AI in Code Report 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ox.security/resource-category/whitepapers-and-reports/army-of-juniors/" rel="noopener noreferrer"&gt;Ox Security: Army of Juniors Report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technical Debt
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.hfsresearch.com/press-release/ai-wont-save-enterprises-from-tech-debt-unless-they-change-the-architecture-first/" rel="noopener noreferrer"&gt;HFS Research: AI and Tech Debt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ciodive.com/news/enterprises-split-ai-affect-tech-debt/806208/" rel="noopener noreferrer"&gt;CIO Dive: How AI Affects Tech Debt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  DevOps Metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dora.dev/research/2024/dora-report/" rel="noopener noreferrer"&gt;Google DORA Report 2024&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;Google DORA Report 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gitclear.com/research/google_dora_2024_summary_ai_impact" rel="noopener noreferrer"&gt;GitClear: DORA 2024 Summary -- AI Impact&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Independent Reviews
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jul/12/ai-open-source-productivity/" rel="noopener noreferrer"&gt;Simon Willison: AI Open Source Productivity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.infoq.com/news/2025/11/ai-code-technical-debt/" rel="noopener noreferrer"&gt;InfoQ: AI Code Technical Debt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theregister.com/2026/01/09/devs_ai_code/" rel="noopener noreferrer"&gt;The Register: Devs and AI Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
