4.5 KiB
Pattern Languages
Christopher Alexander et al., A Pattern Language (1977). 253 patterns for designing buildings, towns, rooms — structured as a generative grammar with explicit cross-references. Spawned the Gang of Four software design patterns (1994) and many domain adaptations.
Pattern format
A pattern has three parts:
- Context — the situation in which it applies
- Problem — a recurring tension in that context
- Solution — a generative principle (not a specific design — capable of many instantiations)
A pattern language is a network of patterns at different scales, with explicit links: which patterns contain this one, which patterns complete it.
When to use
- Designing physical environments (buildings, rooms, gardens, neighborhoods)
- Designing interactional environments (UX, software architecture)
- Building shared design vocabulary with a team
- Documenting design intuitions for transmission
- Civic / community design
Don't use when
- You want to break with tradition (patterns are conservative — they encode what has worked)
- Domain has no established practice yet (no patterns to extract)
- Pure conceptual / artistic work
- You'd be implementing patterns literally (collapses generative → rule)
Selected patterns from Alexander's 253
For texture. Real use means buying or borrowing the book.
- 8. Mosaic of Subcultures — a region needs distinct subcultures with their own ecology, separated by zones of disuse, not homogenized.
- 53. Main Gateways — mark every entrance with a substantial visible threshold.
- 60. Accessible Green — green outdoor space within 3 minutes' walk.
- 105. South-Facing Outdoors — most-used outdoor space to the south of the building.
- 111. Half-Hidden Garden — garden right at street is too public; behind house is unused. Place it half-hidden.
- 159. Light on Two Sides of Every Room — windows on at least two sides. Single-sided rooms are uncomfortable, rarely used.
- 179. Alcoves — rooms with no place to retreat are unsettling. Build niches, bays, window seats.
- 188. Bed Alcove — bed in the open is exposed. Build at least a partial enclosure.
- 191. Shape of Indoor Space — simple, mostly orthogonal; deviate only for clear local reason.
- 230. Radiant Heat — radiant heat (fireplace, radiator) is qualitatively different from forced air.
The patterns are arguably true and arguably false; what matters is the form.
Procedure
Using an existing language
- Identify the relevant scale (region / neighborhood / building / room / detail).
- Read patterns at and above your scale; note which apply.
- Compose: apply higher-scale patterns first; let them constrain lower-scale ones.
- Adapt to your specifics. Patterns are generative, not literal.
Developing your own language (more useful for software, org, pedagogy)
- Identify recurring problems in your domain. Look across many cases.
- Name each (short, memorable, describes the solution shape — "Light on Two Sides", not "Insufficient Daylight").
- State each in: context — problem — solution — therefore: [generative principle] — see also: [related patterns].
- Map containment relations between patterns.
- Test by applying to a fresh problem; revise.
Worked example (software, in Alexander's form)
Iterator pattern (Gang of Four, 1994)
Context: a collection of objects must be traversable by client code.
Problem: client shouldn't need to know the internal structure (array vs tree vs linked list); collection shouldn't have traversal logic scattered across clients.
Solution: provide an Iterator object with next(), hasNext(), current() that encapsulates traversal state. Collection produces an Iterator on request.
Therefore: separate "what is being traversed" from "how it is traversed."
See also: Composite (tree traversal), Visitor (operations during traversal), Factory Method (producing the right Iterator).
Anti-slop notes
- Bullet-list "design tips" are not patterns. A pattern has context, problem, generative solution, and place in a network.
- Don't generate patterns to seem comprehensive. Real patterns come from many cases.
- Don't apply Alexander's residential patterns to non-residential domains literally.
- Patterns are conservative and generative. They don't anti-novelty; they shape novelty.
Source: Alexander et al., A Pattern Language (Oxford UP, 1977); The Timeless Way of Building (Oxford UP, 1979). For software: Gamma et al., Design Patterns (Addison-Wesley, 1994).