Nature Of Software
https://tratt.net/laurie/blog/2024/what_factors_explain_the_nature_of_software.html?utm_source=tldrnewsletter
Software occupies a liminal state between the constraints of the physical world and an anything-goes fantasy world. We frequently mistake the constraints that software faces.
Software occupies the liminal state between the physical world and fantasy. Hardware imposes several hard constraints upon software, most of which are widely understood (e.g. computers have finite RAM, CPUs only go so fast, and so on).
Software, in contrast, is subject to relatively few hard constraints.
We therefore impose a great number of soft constraints upon our software to simplify our lives and that of users. For example, we might make our program only able to take one input file, or assume that people only live at one address at a time, and so on.
Our ability to specify what a given piece of software should be is limited by the circular specification problem. We nearly always have to fully build the software in order to know precisely what we want it to be.
Software is subject to the observer effect. The act of seeing the software in action changes what we – or more often others – think the software should be, sometimes radically.