The Inmates Are Running the Asylum, by Alan Cooper, is a book about designing software in a way that actually solves the user's problems. It emphasizes the user's goals rather than software features. It explains the concept of "interaction design" and its importance before the actual implementation.
The book starts with examples of software design (or lack thereof) gone wrong. Whether it's a warship, an airplane, a car, a camera, or an alarm clock, when software is integrated with these machines, the product is often too complex to use or makes bad assumptions. The result can range from mere annoyance to fatal catastrophe.
"The key to solving the problem is interaction design before programming," writes Cooper. Interaction design first considers the goals of the user—in other words, what is the user ultimately trying to accomplish? Interaction design then considers how the software should behave and communicate to achieve the user's goals. Lastly, interaction design deals with the visual presentation—the interface—of the software to create something the user will like to use.
The book argues that software that isn't designed well is difficult to use and inefficient. Some people, however, excuse this fact, emphasizing the things the software allows them to do while downplaying the difficulty in achieving their tasks. The book calls these people "apologists," and they include programmers.
The other kind of people are "survivors." In Cooper's words, "They don't know much about computers or interaction, but they can see that there is a problem... They don't know there is a better way for the computer to behave, but they know that every time they use it, they feel a little smaller." Most people are survivors.
Again, the key to the solution is interaction design. Untrained programmers, however, should not be the ones to make the design. The book argues that programmers create interactions that follow the internal functioning of the software rather than how users think about the problem.
Yet users should never directly design the software or come up with the solution, says Cooper. Users are a valuable resource for information about the problem and for understanding their goals, but the software design, including its features, is ultimately created by an interaction designer.
The book describes a powerful tool used in interaction design: personas. The concept of a persona was developed by Cooper himself, and the premise, in his own words, is to "Develop a precise description of our user and what he wishes to accomplish." The description of a persona is so specific, they sometimes give him or her a name.
The book explains how to develop a persona, which involves doing lots of research and interviewing many users. From these data, a few personas begin to emerge and, ideally, only one is chosen and further developed. The idea of a persona—designing for a single kind of user—may seem counterintuitive, but the book does a good job of convincing you this is much more effective than trying to design a product for a general set of users.
In terms of interaction design, the book has many recommendations on how software should behave toward its users. Here are some examples:
Remember the user's habits, like common features and preferences.
Don't bother the user with confirmation dialog boxes; let the user undo any operation.
Keep the user informed on what's happening, before and after an operation.
Don't blame the user for errors; the software should try to fix these problems automatically.
Don't mix harmless functions (e.g., save) with deadly ones (e.g., delete).
For me, The Inmates Are Running the Asylum was eye-opening. It's made me realize the importance of up-front design. In a way, the book's message seems to go against Agile development, where spending too much time in up-front design is frowned upon. However, Agile practices are more focused on implementation, whereas the book discusses the design that occurs before the implementation. I believe this design is critical to the success of any product. If you don't get this right from the start, then what exactly are you building?
I highly recommend this book, and I liked it so much I'm now reading Alan Cooper's more detailed book on interaction design, About Face. I'm enjoying that one as well.