How is AI going to change software engineering?

AI has the potential to transform industries, revolutionise processes and enhance productivity. In this blog we consider the change that AI will have on software engineering.
Date posted
3 July 2023
Reading time
6 minutes
Richard Rothery
Principal Platform Architect · Kainos

There has been an explosion of interest in AI, due to LLMs (large language models), like OpenAI’s ChatGPT. We can all agree that AI has the potential to transform industries, revolutionise processes and enhance productivity. Technology leaders predict that AI is going to change the way we do things as much as the arrival of the internet. 

Whilst most organisations are looking at how AI can drive new business or improve efficiency, I’m more interested in how it will impact engineers. My passion for Platform Engineering is down to my belief that engineers are at the coal face of value delivery in an organisation. We should be building systems, processes and tools that make engineering as efficient and rewarding as we can. 

Because of that I want to know how AI can help, and is it really the step change that it seems to be?  People can have divided opinions about AI, there are positives and potential negatives that need to be considered. But there’s no doubt that AI has a lot of innovative use cases, as we’ll see. But before we look at the uses of AI, let’s breakdown some of the myths first:

image

Myth 1. We don’t need developers anymore. 

I don’t think AI is about to replace developers, the type of AI we’re seeing in LLMs isn’t able to invent or come up with ideas. It can’t compare solutions the way a human can with our wide contextual knowledge. It’s guessing what the most likely output we want is, based on vast data sets and the most likely next word based on language (hence the name LLM). I don’t believe engineering is just about writing code, it’s about solving problems. Which as I said, AI can’t do.  

I think we’re more likely to see AI adjusting the way that software developers work. Removing repetitive or mundane work. Freeing them to be creative in problem-solving, system optimisation and system design. Think about the introduction of intellisense or autocompletion as a good analogy here. In time it may be that AI gets good enough to change development such that it morphs into something else, but if it does, that shift will take time. 

Myth 2. If engineers get 10X more efficient, then we need 10X less engineers.  

Greg LeMond was a world class cyclist who used to say, “It never gets easier; you just go faster.” What he meant was that as he got fitter (more efficient) he just went faster. It wasn’t that he could put in less effort. 

I believe this is what we’ll see in industry. Engineers won’t reduce in numbers overall, but the total output from all engineers will massively change. This gives organisations the scope to move faster or get more done with less. As computers get faster and faster, we don't need fewer and fewer of them. In fact, the opposite is true, as it will be for engineers. I think we’ll see software engineering having a bigger part to play, tackling bigger and more varied problems that face global citizens. Let's get into the details..

"Coding has never really been about writing code – it’s been about understanding the problem space"

Richard Rothery
Principal Platform Architect
Kainos

How will AI impact the productivity of engineers?  

First, we must define productivity. Microsoft’s Developer Experience Lab (Working with Nicole Forsgren of Accelerate fame) has developed the SPACE framework and more recently released the DevEX framework to try to answer this question.  

Both SPACE and DevEx understand that productivity can’t be measured by a single metric. It is a result of several dimensions across both individuals and teams. In the following sections we’ll have a look at each dimension and how AI could impact it. 

1. AI will boost satisfaction 

For individuals:  

AI could reduce or remove mundane tasks such as writing comprehensive unit tests and documentation. Debugging, troubleshooting and issue resolution can be sped up leading to reduced frustration. Personalised learning can be achieved, all while working within the IDE (Integrated Development Environment). This means steady progress every day, boosting feelings of satisfaction and accomplishment.  

There is a question about whether this applies across all levels of experience. It seems that advanced engineers see the benefit of alternative suggestions they can evaluate, while removing errors and hallucinations. Junior engineers get benefit from the explanations AI can give. The middle ground is probably where danger lies, and we should focus here to ensure everyone benefits. 

For teams/groups:  

A recent study looking at the benefits of GitHub Copilot3 (Copilot X is likely to go even further) found that less experienced programmers benefit more from AI assistance.  If the AI suggestions are good enough to be trusted, there are implications around career mobility and job transitions into software development. Switching lanes could become easier because of the context that can be explained alongside the code. The resulting more diverse and inclusive software engineering community could be one of the most impactful benefits. 

 

image

2. AI can help improve performance: 

For individuals: 

AI can analyse the commits, commit history in repositories, and help engineers enhance the quality of code produced. Producing more scalable and reliable code with fewer bugs and security flaws leads to higher end user impact. It’s cheaper to produce and improves customer satisfaction.  

AI can detect code anomalies in real time and suggest fixes in the IDE before even failing or testing a build. It could, eventually, help reduce big performance tests based on advance learning on how code becomes scalable. The cost avoidance and sustainability/green impacts are potentially huge. This could be the biggest “shift-left” of them all, once AI is more accurate and dependable. Although, we do still need to consider the cost of creating and maintaining the AI systems themselves. 

For teams/groups:  

AI will help with the reliability of software written, so the teams will own a healthier software product. Healthier services reduce cross-team dependencies and help ship code faster, with fewer bugs and higher uptime. If boilerplate code and solutions can be provided by AI, then organisations are freed to be more creative and focus even more tightly on their core mission. The net result is higher impact on customers through a second digital revolution. 

3. The impact of AI on activity levels: 

For individuals:  

Activity is what most people mean when talking about productivity - it’s a measure of actions or completed outputs. Participants in the GitHub Copilot study estimated a 35% increase in productivity. This is an underestimation compared with the 55.8% observed increase in productivity3. There is no question in my mind that those that use AI will be able to outperform those that don’t.  We’re in the early days where risk aversion (for valid reasons) is preventing the mass adoption we’ll eventually see. 

For teams/groups:  

As individual productivity increases, across teams we should see an impact on the key DORA (DevOps Research and Assessment) metrics: Deployment frequency, change failure, mean time to recovery and lead time.  

4. AI makes working together easy: 

For individuals:  

AI chat will enable engineers to learn from within their IDE using “conversational coding.” It will be able to explain the context of the existing code, explain patterns and “best practices.” Refining the prompts and asking for explanations at each stage (prompt engineering) will help human and AI work together towards the end solution.  

If that happens, then it’s only a small leap to using that process to document code and systems for those that follow. Eventually, we’ll see documentation that can be tab completed, or linted the same way curly braces currently are. With that will come better discoverability, searchability, accuracy and quality of documentation. 

Because we’ll be relying on AI to help write more of the code, a greater emphasis will be on how we review Pull Requests (PR). Spotting hallucinations and mistakes will be one part. But understanding how the code contributes to the wider problem and solution becomes more important. It’s uncertain whether AI will play as big a role in reviewing code (which it will be able to do) as writing it in the first place. Imagine giving a series of prompts that ask the model to give its feedback regarding security, edge cases missed, and unclear documentation. The models already do an impressive job. This is potentially better than a lot of human code reviews, and it is instantaneous, along with examples to reproduce the issues found and fix suggestions. 

For teams/groups:  

Through better documentation, AI will be able to assist in knowledge sharing. Teams will be able to see and use snippets, examples and service documentation from other teams with AI pulling the knowledge they need. AI enabled chat systems will be able to better contextualise the information that teams need when they need it. 

 

How FSI leaders are utilising MLOps for  ROI from data science

5. AI makes people more efficient  

For individuals:  

AI will be able to automate refactoring for readability, maintainability and help pay back technical debt. The ability to translate between languages including older languages, means efficiencies for modernising legacy application code. Until now this has been hard to achieve.  

With better information and feedback directly in the IDE, the number of hand-offs / breaks in process and interruptions will reduce. It will be easier to stay in a flow state. Take the example of pull request (PR) reviews mentioned previously. Imagine not having to wait for a PR approval but having the review and feedback instantly. To be clear – I don’t think AI is at the point where we would trust it without human review, but we’re on that path. There may also be improvements to AI that let you train the system to better understand the organisation’s context (policies, practices, approved patterns etc.) such that PR reviews include the organisation’s specific requirements. 

For teams/groups:  

Imagine writing 5000 lines of code to create a new tool, and then deciding it wasn’t worth it and deleting that code. That’s no different to allowing an AI to generate the code and then deciding not to keep it. The point is that the time saving here is huge. Being able to rapidly prototype and throw away huge chunks of code is something that has been expensive until now. We’ll see more tools created in this way which will then be made available to more teams to help in their daily work. 

Coding has never really been about writing code – it’s been about understanding the problem space, defining requirements to limit the scope of the problem being tackled, and translating those requirements into a solution (which is why I’ve always preferred the term engineering). The coding part comes at the end and is usually tedious, inefficient and full of mistakes. AI will take away the frustration at the end of the coding process to keep engineers where they are best: helping solve customer problems. 

In the next post we'll have a look at 7 considerations we think you need to keep in mind, when implementing AI as a software engineer. 

About the author

Richard Rothery
Principal Platform Architect · Kainos