25
GitHub Copilot and its impact on the future of coding
On June 29, 2021, GitHub announced the technical preview of their new product: GitHub copilot. It took many people by surprise and the overall reception from the community is very positive (see for example the stream from Guillermo Rauch, Cassidy Williams or Daniel Gross). It’s definitely a major step in terms of technology. Now, what does it mean for the future of coding?
Machine learning is going to replace the software developer or at least help you produce better code, and in a not-so-distant future, write complete programs. And there is absolutely no doubt about this.
Some early players (tabnine, kite) released products that are AI assistance for coders, mostly as a smart autocomplete. IntelliJ (one of the most popular IDE with VS Code) already embeds a Machine Learning system for code completion in their IDE. But none of the existing players generated fully functional code. In that sense, Copilot is a major step in the direction of automating code generation.
When making a machine-learning based product, the accuracy of the model (and quality of the recommendations) depends on the amount of data available to train it. And GitHub has the best position on the market to get a massive amount of training data since it is the primary platform to host all source code (GitHub has more than 50% of the market for Git hosting and is the primary platform for open source projects).
There is a controversy around the license on which the code is trained (see here, here, or here, but the argument is unlikely to stand in the case of a lawsuit (see this twitter thread). Even if that was a real concern, Microsoft could train its model on the vast codebase developers at all its companies (Microsoft, GitHub, LinkedIn, etc) and still, probably produce good results.
Takeaway: like it or not, machine learning is entering the developer tools space. And it’s here to stay.
Until GitHub copilot, many people were skeptical about the use of machine learning in the developer tools space. Developers, in particular, thought that writing code was art that machines could not replicate (or that it will come in decades and they would not be impacted). The release of Copilot (and its quality for a preview) proved them wrong and they now have to face the reality: the machine can do better than us in some domains (try to write a function that validates an email address in less than 10 seconds, it’s actually very complex and can be done correctly by Copilot in less than five seconds).
Other people argued a lot about the privacy (e.g. your code being sent to an API) of such tools. Again, the release of Copilot proved them wrong and it was barely a topic of discussion, even if GitHub collects source code, geolocation, operating systems, and a lot of other identifiable data (see documentation. The reality is that developers do not care: the value the tool provides is bigger than its privacy cost.
Machine learning will impact many domains of computer science, programming is just one domain among many others. The next generation of developer tools will be AI-driven and will leave the other tools in the dust in terms of quality. Expect to see ML-based infrastructure tools that optimize your deployment in real-time depending on your cost and performance targets. Or tools that will generate code according to your comments and test cases. The possibilities are endless.
Takeaway: Copilot is not the end of the software developer: it’s the beginning of a new era of developer tools.
Copilot reduces the barrier to enter the software development workforce and reduces friction to write simple code. In a world where software usage is growing incredibly fast and there is a shortage of software developers, this is a much-needed product.
Tools such as Copilot will also widen the gap between junior developers and senior developers. Such a tool will make it very easy to write a new frontend or a backend system in Javascript: the model will be well trained to generate the correct code. But it will fail on complex legacy codebases, embedded systems (that deal with architecture-specific code), where suggestions might not be accurate for some time.
Finally, Copilot generates functions but does nothing to organize them into efficient software architecture. You will still require to have experienced engineers to compose your code into efficient software units. But this is just a matter of time before you have an AI that can also automate that job.
Conclusion: It is going to be easier to become a software engineer. Software developers will not disappear but will be more specialized.
Machine learning will automate software production, transforming the software developer into an architect that will edit (to fit their need) and compose generated code into an efficient software architecture.
We will soon see codebases with 80% of auto-generated code by Copilot (or similar product) in the near future, especially for new products written in languages like Javascript or Python (that represent together more than 40% of the actual market).
The release of GPT-3 and the promise that OpenAI will make available all the work of Copilot on their API is very promising for the developer tools community. And I expect more tools that will make use of AI to make the developer more efficient in the years to come.
What does it mean for Code Inspector?
At Code Inspector, using ML has always been part of our plan and we have been experimenting with various ML techniques and been using the OpenAI API for some time. In all our conversations with users, developers or investors, we always communicated that using machine learning was the future of developer tools which is why we invested early on in these technologies. In that regard, the release of Copilot shows that our vision has been correct since the beginning.
We are excited by the release of Copilot because it opens a new era of developer tools. It will make available its work on the OpenAI API. Code Inspector will not be a competitor of Copilot. It will complement it. At the end of the day, our mission is simple: help developers write better code, faster.
Photo Credit: Ilya Pavlov on Unsplash
25