Artificial Intelligence in Software Development
September 29, 2019 / Bryan Reynolds
Reading Time: 7 minutes
Artificial intelligence is beginning to change and improve software development. Over the next decade, we expect this trend to continue as machine learning improves the capabilities of AI-powered systems that help with software development. Read today’s blog post to understand how artificial intelligence is already affecting software development and get a glimpse of where things are heading.
This post is divided into two main sections. First, we’ll explain what we mean in this industry by “artificial intelligence” and dispel some of the common media misconceptions about the technology. Then we’ll dive into several ways that artificial intelligence is changing software development and what that could mean for the future of the industry.
This is part 1 of our 5 part series on artificial intelligence and machine learning
Artificial Intelligence in Software Development
Understanding Artificial Intelligence: Dispelling Misconceptions
Before we dive into how artificial intelligence is changing software development, let’s take a few moments to understand what exactly we mean by “artificial intelligence” in this context.
The promise of artificial intelligence
First, it’s important to know why this is such a big deal in the first place. Here’s an obvious statement: computers are way, way faster than people at performing many tasks. It’s easy to understand this at a basic level: take mathematical calculations, for example. Even a basic pocket calculator can solve long division instantly. Your computer can perform complex calculations that most of us couldn’t do by hand if we had to, and it can do millions of these every second.
Computers are also extremely accurate: going back to our long division example, computers never make a carrying or rounding error.
There’s just one problem. As fast and accurate as computers are, they’ve really been quite dumb for most of their existence. They can do exactly what we program them to do, and do it well. But that’s all they can do.
And therein lies the exciting promise of artificial intelligence. We humans are starting to figure out how to create computers that aren’t so dumb. We’re creating systems that are programmed to learn over time and make limited decisions on their own.
This is exciting. Combining the sheer computational power of computers with the ability to learn and make decisions is opening up new doors to what we can do with technology. It’s even changing aspects of how we develop software.
What artificial intelligence isn’t
Before we get any further, we should clarify what artificial intelligence isn’t. Understand that artificial intelligence is really nothing like what’s portrayed in the movies. It’s not a self-aware, nearly omniscient supercomputer bent on destroying humanity a la Terminator. Nor is it an artificial intelligence that’s generally on par with human intelligence, but with unmatched computational power and resources (now that would be scary—or amazing. Thinkers argue about which, and what we should do about it.).
The term for that sort of thing is “general artificial intelligence,” and it remains solidly in the realm of science fiction.
What today’s artificial intelligence is
Today’s artificial intelligence is more specifically described as narrow artificial intelligence – an intelligence that is designed to focus on a specific task or behavior. So the software powering a self-driving car is a narrow artificial intelligence that’s built to navigate roadways as or more effectively as a human can. We’re getting close on that front, but don’t ask that AI to make restaurant recommendations or answer your common Siri-type questions. It can’t. All it was built to do is drive.
There is tremendous benefit to be had in narrow AI, because, again, computers are faster and more accurate than humans at many specific tasks.
X Ways Artificial Intelligence Is Changing How We Do Software Development
Now that we’re all on the same page about what today’s AI is and isn’t, let’s dive into a few ways that artificial intelligence is popping up in software development. It’s already helping software developers work increasingly faster and smarter, and we expect this trend to continue.
1. Machine learning is changing the software development game
Machine learning is one of the most promising ways that artificial intelligence is changing software development. In a nutshell, machine learning harnesses the computational power advantage that computers have, allowing computers to “learn” by trying available options in lightning-fast succession and seeing what works. It’s learning by brute force, essentially. Machine learning systems start out pretty dumb by human standards, but over time they learn from their failures and can arrive at solutions that humans may never have considered.
This technology has the potential to change the software development industry in so many ways. Today’s software developers manage large, complex libraries of code and somewhat manually write programs. The software developer of tomorrow may instead manage the data that’s feeding the machine learning system and shepherd that system as it works.
The transition will be gradual, of course. Today there are plenty of software developers working happily with no machine learning. But as the technology progresses, it seems likely that machine learning modules may eventually consistently produce better, more novel solutions than their human counterparts.
2. Automatic code creation and assistance is the next frontier for artificial intelligence in software development
Dovetailing on the previous point, we see automatic code creation and assistance as the next big AI frontier in software development. It may be a few years before machine learning solutions are effectively writing entire complex software solutions with little human guidance. What’s more realistic for today are artificial intelligence systems that handle portions of code creation alongside human software developers.
Another exciting avenue is the idea of a virtual code assistant: think Siri for developers. Such a system can intelligently analyze what a software developer is trying to do and search repositories like GitHub for extant open-source code that would accomplish the same thing.
This isn’t hypothetical: Bayou is already offering such a service. Check it out at askbayou.com. If that’s what we have today, imagine what the future holds. Consider a world in which a Jarvis-like AI pipes up: “I see that you’re trying to implement such and such a feature in your software. I found one already built that should work. Would you like me to implement it?”
Solutions like this are coming, thanks in large part to developments in artificial intelligence.
3. Artificial intelligence frontloads testing into the development workflow
We’ll talk about how AI can improve software testing below, but while we’re discussing intelligent programming assistants, there’s one more important consideration. An intelligent programming assistant can take what it and other systems have learned in the past and use this information to flag common errors at their inception, during the development phase. We no longer need to wait until human and “unintelligent” software testers do their work in the testing phase; we can stomp out common errors while still in development.
4. Artificial intelligence can reduce the drudgery of software testing
Software testing can be an arduous, highly repetitive process. It’s just the sort of thing that humans don’t tend to do with the most accuracy. Probing every nook and cranny of a piece of software for bugs, vulnerabilities and exploits is a time-consuming process, and it’s easy to miss, overlook or even intentionally skip areas along the way.
A recent Forrester research report polled (human) software engineers about how much interest they had in implementing artificial intelligence in various areas of software development. As you can see in the graphic below, testing was the highest area of interest.
Why is this? First, as mentioned above, humans don’t tend to love doing repetitive, monotonous tasks— especially not complex ones. But the other side of the coin is this: doing repetitive things consistently and thoroughly is exactly the sort of task that computers excel in. It’s no surprise then that artificial intelligence is already helping software engineers with software testing.
Artificial intelligence is already changing software testing, and we expect this trend to continue in the next decade.
5. GUI testing is also getting a boost from artificial intelligence
Graphical user interface (GUI) testing is another pain point in the testing process, one that traditionally has not benefited as much from traditional software solutions. It’s a heavily human-dependent process, because only humans have, well, a human sense about how people are going to interact with the software once it hits the market. It also tends to be unsystematic: testers test whatever they see or think to try, but this rarely equates to thorough, systematic testing.
As a result, in many cases the first publicly released version of the software still contains many GUI bugs and quirks. These are then fixed through iterative updates.
Artificial intelligence can’t replace the human sense needed in GUI testing, but it can learn from the sorts of issues that humans tend to find. Then it can systematically search for problems of that sort.
The results of GUI testing will require software developers to further edit their code. That edited code must then go back through the software testing process, and here AI can speed things along, running the same tests as last time.
6. Artificial intelligence can aid in software design
Zooming out a bit, before software developers can get started on a new software project, your business has to decide what that software needs to look like and how it functions. Software design is traditionally a long, fraught process. Multiple parties have competing visions, and it’s up to the developer to sort it out in a way that pleases all stakeholders.
Here, too, AI can help. We already see this in consumer products like Microsoft’s PowerPoint 365, where an AI-powered tool analyzes slide content and suggests multiple designs based on what it finds. That feature is not unlike AI-assisted software prototyping. While we’re still a few years away from a tool that suggests complex software designs in this way, the building blocks are there.
7. Artificial intelligence can help teams with strategy and feature planning
Lastly, and related to the previous point, artificial intelligence can play a role in strategy and feature planning. Reduce the time spent sitting around a table and arguing about which features are the most important. Let machine learning and AI leverage your customer data to determine what’s most important to customers. Getting real insights into your existing products and their development cycles will improve outcomes on projects in the pipeline.
Do you have questions about how artificial intelligence can improve your software development pipeline? We can show you the way. Contact us to get started with a consultation.