Back in 1991, I taught my first class in AI: further evidence that the idea is hardly new. Yet, recent advances in AI — notably more modern generative AI and deep reinforcement learning — are a revolution, arguably the most significant leap in technology since the Internet. The world of software development is one area where AI is already making a profound impact, and the potential benefits are immense.
For software development teams, AI has the power to go faster, deliver better results for end users, improve efficiency, and reduce many tedious, time-consuming tasks. While AI requires a mind shift and has implications for today’s developers, it also presents some significant opportunities. For instance, within Perforce, we have been experimenting with various AI technologies available, including coding assistants. What we are seeing, even within a few months, is that the more the AI tools learn about the context of where they are being used, the better the outcomes, with our reactions going from: ‘Well, that wasn’t a very smart suggestion’ to ‘Wow, that’s a great idea and a different approach.’
Think of these coding assistants as junior programmers looking over developers’ shoulders, a helpful alternative to having a human pair programmer. And in terms of velocity, the speed increases are impressive, accelerating development processes so that software can be delivered and deployed much faster and on a bigger scale.
Of course, this is still all at a very early stage, with a lot of experimentation and naturally creating some wariness and even resistance. Also, some AI tools are better than others, with results varying depending on the programming language. But, rapidly, we are reaching a tipping point where the question is not ‘Is it worth using AI in software development’ to ‘Why would I not use AI in software development’.
Impact on developers
So what does all this mean for the future of developers? Ignore the scaremongering headlines: human programmers will be required for a long time, and their skills will be in demand more than ever for a couple of reasons.
First, people who understand coding must verify that the recommendations made by AI make sense and are safe. At this stage, AI is still working with the basics, and while they have some appreciation of context, it is still relatively limited. So, it sometimes makes mistakes, which are often quite subtle, so developers do need to pay attention and double-check the suggestions being made.
That said, in the future, we are likely to see a combination of AIs, perhaps with one generating the idea and the second fact-checking and, if not satisfied with the results, will ask the first to try again: in other words, AI fixing itself, which is one of the benefits of generative AI.
However, AI will still lack the contextual intelligence of a human programmer. For instance, if looking at 600 lines of code (a very modest amount given that codebases often have one million plus lines), should the AI tool be looking at a file created last year, the one next to it, or the one a colleague is currently editing? What about security and performance? How about ensuring maintainable, testable, and explainable code?
It will be many years before AI can reliably perform all those tasks. In the meantime, AI is helping developers evolve their roles from pure keyboard time to more of a supervisory or editing one, ensuring that AI tools cover all the correct bases and guiding them to make improvements. It is comparable to training up a team of juniors, just on a much larger scale than previously possible. In turn, developers can focus their efforts on the more creative and rewarding aspects of their jobs.
IT skills gap
Also, AI is helping to overcome the massive IT skills gap because while team members will still need business logic and know which questions to ask, not all of them will need the same deep level of training required of traditional software engineers. Teams increasingly encompass a range of skills and backgrounds. AI will help them all, even the more senior-level individuals, because it will drastically reduce many time-consuming activities that have traditionally been the bane of developers’ lives.
Many of the routine aspects of the broader software development environment have already benefited from automation in recent years, such as code inspection and compliance requirements. AI is going to take all this to a whole new level. For example, coding assistants will likely be writing tests, automatically testing and debugging code, and other activities that are part of the overall developer experience, beyond the actual writing of code.
Reducing overhead
This matters because all these activities — let’s call them overhead — can account for between 10-80 per cent of a developer’s time. Not only is this a waste of valuable resources, it is demotivating for a developer (who, after all, probably did not aspire to this role to write reports). Instead, AI can look for what is needed, make the links, and write the descriptions. While a developer will still need to check the content, most of the tedious labour has been taken out of their hands.
AI can also help new team members get up to speed by turning onboarding into an automated process, with an AI guide showing a recruit around the software development environment, with infinite time and patience to be asked the same question multiple times. Similarly, AI can help more experienced team members enhance their skills through automated training.
Best practice
While AI has much to offer, there are some issues to be aware of beyond checking whether AI’s suggestions are correct. One of the most significant aspects is knowing where the AI tool has originated and what sources it is using. Questions to ask include: what was this trained on? Who owns the copyright of the code? What about plagiarism, licensing obligations, and security implications?
These are all challenges that already exist within software development, but once AI is involved, everything is going to happen faster and on a larger scale, so an organisation’s guardrails need to be more robust than ever before. For example, it is essential to give developer teams room to experiment and explore new technologies for themselves, but within the parameters acceptable to the organisation. This is why we have introduced an AI Innovation Council at Perforce to help provide scope for exploration while still prioritising what is best for customers, employees, and the overall organisation.
AI has so much to offer, and while the technologies are still in their infancy, the implications for software development teams are vast. Nor is it something that can be deferred for a couple of years; otherwise, organisations risk being left behind. Acting now — while acknowledging we are all learning about AI’s strengths and weaknesses — will mean a competitive advantage and being part of one of the most exciting adventures in the history of computing.