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.




If we consider possible "origin of life" scenarios [without arguing about what occurred] we can surmise that whatever original organisms may have formed would largely have been simple, probably quite deterministic structures. However, those that could handle variation better would have had a higher rate of survival, and consequently been more successful (i.e. more stable). At some point, these organisms would've begun the process of reproduction at which point, selection would begin to play a role in determining which competitors would be most able to enter the "next round" and so on.
As a result, we have a biological system that has developed which is oriented around the traits necessary to survive and replicate, so that the most suitable organisms for any given circumstance will be the most likely to succeed into the future.
I would argue that the fundamental principle involved here is unpredictability. There is no perfect design [nor can there be], which is why there is a perpetual series of developmental niches that are filled by increased variety. What works well in one situation may not be so good in another.
Similarly with anything we want to engineer that is to have broader applicability, it must be adaptable to changing circumstances, and also be able to "learn" from that experience. One of the primary difficulties associated with artificial life ideas is that it is trying to go against what biology does. In biology, individuals don't evolve; populations do. More specifically, it is the offspring that will either adapt or go extinct. In engineering, the attempt is to try and incorporate evolution at the individual level, which seems to be based on the notion that all adaptability can be "learned".
I expect that if we could engineer a machine that was capable of engineering its own offspring making subtle improvements based on the experience of the original [more like a Lamarckian approach], we would see the same sort of divergence of machine types as we see with species. The "down-side" is that evolution can be quite wasteful and consequently does require predictability in determining which traits may or may not be successful. It is similar to what occurs in any kind of general engineering, where people use something in applications that the original designer may never have considered (think spreadsheets). In other words, we can't think about utility to "evolve" utility because that automatically narrows the scope of possibilities. Biological evolution succeeds because it only addresses the immediate needs of survival and reproduction working with what it has. It is this drive which increases diversity. If you can't fly, then perhaps you can jump? If you can't run fast, then perhaps you can hide? It creates no "super-species", but it creates a system that works without intervention.
While I haven't actually said anything of real significance here and probably just restated the obvious, I thought it might be interesting to start the dialogue to see what else emerges.