9th November, 2022 Computers Aren’t Intuitive
My third grade teacher, Mr. Morgan, once tasked us with writing the instructions for making a peanut butter and jelly sandwich. Then, Mr. Morgan would, one by one, make sandwiches according to our sets of instructions, and only according to our instructions. I remember the incredulous gasps as Mr. Morgan smeared peanut butter and jelly onto the outer plastic packaging of a loaf of bread. The frustrated cries of, “No! Not like that!” as he carefully spread peanut butter and jelly over every single face of a couple slices of bread. And the laughter as he made—as best I can describe—a PB&J taco out of a single slice of bread. Every single peanut butter and jelly monstrosity Mr. Morgan made that day was built exactly according to spec.
In many ways, Mr. Morgan was behaving like a computer: he did exactly as he was instructed. He followed the steps, as written, even if they didn’t make sense. The only remotely reasonable "sandwich" Mr. Morgan produced came via a set of incredibly detailed, tedious instructions. So it is with computers: the computer requires detailed, tedious instructions.
You see, when we give instructions to people, we assume that they can fill in the missing details based on their experience, shared understanding, and context. Often, we even rely on people to do that. It saves time and effort not needing to go into tedious, minute detail. By contrast, a computer can’t fill in the gaps in our instructions.
Computers aren’t inherently intuitive. They’re simple machines; they only understand one and zero, true and false, yes and no, on and off, and nothing more. So, in thinking about creating a computer program, the majority of the effort isn’t in the typing of instructions. It’s translating potentially vague, ambiguous, and maybe even conflicting human-language expectations into precise enough instructions that the computer can deal with. The magic of easy-to-use software is in that translation: the work of programmers, designers, product managers, and so on. These people are responsible for making intuitive software, because computers aren’t intuitive. Assume otherwise and they’ll make a mess of your sandwich.