Lately, like many software engineers, I've felt the double-edged sword of coding agents' ability to create a lot of working code really quickly as well as the additional burden of reviewing that code. Avery Pennarun recently wrote that this burden predates LLMs and that agentic coding only amplifies the problem. His thoughts feel apt:
The job of a code reviewer isn't to review code. It's to figure out how to obsolete their code review comment, that whole class of comment, in all future cases, until you don't need their reviews at all anymore.
(Think of the people who first created "go fmt" and how many stupid code review comments about whitespace are gone forever. Now that's engineering.)
It's heartening to realize that I've already been on the journey of reducing code review burden through automation for years, and that finding ways to do more is just traveling further down that path.
Some teams are experimenting with a "Dark Factory" pattern where no humans ever look at the code. This scares me, but I do agree with Avery when he says:
Reducing review stages, even to an uncomfortable degree, is going to be needed. But you can't just reduce review stages without something to replace them. That way lies the Ford Pinto or any recent Boeing aircraft.
One way of doing this is probably to increase the amount of automated testing we do to what would have been a ridiculous degree a few years ago. Ideas like mutation testing help validate that our tests are actually testing functionality and we don't have untested side effects. Building this kind of thing into our workflows could make it possible to avoid reviewing tests as closely while still staying confident that they're effective.
Finding the right balance here is going to be tricky, but I'm here for it.