AI, Pipe Organs, and the Craft of Coding
A large portion of Matthew Crawford’s book, The World Beyond Your Head: How to Flourish in an Age of Distraction, is dedicated to a case study on the art and science of organ making. At first glance, this might seem an obscure profession. However, Crawford’s explanation of the sheer focus, attention to detail, and desire for continuity and longevity of organ makers’ products, made me ponder the state of software engineering today, which, in many places, has succumbed to an unsustainable, throw away mentality.
Crawford describes how developments in technology positively influenced the craft of organ making. The introduction of new materials, lasers, heating technology, mechanical saws, and air pumps, all meant organ makers could focus more on the quality and longevity of their products. The use of these technologies resulted in the alleviation of mundane and repetitive work, so that organ makers were able to transform and refine their craft.
Around the time that I was reading Crawford’s book, I received a phone call from a former client who advised me that the system I had built 10 years ago was only being decommissioned now. This phone call gave me a sense of pride in my ’craft’. Even if the system itself was not exposed to large scale or high levels of complexity, the fact that it survived and was able to be maintained and not thrown away for a decade gave me a sense that I did something right. Now, compared to the 400-odd years that an organ survives, a 10-year codebase may not sound substantial. However, relative to the way software engineering projects and code are perceived today, it certainly is.
Modern tools such as AI code generators bring with them the advantage of writing code quickly, which should give developers extra time to focus on code architecture, modularity, and readability—that is, their craft. However, the very efficiency of these AI tools may also contribute to an unsustainable ’throw away’ mentality by hiding the fragility of a generated algorithm, abstracting its complexity, and the need for testability and modularity.
All too often, the context in which many people write code is short-sighted, and the benchmark of its effectiveness is merely ‘does it work?’. The speed at which AI code generators produce code may give the impression that there is no need to check for the longevity, sustainability, and adaptability of code into the future. Unfortunately, this is a very low standard, and reveals an underlying carelessness intertwined with a short-term, throw away mentality. Instead, the time saved using AI tools should allow developers and engineers to focus on their craft and the quality of their output.
Today, I ask all people who code professionally– data engineers, software engineers, AI engineers – to start viewing the code you produce as a craft and to use modern tools to help in this endeavour. Take pride in the work you produce!
At this point, I wish to highlight the distinction between taking pride in your code and taking pride in yourself. Taking pride in your code means that you have the humility to listen to criticisms and improve on what’s being created. Taking pride in yourself means that you are closed to criticism and improvement because you interpret these criticisms as attacks on yourself, instead of seeing feedback or criticism as opportunities to improve your output and become a better craftsperson. What needs to happen is a return to viewing our profession as a craft, focussing on code structure, maintainability, testability, adaptability, maintainability, readability, and continuous improvement (amongst other things). All of which requires effort that is front-loaded, open to criticism and review, but will ensure a sustainable, cost-effective system long term.
For those who want to read on about the craft of coding, below are some resources (some are old but not obsolete) which explain techniques that can be used to code well and would be enhanced with modern AI code generators.
- Bob Martin, Clean Code
- Martin Fowler, Refactoring
- Michael Feathers, Working Effectively with Legacy Code
Finally, by viewing our profession as a craft, we can create code that stands the test of time, much like the pipe organs in the world’s most ancient cathedrals. These organs have been maintained and refined by multiple generations of organ makers and were aided by the progress of technology, not limited by it. Similarly, just as these organs have been carefully preserved and improved upon by skilled artisans, our systems can be maintained and enhanced by multiple coders over time, ensuring their longevity and adaptability for future teams and engineers.