While this is not specifically a computer-oriented book, it is nonetheless a must-read for anyone who designs and develops computer software. I have learned more about design, especially user interface design, from this book than any other book that I've read--and like I said, the book is not even about computers. Instead, this book is about just what the title states: "everyday things" and how they are designed. The author discusses washing machines, telephones, doors, automobiles, calculators, light switches, watches, and yes, even computers. Beyond discussing the utility and aesthetics of the designs themselves, the author digs into how human beings feel and react when faced with flawed designs.
That may sound boring, but I find The Design of Everyday Things enlightening, fascinating, and a lot of fun. In my first reading of this book, it was easy to get caught up in Norman's design critiques, saying to myself "Ha! What an idiotic design! What were they thinking?" Upon further reading and reflection, though, it became clear to me that many of the design flaws are easy traps to fall into, and that I've no doubt fallen into similar traps when designing user interfaces for software. It's easy to be an armchair designer.
Indeed, in the Preface, the author says, "...even the best-trained and best-motivated designers can go wrong when they listen to their instincts instead of testing their ideas on actual users. Designers know too much about their product to be objective judges: the features they have come to love and prefer may not be understood or preferred by the future customers." Later he adds, "Rule of thumb: if you think something is clever and sophisticated, beware--it is probably self-indulgence."
That said, some of the critiqued designs are so ridiculous that I had a hard time feeling any empathy with the designers of such monstrosities. We can't forget, though, that software developers are designers too. Every day as we develop software we are designing, no less than the designer of a phone or light switch. Even when we're working from someone else's design, we make myriad small design decisions that the original design could not have accounted for. I call these "construction-time design decisions." These decision effect other people, be they end users or other developers, in real ways.
Design critiques are not the only thing in The Design of Everyday Things. Mixed in with the critiques is a more theoretical narrative that provides a framework for thinking about design and human thought and behavior. To his credit, the author manages to avoid making this material too academic or bogging it down with esoteric details. While I always remember Norman's critiques of various objects as I use them in everyday life, the real lasting impact of this book for me lies in the concepts he introduces in this "theoretical" material, especially the key concepts of affordances, constraints, mappings, and feedback. While these concepts apply to the design of all kinds of objects in the physical world, they apply equally, or even more so, to the virtual world of the user interface.
If you are interested in learning more about design and becoming a better software developer or web designer, I recommend putting this book near the top of your list.