In many human spectacular struggles and landmark achievements, we design infrastructure and architecture to facilitate our lives which we then rely upon for a long span of time. We have always built shelter for ourselves. Throughout most of known history, building or buying a home was a major starting step to growing up. This building would be maintained and used after that, often for the remainder of the builder’s life span and in many instances beyond. Architectural elements would be replaced as they wore out, and the design often took the wear and tear of normal living into account. As requirements and demands changed, the house might be modified. In general, though, you thought of a house as having alterations measured in decades.
More or less in the same fashion, human societies also create architectures that are built once, then utilized and trusted for a long span of time. Such infrastructure includes roads, bridges, water, gas and power distribution systems, sewers, seaports and airports, and public recreational areas, educational infrastructure, health centers, legal infrastructure and much more of it.. These also would be used and maintained without major modifications after they were built, often for many decades or even centuries.
In a striking contrast, software, the most complex human creation up to date, has been inherently short lived. Its lifetime is assumed to be very short and it is taken for granted that the current software no matter how much it looks good, would have to be replaced after two or three years. Why is it so? Why cant we build up a software, which could live for decades if not for centuries?