Dan Stroot

How Software Learns

Hero image for How Software Learns
3 min read

I recently read the book "How Buildings Learn" by Stewart Brand (creator of the Whole Earth Catalog). It is a wonderful book, and the whole time I was reading it I was also thinking of it metaphorically like creating software. One of Stewart's premises is that buildings learn and adapt over time - they are constantly refined and reshaped by their occupants. Maintenance is crucial to a building's lifespan and human value. Maintenance is tailoring a building to it's occupants true needs and use.

This is similar to how software maintenance is crucial to tailoring software. I found it deeply satisfying to think of software, like a building, as a prediction of the future - yet a prediction of the future that we know is wrong even as we create it. However, it becomes less wrong as time, experience, and knowledge are added (maintenance).

If a city, a town, or a building, is not undergoing upgrade, repairs, and new additions, that means it is dying. That constant din of work is the pulse of life for human environments. Jackhammers removing the old are the sound of a city’s metabolism. Neighborhoods that have construction in them are alive; those without it are dying.

A building needs upgrading and repair to remain healthy in the long-term. There are entire countries like China and India which are like nation-sized construction sites. It seems that every city is chock full of unfinished demolition, detours, cranes, dug-up streets, and on-going construction. The visible, tangible motto is “Pardon our dust, exciting changes in the works!”

If we think of this as a book about complex systems there is much to learn. I've personally applied many of these lessons to software engineering. As you read my book notes below imagine we are speaking of software rather than buildings. Try substituting the word "software" for "buildings" in your mind. See where the metaphor takes your imagination.

Book Notes - "How Buildings Learn"

  1. All buildings are predictions, and all predictions are wrong. Design so that it doesn't matter.

  2. Whatever a client or architect says will happen with a building, won't. Whatever you are ready for, doesn't happen. Whatever you aren't ready for, does.

  3. Always choose the option that gives you more options. Avoid cutting off choices.

  4. Design decisions will keep happening through the whole process, permissions, site preparation, construction, finishing, inhabitation.

  5. Buildings shouldn't look exactly like their models. That's when people knew the least about what's really needed.

  6. A building can't be finished. All buildings grow.

  7. Almost no buildings adapt well, but all buildings adapt anyway.

  8. In many fields, "architecture" means "unchanging deep structure".

Architecture in use

  1. Buildings have architectural "layers". The slower layers (site, structure) constrain the quick (services, space, stuff). Keep services separate from skin as well as structure:

    • STRUCTURE: foundation & load bearing, rarely changed
    • SKIN: changes every 20 years, more air-tight, better insulated
    • SERVICES: Plumbing, electrical, etc. - changes every 7-15 years
    • SPACE PLAN: interior layout, walls, ceilings, floors, doors. changes every 3-30 years
  2. Always provide excess services capacity.

  3. Document the layers as built. Everything that is buried will be dug up some day. Leave a treasure map.

    • Take photos after the services are installed but before the sheetrock/skin. Record precisely where all the services are before they are hidden.
  4. Keep scrupulous maintenance logs. Precisely what was done, when, and by who. Schedule the routines of periodic servicing and preventative maintenance.

  5. Over 50 years, the changes within a building cost 3x more than the original building.

  6. We are in denial about maintenance because when done it's just a negated negative.

  7. A new building is a bad teacher of maintenance habits, since deferring of maintenance is our nature.

  8. Spend more money than usual on the basic structure. Less on finishing. And more on maintenance.

Unique architecture

  1. Make a building that is easy to maintain.

  2. Pouring concrete on the ground for an instant foundation is mal-adaptive because pipes are buried, and there is no basement space for maintenance and services access.

  3. Build so it's easy to make little modifications in a way that once you've made them, they feel integral with the nature and structure of what's already there. Be able to mess around with it and progressively change it, adapt it.

  4. Hire good builders and save money in the long run. Invest in better construction to spend less on maintenance.

  5. Adaptation between buildings and users is slow and continuous process that can't be achieved in a single leap.

  6. The "temporary" is permanent most of the time. If the cheap fix worked, it stays. If it failed, it's embarrassing to remediate.

  7. Occupy a building while it's being finished or remodeled. It's worth it for the fine-tuning that your presence affords. Make sure things sit exactly where it feels best for you: counter height, fridge, sinks, etc. It should fit like tailored clothing.

  8. Fine-tuning (making little repairs as you go) turns a building into a joy. Find things that don't work and try things that might not work. By failing small, early, and often, it can succeed long and large.


Image Credit: Google’s New Bjarke Ingels and Thomas Heatherwick Designed Headquarters

Google's new Bay View campus, spanning 1.1 million square feet of space at NASA’s Ames Research Center in Silicon Valley. Designed with ideas of innovation, nature, and community in mind, the end result is a uniquely open space capable of furthering Google’s ambition to operate entirely on carbon-free energy for 24 hours a day, seven days a week by 2030.

Sharing is Caring

Edit this page