Process Anda Thing

"The pattern is, in short, at the same time a thing, which happens in the world, and the rule which tells us how to create that thing, and when we must create it. It is both a process and a thing; both a description of a thing which is alive, and a description of the process which will generate that thing."

-- ChristopherAlexander, TheTimelessWayOfBuilding, p.247.

Also, p.255, ff.

"Now try to discover some property which is common to all the ones which feel good, and missing from all the ones which don't feel good. (...) This property will be a highly complex relationship. (...) the pattern is an attempt to discover some invariant feature, which distinguishes good places from bad places with respect to some particular system of forces. (...) one you discover a fluid field of relationships like this, you must redefine it, as an entity, to make it operational. (...) We must make each pattern a thing so that the human mind can use it easily and so that it may take its part among the other patterns of our patterns languages. For the same reason you must be able to draw it. If you can't draw a diagram of it, it isn't a pattern. ... A pattern defines a field of spatial relations, and it must therefore always be possible to draw a diagram for every pattern."


Sure, a pattern is both a ProcessAndaThing. However, Alexander was wrong when he said that if you can't draw a diagram of it, it isn't a pattern. Rather, the statement is meaningless.

Consider the diagram of Self-Governing Workshops and Offices in ApatternLanguage?. It is a good example of a pointless diagram that does not really illustrate the pattern. The picture on page 398 illustrates the pattern much better. Alexander often draws pictures that do not communicate, and I think he does it because he decided that every pattern should have a diagram.

If you try hard enough, you can draw a picture of anything. Love? Draw a heart. Peace? Draw a meadow with a stream through it, or a picture of Begin and Sadat shaking hands. These are no worse than Alexander's diagram for Self-Governing Workshops and Offices. The question is not whether you can draw a diagram, it is whether you can draw a diagram that helps people learn the pattern. If you have to know the pattern to interpret the diagram, the diagram doesn't help. The diagram needs to be more than just a symbol that represents the pattern.

In fact, Alexander was wrong when he said you need a diagram to make something be a pattern. What he should have said is that you need an example to communicate a pattern. If it is pattern, there should be lots of examples. However, most examples don't communicate a pattern very well. There are too many extraneous details. But a good example cuts through to the heart of the pattern. Sometimes Alexander communicates his examples though a picture, sometimes through a story, and sometimes through a diagram. Most patterns of buildings can be communicated through diagrams, but not all, and there are a lot of software patterns that are just as easily described with code as with diagrams. OMT or UML just describes a piece of most of the patterns in DesignPatterns.


I always remember that Alexander's work covered recurring themes in architecture, not software design. Here are some forces I see that make it hard for us to equate software patterns with architecture patterns:

Therefore, in software we need more hand-holding. Elements like pictures, source code, class diagrams, interaction diagrams, and stories are all very good ways to help the reader of a software pattern get its essence. However I also think that we can get a lot from the form that Alexander uses for delivery in his own work. In ComponentDesignPatternsFormat I recently asked readers what they thought of having all CDP patterns presented in AlexandrianForm.

-- PhilipEskelin


EditText of this page (last edited July 29, 2006) or FindPage with title or text search