All software does one thing, and one thing only: delivers information.
Who is the end user of the software?
- A human.
- The software terminates in a HUI (human user interface).
- The HUI exists in order to deliver information to the human reader.
- A machine.
- The software terminates in a data blob.
- The data blob exists in order to deliver information to the machine reader.
Decisions, in the real world, the hardware world, are affected by this information, and can be guided and controlled by this information, but the doing is not done by software. In an unnecessarily provocative sense, then, software doesn't do anything.
Given the above observation, you can fully evaluate the utility of any software by asking
Is the information delivery successful?
The answer to the above question is non-exclusively dependent upon the following questions:
- Is the information successful?
- Is the delivery successful?
It is under-specified as of yet what is meant by successful in the above questions. A more actionable paraphrasing of the three above questions are here below. Either triad can be referred to as the three questions of utility:
- Is the information delivered to the end user?
- Is the information affecting for the end user?
- Is the act of delivery efficient/easy?
All the above questions are questions of degree. I.e., each question could be appended to, respectively, by "how well?", "how affecting?", and "how efficient/easy?".
The first two, the most important two, are about the end user. If (1) fails, and the end user doesn't actually recieve the information, or if (2) fails, and the delivered information is useless, then (3), how efficient the delivery act is, becomes irrelevant.
This paradigm can be tested by leveraging its claims to make predictions about the future of software.
I want to preface my below predictions by stating that what constitutes affecting information is debatable. In what follows, I will claim that some available information is unaffecting, and thus the software built to deliver it is a failure. (If one disagrees with the predictions without abandoning the paradigm as well, then it is because one claims that the available information is affecting.) (Also, these are, perhaps, uneccessarily provocative predictions to make this somewhat boring article more interesting.)
Small, smart devices do not deliver affecting information to end users. A smart watch's utility as a data collector is affecting, which is why some products like rings and bands exist without digital user interfaces, but as a device designed to display information to the end user, it is unaffecting. The analog pocketwatch did deliver affecting information (the time), and glasses did as well (improved vision). But, until affecting information is displayed via these devices, they remain, approximately, to be of no greater value than their predecessors.
The core critique is: Does this graph deliver affecting information over and above a non-graphical representation of the information? The answer, I feel, is generally: no. The reason is that the performance of software is, generally speaking, threshold dependent. It doesn't matter to what extent your CPU utilization is below a certain threshold, but only if it's about to max out. It doesn't matter if you have 10 or 10,000 bugs, but only if you have one (critical one) at all.
The reason is similar to the above predictions, the delivered information is not affecting for the end user. Until you know what to do with data, collecting it is useless. A slighly more nuanced version: collecting information hoping you will eventually know what to do with it is only as useless as your hope is misguided.
Thank you for reading. :D