ABSTRACT
Over the history of computing, the methods and mindsets used to make software have evolved continuously in line with organisational change and social attitudes. We explore this shift from the mathematically rooted practices of the early programmers to their reinvention as a structured engineering discipline. From this point, there were increasing experiments and explorations of object orientation, agile working and networked services until we arrive at the current experience of AI-assisted coding. Each step forward in the practice of software development brings its own theoretical underpinnings. And as with any field of knowledge, each step forward does not commence ab initio but rather is a further layer on top of an already imperfect accumulation of knowledge. Remaining true to the critical perspective, this is not a technical timeline but a highlighting of key moments when ideas about how software should be created started a debate, took hold, were synthesised and sometimes faded. This is done to further illustrate how each programming paradigm, from formal logic to pair programming with AI, adopts certain values and worldviews. This journey presents software development as a profoundly, even oddly, human activity. And this observation itself reflects an ongoing tension between engineering discipline and craft.
