Notes on How Buildings Learn, Part 3: Honest Aging

We are convinced by things that show internal complexity, that show the traces of an interesting evolution. Those signs tell us that we might be rewarded if we accord it our trust. An important aspect of design is the degree to which the object involves you in its own completion. Some work invites you into itself by not offering a finished, glossy, one-reading-only surface. This is what makes old buildings interesting to me. I think that humans have a taste for things that not only show that they have been through a process of evolution, but which also show they are still part of one. They are not dead yet.
- Brian Eno, quoted in Stewart Brand, How Buildings Learn, p. 11.

I love this quote, but I’m not sure how it applies to the internal design of software. I like the “involves you in its own completion” part. As a programmer, I would hate to be part of a project where the internal design was dictated from above. The code should invite you, it should be open to accept any change. It should invite you to study it, to listen to it, and hear where additions should go, and how they should be shaped.

The passage before the quote goes:

The widespread fakery [for instance, faux old buildings] makes us respect honest aging all the more. The one garment in the world with the greatest and longest popularity—over a century now—is Levi’s denim blue jeans. Along with their practical durability, they show age honestly and elegantly, as successive washings fade and shrink them to perfect fit and rich texture. Ingenious techniques to simulate aging of denim come and go, but the basic indigo 501s, copper-riveted, carry on for decades. This is highly evolved design. Are there any blue-jeans buildings among us? How does design honestly honor time?

Here I have scribbled “blue-jeans code.” I don’t know what that would be. Code doesn’t wear. But in a sense it does. By maintenance and continued development. You can study the code and find the annual rings. Except that they aren’t in layers.

I think I’ve read somewhere a suggestion to make changes to object-oriented programs by subclassing and introducing the changes in the subclass. In this way, the code would have annual rings.

This reminds me of Danny Hillis’ talk on his Millennium Clock, where he seems to suggest that any object in which its evolution can be traced could be considered to be a clock.

Most code suffer from entropy. Honestly aging code would not overlook this fact. It would allow for fluctuations in its general structure, to accommodate for unanticipated things, un anticipatable things.

Previous posts:

The above was posted to my personal weblog on June 27, 2005. My name is Peter Lindberg and I am a thirtysomething software developer and dad living in Stockholm, Sweden. Here, you’ll find posts in English and Swedish about whatever happens to interest me for the moment.


Related posts:

Posted around the same time:

The seven most recent posts:

  1. Tesugen Replaced (October 7)
  2. My Year of MacBook Troubles (May 16)
  3. Tesugen Turns Five (March 21)
  4. Gustaf Nordenskiöld om keramik kontra kläddesign (December 10, 2006)
  5. Se till att ha två buffertar för oförutsedda utgifter (October 30, 2006)
  6. Bra tips för den som vill börja fondspara (October 7, 2006)
  7. Light-Hearted Parenting Tips (September 16, 2006)