Jonathan Itakpe
HomePhotosBlogWorkAbout
Back to Blog

Cheap Code, Costly Reviews: The Hidden Bottleneck of AI

October 25, 2025
6 min read
Cheap Code, Costly Reviews: The Hidden Bottleneck of AI
ai in software developmentcode reviewsgithub copilotllm codingai productivitytechnical debtengineering bottleneckssoftware engineering best practices

If you're a tech lead or senior developer, you've probably noticed something strange lately: your pull request queue is overflowing. It's not your imagination. This isn't because the team suddenly got larger; it's because every developer is now equipped with an AI-powered force multiplier. We've entered an era where thousands of lines of code can be generated in minutes.

However, this surge in output has created a critical new bottleneck that is silently taxing our most valuable resources. While the cost of writing code has plummeted, the cost of verifying it has exploded. Every line of "easy" AI-generated code must be scrutinized for subtle flaws, hidden risks, and a complete lack of business context, placing an unsustainable burden on the review process.

This article is not a protest against AI. Quite the opposite. The productivity gains from LLMs are undeniable and transformative, and they represent a permanent evolution in software development. Our goal isn't to stop using AI; it's to shift our processes to match this new velocity. We have successfully automated the writing of the first draft, and now we must invest just as heavily in automating and improving verification. The bottleneck has moved, and we need to move with it.

Writing Code is Cheap

Over 25% of all new code at Google is now generated by AI - Sundar Pichai, CEO Google - 2024
source

From the Stack Overflow 2025 Developer Survey - "51% of all professional developers report using AI tools daily in their workflow". This is not an occasional tool; this level of integration suggests that AI-assisted code generation is now the default velocity for the current generation of software development.

While exact percentages are debatable, multiple reports suggest Copilot contributes roughly 40-60% of code across various languages. The productivity gains are real and undeniable. But we need to be honest about what we've actually gained.

The Review Bottleneck

The problem isn't just that developers are writing more code; the core issue is that the code they are writing is fundamentally harder to review. While the speed of AI generation has effectively pushed the cost of writing code down to near-zero, it has silently transferred all of that cost—and more—to the verification stage.

This shift has turned the pull request queue into the primary performance bottleneck for the entire engineering organization and creates what I call the 'loop of doom' - a self-reinforcing cycle that compounds over time:

review-loop-of-doom-chart
Loop of Doom: More AI code → Backlog → Fatigue → Debt → Slower teams

And we're not talking about it enough.

Lack of Context

LLMs don't understand the project's specific business goals, long-term architectural vision, or the nuances of a legacy system. It generates a functionally correct solution in a vacuum. The code reviewer must now spend extra time ensuring this new, "clean" code doesn't break a complex, unwritten business rule or clash with the existing architecture.

I've watched this play out on codebases with millions of lines accumulated over years, an AI agent making a fairly innocuous change with little context can result in tunnel vision changes but with massive side effects. Having an AI-first approach to generating changes robs new team members of the process of learning how the existing code works or why certain decisions were made. The process of clicking through multiple files to make a small change offers valuable learning experiences that AI-first approaches bypass entirely.

Skipping this step means the reviewers and senior engineers on the team are the only ones left with understanding the business context - The fewer people who truly understand the system, the slower and riskier every review becomes.

Fatigue and "LGTM-Syndrome"

Reviewing human code is often about mentorship and intent ("I see what you were trying to do..."). Reviewing AI code is a different, more draining cognitive task. It's not mentorship; it's pure, cold auditing. You have to switch from a mindset of "Is this logical?", "Why was this decision made?" to "Is this correct in every conceivable way?", "This looks perfect, but is it doing what is intended?". This is far more taxing.

A new, critical problem is that the author of the code (the developer who prompted the AI) may not fully understand the code they are submitting. In a traditional review, you can ask the author, "Why did you choose this approach?" They can explain their logic. With AI-generated code, the answer is often, "I'm not sure, the AI produced it, but it passed the tests."

Think about that for a second. The reviewer has become the sole person responsible for understanding the code. We've turned code reviews from a collaborative process into a solo performance where one person carries all the cognitive load.

The more reviews stack up, the harder it is to review properly. You can't dedicate enough time to read through the code and ask the right questions. It becomes really easy to fall into the trap of rubber-stamping merge requests with a simple "Looks Good To Me" comment without properly verifying the implications of changes. And when everyone is tired, when the queue is long, when the pressure is on to ship—that's exactly what happens.

Technical Debt

Because the AI lacks the full architectural context, it might generate a solution that works now but is a long-term maintenance nightmare. It might use an overly complex design pattern or an obscure method when a simpler one already exists, implement unnecessary abstraction, or add new dependencies without weighing the trade-offs.

The code is written in seconds but adds hours to future feature development. If we do get to a point where we are unable to properly vet the code going into production systems due to the sheer volume, we risk building overly complicated and hard to manage software. Not because anyone intended to, but because we're moving too fast to notice.

This isn't about achieving perfection or zero technical debt - some debt is inevitable. But it should result from conscious decisions, not review fatigue.

Conclusion

AI didn't remove engineering judgment; it made it the bottleneck. We are celebrating the productivity gains while quietly ignoring the infrastructure collapse happening in our review processes. We've treated AI code generation like it's a simple productivity multiplier. Write code 10x faster, ship features 10x faster, everyone wins. But that's not how it works. We automated the writing of the first draft without investing equally in verifying it.

I'm not arguing against AI tools—the productivity gains are transformative and permanent. But we need to be honest about the trade-offs we're making. Every time we merge AI-generated code without proper review, we're making a bet. Sometimes we win. Sometimes we accumulate technical debt we won't discover until it's too late. And sometimes we ship subtle bugs that look correct until they aren't.

Maybe it's time we admit that writing code was just one part of the part of the problem, the other part is understanding and verifying. And that just became a lot harder.

If you're experiencing similar challenges or have found effective solutions, I'd love to hear from you.

Share this post

TwitterLinkedIn

Previous

Welcome!

Next

2025 - Year in Review

© 2026 Jonathan Itakpe. All rights reserved.