[Part 2 of a series on Patterns. Parts of this post excerpted in part from my work in chapter 1 of Designing Social Interfaces: Principles, Practices and Patterns for the Social Web]
A brief history.
The notion of using interaction design patterns in the user experience design process follows the model that computer software programming took when it adopted the concepts and philosophies of Christopher Alexander. Alexander, an architect, wrote the book, A Pattern Language (1977) and A Timeless Way of Building (1979). In his books he describes a language, a set of rules or patterns for design, for how to design and build cities, buildings and other human spaces. The approach is repeatable and works at various levels of scale.
Alexander says that, “each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.”
In addition to developing this language of elemental repeatable patterns, he was concerned with the human aspect of building. In a 2008 interview, he says that his ideas “make them (homes) work so that people would feel good.” This human approach and concern for the person (as user) is part of what has appealed to both software developers and user experience designers.
The idea of building with a pattern language was adopted by the computer software industry in 1987 when Ward Cunningham and Kent Beck began experimenting with the idea of applying patterns to programming. As Ward says, they “looked for a way to write programs that embraced the user, where users felt supported by computer program not interrogated by the computer program.”
This approach took off and in 1995 the book Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (known as Gang of Four) was published.
In 1997, Jenifer Tidwell published a collection of user interface patterns for the HCI community based on the premise that capturing the collective wisdom of experienced designers helps educate novice designers and gives the community as a whole a common vocabulary for discussion. She specifically called out that she was attempting to create an Alexandrian like language for interface designers and the HCI community. The evolution of that site and her work became the book Designing Interfaces, published in 2005 by O’Reilly Media.
The book, Design of Sites, by Douglas K. van Duyne, James A. Landay and Jason I. Hong and published in 2002, was one of the first to explicitly detail a collection of patterns for use by designers. Other, more specialized books, like Designing Web Interfaces, by Bill Scott and Theresa Neil, about rich internet applications, Designing Gestural Interfaces, by Dan Saffer, Designing Social Interfaces, by Erin Malone and Christian Crumlish and the latest book by Peter Morville and Jeffrey Callender, Search Patterns, exemplifies the spread of resuable design concepts into the design practice.
Several others published collections on the web including Martijn Van Welie, a long time proponent of patterns in the interaction design realm, which in turn inspired my team at Yahoo! to publish portions of our internal interaction pattern library to the public in 2006. The Designing Social Interfaces wiki has a whole list of online collections.
The notion of having a suite of reusable building blocks to inform and help designers develop their sites and applications has gained traction within the interaction design community as the demand for web and mobile interfaces has become more complex. When the web was mostly text, there wasn’t a whole lot of variety to how a user interacted with a site and the toolkit was small. The complexity of client applications was difficult at best to duplicate online. But that was then.
Now, whole businesses and industries rely on easy-to-use web based software to conduct their business. There is more need than ever to have a common language for designers and developers. And as the web is the OS and becomes integrated into every facet of interactive experiences, it is important to put a stake in the ground around just what those pieces should be and how they should and shouldn’t behave.
Next up: Identifying Patterns