I've got exactly four work days until I go on vacation for the rest of 2006. My vacation will be of the nice, relaxing, hang around kind, so hopefully I'll do a little more blogging than I have in the past several months (kids + Jazz + sleep = not much time for blogging).
I've been slowly working my way through an excellent book that Grady recommended a long time ago called How Buildings Learn by Stewart Brand which discusses how buildings change over time and considerations for building buildings that wear well.
Anyhow, you probably guessed that I'm going to draw parallels between Brand's book on building architecture and my profession of software development. Naturally I see lots of parallels - surely some real and some imagined :-)
I want to quote something from page 63 that to me perfectly explains much of my views on software design, and why trying to get everything right up front is not feasible.
Chris Alexander likes to make on-site adjustment to a building as it's being constructed. "Architects are supposed to be good visualizers, and we are," he says, "but still, most of the time we're wrong. Even when you build the things yourself and you're doing good, you're still making nine mistakes for every success. So you take the time to correct them. The more at each stage you can approach being able to experience the contemplated reality, the more it will give you feedback and you'll be able to intelligently develop it".
I think the key sentence is (sadly) the one that's most difficult to comprehend. To repeat:
The more at each stage you can approach being able to experience the contemplated reality, the more it will give you feedback and you'll be able to intelligently develop it
This is talking about the different between an abstract and concrete understanding of a design and how you can only make good decisions until you've descended from 50,000 feet, gotten your hands dirty, made some mistakes, and re-evaluated your design with the benefit of concrete experience. See also my post "Coding to Learn".
More on How Buildings Learn in future posts.[Read More]