With increased adoption of AI, there is often an argument that code-reviews are now the new bottleneck. And I agree with this completely. Code-Reviews, especially the review you do yourself after AI has written your code, take time.
But I would object to the notion that this is a bad thing.
What is a bottleneck?
A bottleneck is something that slows down the process. It becomes a point where work must get in a line, to pass through a narrow space. With the speed of AI producing code, code reviews become a bottleneck. But is having a bottleneck in the process always a bad thing?
The value of slowing down
I can only speak from my personal experience of developing software for roughly 7 years now. But in my experience, slowing down is not always bad. On the contrary, it can be very healthy. When you slow down, and take the time to really think about things, you often come up with insights that you would not have if you always rush through things. And these insights can be golden opportunities to change something for the better.
Be that a subtle bug discovered, be that a design flaw addressed or something else - the list is long. But as British computer scientist Tony Hoare famously said: "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies."
But simplicity is hard
"I would have written a shorter letter, but did not have the time." If it was Mark Twain or Blaise Pascal who said it is beside the point. The point is, there is a lot of truth in this quote. A writer of prose I know also confirmed what many senior software engineers know - to make something complex simple and easily comprehensible takes way more time and effort in the form of careful thought than it takes to leave it being complicated and hard to understand. AI is good at writing code quickly, yes. But is it also good at writing code which has high quality? Sometimes yes, sometimes no.
For example, Claude Opus 4.6 is my favorite model. But if I tell it to write a basic persistence test, just persisting an entity to DB, loading it from DB and checking if the field values are what you originally set on the object, you know what it consistently does? It uses magic numbers in the object field setting and the asserts. It doesn't use constants unless I explicitly tell it do so.
Sometimes it also doesn't use simple factory methods to make creating test objects more readable. None of this is a big deal, I can easily fix its behavior by being more explicit about what I want in terms of code design - but the point is, sometimes it has a tendency towards bad design if left to its own judgement. This is undoubtedly because some of the code it has been trained on probably exhibited those bad design qualities, and AI learns what you put into it. It doesn't have an inherent way to judge if your training data quality is high or not.
The freedom of AI must be harnessed
AI provides us with an incredible freedom - we now have time we can put into verification by carefully reading through the code produced that we didn't have when we had to write it ourselves. This is a great opportunity for improving the quality of our code - if we harness it. If we take time to slow down and think, which we now have more of than we ever had - if we are allowed to use it.
That is why I would argue that the bottleneck of code review is a great thing. It forces us to slow down - and as we've seen, slowing down has great value.
So will you help harness this value? Or will you just glance at the code and give it an lgtm without really taking time to engage with it?
If you are blessed to work in an environment where it is possible to make this choice, I would argue that, as responsible software engineers, we have to choose the latter path. AI can improve speed and quality at the same time - if you put in the effort and embrace the bottleneck of code review.
Top comments (0)