I have a whole riff about why building a bridge and writing an application are completely different for one very specific reason; it basically boils down to: You only build a new kind of bridge one time, after which you are simply adapting the basic design (and ancillaries like the schedule) to the context. Whereas with software EVERY TIME is the FIRST TIME.
Then there's the separate issue of management: bridge engineers are never told to cut corners or ship a prototype.