Table of contents
The arrival of AI is changing how developers build software, morphing the SDLC in what feels almost like real time. Everything we do, from designing apps to debugging them, we now will almost certainly do with AI involvement — unless we already are.
This is why finding the right AI code assistant is crucial. AI has become a fundamental technology in the software development stack, and it touches every part of the SDLC. But it’s not a magical panacea. The current state of AI is that AI can help greatly in performing straightforward coding tasks, but it can’t (yet) handle complex logic and system design decisions. Long-term dependencies like choosing appropriate architecture patterns, planning scalable system infrastructures, or ensuring that distributed codebase components work together cohesively all still require human input and intelligence. As does choosing the right tool in the first place.
As the human in charge of finding it, here are the non-negotiable features and capabilities that should be on your AI code assistant shopping list.
The first four features to look for are “no-brainer” criteria: mandatory capabilities that any reasonably mature AI software development solution should be expected to offer.
AI code assistants incorporate AI into our developer toolkit by producing high-quality code based on the inputs we give them. There are the features to look for:
AI chat agent functionality is a separate and distinct feature from AI code completion and generation. Stellar natural language chat is a critical feature because the sad reality is that many of us spend far more work hours on all the tasks around writing code than on writing the code itself. The core capability of chat is to assist with all these other tasks, like debugging and writing tests and documentation, so we can get back to the fun stuff.
You’ll want to look for an AI coding tool with a chat agent that:
The benefit of an intelligent chat agent inside your IDE is immediate: Stack Overflow’s 2023 survey shows that 63% of developers spend more than 30 minutes a day searching for solutions to coding problems. Being able to find answers without ever leaving the IDE lets us stay focused and keep our flow going.
Development teams work with many different programming languages and frameworks. And getting a developer to change IDEs is akin to getting a kid to leave their favorite playground — it’s hypothetically possible, but they’ll protest loudly and resist every step of the way. So it’s important to realize that the quality of support for the tools that matter to you can vary widely between different AI code assistants.
Some AI code assistants are limited to a handful of the most popular languages and frameworks. Others claim to support a large number of languages, but their LLMs may not be trained with equal depth on each of them — meaning that the AI will return lower quality results for, say, Lisp and Erlang than for JS and Python.
Our final three categories dig into the more sophisticated characteristics of AI tools that not only developers but also other teams in your org (security, legal, operations) will likely care about. These include key questions regarding privacy around your code and data usage; security of the platform and protection from legal liability; and how finely you’re able to personalize and tune the tool to your unique codebase and the way you work.
Some AI tools can take your code, data, and usage patterns to feed their platform’s general models, making your information available to anyone (and everyone) using that platform. “Leakage” of proprietary information and data (including code) into LLMs is a major concern for AI researchers and security firms. Even if the data itself is not sensitive information, it can still contain business logic or knowledge that you as a developer don’t want to share with others.
To make sure this isn’t you, here are the privacy features to look for when you’re evaluating an AI coding assistant:
If you’re privacy conscious, it’s crucial to review not only the license agreements and terms of service for the AI code assistant itself, but also the license agreement and TOS of the LLMs used behind the tool. Even if the AI code assistant doesn’t collect or save your data itself, it could still be passing some or all of it through to the foundational model it sits on top of.
Personalization is how we evaluate a code assistant’s ability to “learn” as it’s being used, plus its capacity for fine-tuning and optimization according to your specific needs. Studies show that personalization features are the number one feature desired by most developers.
However, personalization capability varies widely between different AI code assistants. Key factors to look for include local and global context and the ability to automatically review code to enforce compliance to internal standards. Look for:
Beyond investigating an AI assistant’s capacities for local and global context, evaluate the tool’s ability to perform automatic code review to enforce coding standards and guidelines. With this feature, the AI automatically parses any generated code, tests, or documentation to ensure code is compliant.
Automated AI code review can take multiple forms: review is triggered as code generates, so only compliant recommendations are created. It can also be triggered at the pull request to automatically review for compliance. Finally, an advanced AI assistance tool can perform constant scans of code open in the IDE or project to spot outdated libraries or code that’s against the established rules of the company.
We tend to focus on the really cool stuff that AI can do, and can help us do, because this stuff really is cool. But we can’t overlook the less flashy but even more important features that an AI software development tool needs to offer: security, compliance, and indemnification.
Adopting AI into your organization affects others beyond just the team using the tool. Security, legal, and operations/IT teams also have requirements around how a code assistance tool protects and serves your org. Arguably, then, the most critical criteria to examine when evaluating an AI code assistance is how well it protects the user — you and your org — in terms of security, compliance, and legal indemnification. Here’s what to look for.
Compliance is never sexy. But if portions of your application’s source code have been generated by an AI assistant that scraped its source material from copyrighted sources, you become vulnerable to potential legal actions. If a generative AI platform customer deploys code that matches the code the AI model trained on, the original creators and license holders may be able to bring suit. Fortunately, you can avoid these pitfalls simply and entirely by choosing an AI code assistant that’s transparently trained only on legally obtained data sources.
Indemnification is the vendor’s commitment to compensate your enterprise for expenses arising from any lawsuits or claims related to their AI tool. Look for guaranteed coverage of legal defense costs, financial damages and settlements, and protection against disruption. This last one covers scenarios where your software and development processes would be disrupted by legal challenges related to the AI tool — challenges that might result in you being audited, required to remove any affected code, or forced to redevelop elements of your software.
We live in interesting times. As AI code assistants mature from an emerging tool to a critical technology at the center of software development, the pressure is intense to add it to the software developer toolkit. Realistically, most developers have been at least playing around with AI code generation for a while now while trying to figure out exactly what we want a code assistant to do for us, and how that translates into specific features.
Evaluating AI is really not all that different from evaluating any other tech tool. We care about the same outcomes here: how this tool works, how it will fit into our SDLC, and whether it’s easily integrated with all the other tools we care about. Now, understanding the seven key factors that differentiate a high-quality tool from a lesser, possibly even risk-inducing, offering — paying special attention to privacy, personalization, and protection features — choosing the right AI code assistant is as straightforward as vetting any other software tool.