I starting thinking about UI Patterns (aka HCI Patterns, UI Design Patterns, Interaction Design Patterns) and why they are a extremely effective design tool. Basically design patterns are a set of knowledge and examples that helps designers to make the right design decisions and prevents the designer from making the same mistakes over and over again. They are a better design technique than human interface or user interface design guidelines because they provide context to the specific design rule. Design Patterns tell the designer the when, how and why to use each solution.
Why do Design Patterns Work?
Design patterns work because they conform to bounded rationality. Bounded rationality is "that property of an agent that behaves in a manner that is nearly optimal with respect to it goals as its resources will allow"(Simon, 1957 – as quoted on http://ai.eecs.umich.edu/cogarch0/common/theory/boundrat.html). Human behaviour is controlled by bounded rationality. We do not act in an optimal manner, though we do behave in a locally optimal manner. The process of design is a great example of where decisions are made that are locally optimal (see H. A. Simon’s Sciences of the Artificial, Chapter 6).
Design patterns are effective because they allow designers to make locally optimal design decisions. The patterns do not have to be the optimal solution for every possible user or situation. The patterns need to be locally optimal, that is, they need to be optimal as part of the design process, and they need to be optimal for most users. So design patterns are supported by the theory of bounded rationality as a effective tool for making design decisions.
Finding Design Patterns
There are a number of resources for design patterns. For designing Web sites and interactions I highly recommend The Design of Sites: Patterns, Principles and Processes for Crafting a Customer-Centered Web Experience by van Duyne, Landay and Hong. It is one of the best books for process and examples I have seen in a while. Other resources include: