Not surprisingly, software development teams have a propensity to automate. After all, most of what we do involves automating formerly manual processes. Stop keying that data in by hand! Let’s write a script that loads it automatically.
As software developers, we thus become connoisseurs of automation opportunity. Come on. Tell me you’ve never wandered around your office, observing others’ inefficient workflows. If you didn’t have a ton of things to do, you’d write a shell script that blew their minds. They’d have so much free time on their hands that they could take up knitting for part of the day.
But typically you don’t do things like this. You have more important things to do, like build software for your customers. And this hints at an intuitive sense of priority among software groups. You understand that you could automate all sorts of things but that you only should automate certain things. Adding a critical feature to the software you sell takes priority over automating George’s weekly email about fantasy football.
At least, that works for everyone else. And yet we have a surprising blind spot when it comes to ourselves. In some cases, we quixotically look to automate everything we might ever possibly do more than once. XKCD once captured this nicely. And then, on the flip side, we sometimes fail to recognize things in our own workflow that we could and should automate.
Code review definitely qualifies in this latter category. We seem to think of it as inherently manual activity, often ignoring the possibly of automated code review.
Aggressively Seeking Automated Code Review
In the title of the post, I mention aggressively pursuing automated code review strategies. Bear in mind that aggressive does not mean reckless, nor does it mean automating without considering ROI. You don’t want to fall on the wrong side of that XKCD chart.
I’m talking instead about aggressiveness in auditing your activities for automation opportunities. Any time you spend on manual activities is time that could theoretically be automated. Are you critically examining all of that time, or do you have activities that you assume must happen manually?
When I talk about aggressiveness, I’m talking about considering nothing in your manual process as sacred. You should keep your eyes open for tools or techniques that can save you time, making your manual reviews more critical and your process more efficient. Let’s talk about some examples of those opportunities.