When we look at buildings, we tend to ascribe much importance to outward facing attributes: Where they are located, what their facade looks like, how they fit into their surrounding environment. We call this aspect “architecture” and define it as the process of planning, designing, and constructing a building.
Although it is easy to assess a construction work on the basis of its appearance, this doesn’t yield a complete picture: the question whether a building can be considered successful or not will rather emerge over time. “A building is nothing that you finish – it is something that you start.” This quote is from Stewart Brand’s documentary “How Buildings Learn”, in which he looks at the life of buildings after they have been put up. He categorizes the various aspects of a building into different layers, each of which behaving differently in their ability to respond to change:
- Site: the geographical setting, where the building is located
- Structure: the foundation and load-bearing elements
- Skin: facade and other exterior surfaces and elements
- Services: wiring, plumbing, heating, air conditioning, elevators
- Space plan: internal partitioning, floor plan
- Stuff: furniture, decoration, things
These layers of change are concrete and tangible, because a house is made of physical material. For instance, changing the site means relocating the entire house from one spot to another, whereas rearranging the furniture in a single room is done with a flick of the wrist. The required amount of work is apparent in both cases and transparent from the very beginning.
When we describe software we often borrow expressions from construction work: We build software, we create architecture, we provide and maintain infrastructure, and even on a code level we speak of patterns like facades. But unlike buildings, software is not made of physical material. Its main building block is source code that is poured into patterns and assembled to abstractions, forming the essential but virtual structure that the application eventually consists of. This makes the cost of change far more difficult to judge or – at the worst – easy to overlook at all.
The similarities in the lifecycles of software and buildings are astonishing. And just as buildings, the success of software doesn’t manifest in its initial concept or its primary design. Instead, the most decisive criterion for a software product is whether it stays competitive in today’s fast pacing industry: how it evolves over time and whether it is able to adapt to unforeseen requirements in a short amount of time. Both technical and market environments are always changing, and software must constantly be adjusted and moved forward to suit the unfolding patterns of its usage.
But how do we find a viable and sustainable path under these inherently volatile circumstances? It’s hardly possible to forsee every upcoming trend and wasteful to forearm for every imaginable alteration. And while it is basically a good habit to defer decisions to the last possible moment, we cannot stay open for modification forever and must make certain commitments along the way in order to move forward.
Decisions are chance and burden at the same time: they have the potential to speed us up, but they also add momentum and gradually decrease our ability to change the course. Having the shearing layers in mind can help us to identify and classify the severity of decisions. We can move forward rapidly when we are sure that the cost of change is low. But we should also recognize when it’s time to slow down: Maybe because we need to make an investment into the foundation. Or maybe because we need to redeem the depts that we had taken earlier.
Therefore, when we build, let us think that we build forever. Let it not be for present delight, nor for present use alone; let it be such work as our descendants will thank us for, and let us think, as we lay stone on stone, that a time is to come when those stones will be held sacred because our hands have touched them, and that men will say as they look upon the labour and wrought substance of them, “See! this our fathers did for us.” For, indeed, the greatest glory of a building is not in its stones, or in its gold. Its glory is in its Age.1
In the end, the interesting question is not what decisions we have made, but how we made them and how we considered the interplay of change and persistence. We are not just building for the here and now. We are working on products that grow through our steady contributions and that stay alive because we build them with change in mind.
- John Ruskin, “The Lamp of Memory” [return]