Why do most people today view software as a commodity product when nothing could be farther from the truth? As a software developer type, I could blame it on marketing, but that is not the whole story.
Software is to most people, completely intangible. That is to say nebulous. The laws of physics seemingly dont apply to our world of software. Software does not have a physical shape or a form that one can readily see or touch, other than on a computer screen. And even on the computer screen, you do not see the actual size or complexity of the software because it isnt all on one screen. In fact, you have no idea how many screens there are. And even if you knew how many screens there were, it still gives you no indication to the size and complexity of the software program. But once the computer is turned off, where did the software go? Poof! Its just like being at a magic show (and for some vendors of software, it truly is a magic show
Hundreds of billions of dollars are spent on software development, it permeates into almost everyones daily life, but it mostly does not occupy a physical space like the Empire state building for example. The Empire State building cost $43 million dollars to design and construct, required 3600 people and 7 million person hours of effort and took one and half years to complete. Most people can understand why once they see the size and complexity of the Empire State building.
However, in the software world, we are routinely asked to build such structures, with respect to equivalent size and complexity, with a nothing more than a few hundred thousand dollars (at best) with a handful of people, whose programming skills vary wildly, (a topic for a future post), and guess what, can you deliver that software to us next week? Ridiculous, yet it happens all the time. It is still happening today. Status quo continues.
Until we have a way of describing software size and complexity in the form of an architectural drawing or structural blueprint, that people can understand, we will continue to perpetuate software development as a massively labor intensive, non-predictable and non-repeatable, error prone process and remain in the pre-industrialization world forever.
Next week we will look at a new way of describing size and complexity using a modeling tool that produces architectural blueprints (and code generated solutions as it turns out).
However, tomorrow is Friday and time for Stupid Computer Tricks!