What is Software?
You can think of it as a set of computer programs. A program is a sequence of instructions for the CPU to perform a series of tasks (calculations and memory transfer). All the fantastic things we do with these programs are the products of the calculations and the memory transfers at the lowest levels of computing (i.e., the instruction set architecture). Understanding software requires a great deal of understanding of the underlying computer programs, how they are composed, how they function on the CPU circuits and their utilization of the hardware resources. But we're not discussing these issues in this article. Here, we would like to explore the identity of software and its economic aspects. These two critical components give the "software" umbrella to the set of programs that make up the computational aspect of software.
Identity of Software
We wouldn't call it software if it were just a set of programs. The identity includes many aspects that make the software functional and effective. These aspects of the identity are
the psychological indications of the user interface (studied by the folks doing HCI),
the marketing and branding components that deliver the feeling of need to the potential customers,
the physical delivery medium (shrink-wrapped shelf software vs. cloud distribution),
the legal contracts involving the provided support and the rights and the regulatory aspects of the software, and
the user manual along with the boring documentation.
To engineer effective and useful software, all these identity aspects must be carefully addressed.
Economics of Software
The topic of the economics of software is a complex one. However, basic principles need to be understood for software to make economic sense. Computer-based software is there for two reasons: (1) either replace an existing process involving humans and non-computerized hardware or (2) add new processes that did not exist before the introduction of the software.
In both cases, software must add economic value. That is, either cut expenses or bring profit. If software is added as a luxury or because of political pressure, it will be doomed to be poor and useless. Luxury software is created to score political wins or impose surveillance on competitors. It will have no real value, will usually be awful to use, and will be abandoned once political motives vanish.
When software is replacing an existing process, to make economic sense, it has to reduce the complexity of the process, reduce the processing time, increase the system's throughput, and reduce the need for inefficient human resources. In the so-called digitization efforts, these goals are often confused with transferring inefficient existing protocols and procedures to an even more complicated software system. These projects are also doomed to fail. People must change their mindsets and processes to make software useful and economical.
When software adds new processes, it must unlock potentials that were not utilized without it. For example, one can use software to authenticate official documents. This ability of software to give high assurance eliminates many complexities in bureaucratic environments, thereby adding economic value.
Take-Away Lesson
One thing to remember from this article is that software is a complicated artifact. It's not just a bunch of lines of code in a fancy language. It has to be well-designed, engineered and maintained using scientific methods. Software has to make economic sense. No luxury software can eventually survive.