Philip G. Armour wrote an interesting column in this month’s Communications of the ACM “The Ontology of Paper.” It’s an argument for moving away from software specifications that are predicated on text (which he refers to as paper, ignoring any ability to draw or diagram using paper). What follow are his concluding sections (emphasis added).
Given that software is a knowledge medium, the future of software engineering clearly lies in constructing software artifacts using media, tools, and representational forms that:
- Can integrate knowledge both locally and remotely,
- Use different (and preferably programmable) representational forms than text that better lend themselves to the time- and state-based structure of the problem we are describing,
- Allow linking and manipulation of ideas remotely (for both machine operation and human understanding) and, most importantly…
- Are executable.
It is a common cliché that we are currently going through an “Information Revolution” that may be more profound in its consequences than the development of steam engines was in the Industrial Revolution. This is undoubtedly true, but it is missing one important point: the Industrial Revolution did not occur when we built steam engines, it occurred when we used steam engines to build steam engines.
The true information and computing revolution will not occur until we use software to build software; until we really use executable knowledge to create executable knowledge.
It’s an interesting paper. We don’t normally associate exponential growth with bootstrapping, but to the extent that a surplus is re-invested in the business and it generates a consistent (if not increasing) return, you can think of a bootstrapping business as one that exists as a sequence of prototype businesses, each giving birth in turn to a new business that is more robust, if not more profitable, than its predecessor.