Application development tools have long used AI to improve code completion, though AI has always had limits as to what it can do. New breakthroughs with AI in software development now give artificial systems a much bigger hand in the development process.
Consider these three trends with AI in software development and what it means for the developer community.
Trends with AI in software development
Diego Tartara, CTO at Globant, an IT consulting firm in San Francisco, said that he's seen a 30% improvement in developer productivity when they integrate intelligent and robotic processes into application development.
Tartara sees three ways in which AI helps in the development process. The first two extend and improve existing features built into most IDEs, while the third could potentially change the way developers build apps.
AI in coding
In many IDEs, AI-based routines can predict the next action or method call within a line of code. While AI once had a rudimentary effect on these routines, it has since become increasingly sophisticated.
At one time, IDEs only suggested a method. Now, thanks to advancements with AI in software development, IDEs can type ahead, complete the method invocation and fill in all the required arguments and parameters. It's a feature that can significantly speed up the development process and eliminate syntax errors that can break a continuous integration build.
But building AI features into modern IDEs is not for everyone. "I find many of the AI features built into tools like Eclipse and NetBeans actually slow me down," said Sal Pece, a senior enterprise architect at Xennial Consulting in Orangeville, Ontario. "I'm a fan of autocomplete, but I turn off type ahead tools that do brace matching. I can match my own brackets and double quotes."
AI in software generation
The ability for AI systems to look at a use case or system requirement and actually write code that implements the functional requirement and even codes test cases is the next major AI trend in software development.
It's all still experimental and academic, said Tartara, who added that computer generated code still requires human oversight and inspection. Tartara said he expects to eventually see even bigger improvements in computer generated code as IDEs weave AI into all aspects of software development.
AI in specified guidance
Tartara's team identifies augmented coding as the third trend for AI in software development. Ultimately, it's how AI provides specialized guidance for what a developer wants to achieve. Think of it like Google Maps for directions: You might know how to get somewhere, but Google Maps can suggest a route that's quicker or may work better because of current traffic conditions.
Today, AI can help developers as they code a next word or next relevant code line, but the big performance improvements come from predicting whole blocks of code that can answer a functional need, Tartara said.
Tools and implementation
Tartara also tracks other ways AI can improve the development lifecycle beyond coding. Tools like Amazon's CodeGuru help improve code review, and autonomous testing helps reduce the amount of manual testing required.
Another tool to investigate is Bayou. It's a deep learning tool that scrapes data off GitHub repositories to gain context and insight about how code is written and what constitutes quality code or poor development practices. When Bayou is given with method snippets, it can provide a full implementation so long as the method name and arguments provide appropriate guidance.
However, programmers need to know that the ability to augment the development process with AI doesn't eliminate the need for proper oversight from experienced programmers. "Too many organizations think an AI tool or low-code platform can replace the need for seasoned developers," Pece said. He said, an AI tool or low-code platform in the hands of a poorly skilled developer still results in poorly developed software.
"An AI tool can improve the productivity of a senior developer," Pece said. "But in the hands of a non-developer, an AI inspired misdirection can turn a simple solution into a Rube Goldberg machine."
An important part of how a development team introduces any AI enhancement program is to first find the best way to measure success. Identifiable metrics help determine what makes the team more productive rather than just adding more overhead.
Organizations must be eager to integrate robotic and intelligent offerings into their development process, but it must be done cautiously and pragmatically. Measure the impact these systems have, get input from the teams involved and prepare to roll back changes that don't achieve the desired results. With an intelligent approach to integration, AI will no doubt improve the software development process.
TheServerSide.com's Cameron McKenzie also contributed to this feature.