Software Vs Buildings

I hope I won't stretch this analogy too much, but architects/builders/etc. of buildings do not have the opportunity to refactor their constructions much once the building is up. Therefore, they have a different discipline, a different process. In general, we have more freedom to change software along its life-cycle, but when software becomes a component that other things depend on, it's not so easy anymore.


Sure, but what building architects don't do is exhaustively design every feature of a building before the ground is broken. Many large buildings these days are built by "Fast Track" methods; quite often the designs for the upper floors aren't complete until long after the foundations have been dug and basement built. This does sometimes lead to some redesign work. A new building near my office (City Point, where the old Brittanic House was) has tenants in place on the lower floors, with construction work still going on around and above them.

Sure, steel and concrete and glass are less easy to change than code, so they have to do some more thinking ahead, but less than we're often led to believe. -- KeithBraithwaite


The difference is that buildings are manufacturing-intensive compared to software. If you believe that TheSourceCodeIsTheDesign, the cost of manufacturing software is epsilon. Given that, a programmer spends his time designing (writing code), and then hits the "make" button - the entire software construction crew is hardware and software!

When construction costs are heavy, it makes sense to do BigDesignUpFront, and to manage risk by narrowing scope and sticking to known practices. When construction costs are minimal, you can test by designing, and can increase scope and try new things (like new features).


The answer is "yes and no." Some buildings haven't been redesigned since being built but some have. Citicorp Center in NYC was overhauled when it was determined it might fall over in a severe storm. The Tay Bridge in Edinburgh did collapse, Notre Dame Cathedral is (I believe) only standing due to the flying buttresses added well after construction was finished. The LeaningTowerOfPisa has only recently been made stable. The Brooklyn Bridge took 14 years to complete which while "big" isn't an example of BigDesignUpFront. I'd also point out that heavy "construction costs" are not limited to heavy construction. Many software projects cost significantly more than lots of buildings cost. -- tl


When a system is hard to change once constructed, it makes sense to do BigDesignUpFront. Buildings are, generally, hard to change; building designs are easier. Software systems can be hard to change but can also be easy, it depends on the developers' priorities and tools and approach. -- TomAyerst


In most office buildings I've seen built, the contractor builds the basic shell and then builds out the interior on a tenant by tenant basis. The initial plan makes very few assumptions on what the final floor plan will look like and the floor plan is then laid out to fit individual tenant needs. This sounds a lot closer to XP than BigDesignUpFront. -- WayneMack

Actually, it sounds more like a generic infrastructure, product style development (see ProductLineArchitecture etc.) -- TomAyerst


EditText of this page (last edited July 31, 2003) or FindPage with title or text search