PatternsInAnthropology

Most software designers ascribe the origins of the contemporary pattern discipline to the building architect Christopher Alexander, whose works (e.g., [BibRef-Alexander1977], [BibRef-Alexander1979]) are often cited as the inspiration for software patterns. However, patterns have broader and much older roots than Alexander's work, finding expression in mathematics and the natural sciences. One of the most interesting, and certainly most relevant to our interests here, is the work on anthropological patterns by early anthropologists like A. L. Kroeber [BibRef-Kroeber1948].

Kroeber writes:

Patterns are those arrangements or systems of internal relationship which give to any culture its coherence or plan, and keep it from being a mere accumulation of random bits. They are therefore of primary importance. ([BibRef-Kroeber1948], p. 119)

He talks about several levels of patterns. Universal patterns are those that fit a general culture scheme that more or less fits all cultures. Systemic patterns talk about broad but more normative groupings around collections of beliefs, behaviors, alphabets, or economics Of systemic patterns, Kroeber writes:

A second kind of pattern consists of a system or complex of cultural material that has proved its utility as a system and therefore tends to cohere and persist as a unit; it is modifiable only with difficulty as to its underlying plan. Any one such systemic pattern is limited primarily to one aspect of culture, such as subsistence, religion, or economics; but it is not limited areally, or to one particular culture; it can be diffused cross-culturally, from one people to another. . . . What distinguishes these systemic patterns of culture--or well-patterned systems, as they might also be called--is a specific interrelation of their component parts, a nexus that holds them together strongly, and tends to preserve the basic plan... As a result of the persistence of these systemic patterns, their significance becomes most evident on a historical view. ([BibRef-Kroeber1948], pp. 120-121)

This description is of course reminiscent of pattern languages: descriptions of systems, or "wholes", that grow piecemeal from tightly knit patterns. In this book, each pattern is part of a pattern language, a systemic pattern that is part of some whole. It is the whole and the interweaving of individual patterns that corresponds to culture--not just a loose collection of individual patterns.

Our everyday vernacular use of the word "culture" most closely corresponds to what Kroeber calls total culture patterns that give a culture its identity, and to styles that reflect further localization and specialization. Total culture patterns might be what distinguish C++ developers from Smalltalk developers -- not only from the perspective of language, but from consideration of the normative behaviors, beliefs, and practices that relate to the languages and environments of these languages and their associated technologies. Kroeber talks in particular of how style changes over time (for example, clothing style).

Patterns also figure strongly in isolated examples of more contemporary organizational literature. Senge talks about patterns of organization in Chapter 6 of [BibRef-Senge1990]. There are other examples in more obscure literature as well. Our point here is that patterns are not just about software or even building architecture, but have deeper and perhaps even more suitable roots in the human sciences. That is the approach we have followed in this book: not just to capture ideas in pattern clothing, but to apply the systems principles of the human sciences to express the structure and practices of a culture that has been the topic of our study and experience, that of software development organizations.