In the 1990s, Erich Gamma changed the way I thought about software engineering forever! Gamma visited the Ecole Polytechnique Federale de Lausanne where I was a PhD student, in order to give a seminar on design patterns.
The idea of extracting a solution template from a piece of software to turn it into a pattern which can be reused, was to me, an exciting step forward in software engineering. Instead of reusing software from a library that needs to be maintained and ported as necessary, abstracting the solution and creating a pattern repository gives software engineers a toolbox of meta-level solutions.
Software engineering – exciting as it is, like most of computing, is derivative. It borrows its ideas from elsewhere. Design patterns in software were originally inspired by the architect Christopher Alexander. Alexander and his team identified common themes in buildings by interviewing people and analysing structures. The results of this research allowed them to create patterns which can be used to construct better, more enjoyable spaces for people to live in. And following their example, software engineers and usability consultants interview users in order to elicit their feedback on websites and graphical user-interfaces (GUIs) and so, design patterns are being used in GUI design too.
Back in the architectural world, patterns are being used in the rest of the town or city in which a building is situated. Context is very important and can dictate whether a new shopping centre, or museum is successful. By analysing the space in and around structures which make up a city, Bill Hillier has identified patterns which describe how people move about in a city. Hillier has pin-pointed the pattern or space syntax of a successful city.
Space syntax – patterns in space
Space syntax is the mathematical analysis of cities as networks of space and the influence they have on the movement of flow. Viewed this way, cities are evolving and self-organising processes. In successful cities, a deformed wheel pattern emerges, either naturally in old cities such as Tokyo and London, or in planned cities such as Chicago, Brazilia, and Hamdedan. Cities organise themselves as optimum routes emerge. These patterns are governed by simple laws and each sector or square behaves in the same way as the whole thing, like a fractal. It is not a set of parts, the city is a whole.
Space syntax looks at intersections throughout the city and measures them in three ways: 1) closeness to everywhere else, 2) least angles when changing direction, and 3) shortest path.
Least angles is a popular movement pattern because people have no idea how to measure distances and think that constantly changing direction will create a longer journey. Instead people use other geometric and topographical models to measure distance which normally excludes shortest path and their movement is also impacted by building visibility and positioning. This leads to grid intensification in city centres.
Patterns in nature
In the same way as when we navigate around a city and build up patterns, we often look for patterns to make sense of things. According to the Bible, the three wise men followed a particular star which stood out against the usual patterns in the sky and signalled, they felt, great significance for mankind and change in the future. Astronomers have studied patterns in the sky since time began. They used astrolabes to learn how to read the heavens. Astrologers did too, in order to interpret the movement of the stars’ impact on humans’ lives. Even today, people use the stars seriously. It is well documented that Yorkshire poet Ted Hughes believed that publishing his poetry at a particular time in his astrology chart would lead to greater success.
Whether we believe in our astrological fate or not, we take comfort in patterns. From the moon waxing and waning, to the changing seasons – leaves growing and falling – within the cyclical nature of life. Our patterns make us feel comfortable and when they don’t occur in the right sequence, people worry. Daffodils in December last year led to constant reporting on global warming indicating a collective handwringing – what are we doing to the earth?
Long before meteorologists were using patterns to predict what next week’s weather would be like, folk rhymes of the ‘red sky at night, shepherd’s delight’ sort had patterns embedded into them that allowed the next generation to naturally absorb patterns that they would use to understand the world.
Archetypes – inherent patterns
Joseph Campbell wrote about the power of myth and legend describing how they both contained the best types of patterns for us to live by. He argued that dropping Classics from the curriculum would lead to the younger generation feeling lost as they would not know the classic patterns of life, death, and rebirth. The success of films and books such as ‘Star Wars’, ‘The Matrix’, ‘Gattaca’, and ‘Lord of the Rings’, is due to the patterns or archetypes we find in these stories, the same ones Campbell was worried about us losing.
These common patterns have emerged in many cultures since storytelling began and Carl Jung believed that they are hardwired in our brains. These archetypes lead to biases and dispositions which are unconscious. Marketing experts now use them when designing products in order align their products with success. They tap into the way we are conditioned and capitalise on our unconscious reactions to the world around us.
Asethetics – pleasing patterns
Not only does a strong branded archetype work. We also are attracted to artefacts and people who are asethetically pleasing. The golden ratio is a pattern which appears in nature and has been used in art and design such as the Stradivarius and the iPod. We are naturally attracted to beautiful things. The most beautiful people have symmetrical faces and the most average facial features, with average being the arithmetic mean of form, size and position of these facial features. We are attracted to simple, average patterns, and in artefacts we find that the simpler its functionality, the more beautiful it is (like my La Pavoni). In others words, form follows function, a phrase which, in itself, encapsulates a design pattern.
Learning patterns
The comforting thing about the world is that if we look long enough, there is a pattern to be found everywhere, even in chaos. Chaos theory or the butterfly effect is a popular concept.
Otherwise, the information we need is always in the data and in modern times, our biggest problem is data management. Most jobs nowadays need us to get a handle on the data. From structural monitoring, where the captured data is interpreted to understand and explain structural behaviour, to stock brokers who watch for a rising RSI as the sign to sell. Patterns can make or break the infrastructure or a fortune.
As people become skilled in their jobs, they become described as ‘intuitive’. Normally, because they have seen the pattern so many times before, engineers can tell straightaway if there is a problem in the data and stock brokers become may key players in whatever they are trading. Eventually, reading patterns that were once difficult to comprehend becomes a routine task, like dancing a waltz, or playing the piano. In music, a key change is clearly noted and changing key or bridging is a common indicator to leave one pattern and begin a new one. In a waltz, the introduction of a new pattern is highlighted with a ‘hesitation’ step which takes twice as long as ordinary step.
We use patterns to communicate more effectively.
Information visualisation – the power of patterns
Nowhere is this communication clearer than when we are visualising data. Edward Tufte has written extensively about excellence in statistical graphics. His main message is that viewers are sophisticated individuals:
‘…give them the greatest number of ideas, in the shortest time, with the least ink, in the smallest space.’
There is no need to dumb down. When a graphic is well created, patterns can be seen and understood on different levels.
The clear presentation of data, especially when plotted next to other data can open up our understanding to a problem that was previously insolvable. A famous example: Dr John Snow, in 1854, plotted the location of all the deaths from cholera in and around Broad St, west London on a map. Using this map, he found that most of the deaths occurred nearest to the water pump on Broad St. Closing the pump, reduced the epidemic.
In contrast to finding patterns, we can impose patterns on a seemingly intractable problem in order to clarify and present a simpler way of understanding. The London tube map is a brilliant example of this. Draftsman Harry Beck imposed an electrical circuit pattern on the representation of the tube, replacing the geographical road map layout it used. In this way, order was imposed on an incomprehensible layout and users ever since comprehend how to navigate the tube network at first glance.
The map itself is not just an easy-to-understand pattern but an icon of London. And like patterns, icons are part of semiotics – another subject borrowed by computing to create better interfaces.
Erich Gamma is indeed an inspirational person. I had the honor to talk with him at ECOOP 2006.
One of the coolest analogies about software design I ever read is re-explained here (couldn’t find the original reference that was more interesting):
http://whistlethroughyourcomb.blogspot.com/search/label/Creativity
“1. Make as much as you can modular.
When people design public parks or college quads, they sometimes purposely leave out sidewalks or brick paths from the design. So the areas are created without any sidewalks. Over time, people will tread the ground – often the same ground over and over again. A month or two down the road you can see wear the grass is worn. These are called paths of desire – they represent where people want to and do walk in the park or college quad. The designer notes these and then builds the sidewalks or brick paths over them.”
It would be very cool if we could do this with software design – unfortunately it’s not so easy to see how the users tread when we don’t put down a sidewalk – often a software isn’t usable at all without the connections between points. Sometimes we can leave many paths, and observe what users do.
This analogy illustrates that a (software) designer cannot see everything from the start, but that she must wait for the users to do what they do before making final decisions about the design. It’s been said that Google and other similar companies observe this kind of “treading” before they make major decisions about software. Read more about it at http://www.manageability.org/blog/stuff/google-development-practice-lean-production
It’s always a pleasure to read your stimulating blog posts (when I find the time).
Dr Stalker,
Speaking architecturewise and in classical terms of art, we may think of repetitions as redundant formations shadowing the value of the original, if and when there is one. On the other hand there is a tremendous movement, urge & experience towards constructing through repetition of similar parts and creating a tissue, a whole. Yes, the magic word is “pattern”; especially the way you put as a visionary element of “being”.
I liked your approach…
Thank you. I like the idea of repetition as a way of reiterating the value of the original. Very interesting.
Ruth