Industrial Logic -> Papers -> The Patterns Template

The Patterns Template

 Author: Joshua Kerievsky
Created: June 6, 1999
Updated: June 8, 1999
 
Over eight long years, the architect Christopher Alexander and his collegues wrote a fantasic book called A Pattern Language, first published in 1977. This book has had a profound influence on many people. A few folks from the software industry, who were inspired by the book, decided to bring the idea of patterns to software. Thus, a tradition was born: the writing of patterns and pattern languages for all things related to software.

In the early days of the software patterns writing movement, people were encouraged to write patterns using any form they wanted. This was quite appropriate, since the entire idea was so new, and a community needed to develop around this new tradition.

Over the years, a number of patterns forms emerged. Thus, upon writing any new pattern or pattern language, each new author needed to decide whether to create a brand new form, use an existing form, or vary an existing form to meet their needs. Oddly enough, the original form (known as the "Alexandrian" form), which was created and used by Alexander and his collegues in A Pattern Language was ignored.

In mid 1998, after spending some years studying patterns and pattern languages, I began a thorough study of A Pattern Language. I had browsed the book for years, but I now decided it was time to understand what I liked so much about the work. As I studied, I started to see how effective the Alexandrian form was at communicating the essence of ideas.

Around this time, I was further influenced by the work of Brian Foote, who had begun to adopt part of the Alexandrian form in his own writing. I was impressed with Brian's work. But I decided that I would try to use the complete Alexandrian form for my own pattern languages.

This involved expressing ideas in a variety of ways, which will be described in the template below. Authors who follow the Alexandrian form write strong problem and solution statements, express ideas non-verbally in photos and sketches, tell memorable stories, and quote relevant passages from important, related works.

As my own pattern writing abilities matured, I came to understand what is perhaps the greatest strength of the Alexandrian form: it's broad-appeal to laypersons. This appeal lies at the heart of what Alexander and his collegues aimed to do: give people, normal, everyday people, the methods by which to design their own towns, buildings and rooms. For a complex subject like architecture, this is am amazing feat.

So I wondered how it was that they could make these ideas so accessible? And as I studied the patterns, I kept coming back to the form in which the knowledge had been cast -- the photos, the stories, the use of typefaces and fonts, the strong bold-faced sentences -- all guiding the reader, in different ways, towards each pattern's central theme.

After this analysis, I could not help looking at the non-Alexandrian forms and finding them severely wanting. This statement will disturb some people. That is ok - in another work, I'll defend my conclusions. But let me say this: Alexander and his collegues made a bold statement about beauty and aesthetics in A Pattern Language: they said that it could be objectively measured. I am saying the same thing about the Alexandrian form. Objectively, it is more human, more didactic, more attuned to diverse learning styles, more memorable than any other patterns form created to date.

Now, before I present the Alexandrian patterns template, I'd like to offer a small piece of writing advice for people who wish to write, or revise, a pattern language. When I sit down to write or edit patterns within a pattern language, I study A Pattern Language. I look for how the authors communicate: how they express themselves differently in different sections of the template, which photos they choose and how they annotate them, what they communicate non-verbally, and how they connect larger and smaller patterns together. This helps my own writing immesurably. Perhaps it will help yours.

And now, the patterns template (please note that all quotes found below come from A Pattern Language, pages x-xi).
 
 

1  Pattern Name **

Place a picture here, which shows "an archetypal example of the pattern." For technical patterns, use a screen shot, a diagram, source code, basically anything than can delineate the essence of the solution communicated by the pattern.

. . . Next, you'll write an introductory paragraph for the pattern. This will "set the context for the pattern, by explaining how it helps to complete certain larger patterns."

vvv

Now, in bold type, you will record a headline for the pattern. "This headline gives the essence of the problem in one or two sentences."

"After the headline comes the body of the problem. This is the longest section. It describes the empirical background of the pattern, the evidence for its validity, the range of different ways the pattern can be manifested, and so on."

This is also a place where you may tell stories, show pictures of what not to do, quote authors who are experts on the subject, and discuss how the problems can be resolved.

At the end of this section, you'll write the word:
"Therefore:"

Now, you'll write another headline, in bold type. This is the "solution-- the heart of the pattern-- which describes the field of physical and social relationships which are required to solve the stated problem, in the stated context. This solution is always stated in the form of an instruction-- so that you know exactly what you need to do, to build the pattern."

"Then, after the solution, there is a diagram, which shows the solution in the form of a diagram, with labels to indicate its main components."

vvv

Finally, you'll write a "paragraph which ties the pattern to all those smaller patterns in the language, which are needed to complete this pattern, to embellish it, to fill it out."
 
 

  Industrial Logic, Inc.
 
 
Further Information

Read about the History Of Patterns in the software world

Brief descriptions of software Patterns Forms

Pattern Languages Revisited
(coming soon)


FacebookFacebook  TwitterTwitter  linked inLinkedIn