The ‘ideology’ of software engineering

NOTE HXA7241 2011-08-21T11:32Z

The theoretical ‘ideology’ of software engineering seems to be logical, mathematical – this is how we implicitly think of software, that is what computer science leads us toward. But is this a little misleading?

Software is essentially constructional, synthetic. This means it is crucially about transformation. Software engineering is not so much about defining a formulation, as building it, that is, organising incremental changes.

Mathematics wants to produce timeless final artifacts, permanent truths. But software is not built to be a final statement, a logical foundation; it is built for human intentions. Software is for building changing artifacts. Mathematics seeks truth, software seeks usefulness.

The mathematical ideology of software makes changes seem a bit awkward, a burden, a fault. But really change is what software – as the production of actual useful artifacts – essentially is and should be built on.

Change is what we spend time doing with code. Change is something we want to do – to make new things. And change is something software is uniquely capable of. Yet we do not seem to address it properly. We do not have a systematic, formalised, understandable way of doing it. This looks like a big gap in software engineering.