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:
- Preserves structure;
- Keeps you doing one thing at a time;
- Takes the Whole into account at each step;
- May be repeated tens of thousands of times.
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.