content: One of the issues is that they try to use engineering practices and methodology when it's not particularly well suited for the task. To use the bridge-building metaphor, engineers design a static bridge, which will perform one function, i.e. let loads of up to N cross the bridge in relative safety. Programmers are generally tasked with making something significantly more complex and fluid than bridges. A city builder would be a better metaphor - a city builder for a particularly twisted type of distopian city, where every detail has to be planned for and every contingency tested before anybody is allowed in.