Software Delivers Information
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.
The Three Questions of Utility
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 just how efficient the delivery act is becomes irrelevant.
Explanations and Predictions
What I have introduced above, the observation and the associated questions, essentially amounts to a software paradigm. In what follows, I want to show the paradigm in action. The paradigm can explain some phenomenon and generate some predictions.
It should be noted that the three questions of utility are open-ended questions of degree. Aka, they are pretty vague. Thus, it is understandable that there will be debate around any predictions formed from them. For this reason, I want to stress that everything here below is up for debate.
user-centric design can be explained by it's utility in addressing questions (1) and (2)
The end user is the beneficiary of the information delivery. If that end user is a human, literally asking that human questions pertaining to (1) and (2) would be useful.
New tooling marketed as making the developer experience easier and/or more efficient can be explained by it's utility in addressing question (3)
The core argument in the evolution of technical tooling is making the developer experience easier and/or more efficient. For example, a new tool can allow for more focused work by abstracting away boilerplate. This makes the developer experience easier, which addresses (3). Or, a new tool can make the developer better in some sense. This makes the developer more efficient, which addresses (3). If a new tool fails, I would argue that it's because it didn't actually address question (3).
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 you disagree, within paradigm, it is because you claim the available information is affecting. As mentioned at the start of the "Explanations and Predictions" section, it's reasonable and fine to disagree.
Smart watches will fail
Smart glasses will fail
Smart watches and smart glasses do not deliver affecting information to the end users. If new information comes along in the future which can be delivered affectingly to end users via such devices, then they will succeed.
Data visualization dashboards will never be that useful
Machine learning in a data lake will never be that useful
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. (Collecting information hoping you will eventually know what to do with it is slightly different, and is only as useless as you hope is misguided. But, it should be discussed elsewhere.)
This observation, associated questions, and the resultant paradigm, are all philosophical in nature. That makes them all useless and important at the same time, in my opinion. Also, it makes them arguably obvious.
Discussion is welcome.