My Authors
Read all threads
There's a saying that writing software is more like tending a garden than constructing a building -- things constantly change.

But the more I learn about how buildings evolve, I think this process is actually a perfect analogy for designing software!

Thread:
The gardening analogy originated in The Pragmatic Programmer (afaik).

The claim: buildings are designed once and stable forever. But in a garden, things grow organically, you need to constantly prune and weed and tend. Aka, refactoring.
I found this framing helpful as an early programmer, but ultimately a bit hollow. Software adapts in response to changing human needs. It doesn't just naturally grow like a plant. The fundamental motivations seem different.
AND THEN, I started reading How Buildings Learn by @stewartbrand, and it all clicked.

The basic point of the book is that buildings evolve dramatically over decades in response to changing requirements. The parallels to software are uncanny.
One example, here's how James Madison's house Montpelier evolved over time.

1 family -> 2 family -> entertaining guests as President -> ... "all its owners are expressed, beam by beam"

Bottom picture shows the original footprint bolded. Remind you of any software you've built?
Another fun tidbit: Most of the cost of a building is actually ongoing operation and maintenance, not building the original structure. Just like software.
But what I find most interesting is that Brand has ideas for how buildings can be made adaptable, which I think we can use in software too.

"Age plus adaptivity is what makes a building come to be loved. The building learns from its occupants, and they learn from it"
He presents the "Low Road" archetype: buildings so shabby that no one cares what you do to them. Exposed plumbing, messy walls, empty garages. You can make it your own with no complaints.

How can we expose more plumbing??
"Temporary is permanent." The quick and dirty structure of a Low Road building often makes it highly adaptable.

Reminds me of those "temporary" spreadsheets that your company still runs on. Because you can color a cell or add a column, and no one complains
Another theme: buildings have layers that change at different rates. You need to allow "slippage" between the layers. How can we allow occupants maximal freedom to change the inner layers?
This gets at perhaps the most useful property of the building analogy: we already understand the value of designing our own interiors and doing some remodeling.

I want this for software: everyone modifies their space as deeply as they choose.

Especially amid quarantine placelessness, feels like software is increasingly an environment that we inhabit

Fascinating to consider how we can learn from the design of adaptable physical environments, to design adaptable digital ones...

The building metaphor also helps resolve debates around gatekeeping.

Professional Skyscraper Architects are correct that I, an amateur, should not attempt to build a skyscraper...

but doesn't mean I shouldn't rearrange chairs or build a birdhouse

I think it's possible to have great respect for the craft of design, while also respecting that people know their own circumstances and can learn to design quite well for themselves

I guess what I'm excited about right now is going into existing buildings, busting out the walls, and giving the inhabitants permission to redo the plumbing 🤓

Missing some Tweet in this thread? You can try to force a refresh.

Keep Current with Geoffrey Litt

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!