[SVN] Peer Code Review
I remember sitting in on code reviews early in my career. You took your
code, put it up on a projector, and the architects—shadowy figures in
the back of the room—ripped it to shreds. These marathon sessions would
take all day and were completely exhausting. They certainly improved the
code, but they wreaked havoc with both release schedules and people’s
psyches!
Nowadays, I do code reviews a little differently. Instead of submitting our code to the senior architects, we do peer code reviews. Here’s how it works:
That’s actually the point. Code reviews aren’t about approval—they’re about learning. A peer code review provides a forum to spread knowledge around the team, including important things like how this feature works, or what patterns make sense.
It also provides a way to cover each other. Every one of us has a set of common mistakes that we make, and those mistakes aren’t the same as the mistakes our peers make. Doing a peer code review lets me catch that dumb thing that Jake always does, and let’s Jake catch that stupid error I always make, and it does it in a casual, non-accusatory forum.
Last, peer code reviews are deliberately done among equals. Anyone can review anyone else’s code, from the most junior to the most senior engineer on the team; it eliminates the ego and the defensiveness from code reviews.
Sounds great!
Nowadays, I do code reviews a little differently. Instead of submitting our code to the senior architects, we do peer code reviews. Here’s how it works:
- I go away and write some code, including tests for that code.
- I run all the tests and tweak until I’m happy with the work. It functions, it’s structured properly, it conforms to all of our style requirements, and it’s got a really clever solution to that sorting problem.
- I commit the code to my feature or developer branch. It’s not in mainline code yet, and won’t ship (this is important!).
- I ask for review. If we’re working in Git, then I do it by creating a pull request. If we’re using some other source code management system, then I just ask for it based on the commit number, or create a patch.
- Someone else on the teamworking in Git—might be the senior engineer, might be the intern—takes a look at the code. They look for bugs, structural problems, unintentional duplications, or any of the mistakes we developers commonly make.
- I fix any problems brought up in the code review, or talk with the reviewer about why I did it that way. Repeat until we’re both happy.
- One of us merges the code and checks it in.
That’s actually the point. Code reviews aren’t about approval—they’re about learning. A peer code review provides a forum to spread knowledge around the team, including important things like how this feature works, or what patterns make sense.
It also provides a way to cover each other. Every one of us has a set of common mistakes that we make, and those mistakes aren’t the same as the mistakes our peers make. Doing a peer code review lets me catch that dumb thing that Jake always does, and let’s Jake catch that stupid error I always make, and it does it in a casual, non-accusatory forum.
Last, peer code reviews are deliberately done among equals. Anyone can review anyone else’s code, from the most junior to the most senior engineer on the team; it eliminates the ego and the defensiveness from code reviews.
Sounds great!
Comments
Post a Comment