Author: Tim Sheiner
The context for this proposal is the assertion that the ability to convert knowledge of system form into a specification for software form is the critical system thinking form of knowledge of our age. “Software is eating the world.”
Entrepreneur and investor Marc Andreesen made this claim 3 years ago in an essay published by the Wall Street Journal. His fundamental argument is that we have reached a point in the evolution of information technology where software infrastructure, programming tools and design skill sets have aligned with human expectations in a way that is quite literally changing the world. While Andreesen’s focus is the for profit business domain, his point applies much more broadly: software is a transformative intervention for all forms of human interaction. As such an understanding of how to create software has become an essential skill for system thinkers who seek scalable and cost effective ways to promote real and sustainable system change.
Despite his certainty that the future of human commerce is software, Andreesen admits quite frankly that the process of creating useful and valuable software is ‘brutally difficult.’ A primary challenge that he describes is a lack of education in the skills required to effect the construction of useful software.
At a high level the skills involved in creating software that improve information flow within a system organize into three distinct activities:
1. Define the System Abstraction
2. Convert the Abstraction to a Software Design
3. Build the Software