We users use Artificial Intelligence (AI) almost every day, often without even realising it i.e. a large amount of the apps and online services we all connect with have a degree of Machine Learning (ML) and AI in them in order to provide predictive intelligence, autonomous internal controls and smart data analytics designed to make the end user User Interface (UI) experience a more fluid and intuitive experience.
That’s great. We’re glad the users are happy and getting some AI-goodness. But what about the developers?
But what has AI ever done for the programming toolsets and coding environments that developers use every day? How can we expect developers to develop AI-enriched applications if they don’t have the AI advantage at hand at the command line, inside their Integrated Development Environments (IDEs) and across the Software Development Kits (SDKs) that they use on a daily basis?
What can AI can do for code logic, function direction, query structure and even for basic read/write functions… what tools are in development? In this age of components, microservices and API connectivity, how should AI work inside coding tools to direct programmers to more efficient streams of development so that they don’t have to ‘reinvent the wheel’ every time?
This Computer Weekly Developer Network series features a set of guest authors who will examine this subject — this post comes from Eran Kinsbruner, chief evangelist at Perfecto, part of Perforce Software.
Kinsbruner writes as follows and says that coding with AI means knowing what types of tools to use…
There are many new tools and frameworks available to DevOps teams exploring AI and ML. What matters is choosing the right types of AI and ML tools for the job. Some of the best ones are those that check for problems and analyse what’s happening, while the developer can still work at warp speed.
For instance, differential tools are useful when a team lacks the skills or time to address code quality issues, regressions, or security vulnerabilities. Based on code analysis, differential tools can automatically generate various artefacts like relevant unit tests, coverage reports that can highlight necessary tests and missing tests in specific areas of the code. Developers can expect faster releases, improved quality through fewer escaped defects, and better productivity.
Similarly, automated code review tools help developers efficiently detect ‘easy’ and simple defects or code flaws and enforce coding and safety standards. Plus, with AI-driven code management and collaboration tools, developers can automatically spread the workload of reviews out among team members.
Less familiar to many developers are AI-based static code analysers, which identify defects, vulnerabilities, and compliance issues while developers code. These tools can find coding errors earlier, so that they can be fixed fast. Beyond those, static analysis security testing (SAST) tools, which while developers code, help enforce compliance with internationally recognised security standards.
Teams automatically receive groups of defects to identify which are the real problems, rather than overwhelming developers with lots of logs and data.
Agile AI DevOps (AAIDevOps)
DevOps and Agile continuously generate new sets of data, from test reporting, through developer logs, production logs, and other code-related information. That means developers and test engineers are tasked with making sense out of enormous piles of files.
AI and ML tools can digest, slice and dice such data to support better decision-making. For instance, analytics and code-impact analysis identify which platforms or areas in the code are more vulnerable, and which features are more error-prone and risky in production and add huge value by saving time. They also classify production issues by types, usage, and other categories.
Chatty bots made smarter
Many of the tools mentioned so far focus on inspecting and analysing code, but there are also AI tools that are handy to have in the developer’s toolbox. For instance, while many digital apps have a voice assistant or a chatbot, but it can be hard to develop, maintain and validate the validity of such bots… and their functionality across platforms, use cases and languages.
AI and ML help overcome that by generating Json input files during the development process, based on a large set of questions and answers. There are few new tools in this space that are able to validate the correctness of the chatbots using ML algorithms, and by that to increase quality and expedite the release velocity.
The right tool for the job
A final point is that, as ever, it’s not just about choosing the right tool, but making it sure that it fits into processes, IDEs and backend services.
Plus of course, tools must be maintained and able to adapt to change. The good news is that there is a wide choice of tools out there from multiple vendors, both proprietary and open source, to support AI’s continued inroads into coding.