PatternLanguage

Wikis are sometimes said to create a pattern language. “Design Patterns” have been quite a hype in software development in the late nineties. What is a “Pattern Language?”

The term “Pattern Language” was introduced by Christopher Alexander in his book The Timeless Way of Building, ISBN 0-19-502402-8 (alternate, search). In the book, he argues why architects need a pattern language to design and build buildings that have “the quality without a name.” Only with this quality will the buildings “live.” Here is a short summary, largely based on chapters 14 and 16:

  1. The pattern language is made of patterns and their relations.
  2. A pattern describes a context in which forces arise, a problem these forces cause, and a spacial configuration (since he talks about architecture) allowing these forces to resolve themselves – a solution.
  3. The patterns have to be precise.
  4. It must be possible to draw the spacial configuration.
  5. The relations between patterns can be drawn, too.
  6. Patterns build upon each other. There can only be a handful of direct sub-patterns, however, such that we can always visualize it.
  7. The measure of the quality is how you feel about the various patterns and the things they let you express. This is important because in the end it is all about the quality without a name.

Developing a Pattern Language

How do we go about it?

  1. Think of a particular aspect that makes you feel good about whatever subject area you are working on.
  2. If you are thinking of a goal you want to achieve, it is not a pattern. You might want to document your goals and values somewhere, so your efforts are not wasted!
  3. The same is true for mistakes you want to avoid.
  4. When your words describe what you like, that is not enough. You must prescribe what you want. Use the imperative. The precise wording will help us weed out the patterns that fail. These need to be discarded or fixed.
  5. Some patterns are mutually exclusive. That’s ok.
  6. Patterns build upon each other. Make sure the pattern graph can be read from the top to the bottom, going from the general to the particular.
  7. Patterns should be short. Perhaps one of your patterns need to be split.

Collaborative aspects:

  1. Patterns express personal values.
  2. Hopefully patterns express cultural values.
  3. If you keep disagreeing with people, create your own pattern language.

Why a Pattern Language?

Why create a pattern language instead of building a vocabulary? A vocabulary helps you express complex ideas concisely. As terms build upon terms, the terms develop relationships and thus an entire ontology can be built. The ontology acts as knowledge representation. A pattern language transcends this, however. Instead of just being descriptive a pattern language is also prescriptive. It is a collection of rules of thumb that are adaptable to a wide range of situations, helping you to make decisions as well as enabling you to make value judgements.

Building a pattern language takes more effort. It is also riskier, since your prescriptions can be wrong. This allows you to apply the scientific method, however, which is a boon. The easier it is to prove something wrong, and the longer it withstands such attempts, the more trustworthy it is. Thus, the pattern language has the potential of not being “applicable” like observations often are, but “tried and true” like other rules of thumbs.

Note, however, that patterns don’t have to be “tried and true.” At least in Christopher Alexander’s book no empirical evidence is required. All he asks for is your immediate gut reaction: feelings. If you feel it, you will know. This is all about “the quality without a name.”

In other words: Patterns are expressions of what one sees at work in a system, and what one can use in a system. Optimality is not essential; it comes about through refinement, and that only happens through use. Stating a pattern is the first step to improving it.

Limits of a Pattern Language

Patterns are like vocabulary, but better: Even more powerful. Even more expressive. But they are no replacement for people skills. They are no replacement for common sense. Patterns and vocabulary are good for discussion amongst peers because of they are expressive. But that’s it. We don’t throw them at newbies or outsiders. We don’t reach out to people by throwing patterns at people.

Sometimes we see patterns used instead of an argument in a discussion. “You should FooBar!” for example. And indeed, patterns are often written as a prescription: Do this! Do that! But we don’t do that because patterns are tried and true. We don’t do that because patterns are the law. We do that because we want to be precise. This way, they are easy to test. If you do this or that and it works, great. If not, the pattern must be dismissed or refined. This is how we progress.

Patterns may be useful to other people. But it is for them to test whether the patterns apply to their situation. And when we use a pattern in an argument, we must not forget that the pattern itself is not an argument. We still have to argue why the pattern should apply in the first place.

Discussion

I think this page gives a good account of the book. But the book is only something like a snapshot on a specific stage of development of the PatternTheory which is larger. PatternLanguage means primarily that a single pattern is not enough, although we are save to assume that it is a solution to a problem. But to apply patterns usefully, you need the big picture of all other forces and system elements, especially other patterns that may be better alternatives or nessarily elements for a pattern to work.

For example, if you have a transportation problem, a car may be a solution. But the context is crucial. There are alternatives like byke, ship or airplane. If the distance is 5000 miles, then a car won’t do, usually. A car needs fuel stations for support, and you need fuel production and transportation systems. Perhaps in some situations, in a desert, for some people, a camel is the better solution to their problem.

So this is what PatternLanguage is all about, to suggest a framework to create complete system pictures and sound foundations for decisions.

But the larger picture of PatternTheory is that it deals with the phenomena of life and how they grow and develop. This includes a kind of system theory (theory of centers and wholeness), empirical knowledge about the properties of living systems and possible transformations, of course patterns and pattern languages as part of processes of unfolding systems. And how we, as humans, can be in resonance with that and be happy and creative in a very down-to-the-earth sense.

Languages:

The same page elsewhere:
MeatBall:PatternLanguage