Copyright: 2007

Publisher: Wiley Publishing

ISBN: 978-0-470-08411-3

This is the third "edition" of Cooper's excellent book on human computer interaction design.  Cooper's primary tenet in these books is that software is poorly designed, primarily because programmers don't understand what users need and users don't know how to articulate those needs.  He argues that designers are needed as intermediates to translate what users really need into terms that programmers can program to. 

Why is software bad?

The authors outline three primary reasons why software products are bad:
  1. Ignorance about users
  2. Conflict of interest (Human needs vs. Construction needs)
  3. Lack of process for understanding human needs
Throughout the book, one of the things I was disappointed in was the attitude of the author's towards programmers.  Keep in mind that I am a programmer by profession but I felt that the authors are out of touch with reality.  Many times throughout the book the authors claim that the reason that certain designs are not implemented is because programmers are inherently lazy. 

The reality is that most programmers that I know (including myself) love creating great designs.  We take delight in creating software that is usable and even enjoyable to use.  The real issue is that great designs are expensive.   The collaboration that must take place between product managers, users, designers and developers is incredibly important and complex. 

The fact that Cooper and company wrote a 600+ page book on interaction design and only included 3 pages to collaboration speaks volumes of their understanding of the real world of development.  (If you want to find them, the three pages are in the Afterword and there is only one paragraph devoted to the collaboration with developers who seem to be the biggest obstacle to good design according to the authors!)

What could make software good?

I will get off my soap box after this but after reading this book you might get the impression that the only way you will ever get a good design is if you hire Cooper and company to design your software for you.  In fact Microsoft, Apple and Adobe would all greatly improve their bottom lines if they would just listen to Cooper's ideas about design. 

Cooper makes frequent references to the "idiocy" of certain designs and says we should not "force" users to change the way they think in order to use our software.  It seems strange that Cooper wants to treat users so gently but calls programmers idiots.  As for forcing people to change how they think, I daresay none of us thinks twice about parking our car in the garage alone for the night without washing it, and yet 100 years ago you would be frowned upon for putting your horse away without brushing and watering.  Changing our way of thinking is not always a bad thing!

Research

Cooper does a good job of explaining how to do the research that will lead to good designs.  I thoroughly enjoyed the first half of the book which dealt with this important issue.  He points out that qualitative research is the important type of research to conduct.  You learn:
  1. Behaviors, attitudes and aptitudes
  2. Domain (context of users)
  3. Vocabulary and social aspects
  4. How existing products are used
Some types of interviews are:
  1. Stakeholder interview
  2. Subject matter expert
  3. User / Customer interview
  4. Ethnographic interview
  5. Literature review
  6. Product prototype or competitive audit
Cooper encourages the use of an intriguing concept called the "persona" in modeling users and user behavior.  By developing archetypes, you can reasonably extrapolate the goals and intentions of your expected users.  This is different from stereotyping in which you take the traits of one individual and paint broad swaths of population with that brush.  Instead you take the salient points from a population and develop a few characterizations that cover the range of possibilities in a manageable sample size.

How do people think?

Don Norman, another influential author in the field of product design, explores three levels of cognitive processes:
  1. Visceral - immediate, visual, sensory
  2. Behavioral - middle level every day behavior
  3. Reflective - conscious consideration and reflection on past
Cooper points out that one of the major goals that users have is to "not look stupid."  Many computer users who are not experts at computers get frustrated and upset when things go wrong with software.  This speaks to the visceral reaction that people have to feedback they get from the software. 

Harmonious Interactions.

The idea of harmonious interaction is to design a user interface that flows smoothly.   Users are not interested in using our software as much as they are in accomplishing their goals.  So the less the user has to interact with your software to get their job done, the happier they will be.  A few points that Cooper makes about harmonious interactions is:
  1. Design for the probably: Provide for the possible.
  2. Provide comparisons between choices (don't make them choose one then the other)
  3. Reflect status of the program and the data
  4. Optimize for performance; accomodate latency.

You should always ask yourself, how does this help the user organize the information?  More options does not always equal easier to use... in fact is usually means the opposite.  Any time you can figure out ahead of time what the user might want, you should make that effort.

Specifics

If you are interested in understanding in-depth the various user controls that are available and how they can and should be used, the last half of this book is for you.  Cooper does a great job of thoroughly covering these in detail.  I strongly recommend buying this book and keeping a copy of it in the development lab for developers to thumb through and read.

Conclusion

Despite the reservations I have about Coopers attitude towards programmers and some of his condescension towards the designers are Microsoft, Adobe and Apple, I think this is a pretty good book.  I don't think this should be the "be all end all" for anyone interested in human computer interaction design, but it's a good starting point for someone interested in the topic.