In this second of a two-part series on artificial intelligence (AI), machine learning (ML), and software intelligence, we delve into the specifics about how ML won’t be able to “decomplexify” the modern applications that power the world’s biggest companies. But it can help by training on and complimenting software intelligence. Read part one here.
With the “AI Arms Race,” now upon us, millions of people are using ChatGPT and similar applications to do, well, everything. Outcomes have been mixed. AI experts (armchair and otherwise) have posited that AI (specifically ML—read about the difference in the first article on the topic) will be able to ‘understand’ complex custom-built applications that often entail multiple layers, languages, frameworks, databases, tens of thousands of objects, and numerous relationships between them.
So how could machine learning work on code sets? Well, those who are most bullish on the concept have adopted the nomenclature “MLonCode.” In this model, a ML algorithm takes source code as input data with the intention of analyzing and understanding it, and ultimately automating development processes. In short, it uses natural language processing to extract meaningful information (i.e. features and patterns) for automation—a.k.a. unsupervised ML.
Sounds pretty good, right? It is. No doubt MLonCode has great use cases when it comes to software that relies heavily on frameworks that are linear, defined and predicted, like out-of-the-box software kits that enable users to explicitly specify their needs.
But MLonCode’s applications face serious limitations when run on bespoke applications architected for a unique set of requirements—i.e. complex custom-built applications.
In short, these kinds of internally facing tools built by companies for their own unique needs pose very serious challenges for unsupervised learning. For this sort of code base, MLonCode produces relatively shallow insights and pattern recognition: front end, backend, UI, etc. This is because bespoke software will have relatively fewer similar pieces to compare it to, so unsupervised learning has a much harder time drawing the sorts of insights it can about smaller pieces of code.
So unlike interpreting a predictive game tree like chess or go (reinforcement learning), or a clearly labeled input and output situation like classifying an image (supervised learning), once things become extremely complex, abstracted and interdependent, finding clear data groupings becomes much harder. And as of right now we haven’t come remotely close to the watershed moment when unsupervised machine learning can provide deep insights on complex software. Nor is that horizon anywhere near apparent.
AI and software intelligence: mutually inclusive and complimentary
To paraphrase the great Samuel Clemens, reports of the capabilities of AI are (probably) greatly exaggerated. But sensational headlines sure make for a lot of clicks and traffic! Getting back to the subject at hand, it’s highly unlikely that ML algorithms will crack the software intelligence problem—‘understanding’ how a software application works, how all its elements interact, and extracting a wide range of insights about its internal mechanics—anytime soon. And even if you were able to do it on one application, the second you run into another application that uses a different mix of languages, frameworks, database engines, and its own internal logic, parameters, etc., you would have to train the model again since every application ends up being a unique combination of multiple ways to "create" connections between all its various elements. And today’s technological ecosystem encompasses hundreds of technologies that can get intertwined into a custom-built application. Especially, as it evolves over time.
It makes far more sense to speak of AI and software intelligence as complimentary rather than counterposed as they are in many ways “apples and oranges.” AI can augment what software intelligence technologies do. Now software intelligence technology massively cut down on research time by enabling developers to rapidly navigate through internal software structures, across layers and languages. Then when it comes to more narrow information about a specific object like a relatively small piece of code written in one particular language, they can leverage ChatGPT to quickly learn what it’s meant to do in the context of the overall software system.
As ML algorithms get trained on software intelligence, there will no doubt be huge advances in development velocity. In the meantime, there are technologies that are already beginning to combine the best of both worlds. So we’ll end on another quote attributed to Twain (even though he probably didn’t say it): “The secret of getting ahead is getting started.”