Designing Interfaces is a valuable source-book of modern user-interface design, whose pattern approach transcends the operating system-specific references of the 1980’s and 1990’s. Designing Interfaces is much less technology-specific than most O’Reilly books, and replaces the jargon of Human-Computer Interaction with clear language and well-chosen examples. This means that instead of targeting a specific breed of alpha geeks, this book has wide appeal for software developers.
There was a time that application user-interface design was easier, in the sense that it was massively constrained by what you could draw on a dialogue box in a particular environment, and by books such as Macintosh Human Interface Guidelines. Since then two things have changed: there are now many more graphical user-interface platforms in widespread use, such as those on mobile telephones and digital cameras, and much software has shifted from the PC desktop to the web page, where there is much more variation in interaction design. This much variation and choice, needless to say, is plenty more rope for the unwary software developer to hang himself with.
In principle, Human Computer Interaction is something of a solved problem, so the introduction of web applications should not change that. However, the jargon and high-level abstractions of HCI are rarely accessible to web application developers. Things improved a lot once people realised that it is better to write patterns instead of guidelines. Jenifer Tidwell did this, among others, and her original Common Ground pattern collection was a clear step in the direction of Designing Interfaces, whose web site is now one of several useful online pattern repositories:
These pattern collections are now targeted at software developers, and especially web application developers, rather than the clear academic focus of earlier collections. The Designing Interfaces book achieves this remarkably well, with a clear structure that starts each chapter with enough context and explanation of the underlying principles to properly introduce the subsequent patterns. These explanatory sections also serve as mini-introductions to HCI concepts, adding depth to the book for software developers interested in broadening their multi-discipline knowledge.
The core of the book, of course, is in the patterns themselves. These are so clearly written that the what-when-why-how of each one seems obvious when you read it, which leads you quickly on to the bullet lists of how to implement each pattern and on to the examples. It is these examples that make the book what it is: their huge variety and number, clearly printed in full-colour, are why you need the book and not just the web site. The examples go beyond the single obvious example web site to show variations, in desktop application and hand-held device user-interfaces. This allows side-by side comparison, and communicates each pattern extremely effectively.
Designing Interfaces book is now recommended reading for web application developers here.