I was making my way through The Process of Creating Life last night, and was rather surprised to see Christopher Alexander mention XP! Here’s the quote (p. 198); emphasis and ellipses in the original.
This chapter was first composed as a lecture to the computer science department at Stanford University. After the lecture, I had a chance to hear comments from many of the computer scientists in the audience. Much of the commentary I heard went something along these lines: “This is really interesting…perhaps you should call it ‘evolutionary adaptation’ instead of ‘generated structures'” and “We computer scientists ourselves often practice various form[s] of evolutionary adaptation in software design. Good software grows, by steps with feedback and evolution, to something better…” And so on.
The essence of all these comments was what I call gradualism. It says “Yes of course, in the case of a complex structure, we cannot hope to get it right first time around, so we build it, run it, test it, fix it, change it…and keep on doing this so that it gets better.” What has become knows as Extreme programming is a way of doing this for software development, with a very short cycle of evolution and adaptation, repeated many times.
Of course I am in favor of small steps, of adaptation through trial and error, and of what we may call evolutionary adaptation (see chapter 8). But this is not the central point at all. After listening to all these computer scientists’ comments, and taking them to heart, I realized that I had failed, in my lecture, to emphasize the real essence of all generated structures. The real essence lies in the structure-preserving transformations which move the structure forward through time, and which are primarily responsible for the success of the generating process. The needed transformations are not merely trial-and-error steps, or some neat way of continually checking and making things better. In chapter 2, I have referred to the fifteen transformations which act, in all structure-preserving transformations, to move a while structure forward in a deliberate and explainable way. It is because of these fifteen transformations and their effect, that a whole may be said to “unfold.” It is because of these transformations that a whole becomes coherent, and beautiful, And it is because of this unfolding, and the way the unfolding processes work, that the structure is able to become “mistake-free.”
To assume that the point of generated structures is merely slow, step-by-step evolutionary adaptation, is to make the same mistake that early adherents of Darwinism made in biology—to assume that small steps alone, modification coupled with selective pressure, would be sufficient to get a genotype to a new state, hence to create entirely new organisms… and so on. This does not work, and is now widely recognized not to work, because it lays too little emphasis on the (hitherto) unknown transformations which actually do the hard work of moving the evolving organism through stages that lead to its coherence and its geometric beauty in the emerging genotype.