My in-laws live in western Oklahoma. After the requisite tour of town, I find myself with a decent amount of time on my hands. I usually pack a few books along to fill the time.
I’m not sure how I came to buy Notes on the Synthesis of Form by Christopher Alexander. I thought I’d give it a try and see how it went. It was a real page turner. Seriously. It is a very dense read that is surprisingly approachable.
At its core, Notes presents a system for decomposing complex design problems. Alexander builds up to this system by examining two types of cultures: unselfconscious and selfconscious. Unselfconscious cultures approach problems with a rich set of traditional solutions in which the builder (problem solver) is reduced to an agent implementing a solution learned by imitation, an informal form of apprenticeship. These cultures’ designs evolved over a sufficiently long period with their environment as the primary constraint. To become a repeated solution, the solution had to fit well within all aspects of the culture’s environment. Selfconscious cultures, in contrast, exist outside of any environmental feedback loops or environmental constraints. These cultures approach design problems with a learned set of principles that impose rules of design.
The system Alexander lays out (and I am paraphrasing greatly here) relies on the decomposition of the problem into subsets of related features. These subsets, or subsystems, must be as independent as possible to accommodate misfits (problems). Misfits within the subsystems must not impact the design as a whole, but be contained within the subsystem.
The vital point that underlies the following discussion is that the form builders in unselfconscious cultures respond to small changes in a way that allows the subsystems of the misfit system to work independently – but that because the selfconscious response to change cannot take place subsystem by subsystem, its forms are arbitrary.
The arbitrary nature of form… When I hit this, I immediately drew parallels to software design. How many of you have seen software that exhibits arbitrary design choices? How many “simply enhancements” balloon into rebuilding core functions?
Notes is equally applicable to the software industry as object design. Product managers, software architects, CTOs – get a copy of this. Oh, one more thing, don’t let the set theory scare you off – you can get a lot out of Notes without working out all the math.