This of course goes far beyond merely architecture; indeed this book was brought to my attention not by an architect but by people in the UX (user experience) design community. Anyway, this blog post only covers a couple pages out of the book.
The author, Christopher Alexander, says that we have come to think of buildings, towns, and works of art as "creations." And that "creation" is thought of as a monumental design task, "brought to birth, suddenly, in a single act, whose inner workings cannot be explained, whose substance relies ultimately on the ego of the creator."
I would interject that the creator might understand the inner workings, but even then, for a complicated project attempted in a process with this mindset, the end result would probably not be completely understandable by the creator. More on that in a minute...
As Alexander writes:
The quality without a name cannot be made like this.
Imagine, by contrast, a system of simple rules, not complicated, patiently applied, until they gradually form a thing. The thing may be formed gradually and built all at once, or built gradually over time--but it is formed, essentially, by a process no more complicated than the process by which the Samoans shape their canoe.
And if you're thinking that this sounds very much like how biology works, then you have predicted the next key statement on the same page:
The same thing, exactly, is true of a living organism.
An organism cannot be made. It cannot be conceived, by a willful act of creation, and then built, according to the blueprint of the creator. It is far too complex, far too subtle, to be born from a bolt of lightning in the creator's mind. It has a thousand billion cells, each one adapted perfectly to its conditions--and this can only happen because the organism is not "made" but generated by a process which allows the gradual adaptation of these cells to happen hour by hour....
And Alexander claims that there is no other way. Of course, as a transhumanist and a roboticist and an occasional cognitive architect (oh, maybe there is architecture here after all!) I want to be able to create and modify life forms. I want to make artificial organisms, and interfaces between the organic and the non-organic.
However, I have enough experience with software development and project management to know that what Alexander says is true. I.e., I believe it based on my experience and observations.
So I have two immediate responses when I read this part of the book:
1. Examples of systems that look complex, but evolved and/or iterated via simple rules.
For instance, the cellular automata popularized by Stephen Wolfram in A New Kind of Science create complexity and even randomness from ridiculously simple rules. Behavioral robotics, which started in the 1980s (although there were a few examples long before then), embraced the artifical organism in the environment concept. They had simple programs and no traditional internal models.
If you've ever made any kind of robot, or a software agent in some environment, you may have discovered how complicated and or unplanned the behavior becomes so easily.
The adaptability and flexibility of organisms has not yet been matched by artificial creatures. I've discussed some of this before in my article "Softer, Better, Faster, Stronger: The Coming of Soft Cybernetics".
If you've ever made a mobile robot or any other electromechanical system, and expected it to work perfectly as designed, you have probably encountered a rude awakening. It never works "out of the box" (unless you went through many cycles before putting it in the box). In fact, engineering in general is more of a building out of existing working things. And then your specific project still has to have cycles of test and/or integration, etc. And that brings me to response two: the meta.
2. The Meta: Development Methodology
The meta aspect is management of projects and what process the "creator" and his/her team uses. I don't particularly care how similar a process is to biology...although biological evo-devo is quite interesting. I'd love to find ways of doing things that are totally alien to biology.
It's just that I've found that cycles of development ("iterations" or "sprints") have to happen. And it's much better if there are feedback loops between testing with contexts. And contexts are environments, other artificial equipment, users, and so on.
Iterative development processes almost always work better than sequential types like Waterfall. In fact, I've never seen a sequential development process work out well. Others have discovered this to. It's probably part of the reason why Agile software development processes are becoming the most popular.
Anyway, comments about why generative and iterative processes work in our version of the universe are welcome.