The proliferation of AI tools has sparked heated debates about the future of work, education, technology, and software development. Tech leaders are weighing the security risks and possible intellectual property infringement that could arise from the use of coding assistants. At the same time, many tech influencers on Twitter and LinkedIn are discussing how AI-powered tools can improve productivity and betting on which jobs will disappear first.
Concerns about job losses due to the increasing use of technology and automation have been around since the dawn of the industrial age. Today, these fears are resurfacing. Will people with no development experience be able to build software? Will AI replace developers? The short answer is no, but the emergence of machine learning tools will speed up code writing and bug hunting, and help software engineers learn and use additional programming languages, libraries, and frameworks.
This blog mainly focuses on possible effects of using OpenAI’s ChatGPT, GitHub Copilot, and Tabnine in software development, gathered from research articles and YouTeam interviews with engineers who shared examples of major programming tasks that AI tools helped them complete. We also provide references to learn more about how to use these tools and better understand the history and concepts of AI.
ChatGPT is an AI chatbot developed by OpenAI. Initially released for demonstration purposes, the chatbot has been widely used in a variety of applications, such as processing and summarizing text, filtering content, and writing code.
ChatGPT is considered the fastest app in history to reach 100 million users – according to Goldman Sachs analysts, it took only two months to reach this milestone. Today, the app’s overnight success is making AI adoption a hot topic for enterprises and startups.
Let’s see what the leading character of the tech news in 2023 has to say about how to speed up software development and increase developer productivity with ChatGPT.
How can ChatGPT speed up software development?
According to ChatGPT itself, it can:
- Provide code suggestions that fit the context of the existing code;
- Detect errors and bugs and offer suggestions to fix them;
- Generate code for routine tasks, such as declaring classes, class variables, constructors, and other methods;
- Write code documentation;
- Enable developers and non-technical professionals to use natural language queries.
One particular example where ChatGPT is most efficient is in creating boilerplate code, i.e. sections of code that need to be included in many places with little or no modification. A YouTeam developer survey also found that AI is helpful in building things that have not been done before. In addition, when it comes to familiar code structures and algorithms, it is faster to tell ChatGPT what the developer needs and then modify the code.
The chatbot is also great for learning developers and seniors who use it to research specific topics or get quick answers to questions instead of googling them. In fact, to find a well-explained programming article on Google, a person would have to pick a relevant title in the search results, visit the site, reject non-essential cookies, and wade through advertising banners to find the answer. If the answer doesn’t meet expectations, the developer has to go back to the search results and try to find the information on another site. In contrast, with ChatGPT, a search can take a matter of seconds – all the developer has to do is create a new chat and ask a question.
What are the pitfalls of using ChatGPT for software development?
Software engineers warn that the OpenAI chatbot may hallucinate a nonsensical answer to some queries, such as niche Azure and AWS details. Typically, in such cases, the chatbot simply makes up names of important functions that aren’t in the documentation.
Critics of ChatGPT also argue that the tool is just very good at putting words in a statistically meaningful order, but it cannot understand the meaning or know if the statements it makes are correct. In addition, when you ask the application for URL sources and citations, most of them are just bad links or links to topics unrelated to your request.
Finally, many companies have banned the use of ChatGPT due to the IP infringement and security risks associated with sharing personal and professional information with the chatbot. For instance, Amazon has warned employees not to share sensitive information, including code they are working on, because their input may be used as training data for further iterations of ChatGPT. The company claims it’s already seen ChatGPT output that “closely matches existing material” from inside the company.
GitHub Copilot is a cloud-based AI tool powered by OpenAI Codex, a machine learning model that translates natural language text into code. The model has been trained on the source code from publicly available sources, including repositories on GitHub.
How can GitHub Copilot accelerate software development?
According to its website, GitHub Copilot’s features include:
- Turning natural language prompts into code;
- Multi-line function suggestions;
- Speeding up test generation;
- Filtering out common vulnerable coding patterns;
- Blocking suggestions matching public code.
The Copilot X extension, introduced in March 2023, also added a chat mode. For example, users can now highlight code in the editor and then ask Copilot about those code snippets, use them for refactoring, or ask for help with debugging.
In addition, GitHub Copilot is able to create code descriptions in English and translate code between programming languages.
Browse 500+ Dev Teams Available for Hire
What are the pitfalls of using GutHub Copilot for software development?
As in the case of ChatGPT, Copilot is accused of violating intellectual property rights. In November 2022, a class action lawsuit was filed against GitHub Copilot for software piracy. The plaintiff claims that the tool sometimes suggests code that is an exact copy of the open source code on which Copilot was trained.
In addition, developers should carefully review the code suggested by the tool, as its snippets may contain security vulnerabilities that can be exploited via injection attacks. According to GitHub, the resulting code may also contain references to outdated APIs or idioms, so the company recommends using the tool in conjunction with testing and code review practices, security tools, and the developer’s own judgment.
There is also a risk that software developers will become too dependent on the AI tool and lose the desire to develop programming skills through literature, courses, scientific articles, and workshops.
Tabnine is an assistant for software developers that uses generative AI to predict and suggest the next lines of code based on context and syntax. Tabnine claims it has developed language-specific code native AI models, which are pre-trained on code and provide auto-completion with increased accuracy.
The company also claims that the training data only uses open-source code with permissive licenses, and that the developer’s input and resulting code is never used to train any models other than private code models. In addition, according to its website, Tabnine’s servers don’t accumulate any user code beyond the immediate time frame required for training.
Finally, Tabnine offers both a free and a paid plan, but only basic, short code completion is available in the free subscription.
How can Tabnine increase developer productivity?
Tabnine’s coding assistant trains the developer’s own model based on their specific code patterns. Similar to GitHub Copilot, the tool offers whole-line and full-function code completion and natural language input, and supports the most popular languages, libraries, and frameworks.
What are the pitfalls of using Tabnine for software development?
As with Copilot, there is a risk that software engineers will become too dependent on the AI assistant and neglect to educate themselves through professional literature, courses, research articles, and seminars.
The rise of large language models and AI coding assistants shifts the patterns of software development as many engineers report better productivity and faster learning of new languages, libraries, and frameworks.
However, amidst growing concerns about big tech companies selling private information and increasingly common data breaches, some tech professionals worry that sophisticated AI tools will eventually expose and monetize the proprietary IP, without developers even knowing it. In this scenario, software engineers advise protecting the most valuable code assets by switching to privately hosted repositories.
Additional reading: Understanding basic concepts and using AI in software development
Here are some resources to help your software development team become familiar with key machine learning concepts and use cases for AI-powered code autocompletion tools:
1) Visit Codecademy’s knowledge base to learn about AI categories, history, and main concepts, including machine learning, search algorithms, and ChatGPT.
2) Check out the GitHub blog about Copilot’s use cases, which may not be obvious to some programmers. Here are some things you will learn after reading the article:
- Writing unit tests and visual regression tests;
- Matching patterns with regular expressions;
- Translating code from one programming language to another and getting explanations for code fragments;
- Using Copilot to prepare for technical interviews.
3) Sign up for the “ChatGPT Prompt Engineering for Developers” short course, created by DeepLearning.AI in partnership with Open.AI. The course describes how large language models (LLMs) work, provides best practices for prompt engineering, and teaches how to build a custom chatbot.
4) Check out the Dev.to series on using GitHub Copilot to increase developer productivity, including best practices for prompt engineering and leveraging Copilot to write and understand binary search algorithms.
5) Read the case study to learn how CI&T, a global IT company, accelerated development by 11% with Tabnine and Google Cloud.