Each week brings new claims around the power of AI tools. And AI-assisted coding tools are no exception. They're turning the heads of business leaders and developers alike, promising to transform how software is built by using large language models (LLMs) – the technology behind ChatGPT and other AI applications you may have used.
Over in the developer camp, Github is reportedly seeing great user feedback for its CoPilot product – the leading AI coding tool. Meanwhile, some business leaders claim that AI-enabled coding tools are driving unprecedented productivity gains and cost savings.
As with any hotly anticipated technology, it’s key to approach claims critically and separate fact from hype. This article aims to do exactly that, providing a balanced perspective on the current state of AI in software development and how organisations can harness its potential strategically. We’ll also look at the future of AI-empowered software engineering – including the emerging field of agent-based systems.
Let’s get stuck in!
What is AI-assisted software development?Organisations are harnessing AI in software development to augment and optimise various aspects of the software development lifecycle. Generative artificial intelligence (GenAI) technologies can help software engineers with code completion, bug detection, automated testing, test-driven development, and code generation based on natural language.
By learning from repositories of code and detecting development patterns, these tools aim to increase developer productivity, reduce errors, and accelerate the delivery of high-quality software.
Reality check: separating fact from fictionWhile the potential of AI in software development is undeniable, it’s essential to approach the claims with a healthy dose of scepticism. Some proponents suggest that AI-assisted tools can boost developer productivity by orders of magnitude. But the reality is often more nuanced.
‘AI can automate repetitive tasks and provide intelligent suggestions. But it’s not a silver bullet that can replace the need for skilled developers, or automatically solve complex software engineering challenges. Not yet at least’.
So far, the examples that have gained public attention only work on simple coding problems. And coding, after all, is just one step in the journey of getting digital products live.
The business potential of AI-empowered software developmentDespite the limitations, AI-assisted software development holds significant potential for businesses. If used correctly, these tools can help streamline development processes, reduce time to market, and improve overall code quality by augmenting human developers.
Research on this can be mixed, with quite wild growth gains being claimed and, more recently, some slightly more sobering reports.
For example, there are reports from the likes of GitHub and Keystone.AI looking at the economic potential of faster, AI-empowered coding. And academic papers exploring the tangible impact of AI on developer productivity. At the same time, recent articles warn that the hype around these tools may not translate fully into complex, real-world scenarios. And emerging studies highlight potential drawbacks like decreased code quality.
As the field matures, the true impact of AI copilots will likely depend on finding the right balance between speed and quality in the intricate world of software development. Still, organisations that strategically adopt AI in their development workflows could stand to gain a competitive edge by delivering software faster and more efficiently.
Navigating the challengesAI shows a lot of promise when it comes to helping with the development of new software components. But its effectiveness in tackling complex codebases and legacy systems remains a huge problem. These older systems often contain intricate dependencies, outdated coding styles and patterns, and architectural choices spanning different technological eras.
Refactoring and migrating such systems requires a deep understanding of the original business logic, historical context, the intricacies of the codebase itself, and the hardware it ran on. Teams of well-qualified people have systematically failed to solve this problem over the years. Talent moves on, and the data available to train these models is limited.
‘Current AI tools excel at narrowly scoped tasks like code completion, explaining, or creating documentation for self-contained modules. But they struggle to comprehend the broader architectures and dependencies of large-scale, distributed systems’.
There have also been claims that AI-assisted tools generate problematic code. These models learn from vast datasets of existing code, which can contain biases, errors, or security flaws, thus propagating these issues.
Overreliance on these tools might lead developers to accept AI suggestions without understanding the problem, making even human review difficult and potentially overlooking subtle bugs. What's more, complex ‘black box’ AI models make it difficult to know how code suggestions are made, hindering debugging and preventing informed decision-making.
AI often lacks the contextual understanding to ensure that code aligns with the project's requirements. While these risks exist, they shouldn't deter the use of AI tools. Instead, treat AI-generated code with scrutiny, apply rigorous testing, utilise it for augmentation rather than replacement, and prioritise developer education on the tool's limitations.