First, the credits: The headline of an article prompted me to write this, so here is the article:
Now, my take is completely different.
Problem no #1 is that we don’t know what we want from a piece of software -not in a way that it won’t change the very next day after signing the top level requirements specification document. Reasons? It may be beyond our intellectual capacity, or it is just too painful to write it, or that the we (the customers) simply don’t care.
Don’t dismiss the first reason.
Problem no #2 The software writers too, don’t know what the software will be and what it is after it is written. Reasons? It may now be beyond human intellect to comprehend a reasonably large piece of software in a holistic way. It is just too painful to write it out in detail and to get it vetted and accepted. The software vendors simply don’t care. Why should they -given that every change fetches them revenues?
Don’t dismiss the first reason. The software systems are way too complex for human intellect. Ok, modern automobiles or airplanes are also very complex but software complexity is different.
Problem no #3 Lack of standardization of the way any information is handled. Examples: the way telephone numbers are written or presented or the way full names are captured and used.
Problem #3 Innovation. Both the users and writers believe that to innovate is good. So problems #1 , #2, and #3 get a solid rationale.
And I am not even talking about human errors in the process.
Given the way the markets work today, who has motivation and ability to (ask for and ) create standards and platforms so nicely granular that adding or removing features becomes simple? I also wonder if this is possible or not.