Is GitHub Copilot really going to take our jobs?
What is GitHub Copilot?
For those of you that don’t know, GitHub Copilot is a code completion AI with the ability to understand the context of the file that you’re in, and make specific suggestions for what code to write. Say I need a function that takes two numbers, multiplies them together, and returns the square root of the product. I just make a comment giving some context, start typing out the function, and bam! I get a completion for what I’m looking for:
For now, GitHub Copilot is only available for technical preview in a private beta, and you can use it in Visual Studio Code or GitHub Codespaces. I’d recommend signing up here if you want to take a look at it’s capabilities yourself. If you want an in-depth review of it’s technical abilities, there’s one here. That being said, there’s a lot to talk about when it comes to GitHub Copilot.
Basically, Copilot was built off of an AI model called GPT-3, which was created by OpenAI for complex language processing. At the time of its release in 2020, GPT-3 was widely regarded as the biggest and baddest machine learning model in town, boasting an astounding 175 billion parameters. This unlocked countless new possibilities and applications for AI, the limits of which have yet to be fully explored.
That being said, the story goes that people were trying to use GPT-3 engines to write code, and seeing what they could squeeze out of them. Unfortunately, although it was cool to get code back from a simple language input, the code wasn’t very good. However, the team at OpenAI were also interested in getting the AI to write code, so they fine-tuned some models to write it more accurately, and released this as their Codex line.
Microsoft saw some uses for this technology, which we’ll get into later, and bought licensing to use the GPT-3 models, and with it the powers of the Codex engines. Using this lineup, GitHub (owned by Microsoft by the way) trained the model on publicly available code in order to get the most accurate responses and auto-completion they could.
That brings us to today, where the private beta has been released and a Visual Studio Code extension is available to those in it. Although it’s still in a technical preview, there’s much to be said about the technology, it’s capabilities, and it’s future.
Will it take our Jobs?
As cool as this new tech may be, unfortunately it brings with it justified fear of job loss. Developers have long felt safe from the jaws of automation, as most of the times they’re the ones getting paid to do it, but now there’s AI that can do the same things they can without asking for money. However, it’s definitely more complicated than that.
It’s not perfect.
Although Copilot is a wonder of modern technology, it still has a long way until it’s actually able to write production level code consistently. The thing is, because Copilot was trained on millions of lines of public GitHub code, it’s going to have the same mistakes that are present in that code. As much as Copilot has been combed through, it still has issues with completions that include copyrighted code.
This is of course a big problem as companies who use this product could risk copyright infringement and other legal troubles if someone doesn’t realize the mistake in time. That being said, these sorts of issues can actually be weeded out as updates come along, as Copilot isn’t even technically at production release at the time of writing. Some issues however, won’t exactly go away in time.
It’s not Creative.
Neural networks are not quite like the human brain. They’re very complex, but at the end of the day neural networks are just algorithms. They take in large amounts of data, and use advanced mathematical concepts to convert that data into a format that can be used to make further predictions on new data. Because of this, although it would be extremely tedious work, you could actually predict exactly what the output of a neural network would be based on it’s input.
Therefore, there’s no such thing as true creativity in neural networks, and Copilot by extension. It’s not easier or harder for Copilot to give you code based on how advanced the concept is, but rather how common the code you need, or similar code, is on the internet. Although Copilot can mimic human-like intelligence by telling you what code to write, it’s really just spitting out code that someone else wrote, based on how similar your previous comments or code is to what it already has access to.
Ask yourself this, is intelligence the amount of knowledge that you have, or your ability to create that knowledge? Personally, I tend to go with the second. An encyclopedia isn’t smarter than a person, even though it stores more facts. By extension, an encyclopedia with a fancy algorithm to direct to the right page also isn’t smarter than a person, although it might be able to provide more information. A computer can return knowledge, not create it.
So what if it can code
All that being said, so what if it can code anyway? All the concerns that people have are predicated on the assumption that a developers job is to code, but it’s not. A developer isn’t hired to code, they’re hired to build and maintain applications. Therefore, it’s not just about how well you can make a function that crunches the data you need in just the right way, but about how you can make that function cooperate with the rest of your application.
Copilot, as it stands, only has the ability to increase productivity, not build applications. It has no idea why your server isn’t working right, just how to generate some code for a server in the first place. It doesn’t know which database to choose for the data you’re working with, just how to connect to that database once you’ve already figured it out. It doesn’t know how to design a project, just how to generate code for specific parts of it.
There’s nothing to fear in terms of developers’ jobs, because that’s not within the scope of what Copilot can do. If your job is only to write code inside of a specific file and take a specific input and convert it into a specific output, then you might be in trouble. For the rest of us developers however, Copilot can’t do anything but help us.
Don’t Worry, Be Happy
When it comes to GitHub Copilot, it’s best to take Bobby McFerrin’s words to heart. Copilot and other code completion tools are likely to become industry standard in the coming decades. When machines are just better at generating code than humans are, it will make sense to use code completion engines in development all the time.
There’s no reason to be scared of that either. Humans will still have to understand what the code is doing in order to debug it when mistakes are inevitably made, they just won’t have to do as much engineering. The fun of code will be there, it’s just gonna be a bit easier over time.
All that said, at the end of the day there are the optimists and the pessimists. But if history has anything to say about this, the optimists will be the ones having the last laugh. Automation has been a constant process since the industrial revolution, but although it takes jobs in specific aspects, it proceeds to create new ones in other, unexpected areas. Even if you could call Copilot automation, that’s not inherently bad.
Copilot could lead to revelations in computer science that increase the need for developers to utilize new technologies, therefore increasing the number of jobs. If productivity is truly increased, then businesses may employ more contractors to build applications due to the lower cost over time and greater productivity in that time. This would lead to small business growth and more freelancers.
My point is you don’t really know what’s going to happen, but it is going to happen anyway, so there’s no point in worrying. If you want to be prepared, learn how to use Copilot and similar tools effectively. If you want increased job security, start focusing on other developer tasks outside of code, such as system administration or design patterns. If you want to be a better developer, keep learning, and make use of the tools available to you.
Happy Coding Everyone!