First, read the patterns. We have attempted to put them in a logical order; in the order of a typical sequence through each of the languages. So begin by reading them in order.

The Form

We use Alexandrian form for our patterns: a stylized format for organizing the important components of a pattern. The body of each pattern starts with a statement of the context in which that pattern applies. A problem may arise in that context; the problem description comes next in the pattern. Then the pattern elaborates the problem with a description of the forces that define the problem. Last, the pattern presents a solution that we have validated across a spectrum of development organizations, followed by a rationale that describes why you might believe the pattern should be successful.

Understanding the Models Behind the Patterns

In HowThePatternsCameToUs, we gave a detailed description of the methodology and research technique behind the pattern. We told you that section was optional reading. Nevertheless, it's important to go into the rest of the book with some level of understanding of the source of the patterns, so we give you a summary here.

All of these patterns came out of empirical research. Most of the patterns were distilled from observations gleaned from organizational analysis exercises we conducted on dozens of organizations worldwide. These exercises were used to build organizational models. The role is the basic building block of these models. Every organization has roles: developer, manager, systems engineer, tester, and many more. Roles get their work done by interacting with other roles, and much of the success of an organization owes to how effectively roles can exchange information and work together. Each model attempts to capture these interactions between roles.

We gathered the data for the models in a role-playing exercise where each participant tracked the interactions between their role and other roles in the model as the role-play progressed. We used CRC cards -- a technique borrowed from object-oriented design -- as the tool for capturing these interactions.

These data were fed into a tool to visualize the interaction structure of a given organization. We discovered many of these patterns by looking at diagrams of the communication structures between roles or individuals in the organizations. It was easy for us to notice important features and anomalies in these pictures, and it will be easy for you to do so as well.

For example, consider the following organizational model (called a sociogram) that we cite frequently in this book: