Thoughts on Christopher Alexander's OOPSLA speechJanuary 1, 2010
Alexanders thoughts on patterns and how they come to form a living structure can be adapted to software to some extent. CA, not being an expert in the field even mentions mappings of what he calls “centers” to software objects. Objects in software can be grouped in a few equivalence classes (interfaces, abstract classes, etc) that correspond to Alexander’s core entities and are the building blocks of patterns. Using patterns as a means of information transfer and communication guide lines is already being used extensively. CA asks about the morality and the profoundness of his pattern language and how that is used is software, if it ever is. He mentions that the objective of a living structure is to increase the quality of life of those who experience it. This can be adapted to software, but from a different point of view. Software runs on a system which means it is governed by the virtual machine it runs on and the operating system at the least. So it can only interact with the system in a very constrained way, so there is not too much room for morality here. On the other side the interaction with the humans is the place that can be improved and the software may increase the quality of the experience it offers. I think that buildings can be alive or dead like CA mentions, but buildings are not living things. They are static. They can’t adapt to the changing environment or the circumstances. But software does have this opportunity. Software should be a living entity. Let me clarify this with a concrete example. The way many people start applications on they computers is usually by selecting the item through a variety of menus. In the DOS era such a visual aid providing an over sight of all the available applications was a contribution to the users perceived quality of life. This sort of application launching is still common today, but programs such as QuickSilver for mac take this one step further by allowing the user to conveniently type just a few letters of the program they wish to run, or an action they wish to perform (e.g copy a file) and adaptively suggest actions to the user by analyzing their usage patterns. This is what I understand from a living entity. The ability to adapt. So yes software can have profoundness and morality, but this can’t be achieved by using more design patterns, nor does using any design patterns bring this quality. This can be achieved by making the software understand the users patterns and making it more humane. On the subject of generativity: using a patterns language can’t guarantee wholeness and coherence due to the fact that it is localized. So long as one doesn’t maintain an outlook at the whole system there is no way of achieving coherence. Hence it is no surprise that their attempt to create a living campus failed in general but delivered locally successful results. The same would be true for any system including software or hardware systems. Another subject of patterns in software in the issue of graphical user interface design and the patterns associated with it.This seems more in tact with the pattern theory of CA. I think in the last decade major improvements have been made to the way we act with computers. Current user interfaces are profound and coherent. Do they increase the quality of our lives? probably yes. Do they make the world a better place? I don’t know. These are subjective matters, and I personally am not the type that really cares for “design” because I get bored easily. I sold my mac book pro for an ibm thinkpad, what do I understand from design. That’s why I shouldn’t be taken too seriously on these matters.