Book Review: Designing Interfaces
A user interface can be loosely defined as the point where a person interacts with a machine. Currently, that interaction point can be a laptop or a smart phone, quite different types of physical presentation space. A solution might look fantastic on a laptop, but not work on smart phone's browser, causing the user to have to scroll around on the page. What we need is a comprehensive collection of interface patterns to use as a guide. Designing Interfaces is that guide.
Designing Interfaces 2nd Edition,
Author: Jenifer Tidwell,
Publisher: O'Reilly 2010 527 pp.
Level: Introductory to Advanced
The first edition of Designing Interfaces provided an excellent resource for someone designing, coding or testing user interfaces, but did not include interface patterns for mobile applications or social media (that was 2005, just five years ago). This new edition does include those topics and shows how to leverage the new presentation spaces effectively. The objective of the individual who designs these interaction points should be to keep the input of the person as minimal as possible, but maximize the output from the machine and software. Effectively designing interfaces requires bringing together three talents: functional understanding of what needs to be accomplished, artistic understanding of basic style (use of color and 'eye' appeal), and the technical ability to produce the code to bring the first two together and give 'life' to the interface.
Designing Interfaces is written from a functional design perspective, covering how to incorporate specific design patterns into a meaningful application, and includes references to extend that design effort all the way to the coding level. Although the book is essentially introductory in nature, even the most experienced interface designers can find new and useful techniques and ways to vary their design approach.
Organized in a subject-matter outline, Designing Interfaces can be read front to back, like a school text book. But it also works well as a reference guide so that readers can brush up on specific subjects when needed. The book is not a comprehensive study of user interfaces, a fact the author admits, but it does offer a nice overview of the current state of the art. The author tells readers what interface to use, why and how to use it, and provides examples and pitfalls to avoid. Tidwell does a nice job of noting when there are some 'assumed' or 'expected' functions, such as cut-and-paste and drag-and-drop. Where appropriate, the author has also included a section on other libraries or sources that provide additional examples or considerations.
Chapter 5 provides a lengthy discussion of lists, addressing different types of lists, ways users could interact with them, and various presentation solutions. The section taught me that I'd been using the same set of solutions and they weren't always particularly eye appealing. Chapter 10, Going Mobile, starts by showing a set of easy-to-use presentation patterns, and ends with a discussion on how to get a consistent branding effect between a mobile application and a web site. Every interface designer, tester and coder should read the final chapter, Making It Look Good: Visual Style and Aesthetics. This chapter explains how to make user interfaces appeal to the end user with proper use of color and good design.
There are a few shortcomings to the book, some of which the author alludes to and some she comes right out and admits. For example, the book doesn't really make any recommendations for applying the existing body of knowledge to some of the more recent emerging patterns. Also, it doesn't address internationalization; making an application suit people in multiple countries can be more difficult than it first appears. The last item I'll pick on is that the 'other libraries' I mentioned before seem to favor about four major libraries, but if you run a search engine for 'ui-patterns' you'll see that the body of work is significantly larger.
Overall, Designing Interfaces is an excellent resource for anyone designing interfaces that allow people to interact with machines, and it also works as a good resource for coding or testing interfaces. If you're having an issue with an interface, or a piece of that interface that just doesn't seem quite right, this book might be the tool you're missing.