OpenAI and GitHub made a huge impact on the software development world when they launched Copilot a few months ago. The short video they released to the public to demonstrate Copilot’s capabilities was highly innovative; just by entering a few words, the AI pair programmer was able to recommend working sections of code. This caused a great stir in the programming industry.
As time progressed and engineers worldwide became familiar with the new tool, the initial enthusiasm began to dwindle. The reason for this was the drawn-out suggestions which were often impractical and out-of-date. Furthermore, a recent study conducted by New York University has revealed that 40% of Copilot’s code contains major security flaws.
It is not unexpected that the capabilities of tools such as Copilot are yet to be perfected. Despite the enthusiasm that surrounds such tools, they remain a work in progress. Furthermore, Copilot is not intended to replace developers, but rather to augment their productivity.
It is informative to analyse the features and advantages presented by Copilot following its sudden appearance in the software market. In a sense, Copilot gives us an insight into what the software industry may be like in the Artificial Intelligence era, at least in the short to medium term.
What’s Copilot—and What It Isn’t
Copilot is an AI pair programmer, as outlined on its official website, that is capable of providing whole lines or complete functions in a user’s chosen editor, based on a description or function signature given. This is made possible thanks to Codex, a deep learning model derived from the Generative Pre-Trained Transformer 3 (GPT-3) autoregressive language model.
Copilot operates similarly to GPT-3 in that it uses inputs as a basis to generate a sequence of characters. The difference is that Copilot is focused primarily on producing computer code, whereas GPT-3 produces a wider range of outputs. This has implications for what Copilot is and is not capable of, due to the capabilities of GPT-3.
GPT-3 is designed to generate human-like writings from given prompts, whereas Copilot excels at a different task. It is essential to understand why Copilot cannot be considered a substitute for human software developers, as its purpose is distinct. GPT-3 is intended to produce general-purpose texts such as articles and translations, an area which has proven to be a challenge for even the most advanced AI programs.
The difficulty with GPT-3 and other general-purpose language applications is that it is extremely hard to replicate the intricate nature of human language. When communicating, we use a variety of abstractions, shortcuts, common understandings and other nuances. Deep learning models have difficulty replicating these aspects of human language, in part due to being trained on statistical patterns. Therefore, such approaches are most effective when their focus is narrowed (e.g. generating programming code rather than writing a poem).
Copilot may be seen as more focused and precise than GPT-3, and to a certain extent this is true. While this limits Copilot’s ability to generate unique codes and create effective workarounds, there are also positive benefits. By relying on context and pre-existing codes for ideas, Copilot is unable to give solutions that account for the nuances of each individual project. This is why Copilot should be seen as a pair of tools, rather than a comprehensive technical development tool in its own right.
Generating Code Isn’t Building Software
In Thomas Smith’s thought-provoking article for OneZero, he notes that the title of Copilot is somewhat misleading. Smith explains that a copilot is a fully qualified pilot who is able to take over the control of an aircraft from the captain if necessary, whereas an autopilot can fly the plane automatically in certain situations (such as when flying in a straight and level trajectory) but requires a human pilot to take the helm in more challenging circumstances. This leads Smith – and I concur – to infer that Copilot is more akin to an autopilot.
Given the fundamental nature of Copilot’s underlying technology, it is not suitable to completely trust it with constructing a whole project from start. Even with comprehensive information provided about the desired outcome, Copilot would not be able to develop viable apps.
GitHub acknowledges that Copilot’s code may not always be effective or make sense due to the way it is developed. Copilot’s code is generated from what it learns from publicly accessible sources, including code from public repositories. Therefore, it may create code that is novel or is limited by the code it is taught from.
Copilot stands out due to its code generation capabilities, rather than the production of software. To put it another way, Copilot provides advice to help programmers write code faster and more effectively. Consequently, Copilot is not intended for the generation of new software as this is not one of its functions or capabilities.
Consequently, Copilot can direct a user to potential functions and features, but is not capable of developing a complete solution due to its lack of understanding of the overall objectives. Furthermore, Copilot is not able to generate innovative programming ideas or approach software development in the same manner as a professional software engineer.
Copilot is designed to provide intelligent assistance to human engineers in order to increase productivity and reduce the need for tedious or repetitive tasks. The role of a Copilot is that of an assistant, who must be supervised at all times, although they will be proficient in their duties.
Artificial Intelligence’s Potential Future Effects on Software Development
The assertions that Copilot would lead to the dismissal of a significant number of engineers are highly questionable. Its inaccurate findings suggest that it requires human oversight to be truly beneficial. Although your team may benefit from the intelligent suggestions that Copilot makes that could accelerate their work, they will still need to review and assess them.
Copilot (or similar AI programming tools) are not likely to revolutionise the way we create digital solutions. However, they can certainly make our development processes more powerful, efficient and effective. In particular, they can reduce the time developers spend coding, allowing them to focus more on the design and architecture of the project.
In certain scenarios, this kind of change can be beneficial. Engineers would have sufficient time to analyse the project’s requirements and how they align with the company’s goals and objectives. This would enable them to understand the requirements more clearly and provide a better platform for Copilot to work from. Additionally, they would need to assume a supervisory role to ensure that Copilot’s output is genuine, secure, and successful.
It is a legitimate concern that the implementation of Artificial Intelligence (AI) could lead to job losses in the development sector. It is possible that organisations could create projects with fewer engineers, however, this would not necessarily lead to the engineers being unemployed.
With the current skills gap, smaller teams may be advantageous. This is due to organisations having access to a more even share of expertise. The released experts could then be of use to small-medium enterprises, especially if Copilot allows larger companies to have fewer engineers. This could help these businesses to create more effective digital products. Ultimately, these factors can contribute to the improvement of the technology sector as a whole.
Software engineers can be confident in their employment security for the near and medium term. However, it is still important for them to familiarise themselves with programmes such as Copilot. These tools will not replace them, but they will certainly provide an advantage to those who use them. Therefore, it is important for developers to start understanding AI pair programming platforms in the near future.
It is currently too soon to determine the full potential of Copilot and similar tools, given they have only been available for a few months. However, as time progresses, these tools will continue to evolve and those who are concerned about the future should consider researching them. Although this future may not be here immediately, it is rapidly approaching.