Fascinating talk by Avdi Grimm at last month’s LoneStarRuby on The Soul of Software.

He contrasts two perspectives on software:

  1. Formalism. This is characterised by predictability, control, rigidity and the like. In OO terms, the emphasis is on inheritance. The goal is to represent the real world accurately through well-defined classes.
  2. Hermeneutics or informalism. This is characterised by freedom, flexibility, adaptability. In OO terms, the emphasis is on polymorphism. The goal is to construct a new reality inside the software.

Very interesting that this is presented as an either-or thing. I think this reflects our culture’s inability to reconcile nature and freedom (see my post on Why are we so obsessed with gender? from my personal blog). Whether or not we come down as strongly on the informalist side as Avdi does, there is clearly a lot of truth in what he has to say.

Avdi sees Ruby as ‘the heir to the informalist/hermeneutic phisophical lineage’ (39:20). This is both in terms of the language, with its great flexibility (even classes can be modified at runtime), and in terms of the community, with its informal and agile nature, and its suspicion of rigid, top-down methodologies.

Why does all this matter?

Reality is socially constructed. And we reflect our constructions of reality into the software we write. And then software goes and reflects those realities back up into society (38:15).

Compare the quote, ‘We shape our tools and thereafter they shape us’, which I discovered recently.

So this puts software developers in a terrifyingly powerful position:

Software will move from being a form of reality construction to being the premier form of reality construction (32:10).

We need to take this responsibility seriously, looking into the mirror, not just into the monitor:

We cannot pretend that our philosophy as programmers is disconnected from the impact that our software has on the world (38:35).

In summary, ‘When we write code, we shape the world’ (41:35).

Here’s the talk: