Pattern Checklist

In writing pattens you want to make sure you have all the necessary parts, but also that what you say is really part of the correct section.

Name

Clever, but not too clever. It needs to work in ordinary conversation, so a short verb or noun phrase or a single word. Examples: Buddy System, Pay it Forward, Batter Up But don't give everything away with the name. Leave some tension. Names should be consistent in a given language (e.g. all nouns…) The names can hint at any of the following parts, but often either the problem or the solution. Pay it Forward is a solution. Kobayashi Maru is a problem (but too clever).

Context (when)

The situation you might find yourself in when this problem might arise. A picture or story might help. In a pattern language, this is the set of patterns that have been applied so far and the situation not yet resolved by them. Example: You are starting a new programming project.

Problem (what)

Short, compelling statement. No obvious solution. Not a bed sheet of things. A hard problem, necessary to solve. If there is only one possible solution it isn't a pattern. The problem is about something that needs changing in the world. Examples: You don't understand the requirements for the new system. Our team keeps making the same mistakes.

Forces (why)

What the expert considers in choosing and balancing the solution. There should be several so a bed sheet is fine here. Some should point in the direction of the solution chosen and others away from it. All forces need to be mentioned, not only the ones that support your supposed solution. If all forces point the same way it isn't a pattern. Examples (from different patterns): Your team is highly skilled. Resources are limited, Flex time is assumed by all employees. ...

Solution (how)

A proper expert resolution of the forces that solves the problem. Not a bed sheet. Short and sweet. The Ah-Ha experience. One key sentence should be enough to "get it" though some additional commentary might be included as well. The solution must solve the problem (or most of it) in the stated context. The solution tells you want to do. It is about actions that change the state of the world. Example: Hold a formal retrospective on a regular schedule.

Discussion (subtleties)

Give a fuller explanation here. Include caveats and contra indications. Example: In the retrospective, make sure you make decide what new practices to follow until the next retrospective. Example: The retrospective should be at least monthly. All should be present...

Resulting Context (what next)

What you can expect from applying the solution. NOT "All is well". Discuss what still might need to be done to resolve forces. In a pattern language, which patterns you should consider next. Example: Next apply "Plan of Action" or "Spirit Building".

Examples of Use (how used in the real world)

Show a few examples of the application of this pattern in the real world. Preferably it should be uses by others than the pattern writers.


NOTES: Some of the pattern papers you will read do not follow these rules (Meszaros and Doble, for example, has bedsheets). Beware. They may be early work from which the community learned to do better. The seminal book Design Patterns (GOF) has no problem statements at all.

The "patlet" (problem and solution key sentences) should be enough to explain what is going on.

Example of Patlet: Individuals make many mistakes in difficult situations. Therefore use the Buddy System.

Big Idea: Not too specific, not too general. Just right (Three Bears Pattern).

Big Idea: Patterns aren't invented. They are discovered (mined from practice).


Last Updated: April 21, 2012