Book Review: Designing Interfaces
Published: November 6, 2006
Publisher: O’Reilly Media
Publication date: November 2005
Format: Paperback; 9.7 x 7.9 x 0.7 inches; 331 pages
List price: $49.95
I must admit that I am not a fan of pattern books in general—especially in the field of design. I’ve always felt they are excellent sources of inspiration if you’re crafting a quilt or stenciling a wainscot for your living room, but for more involved design activities, I’ve concluded they are too simplistic—perhaps even limiting. I suspect this opinion was informed by my architecture professor’s intensely negative reaction to Christopher Alexander’s A Pattern Language and A Timeless Way of Building when they were first published. Years later, when I learned that software engineers were enamored of Alexander’s books, and the emergence of software patterns had its basis in Alexander’s notion of design patterns, I was bemused and skeptical.
So, I surprised myself the other day by picking up a copy of Jenifer Tidwell’s Designing Interfaces: Patterns for Effective Interaction Design. Its cover promised that it would provide a “valuable resource for software developers, interaction designers, graphic designers, and everyone who creates user-facing software.”
I was even more surprised by the book’s rich information, the nuances Tidwell brings to the topic, and the book’s general utility. So, I presented a portion of the book to my boss, who is a seasoned electronics engineer and about as far removed from interaction design as one can get and still be in the field of product development. Imagine my continued surprise when he asked me to pick him up a copy.
My criticisms of pattern books in general center on their relevancy. Usually, they either describe ways of doing things that are so generic they have little applicability or they describe things so specifically that they restrict the possible solution space. Within the context of architecture, patterns have proven problematic—even Alexander has agreed that they are culturally bound.
Software patterns avoid the cultural problem as they focus on code rather than user-facing elements, but what about interaction design patterns? To what extent do they suffer from cultural binding? What exactly are interaction design patterns? Designing Interfaces answers this last question directly, if not exhaustively. However, as Tidwell intends the book to be a reference and not a treatise on patterns themselves, she does not address the former question.
The patterns Tidwell offers us in her book are not limited to just the Web or the desktop. Designing Interfaces provides an excellent reference for any designer focusing on interactions.
Because Tidwell designed the book as a reference, she has broken up her topic into discrete modules, each comprising a chapter. While Tidwell does address more general topics at the beginning of the book, by Chapter 3, she is delving deep into specific patterns. Thus, for the remainder of the book, there is little relationship between one chapter and another. One can read the chapters in any order and derive equal benefit from them.
Tidwell introduces each chapter with a summary of the patterns it includes and their relationships to broader concepts of interaction design. These introductory paragraphs help us to better understand her logic and let us decide for ourselves whether her choices make sense. Are these the only patterns that meet her criteria for specific interaction requirements? Are these the right patterns for the types of interactions she describes? As Tidwell herself is quick to admit, “[Each chapter] has an introduction that briefly covers the concepts those patterns are built upon. I want to emphasize briefly.” Her intention is to provide context for readers—whether they are already familiar with the interactions she covers or are investigating the patterns as a starting point for further consideration.
The book has nine chapters—plus a Preface, References, and Index—as follows:
- Chapter 1—What Users Do
- Chapter 2—Organizing the Content
- Chapter 3—Getting Around
- Chapter 4—Organizing the Page
- Chapter 5—Doing Things
- Chapter 6—Showing Complex Data
- Chapter 7—Getting Input from Users
- Chapter 8—Builders and Editors
- Chapter 9—Making it Look Good
In the Preface, Tidwell introduces the concept of interaction design, discusses the need for interaction design patterns, provides other sources of patterns, describes the structure in which she presents information in the book, and defines the book’s intended audience. For skeptics like me, the preface offers a welcome justification of the need for patterns—something I appreciated having before engaging with the details.
Chapter 1 was a pleasant surprise. Tidwell introduces twelve user behavior patterns—a provocative, ambitious, and in many ways, useful notion. As part of my ongoing effort to incorporate user-centered design into our development practice, I could point my development team to the notions of Safe Exploration, Instant Gratification, Changes in Midstream, and several other behavioral patterns. Interaction designers might disagree on the specific name for a particular behavior, but we can agree that the behaviors Tidwell describes constitute common goals that are desirable to our users and provide strong motivations for our design solutions.
Chapter 2 focuses on information and application structures. Here Tidwell presents eight different ways of organizing a screen to support different intentions and information architectures.
Chapter 3 discusses eleven patterns for navigation, signposts, and wayfinding, which are also information architecture topics. However, in this context, she focuses on how users navigate rather than the underlying structures themselves.
In Chapter 4, Tidwell moves from patterns that apply to an overall application to patterns for laying out a single page. Discussing ways in which one can lay out a page’s worth of interactive elements, she presents twelve patterns that range from Visual Framework to Liquid Layout.
Chapter 5 focuses on actions and commands. Tidwell offers ten patterns, ranging from Button Groups and Progress Indicator to Command History and Macros. This chapter is probably the least satisfying—only because the ten patterns Tidwell discusses represent just a handful of the many possible patterns designers have used.
Chapters 6 and 7 focus on interactions with specific elements such as information graphics and forms. Tidwell introduces the reader to the rich world of information visualization, along with common methods of solving data-entry challenges.
Chapter 8 presents nine patterns for working with text and other objects within an editor. Edit-in-Place, Magnetism—snapping to a grid or other elements on a page—and Paste Variations are all part of this discussion.
In Chapter 9, Tidwell concludes with patterns focusing on visual style and aesthetics, which would certainly present a challenge for any design book, and as in Chapter 5, Tidwell’s choices are not exhaustive. However, for a novice interaction designer, these patterns provide a good foundation in the art of visual design.
Organized by chapter, Tidwell’s extensive set of references offers additional resources for designers wanting to learn more about patterns, rationales for their use, and their origins. The References include links to Web resources where readers can find other sources of patterns. The Index provides an additional means of locating a pattern of interest.
As any good pattern book ought to do, Designing Interactions provides an excellent reference that offers a starting point for considering interaction design solutions. The overall organization of the book, plus the organization of each chapter with its introductory discussion of context, and the excellent examples of the patterns that Tidwell presents all make this book a useful addition to an interaction designer’s library.
For me, the initial chapters are the most interesting, as they have helped me in my attempts to communicate with my team members about my user population’s behaviors. Throughout the book, however, Tidwell presents nuggets of useful information—whether a specific pattern has utility for my current design problem or is a good reminder of possible alternative solutions.
Tidwell has taken the numerous examples that support the patterns from both Web and enterprise applications. These illustrative examples integrate nicely with the tightly written copy to create an easy to use and well organized reference.
In presenting the information about each pattern, Tidwell consistently uses the following format:
- title—a title for the pattern
- example—an example of the pattern from a real-world application
- what—a brief description of the pattern
- use when—the context of use
- why—the justification or rationale for the pattern, ranging from a few sentences to many pages
- how—the recipe for building the pattern, with more details of its salient parts
- examples—additional real-world examples of the pattern, with detailed explanatory captions
Writing & Copyediting
Tidwell’s style is breezy, clear, concise, and informative. In her “how” subsections, she provides directions similar to those you’d find in a cookbook. Where appropriate, she uses objective, neutral language to describe a pattern, its components, and its use. At other times—for example, when discussing variations of a pattern—she uses first person, “But be careful, I recommend…,” or second person, “You don’t need all the trappings of a document-centered desktop application to make Canvas Plus Palette work.” These shifts in language work well and help make the text readable, while at the same time making the book usable as a reference.
Tidwell has extracted her illustrative examples from a broad range of applications, operating systems, and Web sites, helping support her argument in the Preface that these patterns can apply in a variety of contexts.
Tidwell has, in many cases, peppered her introductory remarks for each chapter with their own illustrations. The examples of specific patterns throughout the book are excellent. Most are three-quarters of a page in width, and many occupy a page on their own. Even when screen shots are small, Tidwell has carefully considered how to maintain their usefulness as illustrations of key points. Full-color, rich renderings of the detailed screen shots have good clarity and contribute to the book’s aesthetic design. All illustrations have captions and many captions include significant amounts of text that amplify the body copy.
I really appreciated the book’s design. Its color scheme, use of fonts, and the formats of its titles and headings and subheadings for the patterns together create a tightly organized presentation.
A carefully considered table of contents not only lists the title of each chapter, but also includes a brief description of each numbered pattern, providing a browseable interface for a designer trying to find a needed pattern. In each chapter, following her introductory remarks, Tidwell provides a chapter table of contents, listing each of its numbered patterns, with brief introductory remarks, to assist designers in finding the patterns they need.
Finally, to structure the content, each pattern description includes its title, illustrations, and the subheadings I outlined previously—what, use when, why, how, and examples. I particularly liked the use of bold text in the pattern descriptions to call out alternative patterns.
The color-coded bleeds on the outside margins of pages are a nice touch that makes chapters easy to locate, even when the book is closed—as in any good dictionary or encyclopedia. Nit-picking, the choices of color for these bleeds are fairly arbitrary. While Tidwell suggests relationships among the chapters, the color-coding does not reflect those relationships. In addition, the use of the same colors for different chapters does not work well.
Over the past few years, I have come to appreciate the power patterns have as a shorthand that lets software engineers communicate their design intentions. Being able to discuss an Observer or Factory pattern with other engineers quickly moves the design discussion to more substantive concerns.
In a similar way, I have found my own choices among interaction design idioms may reflect more than just my idiosyncratic aesthetic. There appears to be a consistent structure underlying many of the solutions I’ve chosen, even if the details differ. Are my design solutions instantiations of more abstract patterns? Probably. Would my design choices have been easier if I had started by reviewing the broader landscape of patterns available? Possibly. Do the patterns Tidwell provides immediately suggest the appropriate solution for any of the design problems I face? Absolutely not.
To her credit, Tidwell is careful to remind readers that a book of patterns does not provide quick-fixes that obviate the need for doing proper design. A pattern alone will not provide the end-all solution. “Good design can’t be reduced to a recipe,” Tidwell points out in the Preface. She goes on to say, “No reference can substitute for good design judgment.”
While I remain unconvinced that Alexander’s patterns provide an Esperanto equivalent for the language of architecture, I am less skeptical of the utility of patterns as a means of efficient communication among interaction designers. In Designing Interfaces, Tidwell has done a great service to the design community by presenting nearly 100 patterns in a well-crafted reference.