Top Usability Books for Programmers
Usability is probably one of the less thought about area for a programmer. Most programmers would strive hard to build a robust product with Agile practices and clean code. However, the focus on usability leaves much to be desired. It is a well known fact that a good user interface design can spell the difference between acceptance of a software product and its failure. If the end users do not like the user interface then the product has little chance of success.
In an interesting discussion on Agile Usability group, Robert Gravina confessed that he too has been a victim of paying less attention on UX, however he would like to know about good books on the subject and refactoring techniques to convert a not-so-good UI to something better.
Tim Wright mentioned the book Designing Interfaces, which talks about user interaction patterns. He quoted the book as a good read to help in refactoring the existing UI. For usability, Tim recommended Usability Engineering and The Design of Everyday Things.
Robert praised Designing Interfaces and added,
I read through Designing Interfaces over a week or so and found it *excellent* and was just what I was looking for. The main reason for this is that the author has created a catalog of patterns for UI's spanning web, desktop and mobile, much like we have design patterns for software.
Another book quoted by several people in the discussion was About Face 3. According to Tim, the book gives good hints for conventional WIMP (windows, icons, menus, pointers) interface, and the ideas are relevant for websites too. Jared Spool added Designing Web Interfaces to the mix as this book specifically talks about web based applications.
Abby mentioned that with the advent of rich technologies like WPF and Adobe Air, the distinction between desktop and web applications is starting to blur. This helps in not being tied to the traditional windows conventions. He recommended, Designing the Obvious as a good book on the subject of web application design.
Peter Boersma suggested, Communicating Design as his favorite on the subject. Austin Govella , mentioned Don't Make Me Think as a perennial favorite which helps look at UX in a simple, concise way. Likewise, Nancy Frishberg recommended Designing From Both Sides of the Screen . The advantage of this book is the fact that it walks through the interaction between a designer and a developer. Another book which made it to the list was Joel on Software's UI Design for Programmers.
Peter Boersma added that though reading through a good book is valuable, however the key lies in practicing it. He recommended having a workshop
I'd try and arrange a workshop where you show the steps one could take to design a good/better interface (user research, design, evaluate), practice it, critique it (honest feedback, good and bad points) and have people collectively write down the lessons learned (on a Wiki or something).
Apart from the books, Tim Wright mentioned a couple of approaches to understand the user behavior,
I prefer Constantine & Lockwood's approach - it's based in use case models and use cases to define the interaction necessary for a user to achieve a goal. The models used are quite abstract and, therefore, harder to explain. However, the power you get from the abstraction is quite extraordinary (and once you "get it" they're easy and fast to use too).
The more well known methodology is Cooper's Personas and Scenarios. It has the advantage that the models are quite concrete and easy to understand and use.
Would you like to recommend other important UX books to the Agile programmers?
Tim Wright (the one quoted above :)