AI augmentation will be used for DevOps in semi-autonomous/autonomous software systems that self-monitor and repair issues without human intervention. With automatic test generation, tests will write themselves from natural language descriptions of what the software should do.
As the pandemic continues to influence markets, communities, and our day-to-day lives, the mindset for organizations entering the new year has become “agility in the face of uncertainty”. Encora’s Innovation Leaders selected the Top 10 Software Engineering Trends for 2022: the technologies, tools, and frameworks offering organizations new capabilities to enhance security, agility, and regulatory compliance.
We spoke with Software & Machine Learning Research Engineer, Jorge Hernandez, at Encora Mexico about the acceleration of 1 of the 10 trends driving innovation: AI-augmented software development.
What is AI-augmented software development?
Just like AI is impacting almost every facet of our lives, AI augmentation promises to reshape most aspects of software development. The core of the idea is to have people and AI working together to enhance cognitive performance, including learning, problem-solving, and decision-making instead of using AI to replace people.
The idea is not a new one. The English psychiatrist and scientist, William Ross Ashby, wrote about it in An Introduction to Cybernetics (1956), and so did the computer scientist J. C. R. Licklider in Man-Computer Symbiosis (1960), but the idea was most clearly presented by Douglas Engelbart, early computer and Internet pioneer best known for founding the field of human-computer interaction, in Augmenting Human Intellect (1962).
To what do we owe the rise of this trend?
Until recently most AI systems have been very brittle, they didn’t have the capacity to handle what we call out of sample inputs, which means that they cannot generalize or adapt to conditions outside of the norm the way we humans do, for example, a self-driving car trained in sunny California can’t drive itself in snowy conditions.
Transformers and attention, a new mechanism for machine learning first used for Natural Language Processing (NLP) tasks has changed that, making AI-augmented Software practical for the first time. The new systems that this mechanism enables are much more flexible and they allow us to work with significantly larger data sets, thus they are more applicable to the world today.
Where do you see this trend in the next few years?
In the short term, we’re going to see the impact of AI-augmented software development in two main areas: Testing and DevOps.
Today, as a software developer your development environment helps you write the test for your code mostly by generating the boilerplate that all tests require, at most, you get the correct names for your tests, but none of the actual logic. AI-augmented software development changes that, by allowing the development environment to write some of the logic for the tests based on the developer’s prompts, and in the future from only the natural language description of what the software should do.
Nowadays, DevOps teams are swamped by the number of alerts and amount of monitoring data that current software systems produce. AI will enable DevOps engineers to detect and respond to issues more quickly and effectively. In the future, semi-autonomous or autonomous software systems will self-monitor and repair most of their own issues with little or no human intervention.
How does AI help develop better software?
Steve Jobs famously said “What a computer is to me, is the most remarkable tool we've ever come up with. It's the equivalent of a bicycle for our minds.” A bicycle allows us to travel farther and faster than we normally can. Similarly, AI-augmented software development will help us build, test, and deploy applications that are more complex and powerful than the ones we have today.
AI-augmented software development helps reduce the cognitive load throughout the software development lifecycle. It helps people work both faster and with more assurance about the quality of their work by helping manage the complexity of the problem, allowing workers to off-load routine tasks to the AI so that they can focus on the creative and analytical tasks that humans do best.
How will AI-augmentation impact a development team?
It allows you to tackle more complex problems. It allows smaller teams to do more work than they would be able to do without it. With AI-augmentation, you don’t need a huge team to run a large, complex application.
The important thing to understand is that you no longer require huge amounts of data or computing on your own. You can get that from the cloud. You can get the distilled essence of the data in the model, in the AI. That allows you to tap into the actual knowledge of all developers, everywhere, who have written the code on which the AI was trained.
That’s a huge boost to our productivity. Instead of searching for some open-source software, it’s like having a librarian that you can ask, "I’m not sure if this exists. Could you find it for me?", but instead of a librarian responding with the book you need, it’s the AI saying, "Sure, I have your code."
What is your experience with AI augmentation?
I’ve used AI augmentation on several complex products, and the most exciting element was how it speeds up the cycle of writing good software.
The normal development loop we engineers go through every day starts with having an idea and then deciding how it is going to look as code. Next, we write the tests and code, and if it turns out it’s not exactly what we needed, we iterate on that.
AI makes that process much faster because it helps eliminate a lot of the grunt work, so we can focus on doing the much harder, and more fun stuff, which is problem-solving. This, not only means we can build systems faster, but that we can build better systems, because we are concentrating on the harder tasks, where mistakes can lead to big problems down the line.
How will AI-assisted Story Review influence AI-augmented Software?
Handling mid-sprint requirement changes is very challenging, but with AI-assisted Story Review the time to close the loop between where the team currently is in development and knowing what changes need to be made both design and code-wise given the new requirements will be much shorter. NLP-backed systems that help review the new requirements and turn them into consumables for the development team will do a lot of the heavy-lifting now done by project managers and technical leads in those situations.
How will AI-augmented capabilities impact Capacity Forecasting?
Capacity Forecasting is one of the most interesting steps of the software development lifecycle to apply AI-augmented Software to. Currently the process is very primitive due to the lack of visibility on the yet to be built system, thus it relies heavily on the previous experience of the engineers building it with similar systems; with smarter, self-regulating systems that change, it will become possible to more easily analyze and predict future capacity needs and to plan and budget accordingly.
How will regulatory compliance drive adoption of AI-augmented Software?
At the moment there are no clear regulations for AI in general, though specific systems may fall under the auspices of regulations such as the EU’s GDPR. Nonetheless, the EU is a leader in cyber regulation, and the European Commission recently released a proposal to regulate artificial intelligence (“AI”), to ensure a “well-functioning internal market for artificial intelligence systems” that is based on “EU values and fundamental rights.” This proposal has drawbacks and may introduce roadblocks in the deployment and use of AI augmentation.
Licensing and copyrights of code used as training data for AI model training, and the resulting code output (as is the case for Microsoft’s Copilot) is still a grey area.
Are there any promising advances you’re looking forward to?
There is some really exciting work that is being done to build much more powerful tools. Talia Ringer's work at the University of Illinois at Urbana-Champaign comes to mind. She works in what is called "proof repair."
We currently have tools to verify software, to make sure that it does what it’s supposed to do just by checking the code. But those tools are brittle, they take a long time to use, and they’re expensive. Only organizations like NASA can afford to use them consistently. These tools make the software development process safer, but the proofs they give break whenever you change the software or the requirements change. So, you have to change and reverify the proof to ensure that your code actually does what it’s supposed to do.
Professor Ringer is working on using techniques from programming languages and machine learning to allow everyday developers to verify their code and make sure that it has no bugs from the instant that it is written. Developers would also be able to change the code and evolve the code as requirements change, without it being expensive and hard to verify.
That is one example, and it’s exciting because once we can do that, it will totally change the way we do software engineering. Bugs will become something you can catch while you’re writing the code instead of having to wait for tests. It’s just a total game-changer. That’s one of the things I’m looking forward to.
How can an organization start incorporating AI augmentation to its software development processes?
I would go two ways. First, you can get your development teams familiarized with the tools that will help them generate both code and tests.
The second way is for the DevOps team, who’ll probably feel a more immediate impact regarding the reduction of their workload because they can plug in anomaly detection, which will tell them the level of importance of alerts.
Getting started with AI augmentation in one of these two ways will have a big impact on any organization that is developing software seriously.
What are some examples of organizations benefiting from AI-augmented software development?
Let me tell you about a small DevOps team. The system they were running was this highly complex one that used multiple services from their cloud provider, each of which generated its own alerts whenever there was even a small issue. Handling the alerts from a couple of the services was feasible, but in aggregate they were being swamped because they lost a lot of time looking at alerts of very low priority.
So, how did they tackle that as a small DevOps team? They set up AI-augmented alerts that informed them that if performance fell by a certain amount, or if the alert belonged to a certain type, or it was reoccurring above a certain threshold, then that was an alert that required immediate handling.
By having the AI monitor the system, look at the logs, and filter and aggregate the telemetry being generated, the team was able to handle serious problems more quickly and plan their work more effectively. The AI became a partner that allowed a much smaller team to do a much better job than they would have been able to do otherwise.
How can Encora help implement AI-augmented Software?
Our engineers have experience doing all the things we’ve spoken about here. We have people that have already worked with these technologies and regularly track emerging trends in this area. We know what works and what doesn’t. Furthermore, we know how to use it effectively. This experience means we can hit the ground running and help our clients’ teams learn how to use the tools and integrate them into their workflow, so they can start taking advantage of the software on day one.
A special thanks to Software & Machine Learning Research Engineer at Encora Mexico, Jorge Hernandez, for taking the time to talk to us about the rising AI-augmented software development trend.
To read more interviews with Encora’s Innovation Leaders, visit Encora’s 2022 Technology Trends.
“AI-augmented software development will help us build and run systems that are more complex and powerful than the ones we have today.
AI-augmented software development helps reduce the cognitive load all throughout the software development lifecycle. It helps people work both faster and with more assurance about the quality of their work by helping manage the complexity of the problem, allowing workers to off-load routine tasks to the AI, so that they can focus on the creative and analytical tasks that humans do best.” -Jorge Hernandez
About Encora
Encora is a digital engineering services company specializing in next-generation software and digital product development. Fast-Growing Tech organizations trust Encora to lead the full Product Development Lifecycle because of our expertise in translating our clients’ strategic innovation roadmap into differentiated capabilities and accelerated bottom-line impacts.
Please let us know if you would ever like to have a conversation with a client partner and/or one of our Innovation Leaders about accelerating next-generation product engineering within your organization.