Ever been irritated by a clunky piece of software? Ever spent an age hunting through menus for something you know is there, but just can't find? Ever been told the data you entered is invalid, but been given no clue as to what valid data might be? Ever sat waiting in front of a silent machine, wondering if it's busy, or just dead? If you have, this book tells you where the programmers went wrong. (And if you haven't, you obviously don't use a computer at all -- so how are you reading this?)
Johnson illustrates how to design and implement good GUIs by giving examples of mistakes in GUIs, explaining why they are mistakes, and explaining how to do it right. The mistakes range from the very small details -- fonts, alignment, and so on -- to the very deep -- overall usability design and the psychology of responsiveness. The whole book is well written, with clear examples enlivened with illustrative anecdotes and cartoons.
I realised just how used to bad software I have become, on reading the Appendix about Johnson's ordeal of installing Eudora Pro. Each of the stumbling blocks on the way is described, along with how to solve it, but I kept waiting for the actual "ordeal", the real problem, because actually it sounds just like a very ordinary installation experience. And that, of course, is the whole point.
In some ways, this book has just increased my frustration quotient -- it has further sensitised me to problems, and made me realise just how simple it would be to fix them. Any programmer developing a GUI should read this, and any manager running a project that includes a GUI should definitely read this.