CHAPTER 18: Programming for Humans – User Interface Design for Programmers

CHAPTER
18
Programming
for Humans

My sense of user sympathy as a moral imperative (rather than just a way to sell more software) started when I heard a story from an Excel usability test. A woman came in to test the software. When she wasn't able to complete the assigned task, she actually broke down in tears. Ken Dye, the usability lab manager, told me he had to walk her around the idyllic Microsoft campus until she felt better. After that, we were always very careful to explain to usability participants that we were testing the product, not their performance, and we expected that they wouldn't be able to accomplish some tasks. Not that that helped. People feel miserable when they can't accomplish a task.

I was reminded of a story about the task list in Microsoft Outlook. In the original design, when you completed a task, it was simply deleted from the list. Logical. But the designers discovered that people had more of a sense of accomplishment if they could actually cross the items off the list, and this made them happier. So now, when you mark a task as completed, Outlook draws a line through it rather than making it disappear completely (see Figure 18-1).

Mahatma Gandhi considered it violence against nature to throw away even the stub of a pencil because it wasted the world's resources. And he considered it violence against humanity, too, because our over-consumption denies resources to people who live in poverty. The Talmud was concerned about even tiny acts of waste: as little as a mustard seed, which was considered the smallest thing the human eye could see. Even passing a glass of water over a loaf of bread at the dinner table was forbidden, because if the water spilled, the bread would be ruined. What they're both teaching us is that small things matter; that everyone has opportunities all the time to improve the world in a tiny way, to show respect for all living things.

FIGURE 18-1


The Outlook task list actually crosses off items as you complete them, simply because it made people happier.

Usability, fundamentally, is a matter of bringing a bit of human rights into the world of computer-human interaction. It's a way to let our ideals shine through in our software, no matter how mundane the software is. You may think that you're stuck in a boring, drab IT department making mind-numbing inventory software that only five lonely people will ever use. But you have daily opportunities to show respect for humanity even with the most mundane software. Even if you are just working on a code library, an API that is invisible to everyone but other programmers, if you can design the API in a way that is consistent, easily understood, more obvious, and easier to get right, the programmers who use your API will be happier. By focusing on usability, you show your respect for the happiness of the people who run your code.

That's why I care deeply about usability, and you should, too.