I’ve been having a lot fo conversations with my team about where AI tooling fits into our development process and specifically AI code review tools. I recently shared my thoughts with my peers and it seeme good enough to share here too.
Good morning friends! There is a lot of discussion and action lately around the topic of how to integrate AI tools into the code review process, specifically adding PR review bots into Github and GitLab. I have been talking a lot with the Device Trust team about how we work and as the conclusions we have drawn are slightly different than others are taking I wanted to share our decisions and plans for others to consider as they decide how they want to approach these advances for their teams.
There is a (possibly apocryphal) quote from an old IBM Training manual:
A computer can never be held accountable
Therefore a computer must never make a management decision
At a point in the development of any code, there comes a point in time where the engineer must present the work to the wider world and say “here is what I have produced, what do you think?” To me, this is an almost sacred moment where one feels confident enough and proud enough of what you have built to solicit comments.
In our development cycle, this is the moment when a Pull Request is opened. How the engineer gets to this point is almost irrelevant; they can write the code solo, they can pair program, they can use an AI assistant, they can throw chicken bones; It doesn’t matter. There comes a moment where the engineer takes responsibility for what they have produced and shares the code.
The same theory applies to an engineer reviewing the code of another. This is a proces where an engineer has to use the wisdom they have gained over their career to improve the code presented by one of their fellow engineers. It is a place where our craft is discussed and critiqued. It is a fundamentally human endeavor. Both author and reviewer are responsible for the outcome.
I have several concerns about the addition of AI reviews into this mix. The primary one is that there is a fear that by introducing automated comments and review into the PR, it will discourage engineers from doing as thorough a job of reviewing as they would if they know they are the final arbitrar of the process. It is too easy to pass the responsibility of the review to the tool.
For that reason and others, we intend to keep the PR review process a place where humans work together to make the shared code better.
Does that mean I see no value in AI reviews of our code? Absolutely not. I see significant value in it. But for us, that process belongs in the hands of the author of the code.
We are building and sharing skills for our AI assistants to use before the engineers open their PRs. These are being built by the team and will become part of our code repository so that they are shared with everyone to use. The use of these tools becomes part of the development loop that an engineer uses before they present their code to the world through the PR process. They are there to allow every engineer to feel more confident in the code they share with the team.
I think how you integrate these new tools into your team workflows is a very important one that should be done carefully, and in a way that best supports the work we do. We are all ultimately responsible for the work we and our teams produce and we should build our processes to encourage personal responsibility for our work.
Thanks for coming to my Friday TED Talk.
