On Design Patterns

An exploration of design patterns as a tool to build at scale, developed by architect and design theorist Christopher Alexander (1936-2022)

Published on
June 07, 2022

In his seminal work Notes on the Synthesis of Form, Christopher Alexander delineates “good design” as the absence of “misfit” between form and context. The designer’s task is to systematically identify the relationships between individual requirements (binary variables denoting fit or misfit), group them into subsystems (in form of a constructive diagram), and solve the design problem by traversing the “design space” (which takes the form of a tree-diagram), thereby continuously modifying the subsystems and their constituent requirements in accordance to constraints of both form and context.[1]

Form - Context - Fit

In any design problem, there’s a part which is subject to be modified. This is the form. The dynamics and activities surrounding the design problem represent the context. The designer’s job is to mediate between form and context, achieving a fit. The fit between form and context describes the harmony between what people are actually confronted with within in the context of the design problem, and the form which the solution to the design problem adopts.[2]

Fit emerging from mediation between context and form
Fit emerging from mediation between context and form

Requirements or specifications are often defined in terms of form - What should we build? What kind of features should this application have? What kind of color should we choose? If we define requirements in terms of form, there is no measure of whether we actually were successful after implementing the changes. However, if the definition of success relates to a struggle, a behavior, a context, we’re able to define success independent of form, thereby achieving a stronger “fitness relation”.[3]

Situating context within another well-known theory on customer need analysis, Jobs to be done[4] is an isomorphic concept to context. As a way to describe supply-agnostic demand, it can also be understood as a way to describe form-agnostic context.

Centers and Generative Properties

Things that exist always do so in relation to other things; they are embedded within a network of continuously “shifting networks of relationships”.[5]

A center is an element in such a network which is, among its constituents, more concentrated and salient. When talking about a design problem, we can partition the world of form into units of analysis which are of interest, into particular centers, on which we can focus our attention on.[6]

Looking at form, we can start talking about harmony and coherence between constituent elements, and how this coherence emerges from and relates to (strong and weak) centers.

Unfolding of centers and ordering of design interventions
Unfolding of centers and ordering of design interventions

Well-adapted and coherent design does not emerge from a single, deliberate intervention, but emerges step by step, and can be seen as a process: First, the unfolding, step by step adaptation by interventions with focus on what’s already existing; Second, the sequence or order of these interventions with respect to their interconnectedness and path dependence.

Alexander introduces[3:1] fifteen fundamental properties as ways to think about how centers relate to one another:

  1. Levels of scale
  2. Strong centers
  3. Thick boundaries
  4. Alternating repetition
  5. Positive space
  6. Good shape
  7. Local symmetries
  8. Deep interlock and ambiguity
  9. Contrast
  10. Gradients
  11. Roughness
  12. Echoes
  13. The void
  14. Simplicity and inner calm
  15. Not-separateness

Interventions which are directed towards reflecting one or more of the fundamental properties – as levers to “transform the build world” – lead to a deeper connection between the living and the built. [6:1]

Patterns and Pattern Languages

A pattern is a generic relationship of centers. It is a form-context pairing: Talking about centers means taking about structure, about form, but it also relates to the context, in which this pattern is useful. A pattern is a unit matching or fitting a relationship of centers to a particular context. Whenever a particular context arises, this context can be solved by reflecting the pattern with its arrangement of centers and adapting them to the context.[7]

For instance, if a balcony is constructed with less than 6 feet in depth, people stop using it - because there are certain activities which are afforded or prohibited by a balcony greater or less than 6 feet deep. The existence of such a threshold is a pattern, it invokes a certain form which fits to a context.

When we have described a number of patterns, a pattern language emerges as an assemblage of generic solutions. A pattern language introduces both generative properties (a collection of patterns which are applied step by step in a process) and sequence (the order and priority in which to introduce patterns to afford the ideal form).

A pattern language as an assemblage of generic configurations
A pattern language as an assemblage of generic configurations

Thinking about sequence and priority means thinking about potentially successful configurations. In a collection of centers, addressed by a number of patterns, some more than others will have a low number of configurations which eventually afford an optimal solution. These must be addressed first and with priority, in order to increase the harmony and fit between constituent parts.

Specificity of Pattern Languages

Software development has adopted pattern languages as a way to document knowledge, which then can be reused. However, this is an efficiency gain, and not the deeper meaning of the concept of pattern languages.[2:1]

A pattern language is a way to specify one unique project at the right level of abstraction. Instead of one pattern being applied across a number of projects, a pattern language unfolds in the scope of a single project: As a sequence of steps to solve one problem with a number of measured, abstract interventions.[7:1]

To abstract in the beginning of a project enables flexibility to detail those parts of both the problem (context) and solution (form) for which we do not have enough information at the outset at a later stage. In this way, harmony (fit) between the parts emerges.

A pattern language and its words and abstractions evoke a specific design, with specific properties, and a specific form-context-fit. Two different pattern languages will lead to entirely different outcomes.


  1. Christopher Alexander. Notes on the Synthesis of Form (1964). ↩︎

  2. Ryan Singer. A Primer on Christoper Alexander (2021). ↩︎ ↩︎

  3. Christopher Alexander. The Phenomenon of Life (2002) ↩︎ ↩︎

  4. Clayton M. Christensen. Competing Against Luck (2016). ↩︎

  5. Bruno Latour. Reassembling the Social (2007). ↩︎

  6. Christopher Alexander. The Process of Creating Life (2003) ↩︎ ↩︎

  7. Christopher Alexander. A Pattern Language (1977). ↩︎ ↩︎

Profile Picture of Camillo Visini
Camillo Visini
Published on
June 07, 2022
Share Article
© 2022 Camillo Visini