The story your team tells about AI adoption probably goes like this: developers write code faster, more features ship, outcomes improve. The data tells a different story.

Research from faros.ai and independent engineering productivity analysis shows that teams using AI coding tools produce 98% more pull requests than they did before. Those same teams experience review times 91% longer. They generate code churn rates — code written and then immediately rewritten or deleted — of 5.7%, up from 3.1% before AI adoption. And DORA’s 2025-2026 data finds that for every 25% increase in AI tool adoption across a team, software delivery throughput drops by 1.5% and team stability drops by 7.2%.

More code. Slower delivery. Less stable systems. This is the AI productivity paradox, and it’s reshaping how smart engineering leaders think about measuring success.

Why the Paradox Exists

Amdahl’s Law, applied to software delivery: the speedup you get from accelerating one part of a process is limited by the fraction of time that process takes overall. If code writing is 20% of your delivery cycle and everything else (review, testing, integration, validation, deployment) is 80%, making writing infinitely fast gives you at best a 25% total speedup. If that same acceleration causes the 80% to slow down, you go backward.

AI coding tools have made code writing faster — dramatically so. What they haven’t addressed is the downstream work: understanding what the AI-generated code actually does, validating that it’s correct, reviewing it for security implications, integrating it without introducing regressions, and maintaining it six months later.

The result is a delivery system where the input is flooding and the pipeline is backed up. More PRs means more things competing for limited reviewer attention. Faster generation means reviewers encounter unfamiliar code patterns more frequently — AI tends to generate working but idiomatic-to-the-training-data code that doesn’t match the existing codebase style. Reviewing something you didn’t write and don’t immediately recognize takes significantly longer than reviewing something that matches your mental model.

What the Numbers Actually Show

The productivity paradox data breaks down into four patterns:

Senior engineers are slowing down, not speeding up. Analysis from multiple engineering intelligence platforms shows experienced developers experiencing 19% more time per PR review when reviewing AI-generated code than when reviewing human-written code. The hypothesis: AI-generated code is locally correct but globally incoherent — it solves the immediate problem without respecting broader architectural constraints that senior engineers need to verify manually. Each review becomes an investigation rather than a judgment.

Junior engineers are getting a real boost — but it accumulates differently. Early-career developers using AI see genuine 10-30% productivity improvements. But those improvements are concentrated in individual task completion, not team delivery. Junior developers ship more individual PRs that then sit in the queue longer, competing with each other and with senior-authored work. The queue grows faster than the review capacity does.

Main branch success rates are the canary. The metric that captures systemic delivery health isn’t PR count or lines of code — it’s main branch success rate: what percentage of commits to the main branch result in a clean build. The benchmark for healthy teams is around 90%. Teams with high AI tool adoption are averaging 70.8%. A 19-point gap in main branch stability means the cost of integration is being paid continuously, in real time, as engineers unblock each other from failed builds.

Code churn is the hidden cost multiplier. AI coding tools generate code quickly, but they also generate wrong code quickly. The 5.7% churn rate (versus 3.1% pre-AI) means roughly 1 in 18 lines of AI-assisted code is written and then deleted before it reaches production — after it’s already been reviewed, merged, and often deployed. The cost of that code isn’t just the time to write it; it’s also the time to review it, the cognitive load of other engineers reading it, and the instability it introduced while it was in the codebase.

What Actually Matters: Delivery Throughput, Not Velocity

The core mistake in most AI productivity measurement frameworks is conflating velocity (how fast you produce things) with throughput (how fast working value reaches users). These are related but distinct, and the paradox emerges from optimizing one at the expense of the other.

Deployment frequency — how often you deploy to production — is the right top-level metric. Not PR count. Not commit frequency. Not lines of code. If your deployment frequency is up, AI adoption is genuinely helping delivery. If it’s flat or down despite increased code output, you’re in the paradox.

Lead time for changes — the time from the start of work on a feature to its deployment — is the right second metric. If this is increasing despite more code output, the pipeline is the problem.

Change failure rate — what fraction of deployments cause incidents — captures the quality dimension that code volume metrics miss entirely. AI-generated code that passes review and then fails in production is a negative productivity contribution regardless of how fast it was written.

Time to restore rounds out the picture: when failures happen, how long does it take to fix them? AI-generated code that’s hard to understand and harder to debug extends restoration time, which compounds the change failure cost.

These four metrics — deployment frequency, lead time, change failure rate, time to restore — are the DORA metrics, and they measure delivery, not activity. The paradox is invisible if you only look at activity.

Where Tech Leads Are Focusing Incorrectly

Most engineering leaders responding to the productivity paradox are focused on the wrong layer. The common interventions:

“We need better AI tools” — the tools are fine. The bottleneck is downstream of the tools. Better AI code generation makes the input problem worse, not better.

“We need more reviewers” — adding reviewers is expensive and doesn’t address the root cause. If the review queue is 91% longer, adding one reviewer reduces it to perhaps 75% longer. The code volume grows faster than review capacity scales.

“We need AI-assisted code review” — this is promising but tricky. Using AI to review AI-generated code creates a feedback loop where the same systematic failure modes (subtle architecture violations, security patterns that are locally valid but globally dangerous) can be missed by both generator and reviewer.

The interventions that are working:

PR size discipline. Enforce a PR size limit — 400 lines changed is a common threshold. AI tools make it trivially easy to generate 2000-line PRs. Those PRs are expensive to review (4-6× longer per line reviewed due to attention limits), more likely to contain integration conflicts, and harder to revert when they cause issues. A strict PR size limit forces decomposition that actually helps review throughput.

Review assignment targeting. When senior engineers review AI-generated PRs, their review time is highest and their review value is also highest — they’re the ones most likely to catch subtle architecture violations. Route AI-generated PRs to senior reviewers as a priority, not to whoever is available. The cost of a missed architecture violation is higher than the cost of a senior engineer’s time.

Main branch success rate as a team OKR. Make 90% main branch success rate a team-level goal. When it drops below threshold, stop the line — no new PRs merge until the root cause is identified and fixed. This creates feedback pressure on the quality of AI-assisted code without requiring a new toolchain.

Reducing churn by validating AI output earlier. Most churn happens because AI-generated code isn’t tested against real integration points before review. Adding a mandatory “run against staging environment” step before PR creation catches the class of failures that generate churn — mismatched API contracts, missing environment configuration, behavioral differences between local and production dependencies.

The Right Frame for AI-Assisted Delivery

The teams getting genuine delivery improvements from AI tools share a common framing: AI is a junior developer with unlimited availability and no understanding of your specific production environment. You wouldn’t let a junior developer merge directly to main. You wouldn’t skip reviewing their code because it “looks right.” You would design a workflow where their output reliably enters a quality gate that validates it against your specific constraints.

The productivity gains from AI coding tools are real — but they accrue differently than the marketing suggests. The gain is primarily in exploration and initial scaffolding, not in end-to-end feature delivery. An engineer who uses AI to generate 3 different approach sketches in the time it used to take to write one, then applies their judgment to pick and refine the best one, gets a genuine productivity benefit. An engineer who generates code, accepts it with minimal review, and sends it into the pipeline is generating churn.

The metric that doesn’t lie: deployment frequency trend over the last 90 days. If it’s up, your AI adoption is working. If it’s flat, you’re substituting velocity for throughput. If it’s down, you’re in the paradox and the queue is your bottleneck.


Thuận Lương is a Tech Lead with 15+ years of experience in .NET, cloud architecture, and AI systems. He writes about lessons from building real production systems.

Export for reading

Comments