My son came home from school upset this week, after his math teacher informed me (in front of him) that he wasn’t doing his homework. As he is a child who otherwise excels in math (and in school in general) this was strange to me, and precipitated a conversation (at times lively) about what was going on. The solution ended up being as simple as emptying his backpack and starting a routine of going through his things every day after school — 5 minutes of parenting and attention that should be enough to turn around this troubling trend before it even gets started.
Code Review. Wikipedia defines it as follows: “Code review is systematic examination (often known as peer review) of computer source code. It is intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software and the developers’ skills. ”
Taking shortcuts is both a need and a desire. Sometimes the business needs are such that a quick turnaround with some minimal risk is a better choice than a deep analysis guaranteed to be of higher quality. And sometimes a developer has a desire to finish faster, whether to move on to a more interesting problem or to impress a client or manager.
As a developer, I am aware of each of these temptations, and code review is there to at least manage them, if not remove them entirely.
As a manager, I think of the tradeoffs, of the additional friction and time that code review introduces.
We all behave differently when we believe we are being watched: We are more careful. We want to impress. We check our work. And yet on some level learning to accept and even enjoy being watched is a life skill. Those in the public sphere such as actors or politicians must learn to love it or arguably they are in the wrong profession. Developers as a whole are much more private, frequently more introverted, and thus code review is a discipline that takes getting used to and initially, enforcement from without.
The Jewish tradition has a useful phrase: “There is law and there is a Judge” — the implication is to watch what you do, because Someone is watching. Religion at its best excels at setting up a Reviewer in the sky to make people more aware of what they are doing, check their work, not do something that they wouldn’t want others to see.
Essentially, to write better code.
As a parent I’ve begun to see it as my role to be that reviewer for my kids, to instill in them a sense that Big Daddy is watching, and that someone is reading their code with a critical eye. To let them grow up not with the creepy feeling that they have no privacy, but inspired to double-check their work, think again, refactor if needed, and take the time to make good decisions.
My own code? Still a WIP.