Skip to main content
RJL.pub logo

RJL.pub - AI-Native Development Journey

Chapter 26: The AI Bottleneck Shift

You Accelerated Coding. Now Everything Else Is the Constraint.

Teams adopting AI are living a textbook example of the Theory of Constraints. By applying AI to the coding phase, you dramatically widened the pipe in the middle of your value stream. Developers now write, refactor, and scaffold code faster than ever - so the constraint has moved to the stages immediately before and after coding. Most teams stop at accelerating code generation and then wonder why delivery did not speed up proportionally. The win is not faster coding. The win is accelerating the entire value stream so no single phase becomes the bottleneck.

Eliyahu Goldratt named this in 1984: every system has a single constraint, and when you fix it the constraint does not disappear - it moves. Speeding up coding with AI while leaving everything around it untouched is like adding a sixth lane to a highway that feeds into a two-lane bridge. You did not solve traffic; you relocated it. We thought AI would make us faster, and it did - just not in the way we expected. The coding bottleneck dissolved and immediately reappeared as new constraints upstream and down. So the sharper question for a leader is not "how do we get more AI into our coding workflow?" It is "where is our constraint today, and what are we doing about it?"

Speeding up coding relocates the bottleneck rather than removing it
Add a sixth lane to a highway that feeds a two-lane bridge and you have not solved traffic - you have relocated it.

Upstream: Backlog Starvation

This is the most common complaint among teams adopting AI.

The beast needs feeding. AI-accelerated developers consume user stories at an unprecedented rate. Product managers and analysts cannot write, refine, and size requirements fast enough using traditional methods.

Prompt precision. AI coding tools need specific, well-defined parameters to produce good results. A vague story that a senior developer could once "figure out" through tribal knowledge now causes rework. Grooming requires higher technical specificity - which takes more time per ticket unless you also bring AI upstream.

Downstream: The Verification Traffic Jam

Higher code volume hitting static pipelines creates a jam.

Review fatigue. Pull requests get larger and more frequent. Human reviewers cannot keep up, and lead time balloons in the review stage.

QA overload. If QA still relies on manual testing or slow automated suites, it instantly becomes the new choke point - more features to test in less time.

Infrastructure limits. Even automated CI/CD can bottleneck if it was not scaled for a surge in commit frequency and parallel test runs.

How to Fix It: Optimize the Whole Stream

Shift AI upstream. Equip product owners and analysts with AI tools and structured workflows to draft stories, generate acceptance criteria, and map edge cases at the speed developers now consume them. Context-first requirements in versioned .md files replace vague tickets that cause rework.

Shift AI downstream. Deploy AI-assisted test generation and agentic code review that read PRs and produce the matching tests with full context and audit trails - unblocking QA instead of flooding it.

Restructure team ratios. The historical Product-to-Engineering-to-QA ratio no longer applies. Shift freed developer capacity into testing infrastructure, QA automation, and upstream requirements engineering, where the constraints now live.

Build the measurement system. Deploy frequency, PR cycle time, MTTR, coverage, and value-stream analytics make bottleneck shifts visible in real time - so leadership responds before constraints become crises.

Judgment Is the Job Now: Make Review More Expensive on Purpose

AI made judgment the whole job. When someone asked me what that actually changes on a Monday morning, the honest answer was uncomfortable: architecture review became a bottleneck in my org, and we stopped trying to fix it.

That is the part people get wrong. When implementation goes from days to hours, the review queue backs up. The instinct is to speed up review - approve faster, batch more, trust the tests. That is how you generate technical debt at machine speed and call it velocity. A bad architectural call used to cost you the weeks it took to build on top of it. With agents, the wrong abstraction is a hundred commits deep before the next sync - the cost of a bad call now compounds at machine speed.

We went the other way. Review got slower and more expensive on purpose, because it is now the only place a human decision actually enters the system. Three concrete changes made that work:

1. Quality gates got stricter, not looser. SonarQube thresholds, coverage floors, PR review that actually blocks. When code volume multiplies, gates stop being bureaucracy and start being the load-bearing wall. At the Medical SaaS Company those gates held the line while output climbed - the gates are what made the speed safe.

2. The expensive conversation moved earlier. Not "review this PR," but "should this exist, and where does it sit." Ten minutes of that conversation saves a week of generated code pointed at the wrong abstraction. This is the same shift-left argument from Chapter 16, applied to human attention: the highest-leverage review happens before the first line is generated, not after the thousandth.

3. QA stopped being downstream. I taught the quality team to generate Playwright suites with Claude directly. They went from receiving work to producing coverage in parallel - which is how coverage moved from under 10% to 40% with no dedicated QA hires. That is not a tooling change. It is an org chart change: verification became a parallel activity instead of a stage at the end of the line.

The uncomfortable version for leaders: if your senior engineers are still spending most of their time producing code, you are paying architect rates for something that got cheap. Their expensive skill is now review, boundaries, and saying no. That is a harder job than writing the code was. It is also the one that does not get automated next.

AI made code cheap - judgment got expensive; architecture review, quality gates, and earlier decisions are the load-bearing wall
AI made code cheap. Judgment got expensive - architecture review, quality gates, and earlier decisions are now the load-bearing wall.