Over the past few decades, various movements, paradigms, or technology surges — whatever you want to call them — have roiled the software world, promising either to hand a lot of programming grunt work to end users, or automate more of the process. CASE tools, 4GL, object-oriented programming, service oriented architecture, microservices, cloud services, Platform as a Service, serverless computing, low-code, and no-code all have theoretically taken the onerous burdens out of software development. And, potentially, threaten the job security of developers.
Yet, here we are. Software developers are busier than ever, with demand for skills only increasing.
Also: 74% of developers are willing to quit for a new job. And it’s not just about the money
“I remember when the cloud first started becoming popular and companies were migrating to Office 365, everyone was saying that IT Pros will soon have no job,” says Vlad Catrinescu, author at Pluralsight. “Guess what — we’re still here and busier than ever.”
The question is how developers’ job will ultimately evolve. There is the possibility that artificial intelligence, applied to application development and maintenance, may finally make low-level coding a thing of the past.
Matt Welsh, CEO and co-founder of Fixie.ai, for one, predicts that “programming will be obsolete” within the next decade or so. “I believe the conventional idea of ‘writing a program’ is headed for extinction,” he predicts in a recent article published by the Association for Computing Machinery. “Indeed, for all but very specialized applications, most software, as we know it, will be replaced by AI systems that are trained rather than programmed.”
In situations where one needs a “simple program — after all, not everything should require a model of hundreds of billions of parameters running on a cluster of GPUs — those programs will, themselves, be generated by an AI rather than coded by hand,” Welsh adds.
What, exactly, will be the roles of IT professionals and developers, then? Catrinescu believes that the emerging generation of automated or low-code development solutions actually “empowers IT professionals and developers to work on more challenging applications. IT departments can focus on enterprise applications and building complicated apps and automations that will add a lot of value to the enterprise.”
Also: The future of the web will need a different sort of software developer
Up until very recently, “the focus of development has been on better leveraging engineering, or get more reuse out of a broader pool of code writers,” relates Jared Ficklin, chief creative technologist and co-founder of argodesign. “This has led to tools that facilitate orchestration, which allow normal application developers to use a graphical interface to orchestrate AI solutions using code modules called skills, written by experts in machine learning. Similarly, this allows subject matter experts in the business to orchestrate whole campaigns using an interface.”
Such machine learning-enabled tools “help gather requirements and leverage engineering,” Ficklin continues. “Where there are gaps, code writers need to jump in and close them. In all of these cases, the architecture is still handled by the IT department as there are a lot of points of interoperability and security to be maintained.”
With the advent and rapid progression of AI and machine learning, training models may replace coding at very fundamental levels, Welsh predicts:
AI coding assistants such as CoPilot are only scratching the surface of what I am describing. It seems totally obvious to me that of course all programs in the future will ultimately be written by AIs, with humans relegated to, at best, a supervisory role. If I have learned anything over the last few years working in AI, it is that it is very easy to underestimate the power of increasingly large AI models. I am not just talking about things like Github’s CoPilot replacing programmers. I am talking about replacing the entire concept of writing programs with training models.
A complete shift away from coding opens up new ways of looking at application development — to more conceptual and high-level business roles. “Exciting changes are coming from surprising directions,” says Ficklin. “The wider world has imagined low code/no code as a visual interface where you move nodes around to string together code. That is orchestration, and still requires knowledge of how code strings together.”
Also: Low-code development: Here’s how it’s being used
Fricklin illustrates this new means of developing and updating applications in action. “One of our current clients, Builder AI, has taken the unique approach of using AI analysis of voice conversations to gather requirements and then further architect and fulfill those experiences,” he relates. “They even have a voice assistant that can be added to a zoom call that will listen in to someone describing their mobile application to a project manager and automatically captures and lists features. A human then edits those, and the AI will then pair those into a pattern of architecture for an app. Where code modules exist, they are patched in, where they don’t, code writers come in and add a module. Over time this process will get more and more automated.”
This means more real-time computing, Ficklin continues. “One where software’s latency, rendering and assembly is invoked in real-time. You could imagine asking Alexa to make you an app to help organize your kitchen. AI would recognize the features, pick the correct patterns and in real time, over the air deliver an application to your mobile phone or maybe into your wearable mobile computer.”