I review more code than I write now. I'm not sure I'm getting better at it.
It's a small, uncomfortable feeling, and I can't prove it either way. I catch the obvious stuff. I don't feel the muscle where the subtle stuff used to live. And nobody, including my org, is measuring whether that muscle got weaker. They just assume it's fine.
AI made everyone a reviewer. That's a different job, and nobody trained us for it. If your review queue grew and your review judgment didn't, this one is for you.
The Job Changed Before Anyone Told You To
Early in my career, writing code was how judgment got built. You wrote it, it broke at 2am, you learned why, and the next time you didn't make the same mistake. The reasoning happened while you were writing, and it stuck to you. That was the whole apprenticeship, and nobody had a separate training for it, because it was free and attached to the work.
Now a model writes the first draft and the human reviews it. The reasoning that used to happen while writing has to happen while reviewing. Or it doesn't happen at all. Nobody moved the training with the work, and nobody noticed, because on paper the job title didn't change. You're still a "developer." Your ticket still says "review." But the actual skill loadout is different, and it's the one part of the job with no metric, no on-ramp, and no way to tell if you're good at it.
Generation got cheap. Review did not. So the whole profession quietly shifted toward review, betting the entire workflow on a skill nobody was tracking.
Let me make it concrete. Two years ago, my review day looked like this: I wrote the code, I broke it, I fixed it, and when I opened a PR I already knew where the weak spots were, because I'd walked through them. Review was short, because I was reviewing myself. Now the diff arrives with a few hundred lines I didn't write, and my brain has to do the thing it used to do while writing, but afterwards, and under deadline. The context I used to have for free is now something I have to reconstruct, and I'm getting worse at reconstructing it, and worse at knowing when I'm doing it badly. That last part is the part I can't measure, and it's the part that matters.
I Built a Second-Opinion Engine and It Lied to Me
I wanted to test the thing I suspected about my own reviews, so I built a two-LLM review engine: adversarial-debate, MIT, public. Two isolated models look at the same code. They either converge on a verdict or preserve their disagreement. Simple idea, right?
The first run was 89% theater.
I want to sit with that for a second, because it felt fine at the time. The second model wasn't reviewing anything. It had already seen the first model's conclusion, and so it agreed, with a little variation. A second opinion that's seen the first opinion isn't independent. It's validation with extra steps. And it felt exactly like review, because I was reading the pretty summaries, not the raw logs.
In the logs it looked like this: model A made a claim about the diff. Model B, one context later, made the same claim in different words, pointing at the same lines, with zero independent evidence. Two reviewers, one finding, dressed as two. A human reviewer anchoring on the first comment does the same thing, just slower and with more confidence.
I nearly shipped that result as "review is working." What saved me was opening the logs and watching the replay happen.
What Worked Wasn't in the Prompt
My first fix was the obvious one: tell the second model, in the prompt, to be independent. Still theater.
The fix that worked wasn't in the prompt. It was in the architecture: isolated contexts, no shared conclusion, and a hard requirement to cite evidence for every claim. The moment "be independent" moved from a sentence to a constraint the model couldn't opt out of, the theater disappeared. It went from 89% to 0% across 217 debates.
That's the whole finding in one line: you can't prompt independence into a model that has seen the answer. You have to remove its ability to see the answer.
The Numbers, and the One That Should Worry You
On 70 real public PRs, across 411 debates, the system matched human review claims 81% of the time. On the corrected 2,333-row dataset, an 88.7% binary match. Total cost for 360 reviewer runs: $0.42. The math is genuinely embarrassing, in the good way.
But the number that should keep you up is the one you don't see. Results that were partial or wrong clustered in narrative domains, incident reports, change proposals, and the miss rate there was 11.3%. Those are false negatives: the reviewer said "looks good" and the thing was actually broken.
You can build two independent reviewers and still have both miss the same thing, because they miss the same way. Two sets of eyes don't fix the eye.
And here's the part I'll be straight about: I don't have industry data proving review quality declined. I have the structural argument, and my own experience of reviewing more and enjoying it less. That gap between "review is harder now" and "review is worse now" is real, and I can't close it for you.
What I Got Wrong Along the Way
Two things, both my fault.
The first is the one I almost published: the 89% theater, looking like working review in the summary. If I hadn't read the raw logs, "two independent reviewers" would have been a lie with a green checkmark. Same failure mode as a test that asserts nothing.
The second is quieter and more embarrassing. A join bug collapsed the dataset from 2,333 rows to 359. Early numbers were reported against a 15% slice of the data, and nobody, including me, knew for a while. The fix was trivial. The lesson was not: report on a dataset only after you've proven the dataset is whole.
The Open Question
Here's what I can't answer yet, and I don't think most of us can: how do you measure review quality when you didn't write the code?
We measure test coverage. We measure flake rate. We measure PR cycle time. But "did this review actually catch the thing that mattered?" is a number I can't produce, and I'm not sure anyone can. We've bet the whole workflow on a skill we don't measure, and I'd rather name that than act like it's solved.
What I can defend is smaller: independence has to be architectural, not prompted. And a clean verdict is weaker evidence than we act like it is, because the worst failures are the silent ones.
Has your review quality gone up or down since AI wrote the first draft? I want your honest answer, not the polite one. I don't think any of us has a number yet, but I'd like to know what the field feels like.
Code and receipts: adversarial-debate · v0.2.2 field test report · CHANGELOG — all MIT, all public.
Top comments (0)