What makes software valuable?
Does anything better explain the ubiquity of software than it’s value? We use it to learn, to connect, to laugh, to create, to plan, to work, to live, to escape. These are things we want, and so we want software. And given it’s incredible expressiveness, it feels like we’re only at the beginning of understanding the incredible range of new value software might provide to civilization, with new ways of using software transform every part of human experience in both exciting and unsettling ways. This deep well of opportunity is going to drive the global economy for some time, while we explore the depths and dangers of software as a medium over the next century.
But as expressive as the medium is, it often strikes me how the tapestry of value that software supports still reduces down to a few key elements of functionality, just as with other media. Film has a 2D plane of light, with frames with synchronized with sound. Print has typography and graphics. Games have rules, a beginning, and an end. As a medium, what are software’s fundamental abstractions?
One that I’ve observed underlies software’s ability to connect us with people and information. All of this functionality really reduces to the ability to persist and transmit data. Reading a bit, writing a bit, sending a bit, receiving a bit: these are the four atomic units of software’s information value, enabling us to persist information, distribute to each other, communicate it, and learn from it. At any higher level, it’s other media such as video, music, and writing that are providing the value, not software.
The other abstraction I’ve noticed underlies software’s ability to complete tasks we don’t want to do or can’t do: to compute something, to act in the world, to make a decision, to render something, to print something. All of this automation reduces to the ability to execute procedures, which are fundamentally about control flow. Next instruction, jump to instruction, jump if true: these are the atomic units of software’s automation value, enabling us to delegate to computers a vast range of valuable procedures. Other media have provided us value in the same way: we use biology, chemistry, and physics to automate for us as well.
Beyond control and data flow, are there other irreducible abstractions that enable software’s value? Perhaps one’s we haven’t yet invented?
Perhaps software-based sensors will be a new foundation of software-based value. Sensors that capture light from the world in the form of photos and videos are now ubiquitous and created an unprecedented scale of capture. Sensors that capture identity, like the FaceID system in Apple’s new iPhone X, and other biometrics, could become the foundation of a (terrifying?) model of the social world. Maybe the ability to print objects will be a new foundation of value, allowing humanity to finally craft the world around it to it’s exact requirements.
To me, all of this rumination over foundations isn’t aimless philosophizing. Understanding these fundamental sources of value is a practical endeavor for prediction. If we can find these foundations combine them with our understanding the human condition, we might anticipate the futures software will bring us, and how they will and will not serve our goals.