Software is not a product, it is a medium in which we store knowledge. As simple as this idea seems, the consequences of it are quite significant. If software is not a product, then software development is not a product of production activity, despite the common practice of managing it as such. Most organizations believe that job of software developers is to build a system that we then ship to a customer. It is not. The system we build and ship to the customer is actually the by-product of the real activity which is learning. Software development is the activity of acquiring certain kinds of knowledge. The software medium is simply the place we put the knowledge once we have acquired it.
Acquiring knowledge can also be considered as the reduction of ignorance. This article makes some observations on the nature of software, the acquisition of knowledge, the reduction of ignorance, and how these activities play out in the software field. In doing so, it helps to explain some of the classic conundrums of software development.
Armour, Phillip, "The Five Orders of Ignorance: Knowledge, Ignorance, and The Nature of Software" (2005). ACMS Conference Proceedings 2005. 12.
Applied Mathematics Commons, Computer Sciences Commons, Higher Education Commons, History of Science, Technology, and Medicine Commons, Mathematics Commons, Science and Mathematics Education Commons, Teacher Education and Professional Development Commons