Kernighan’s Law - Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.


Tuld: Oh, Mr. Sullivan, you’re here. Good morning. Maybe you could tell me what you think is going on here. And please, speak as you might to a young child or a golden retriever. It wasn’t brains that got me here. I can assure you of that.

- Margin Call


There’s a common saying amongst people who build software. Most users are idiots.

This might seem a controversial or derogatory statement on it’s face. But, for those who want to dig a little, there’s a little nugget of truth buried just beneath the surface.

The person who creates - whether it is software, hardware, woodworking, quilting, or any other creative pursuit - will always possess the deepest knowledge of the thing they have created. They stand alone amongst all others - as someone who has emerged from the forges of creation with their craft in-hand. Creation is an act of heightened intimacy. By comparison to the creator, everyone else can only appear uninformed and/or unappreciative.

Coming back to software, a next not-so-intuitive leap from this understanding, is that to build great software, you have to get very good at putting yourself in the shoes of your hypothetical idiot users. They exist. And they will never approach your rarefied air of understanding. (As a disclaimer which may or may not be obvious, these hypothetical people aren’t truly idiots - with rare exceptions. They simply are people that don’t possess the craftsman’s qualia of their craft.)

There are lots of ways to do this empathy exercise. Building up your familiarity with common design idioms and UX patterns is always a good one. Listening to users. Etc. And there’s no shortage of books on these topics so I won’t belabor those points.

But another approach that’s underrated, and I’m only just discovering the value of, is for you yourself to play the part of the idiot for others. All the world’s a stage. And experienced engineers are adept at materializing the idiot for others. Putting a face and a voice to the idiotic questions and perspectives that others may have brushed past.

Acting the idiot is an underrated way to grow the quality of user empathy within and around you. The really experienced (a la Mr. Tuld in Margin Call - and a level I have not nearly achieved yet), can thread this needle of pretending to be an idiot, while not leaving any space for others to question whether you actually are.