Over the last year or two, I’ve noticed a gradual, somewhat pompous trend in predicting the demise of the humble software developer to see them replaced by AI. There is no question that AI is going to profoundly affect many professions, particularly in terms of productivity, but these claims mask the reality of modern software production in which we will still very need coders.
The proponents of this cause clearly have short memories. Code automation has been around for at least 30 years that I know of, with Microsoft Visual Basic being a common example. With Windows Forms being the only main interface back then, you could drag and drop controls (buttons, checkboxes, listviews etc) on to a form and double-click them to get an event placeholder created, ready for you to add your own code. ActiveX controls took things further; database connections could be set up and then invoked without writing any code at all. And that’s before things evolved into automatically-created data access layers, where you point your application at a database, and it writes the code for you. The Model, View, Controller (MVC) design pattern was another leap forward; whole classes of code produced for you with a few clicks of the mouse, before you place your own business rules inside.
The point here is that the levels of automation in software development have been rapidly escalating for decades, yet we still have a shortage of software developers. AI definitely shifts productivity up a gear for coders, but the context i.e. the actual reason WHY you are writing the code, will still be the preserve of programmers. AI just doesn’t have the creativity to solve these kinds of problems accurately yet.
The reason I can say this with some confidence is the way in which we use AI today to access all this productivity. It is handled through a prompt, and while you can repeatedly prompt an agent with information that might be able to build a software application, the small details, nuances and customised business rules are will rely heavily on the human interpreting requirements and instructing the AI to deliver against them. In other words, what is briefed can become very subjective, where accuracy and logic may be compromised in the code depending on what you ask the AI to do.
Furthermore, how will the code handle its first test when put in front of a client or user? Would you have to go back to the prompt or hand-edit the code to correct? And what about change requests? The process of incorporating all the features requested by a client – as well as the ones they’ve not yet thought of until development gets underway – also need servicing. And that’s before the software developer’s living nightmare: the logical error, where your code compiles and runs perfectly but doesn’t do what you expect it to. Would AI leave those holes behind in your procedures?
The other major issue here is intellectual property. Software developers can easily assert their rights over code because it can be assumed that what they’ve written works, thereby has some kind of value, and at the simplest level, by not publishing or sharing it, the code is protected. If a coding-optimised, Large Language Model (LLM) produces an app for you based on your prompts, it would be easy for the LLM provider to assert some kind of ownership on the output it creates; if nothing else, it would be a reward for years of training and research that went into building the LLM. You only need to look at the disputes in the music and entertainment industry to see the kind of challenges the use of AI will bring.
Despite all this, there is little doubt that the use of AI in software development will aid productivity. I can imagine early client workshops changing beyond all recognition: instead of the usual day-long process of brainstorming functionality and organising it, you could build and test a simple wireframe, capture all non-functional requirements, future ideas, look and feel, tune to your end audience all from a number of prompts taken during the client meeting. It may even be possible for an agent to do this as the workshop progresses automatically.
We should acknowledge that sectors advanced through greater use of technology tend to open up more opportunities. It’s entirely possible that the software development role will evolve, in much the same way that some other production roles, such as Configuration Management (compilation and distribution of code into test, pre-production and production environments) has disappeared altogether.
But the software devs aren’t finished yet.
Leave a comment