Philosophy Of Software Development


Harrison Ainsworth

Philosophy of software development, like philosophy of science and philosophy of engineering, is about clarifying what it is and how it is done. (It could also be about implications, ethics, or other more contextual matters, but those shall be left aside.) And it may be an even more appropriate candidate.

Russell says: “Philosophy . . . aims at . . . the kind of knowledge which gives unity and system to the body of the sciences, and the kind which results from a critical examination of the grounds of our convictions, prejudices, and beliefs.”. But its status is kept always provisional, as Russell says also: “. . . as soon as definite knowledge concerning any subject becomes possible, this subject ceases to be called philosophy, and becomes a separate science.”. So it is more about trying than knowing, though if its scope is of the right kind, then the products can be real and valuable.

Software is the right kind of subject for philosophy to be fruitful: As far as a subject has logical structure then clarifying and organising its thought can help. And as far as a subject has uncertainty then philosophy has a place. Software seems well suited. It is a young field, entirely made of thought, spanning a range of certainty.

A first approach is to compare software with other similar disciplines, such as the building industry. And how they appear to relate leads to closer examination of their constituents. In the background is always an implicit form sought in results. Perhaps for software this would, or could, be the structures found in software itself: recursion is apt.

As an early, basic result, the subject can be divided into two major parts: philosophy of software architecture, alongside philosophy of software engineering – each assuming a meaning more faithful to the building industry.