It's probably your fault: humility and other virtues programming taught me

Lesson 2: Empathy

As a programmer:

Programmers working with other team members often have a very surreal experience. I’ve worked on projects where I need to fix a bug in some particular piece of code. I will open up the code, and have absolutely no idea what the code is trying to do. It’s messy. Design choices are questionable to say the least. Functions are named badly, etc. Faced with this situation, the pragmatic programmer will wonder who in the world was responsible for this mess. One reason is because you might need to contact the programmer who originally wrote the code to ask them (nicely), how their code is meant to work. The other reason is because everyone likes someone to blame. In fact, the command you run to show who has written some code is literally called “blame.” (Really) The gallows humor of computer programmers; the idea that someone would want to know who wrote a particular line of code to acknowledge their good work is almost unthinkable! No, if we want to know who wrote something, it’s to assign blame. This brings us to the surreal experience. “Tell me, computer, who do I have to blame for this monstrosity?!!?” Answer: “tc.” That’s right, I wrote the code. I have no one to blame but myself. Suddenly I am like Gandalf in the Mines of Moria, “I have no memory of this place.” Now, I have no one to blame but myself. Instantly, I will have to shift into a different mode than finding blame. That mode? Understanding. “Let’s see. When was this code written? Hmmm…I was probably under a tight deadline when I had to get this done. I bet I had some great ideas for how this could have been done better, but I probably simply ran out of time and did the best I could with the time I had.” It’s funny how willing I am to think the best of myself and make (probably very reasonable) excuses for myself, but I wasn’t in that mode to start with.

As a human:

This surreal experience was invaluable. It allowed me to experience my mistakes from the point of view of a 3rd party. It’s almost like seeing yourself speaking to another person in the future, where you wouldn’t know what you were thinking or feeling internally. It allowed me to realize that my standard for judging others is completely different than the standard for judging myself. How many times have we felt misjudged by others? Often? Ah yes, but of course, our own judgements of others are always true and just. This example belies that fact. Indeed, this little example betrays the fact that sometimes we cannot understand our own writing. We cannot understand our own intentions. And who could possibly know our intentions better than ourselves? Yet it happens that we cannot understand ourselves. How much more willing should we be to excuse the perceived faults of others when we have practically no idea what their internal motivations are? I’ve never written a line of code where, at the time, I didn’t think it was perfectly understandable. And yet it wasn’t. Perhaps others believe their intentions, words, and actions are perfectly clear to others. I’m sure they are to that person at the time they are doing them. Perhaps our default mode ought to be understanding rather than blame. This rules applies 100 fold to a person who we consider a friend. I make reasonable excuses for my own shortcomings because I believe myself to be a good programmer. If we are friends with someone, it is because we believe them to be a good person. If and when they fall short of our expectations, why do we assume that it is because they are intending to harm us? Perhaps they were trying their best at the time. Remember the words of Poe: “Years of love have been forgot, In the hatred of a minute.”

Final lesson:

This is the lesson of Our Lord when He says “For as you judge, so will you be judged, and the measure with which you measure will be measured out to you.” This is either a blessing or a curse. Someday we’ll stand before the Judge, but as He tells us, in a very real sense, we will stand before ourselves as the judge. And as we have so many times before, we will judge ourselves. Only, this one last time, the standard we use will be the standard we used for others. So take care when passing judgement on those around you. They were never the ones standing trial. You were.