Is code review dead?
Overview
I read with some delay Antirez’s Control the ideas, not the code article.
After working on a toy project for a while, called Nello, a Kamban board, I have the following insights.
- Bad code was written before AI took place. I have seen storm of young consultants writing horrible code, being me one of them too, in the first year of my job. I teach to them how to write good code, sometimes I rewrote entire crazy algorithms to just be able to understand them. So do not complain for bad AI code.
- In the last 12 months frontier models got better to add code to already automated code base.
- QUALITY ASSURANCE (QA) is the key to our new role as software engineer or software architect.
What I do when I use AI:
- I write a specification with open-spec. If possible I design the data model upfront, to have a stronger grip.
- If needed I carefully design the architecture (I review the proposed architecture)
- I read the proposal, design and tasks produced. Sometimes I add some tasks.
- I ask to produce the code
- I test the software, review the SQL produced
I stopped to do code review on regular basis, because it seems a wast of time.
I agree with Antirez:
I believe many programmers at this point have less impact they could have because they look at the code. I truly believe into that.
I completely agree. Sometimes I changed the code of the “machine” but it was a bit pointless: I do it for architecture preferences, or because I know what I will do next so I want that critical piece of code is well written.
The issue I have with AI is mostly because the “machine” started to do things on area without a clean specification, which by the way happen all the time on “pure human teams”.
As said by Antirez:
You have to understand how things work, what is the best design, how to reach a certain level of performance.
If you have wrote code in the last 30 years (!) like me, it is easy to understand this sentence. It is far more difficult if you get out of an Italian University with just 3 practical coding exams on your curricula (on 2000 it was the norm, now I hope they do a bit more)
I was able to create an AGENTS.md for my toy project to set the code style I want, which is simple: less code, more fun.
The challenge now is:
- Design your ideas
- Break them in user stories (workable items)
- Compare competing solution for the same requirement and choose the best one (this can take a lot of time)
- Do strong Quality Assurance for your code. Frontend needs a lot of attention if you care your Customers.
- Find a balance between AI costs. Frontier model costs a lot, you know?
An example worth of 1000 words
When I designed Nello I take Trello as an example. When you design a product there are a lot of cross requirements to manage for instance:
- You need a minimal DDoS protection
- You need to design the deployment to ensure system will not eat all your resources (I am DevOps-Guru, so it was easy)
- You need a registration procedure for an open-beta, with minimal security
- You need some minimal audit logs, to track down illegal use/attack trails