Pattern Sequences

At EuroPLoP 2001 we had a session on pattern sequences. It started with a small exposition of ideas from Alexander, but quickly segued into stories from experience. There were particularly powerful contributions from AlanOCallaghan and RebeccaRikner?.

NeilHarrison and JimCoplien decided to get something started here that recalls and captures that experience. If you have something positive to add, please add it. If you have a criticism, add it, too, and we'll let the page re-factor itself to convergence over time. Our wish is that the page be a practical starting point for people who want to add sequences to their pattern languages. Maybe we can have philosophical discussions on another page.


We pattern folks have gathered patterns, but have not gathered sequences. Nevertheless, the sequences were there all the time, we just didn't notice. And we were registering them unawares.

After we got a critical mass of patterns (in an area), we could arrange them in a language (static), and we could trace sequences through the language. The sequences we trace may well have come from the sequences that lodged themselves in our brains earlier.

Comparison to Patterns

Note that patterns happen in much the same way. We didn't notice patterns, either. After the fact, the patterns began to emerge. But sequences are a level beyond patterns; they are even harder to immediately perceive. You may be able to get at them only through patterns -- like moving leaves make wind visible to us, patterns make the sequences visible.

Now, think about the master builder -- he doesn't use patterns consciously, nor does he use sequences consciously. The patterns just flow from one to another. See comment below under Architecture.

Comparison to Piecemeal Growth and Iterative Refinement

The idea is that you build beautiful systems using the fundamental process: order comes from the process that creates the order. Process is key to making life in things -- a point we structural people often miss in patterns. So we go through a process trying to preserve structure while creating structure. Systems grow by a process of unfolding: step-by-step adaptation with feedback. And unpredictability, in an awareness of the Whole.

However, the fundamental process cannot work on a human scale without some kind of cognitive guide that is built on experience and which can kind of foresee some of the centers that must be built. That's what patterns are. Alexander says: that a pattern is a generic center, and that the very building of a pattern is itself an unfolding process.

If unfolding is important, how do you know what order to unfold things? The sequence is crucial (slide 9). You want a smooth, structure-preserving unfolding, without the torture of design. He gives several examples including the Japanese tea house.

So, what a sequence does is:

A sequence is dynamic: it adds dynamics to pattern languages. Sequences are where generativity comes from.

Comparison to Learning Natural Languages

So sequences give the pattern language life. This is the same as the way babies learn to speak and understand. They learn sequences. They start with standard sequences, then move to creating their own sequences. And the sequences create the grammar. And they do it without thinking about it.

Application to Software Development

We're still working on this (help us out), but we think there are some far-reaching things to be said. It could be a different way of looking at software development. A couple of possible sub-points below.

Architecture: "Systems Thinking"

So what makes a good (software) architect? Someone who can visualize the entire system; the entire whole. A good architect must have good command of the sequences the go into the system, and must have them internally (you can't think about the sequences and think about the whole at the same time -- so the sequences must be part of you.) This has ramifications about how people become architects.


EditText of this page (last edited March 10, 2002) or FindPage with title or text search