Last revised: Thursday, 9 May 19 13:44:22 Europe/London
<LINK: Discussion of these pages> - broken ! -
The Pattern Language approach was invented in the early 1970s by an architect and theorist - Christopher Alexander. The approach has been widely adopted in a range of fields, and consequently there are a huge range of references [1, 2, 3]. Nevertheless, I'm going to write my own introduction to Pattern Languages here, for three reasons; one, I can't find any that fit my purpose, two, I will focus on the use of Pattern Languages as tools for addressing formally complex systems, and three, having studied with Chris. Alexander and used Pattern Languages over 30 years in my work as an architect, I have a fairly deep understanding. This is going to begin as a fairly formal description, which will hopefully get more entertaining as you follow links towards more detailed aspects. [This is very much WIP at the moment]
A single-sentence description of a Pattern Language is a hard thing to write, but here's my attempt:
A Pattern Language is a 'mapping' of a complex system as a loosely-bounded network of identifiable, recurring conditions (Patterns), carefully documented: non-reductive in character, with hierarchy of scope, rather than hierarchy of fundamentality, which captures the relationships between and essential characteristics of these conditions in a way which enables effective human engagement.
Let's unpack that mouthful a little:
- Patterns are the 'concepts' of a Pattern Language - identifiable, recurring conditions, carefully documented. (1). Our brains address the complex system that is our environment by recognising recurrent patterns and their characteristics. Gradually, we build networks of these patterns as we observe causal (and apparently causal) linkages.
- A good exemplar of a pattern is an eddy, downstream of an obstruction in a river. Every time we see an obstruction in a flowing liquid, we observe an eddy. However, in a cliche that is deeply true, the eddy is unique - not only different from every other eddy ever, but different from how it was a micro-second ago, and from how it will be in another micro-second; at the same time it is, indisputably, an eddy - and once we know the characteristics of an eddy, we can in normal circumstances use the concept of an eddy, simply by saying the word; 'eddy'.
- So far, so simple. But realise this; the very structure of our minds maintains all the richness of possibility that eddies, in their continual uniqueness, can offer. Within a split-second, I can imagine the play of sunlight reflected, the suction created around my leg while wading, the wobbliness of the concentric ellipses formed by the ripples, the dirty froth... Equally, I can immediately call to consciousness a rich collection of analogues and references - the whirlpool as the bath empties, a twister in the USA, approaches to streamlining vehicles, what a sonic boom is, a scene from an old movie where a ship is sucked down into a vortex... The mental model of an eddy is compact, applicable - without being reductive.
- The Pattern Language approach is a formalisation of this mode of cognition - aspects of the system under consideration are recognised, analysed and documented, their relationships with other aspects captured and analysed, too. This formalisation supports a more rational mode of engagement than our evolved system, in a way which supports limited human brainpower in addressing complex systems.
- A Pattern Language is a 'mapping' of a complex system (1) - it works like a language because patterns are analogous to concepts - each pattern refers to a distinct and cognisable condition (in the jargon, a Centre, or Whole), and the patterns can be considered in linked groups that make more complex and particular propositions.
- Pattern languages map the reality of a system in the way that language maps human existence; the map is huge, nevertheless it is significantly more concise than the territory. It achieves its effectiveness from three conditions; the metaphorical, loose, but conceptually grounded nature of its constituents, its flexible, non-strict hierarchical structure (the hierarchy maps scope of application, rather than status), and by the maintenance and development of all relevant connections without restriction.
- Again, like a language, the patterns relevant to a particular instance of a system will not be the full set, and it is possible to use a variety of differing pattern subsets to fulfil any given intent/description - yielding results of varied character.
- A Pattern Language is a 'mapping' of a complex system (2) - By complex system, we mean something formal - we refer to something that has an irreducible complexity of a certain level - typically due to a high level of recursive character.
- The literature and range of definitions of complexity is large [ 4,5,6 ], but the general examples of an ecology or an economy communicate the condition well - systems where, if we alter one variable, in an attempt to affect another variable, we inevitably observe unintended consequences - very often ones which result in changes to our controlled variable via feedback loops, which go on to induce further changes in our target variable, inducing further feedback...
- A Pattern Language is a loosely-bounded-network - each Pattern is always linked to 'larger scale' patterns - ones more macro-scale in character, and always to 'smaller scale' patterns.
- Typically any given pattern helps (in conjunction with others) to create/improve/sustain a variety of larger-scale patterns, and is in turn developed/characterised/given meaning as a result of the co-ordination of a number of smaller-scale patterns.
- An interlinked network of patterns is necessary to characterise any system. Such a description is always loosely bounded - any system is embedded in larger-scale systems, and always has further levels of smaller-scale systems implied within it (whether or not these have been documented in the formalised Pattern Language being used), and investigations/definitions/linking with these is always possible.
- Patterns are identifiable, recurring conditions, carefully documented (2).
- Identification is required to begin the documentation of a Pattern. A reliable Pattern is one which is a conceptual 'whole', and which will be recognisable to anyone familiar with the domain. Identification is not often straightforward work - many recurring conditions are combinations of other conditions - often Pattern identification will uncover a network of related conditions. Deciding which are Patterns and which are parameters is not always straightforward or indeed definitive. This work is best conducted as an ongoing project with open engagement.
- A successfully identified Pattern can be clearly documented on the basis of a few parameters. The intent is to define a 'safe space' within which design/analysis can be carried out in a normal way (non-complex, somewhat reductive) without undue risk. The Pattern documentation includes links to Patterns of broader and narrower scope, to which attention should be paid if changes are made. It should be clear from the Pattern documentation what the limits of 'safety' are - typically as parameters (qualitative and quantitative); if changes stray outside these, outcomes are likely to be sub-optimal, and checks on the impact for related Patterns should be reviewed.
- These characteristics are what give the approach its power - the ability to work in a straightforward way 'within' a pattern makes typical human approaches to design/analytical work appropriate, and allows focus and clarity. At the same time, awareness of the important and relevant connections to issues of broader and narrower scope is always strong.
- A Pattern Language is non-reductive in character - the structure of a Pattern Language is specifically designed to encourage further elaboration - further pattern discovery, elucidation and cross-linking. There is no formal or functional limit to the size of a language. This allows for all relevant linkages and conditions to be referenced and mapped.
- Hierarchy of scope, rather than hierarchy of fundamentality: in a Pattern Language, no pattern is foundational, or of necessity more fundamental, or important than any other. Hierarchy of scope is adopted. Patterns of narrow scope are influential because they are typically represented in any complex system in uncountable numbers, while having limited individual impact. On the other hand, patterns of broad scope form the context for much of the system, without having precise or specific outcomes. Often these broader patterns are not directly implementable or designable, but emerge from the interactions of multiple instances of other patterns. A practice of 'zooming in and out' is developed. Often we are most interested in the wide-scope patterns, but are helped by the Pattern Language approach to identify those tighter-scope patterns which can support desirable emergent outcomes.