The post looks at the recent series of computer systems outages among U.S. air carriers and notes that acceptance is an inevitable result:
Truth is, software failures like the ones experienced by the airlines have become all too commonplace in all industries. We treat news of software failures as though they were inevitable and almost expected and, particularly with an industry like the airlines, we accept the apologies that are granted because we have no other alternative than to do so.
As to why, the post notes a common basis:
… many of the problems stem from existing software that has either been upgraded, customized or had new versions built on top of it.
The post focuses on the need for structural quality of software and lists some compelling reasons for poor quality:
Most developers are not experts in their particular domain initially and most of the learning comes only by correcting mistakes.
Applications are a complex array of platforms, business logic and data management that interact through middleware with enterprise and legacy systems. Since developers cannot know everything they make incorrect assumptions and decisions.
The break-neck speeds at which developers are asked to ply their craft often means software quality becomes a sacrificial lamb.
When new software is built on existing code developers must spend much of their time trying to figure out what the "old code" did. If time or complexity constraints prevent a full understanding, then "work arounds" are introduced.
Poor quality may be introduced via mergers and/or acquisitions.