Archive for the 'Friday' Category


Foundations 8

Software and buildings. Like any analogy I can only go so far before jumping that line into nonsense. Hopefully what I’ve written here is sufficiently handwaving without going too far back the other way to being pointless. Anyway…

With a bridge or a skyrise the physical laws such as gravity mean that for the life of the building you can’t really change the foundations. Changing the foundations generally means a new building.

Software construction is amorphous in comparison. The underlying code can be refactored and rearchitected whilst the software itself is still considered the same thing. Change the UI though, and you’ve probably got a new piece (or version) of software.

Having meetings standing-up aside, software is still often approached like bridge building. In fear of it “falling down” the architecture for the software is given utmost importance from inception right down to the code level where Christopher Alexander’s Pattern Language work has been somehow morphed into implementation guides and class diagrams.

Yet, with software it seems to me that the most physical part of the system is the user. Just like gravity will make a poorly constructed bridge fail, bad software will fail primarily with the user. Essentially, the user is the primary constraint.

Could it be argued that doing software development and not starting with the user is like building a bridge and not starting with gravity?