Sunday, August 15, 2010

Book report

I managed to finish ploughing through Don Norman's The Design of Everyday Things over the weekend. Overall, I thought it was a skosh longer than it needed to be, simply because Norman's writing favors the proper over the idiomatic. Yet I hope that its fundamentals will look over my shoulder while writing the UI parts of my code, just the memory of some individuals do as I'm writing.

Superficially, Norman comes off as a fussy old man, obsessing over the usability of doors--yes, doors--and all but throwing up his hands on software. Yet the book practices what it preaches in that it does not assume that the reader will memorize it, and sticks to a small handful of ideas that can be put into practice in a variety of contexts. Among those precepts:
  • People will blame themselves for mistakes that are actually the result of design that sucks, which only perpetuates the problem. Don't do that to other people. Ever.
  • As much as possible, map the interface to the user's mental model of the real world. For example, to make something go forward more quickly, make the user push rather than pull.
  • Give the user feedback on the current state, the results of what s/he just did, and a painless way to undo/correct mistakes.
  • More controls, if well-grouped (or selectively enabled/disabled or hidden/unhidden) are actually better than fewer controls that are reused (in different combinations) for multiple purposes. (See also The Onion's satire on Apple's keyboard-free laptop.)
  • If there's a preferred behavior, make it the single possible thing that can be done under the circumstances.
  • When all else fails, standardize. Beware that this is not as easy as it reads.
I won't say that I consider myself a better software developer for having read this book; only experience will tell on that. But in terms of having an invisible editor--in this case an editor enforcing the "grammar" of user interfaces--at your side during UI design, it's invaluable. I think it was John Lennon who said that writing music is easy until you learn how, and the same can be said of making users rock at what they are trying to accomplish with your handiwork.