With their keen problem-solving skills and love of productivity hacks (what are programming frameworks for, after all?), it makes perfect sense that developers would be one of the first tech professionals to embrace the rise of generative AI. A recent GitHub survey found that 92% of programmers already use AI tools. Seventy percent of respondents reported seeing benefits, such as improved code quality, faster output, and fewer production-level incidents.
The growing prevalence of AI tooling may irrevocably change how companies measure programmer productivity, moving away from code volume.
This could be a major win for developers, many of whom argue that their performance reviews shouldn’t hinge on the number of incidents developers resolve, but how they handle bugs and other issues—in other words, code quality over quantity. Developers only spend 32% of their time writing new code or improving existing code. The rest is spent on code maintenance, testing, meetings, and other responsibilities.
“Great engineering isn’t about pumping out tons of code,” Laura Butler, CTO at Armoire, told GeekWire. “It’s about less code, shared components, using APIs and services that already exist, quality, and maintainability.”
In fact, for those who fear AI automating away programming jobs, these aforementioned factors are things AI can’t assist with. Instead, generative AI tools are best for brainstorming, documentation, generating boilerplate code, or reusing code snippets.
“When companies write software, the code is proprietary, so the most you can do with AI is use it to generate bits and pieces of code,” says Jasmeet Singh, a senior software engineer at HashiCorp and a mentor for Springboard’s Software Engineering Bootcamp. “You can’t ask ChatGPT to create a new version of Facebook for you. You might get the code for the login button or some other function, but you won’t get a whole website.”
That being said, AI-assisted software tools can help knowledgeable programmers up-level their productivity and creative thinking. Here are the top AI tools you need to know about.
1. AI coding assistants
Remember when Microsoft Word first introduced its spellcheck feature? AI copilots function similarly, but they’re far more sophisticated. Coding assistants use natural language processing (NLP) to analyze code in the background and provide intelligent suggestions, flag errors, and generate code snippets.
These tools typically integrate with popular Integrated Development Environments (IDEs) and offer features such as code completion, error detection, and code refactoring. They analyze context, syntax, and patterns to provide real-time feedback.
“Developers can use AI to do straightforward tasks like create post-API or guest request API,” says Peter Nsaka, a senior software engineer at Shopify and a mentor for Springboard’s Software Engineering Bootcamp. “But AI doesn’t understand the nuances of business logic, which is where the human developer’s knowledge is invaluable.”
OpenAI’s ChatGPT is a generalized generative AI tool—meaning it was trained not only on lines of code but billions of webpages from the internet. However, it’s surprisingly proficient at generating boilerplate code and rewriting code in different programming languages. You can also copy-paste code snippets into ChatGPT and ask the bot to review the code for potential scalability issues or OS compatibility.
Nsaka says IDE-integrated copilots can be distracting as the tool offers auto-complete suggestions without being prompted, so he prefers ChatGPT.
GitHub Copilot X, launched in March, is akin to embedding ChatGPT in your IDE. It has full code generation using natural language—meaning you can prompt it with requests like “Create an HTML script to parse XML files and extract sales data with the following requirements: [list requirements here].”
If you forget how to do something (e.g.: how do I vertically center a div?), just ask Copilot, and it will search documentation and generate a written tutorial.
“I work with at least three to four code bases at the same time, so it’s hard for me to keep everything in my head when switching programming languages,” says Singh. “I use Copilot to look up things that would otherwise take a lot of time to find on Google Search.”
Tired of typing? Consider voice-enabled coding. Serenade is an AI-powered tool that allows coders to write, test, and debug code using their voice. The tool recognizes natural language so you can describe manipulations to existing code like “delete class” or “add parameter URL.”
“We wanted to create a product that was really easy to use, to the point where you could speak naturally, as you would in a conversation, and code would be written for you,” founder Matt Wiethoff wrote in a blog post.
Amazon CodeWhisperer is a free code generator that runs on compatible IDEs. Trained on billions of lines of code, it can generate code suggestions ranging from snippets to full functions based on comments and existing code. The tool scans the code to find vulnerabilities and shows code suggestions for remediation. CodeWhisperer is available in 15 programming languages, including Python, Java, and JavaScript. Developers at Accenture are already using it to generate repetitive code patterns.
Common capabilities of AI coding copilots include:
- Code completion. The assistant predicts and suggests code snippets, functions, and variables as you type based on the context and the codebase.
- Error detection. It identifies potential errors, such as syntax errors, logical mistakes, or missing dependencies, and provides suggestions to fix them.
- Code refactoring. The assistant offers suggestions to improve the structure, efficiency, and readability of the code. It can help with renaming variables, extracting methods, optimizing code, and adhering to coding standards.
- Documentation and API integration. It can fetch relevant documentation and provide information about libraries, frameworks, or APIs used in the code. This feature helps developers understand and utilize external resources effectively.
- Code formatting. The assistant can automatically format the code according to predefined or customizable coding styles, ensuring consistency and adherence to best practices.
- Code navigation and search. It enables developers to navigate the codebase quickly, find specific functions or classes, and jump to relevant sections.
- Language-specific assistance. Some assistants support specific programming languages or frameworks, providing language-specific optimizations.
2. AI documentation writers
Developers must maintain documentation as they write code so other developers understand the purpose of the code and can easily navigate a complex codebase. Documentation provides a reference guide regarding libraries, frameworks, and APIs. Most developers begrudge this responsibility, as it detracts from time spent coding. Even seemingly self-explanatory code requires documentation. Moreover, technical writing does not come naturally to most—it’s a distinct skill engineers cultivate throughout their careers.
AI documentation writers use NLP to read programming languages and generate documentation within the source code. Mintlify, an AI documentation writer, provides a library of built-in components such as callouts, accordions, and cards that improve documentation readability.
Text generation tools like ChatGPT can help developers write simple documentation like pull request descriptions.
“I explained to ChatGPT in three sentences what I wanted to say, and it immediately generated a GitHub pull request description for me,” says Nsaka. “I copy-pasted it, tweaked a few things, and moved on.”
Here are some other things AI documentation writers can do:
- Automatic code analysis. The AI tool can analyze code repositories and extract relevant information about classes, functions, variables, and their relationships. This analysis helps in understanding the codebase and generating accurate documentation.
- Auto-generate documentation. Based on the code analysis, the AI tool can automatically generate documentation templates or skeleton documentation, which can be further customized. It saves time by eliminating the need to write the initial structure of the document from scratch.
- Language and API understanding. AI models can comprehend programming languages and APIs to provide contextual suggestions and guidelines while documenting code. They can detect code patterns and recommend best practices to improve the quality and readability of the documentation.
- Extract contextual information. AI models can extract relevant information from code comments, function signatures, and other parts of the codebase to enrich documentation. They can identify important details like parameters, return values, and usage examples to include in the documentation.
- Enforce consistency and formatting. The tool can suggest appropriate terminology, ensure consistent use of code samples, and maintain a unified writing style.
3. Finding answers to questions
It’s no secret that programmers are abandoning developer forums en masse in favor of ChatGPT. Traffic to Stack Overflow has been dropping since early 2022. Instead of waiting days or weeks to get a question answered, devs can receive answers in seconds by typing their query into ChatGPT.
“Being able to prompt a large language model is a skill,” says Muhammad Motawe, VP of engineering at The Quantum Insider and a mentor for Springboard’s Software Engineering Bootcamp. “If you don’t understand something, you can use ChatGPT or any other language model to simplify and distill the knowledge for you. I think that’s a legitimate use case.”
In addition to answering conceptual or syntactic programming questions, the bot helps developers brainstorm ideas for builds. Say you’ve been mulling an idea for a groundbreaking app but haven’t implemented it. You can prompt ChatGPT to create the app’s skeleton, including libraries and programming frameworks.
“Without AI tools, this process would take a few hours because I would have to search on Google how to use a specific tool, read the documentation, and then figure out how to implement it,” says Nsaka. “ChatGPT is the equivalent of someone giving you awesome ideas to start off with and saying, ‘Now fill in the blanks.’”
Nsaka encourages his students to use ChatGPT, but he cautions against overreliance on the tool. “ChatGPT is a great research tool, but it takes away the need for critical thinking because it just gives you the answer,” he says. “On the other hand, when you perform a Google Search, you have to sift through the results and think about what you’re looking for.”
However, an AI tool is only as proficient as the person using it. Nsaka predicts that engineering AI prompts will soon become a sought-after skill.
“Yes, ChatGPT can make programmers lazy, but you need in-depth knowledge of computer science fundamentals to get the desired results,” he explains.
Here are some ways ChatGPT can help:
- Ask questions using natural language. You can prompt ChatGPT like you would phrase a question to a senior engineer (eg, “How do I design a scalable mobile application?”). This eliminates the need to frame queries using a specific syntax or search for exact keywords.
- Ask follow-up questions. ChatGPT can maintain a conversational thread. If you don’t get the desired results, provide additional details, clarify requirements, and have a back-and-forth discussion to narrow down the problem.
- Brainstorm ideas. The bot can suggest alternative solutions, discuss trade-offs and provide insights. If you have an off-the-wall idea you’d like to test, ask ChatGPT if it’s viable.
- Request code snippets and explanations. ChatGPT can generate code snippets and provide explanations to solve specific coding problems. This interactivity can be more engaging and insightful than searching static code snippets on platforms like Stack Overflow.
- Personalized recommendations. The AI tool can adapt its responses based on your programming language, skill level, and other specified requirements.
4. Software testing tools
Software testing entails detecting bugs and ensuring nonfunctional requirements are satisfied. While this process can be automated, it’s not as easy as it sounds. It involves writing scripts that can be used repeatedly. For example, you can run unit tests (testing individual components of an application, functional tests, and end-to-end tests (simulating a user’s experience with the technology stack from start to finish). The best tests to automate are those that are run frequently and require large amounts of data to perform the same action.
Part of testing automation is determining which tests to automate and how to sequence them. These scripts contain instructions that simulate user interactions, perform data validations, and verify the expected outcomes. Test scripts are designed to cover various scenarios and test cases defined during the test planning phase.
Automated tests are a crucial part of continuous integration and continuous delivery (CI/CD), a method companies use to deliver new software rapidly.
Here are some ways to use AI tools to help with software testing:
- Writing scripts. Developers can use AI copilots to write test scripts the same way they use it to write new code. “Sometimes you write the test, and it gets an error message, than you have to debug it and try to figure out what’s going on before you can even run the test,” says Nsaka. “Having AI flag those errors speeds up that process.”
- Anticipating edge cases. During software testing, software engineers must anticipate unexpected inputs. For example, say you develop a simple program that adds two numbers together. What if someone inputs a letter and a number? Or two symbols? Or one symbol and a number? “AI is really good at covering all the bases and testing different combinations of inputs,” says Nsaka.
5. AI debugging tools
Developers spend 35-50% of their time validating and debugging software. By analyzing code patterns, execution flows, and error logs, AI-powered debugging tools can automatically detect bugs, pinpoint their root causes, and even suggest potential fixes.
Some noteworthy AI tools in this domain include Synk, a free tool that uses machine learning to identify code vulnerabilities. DebugCode.Ai is also free to use. DeepScan analyzes JavaScript code, while Testim is a UI testing tool to help developers release mobile apps faster.
Most AI copilots have bug detection features that flag errors as you write code, but debugging tools can help you catch bugs that emerge when the code is compiled.
6. Automated Machine Learning (AutoML) Tools
AutoML tools aim to automate the process of building machine learning models. They automate tasks such as feature selection, hyperparameter tuning, and model evaluation. Traditionally, machine learning models are created from scratch.
AutoML consists of ready-to-use machine learning models that can be applied to a chosen dataset. It automatically selects the most model for the dataset. Conversely, a human performing this task would need an understanding of the algorithm’s internal logic and how it applies to real-world scenarios.
Consequently, AutoML tools are allegedly easier to reverse-engineer than traditional machine learning algorithms built from scratch The tool finds the best algorithms to solve a given problem. AutoML tools include AutoKeras, Google Cloud AutoML, and H2O.ai.
A final note: AI can’t do everything
AI tools are fallible and can’t replace a talented programmer. Developers bring creativity, business logic, and problem-solving skills—something AI can’t replicate. However, programmers who learn to incorporate AI into their workflow can become more productive and adaptable.
With that said, here are some things AI tools can’t do in the software development process:
- Make ethical decisions. AI lacks moral judgment and ethical reasoning capabilities. While AI can assist in data analysis and decision-making processes, it cannot evaluate ethical implications or make ethical decisions in complex situations. Ethical considerations in software development, such as privacy, security, and fairness, still require human judgment and responsibility.
- Leverage context. AI algorithms excel at processing structured data and identifying patterns. However, they may struggle with understanding and interpreting the broader context, including social, cultural, and business implications. Human programmers bring contextual understanding and domain knowledge crucial for developing software that aligns with real-world requirements. “Even if we get to a point where AI can generate full-fledged applications instead of just code snippets, you’ll still need to adjust the code to fit the use case or fix security issues,” says Nsaka.
- Collaborate and communicate with others. Effective collaboration and communication are essential in software development. While AI tools can facilitate certain aspects of collaboration, such as project management or version control, it can’t replace the brainstorming and iterating processes that are critical to the success of a software development project.
- Use adaptive problem-solving. AI tools typically operate within predefined parameters and rules. They may struggle to adapt to unforeseen or rapidly changing circumstances. Human programmers, on the other hand, possess cognitive flexibility and adaptability, allowing them to quickly adjust strategies and find innovative solutions when faced with new challenges.
- Have domain expertise. AI algorithms rely on the data they are trained on, and their effectiveness is often limited to the specific domain or problem they were designed for. Human programmers bring domain expertise and business understanding that enable them to align software development with the unique needs and goals of the organization.
“Many of the things AI can’t do now, it will probably be able to do in five years or so,” says Nsaka. “You need to learn how to use AI tools to get even more efficient, knowledgeable, and empowered in the work you do.”