View: Humans, Not Humanoids
In "Making Badass Developers", Kathy Sierra draws a distinction between:
- Humans: fallible, with extremely scarce, easily depleted cognitive resources
- Humanoids: perfect, untiring reasoning machines
Everyone you work with is a human. The users of your software are humans. Your bosses are humans. Their bosses are humans.
Yet we tend to treat anyone from whom we're even a little bit distant as if they're a humanoid. We assume that they'll remember all relevant facts, deduce the right conclusions from the information available to them, search all solution paths without bias, and respond unemotionally to input. We think that if they forget something, or fail to draw "obvious" conclusions from the information in front of them, or are unwilling to follow "the process" or use the tools available to them, that it's their problem—a personal problem.
Yet it can't be a personal problem, because everyone has these same "faults". It is absurd that we have built corporate and technogical systems that fail to accommodate the universally-shared limitations of the people who maintain and inhabit them. Yet, that is, for the most part, exactly what we've done.
Watch Kathy's talk. It's well worth your time.
All One Tank
Kathy notes that we only have one "tank" of cognitive resources. Anything that drains it uses up this scarce resource, affecting every process that needs to draw on it.
This is one of the reasons that seemingly trivial things like code readability matter. Any rational processing or willpower that gets burned to merely parse the code in front of you can't be used for more impactful tasks like finding a bug or designing an algorithm.