On one side of your screen is a long list of files. On the other is a green and red melange of source code. Your job is to decide whether the changes I’ve made—the deletions and additions, the refactoring, the structural and aesthetic changes—ought to be merged into the master branch and eventually released for other human beings to use.
Code is sometimes neat and orderly and self-explanatory. But sometimes it’s cryptic and tricky and opaque. Often it fails to convey the complexity of the mental framework required to understand and solve the problem. If this code review could transport you into my mind and explain to you everything I had to learn to produce the jumble of green and red on your screen, this process wouldn’t be so hard.
Code reviews are hard because empathy is hard.
There are a few things I can do to make my code easier for you to read. I can try to explain its purpose, its motivation. I can tell you why I didn’t take the naive route that seems simpler, or why I rewrote the inefficient function when I could have just left it alone. I can explain my thoughts and try to help you get inside my head.
Ultimately, though, you’re the one who has to read the code, take my ramblings with a grain of salt, and decide for yourself.
It’s hard to understand a person from the fragments of her life I see, the freeze-frame disconnect of dancing under a strobe light. Assuming I already know her well is easier than trying to grasp at gritty details and uncomfortable realities. Dismissing him as utterly foreign and beyond worthwhile contemplation is less unnerving than dismantling my stereotypes and rearchitecting my mental models to match reality.
So why do it? Why spend all that effort trying to understand people who may not care about me in return? Why risk opening my heart when I don’t know what secrets the other person holds? Why try to make that code review easier for you?
That’s what I want to talk about this week. What do you think? I look forward to hearing from you.