> The problem is it's still a fast-changing discipline, with the unknowns dominating the knowns. The biggest known is construction time: most disciplines have a construction/distribution period long enough that it can cover/buffer for variation in the design phase; in software, the construction/distribution period is nigh unto instant (compilation), so design can't hide behind any other phase. It's all design, usually entailing something significant designers have never dealt with before.
This: an estimate to build software before the development has started (even assuming that the business requirements are frozen) isn't equivalent to an estimate to build a building once the design is set, its equivalent to an estimate of how long it will take to design and build a building once some of the basic objective parameters are set (like how big the footprint it can have, how much office space it needs to provide, etc.) but before the actual design has started.
This: an estimate to build software before the development has started (even assuming that the business requirements are frozen) isn't equivalent to an estimate to build a building once the design is set, its equivalent to an estimate of how long it will take to design and build a building once some of the basic objective parameters are set (like how big the footprint it can have, how much office space it needs to provide, etc.) but before the actual design has started.