← christopher alexander

Patterns in software

Software is the one field that took Alexander at his word — and then, by his own assessment, took the wrong half. Three of the industry's load-bearing ideas trace directly to him: design patterns, the wiki, and the iterative instinct at the heart of agile. This page tells that story, and then the more useful one: what the rest of his work — centers, the fifteen properties, generative sequences, the mirror test — has to offer code, APIs and interfaces, which is far more than the GoF catalogue ever carried over.

The lineage: 1987 to the Agile Manifesto

In 1987 Kent Beck and Ward Cunningham, then at Tektronix, ran a small experiment: they wrote five Alexander-style patterns for Smalltalk window design and let users design their own interfaces with them, reporting the result at OOPSLA in “Using Pattern Languages for Object-Oriented Programs.” The idea caught. By 1993 a community (the Hillside Group) had formed around it; in 1994 Gamma, Helm, Johnson and Vlissides published Design Patterns: Elements of Reusable Object-Oriented Software, borrowing Alexander's form — name, problem, forces, solution, consequences — for 23 recurring structures in object-oriented code. The “Gang of Four” book became one of the best-selling and most-cited works in the history of the field, and “pattern” entered the permanent vocabulary of programming.

The second gift was accidental. In 1995 Cunningham needed a way for pattern authors to write, link and revise each other's patterns on the young web, so he built the Portland Pattern Repository's WikiWikiWeb — the first wiki. Its design principles (anyone can edit, links are first-class, structure grows from use rather than from a plan) are Alexander's politics — users as designers, piecemeal growth — implemented in software. Wikipedia is its direct descendant.

The third is a sensibility rather than an artefact. The people who convened at Snowbird in 2001 to write the Agile Manifesto were substantially the pattern people — Beck and Cunningham above all, whose Extreme Programming is saturated with Alexander (Beck has said plainly that XP's practices are an attempt at his ideas). The core agile instinct — grow a system in small, feedback-checked steps that keep it whole at every stage, rather than executing a frozen master plan — is precisely the structure-preserving unfolding of The Nature of Order, arrived at in code while Alexander was still writing it down for buildings.

The 1996 keynote: thanks, but…

Invited to keynote OOPSLA in 1996 (“The Origins of Pattern Theory”), Alexander surveyed what software had done with his work with characteristic double-edged courtesy. The patterns community, he said, had understood the format — but patterns were never the point. They were one piece of a larger project whose aim was living structure, and whose test was whether the made thing improves the life of the people who use it and the world it enters. He asked the room whether they had any equivalent of that aim — whether programs were being judged by anything beyond shipping and cleverness — and suggested that software people, who were rapidly building the environment everyone now lives in, had inherited the moral situation of architects, with no professional tradition of accepting it.

“Please forgive me, I'm going to be very direct and blunt for a horrible second. It could be thought that the technical way in which you currently look at programming is almost as if you were willing to be ‘guns for hire.’” — Christopher Alexander, OOPSLA keynote, San Jose, 1996

What software kept, and what it lost

It is worth being precise about the translation losses, because they mark exactly where the unexploited value still sits:

Living structure in code

Read with Alexander's full apparatus, a codebase is a system of centers — functions, modules, types, the namespaces between them — and everything he says about buildings transfers with almost no force:

The fifteen properties on a screen

The fifteen properties translate to interface and visual design almost one-to-one, and make an unusually concrete review checklist: levels of scale is the type and spacing hierarchy (display → heading → body → caption, with no missing rung); strong centers is the screen's one primary action and the visual field organised to serve it; boundaries are padding, cards and transition states — the onboarding flow is an entrance transition; alternating repetition is list rhythm where the gaps are designed, not residual; positive space is whitespace with deliberate shape; good shape is components that hold up cropped out of context; local symmetries are balanced components inside an asymmetric page; deep interlock is the way content and chrome should grip (sticky headers that carry context, not float over it); contrast is committed visual hierarchy — and accessibility; gradients are progressive disclosure and the intimacy gradient of settings (common → rare → dangerous); roughness is tolerance for content as it really is — long names, empty states — rather than lorem-ipsum perfection; echoes are the design system's family resemblance; the void is the screen's one quiet place — the search page that is mostly empty; simplicity and inner calm is the feature that was removed; not-separateness is the product that fits the user's existing world — imports their data, respects their platform — instead of demanding a new one.

Further reading