Can GitHub Copilot make you a worse programmer?
TL/DR - For engineers earlier in their career, Github Copilot can make them a worse programmer.
When I was in college, I purposefully disabled a lot of syntaxes highlighting and autocomplete in my IDE. I treated programming like a craft and wanted to get as good as possible without depending too much on my tooling. I tried to write perfect code without any assistance.
It wasn’t easy in the beginning. Subtle typos would go unnoticed until I tried to build my program, and I had to constantly look up documentation as I wrote my code. That taught me to focus on the details to keep my productivity high. I had to read and write code carefully, forcing me to memorize the parts of the Go standard library I used the most.
These days developer tooling keeps getting better and better. GitHub Copilot can suggest entire functions right within your IDE. We’re now starting to see products generate SQL queries given some text. AI-powered developer tools are making writing a lot of code much easier, but the problem is that they’re like lifting reduced weights at the gym. It feels easier, and you can get more reps in, but they are not helping you get stronger.
A study last year found that Copilot generated insecure code 40% of the time. They don’t compare this figure to human programmers or offer an opinion on whether and when Copilot use is appropriate, but it is clear from the result that caution is warranted.
Copilot is intended to increase the productivity of experts. What about users who can’t code…
The difference is that evaluating work output differs from creating it. Consider art: we can all appreciate a great work of art, but few have built the skills to create it from scratch. The latter requires a skillset built up from first principles.
When I work with junior engineers, I notice a few areas where their skills need to improve: they have a harder time seeing bugs in their own code, they have difficulty debugging their own code, and it’s more difficult for them to see their contributions in the context of the whole program or product. How are these skills developed? I think the answer is lots of practice and iterations, which tools like GitHub Copilot take away from you by giving you the answers up front.
For experienced software engineers, I think AI like Copilot can be a productivity boost. Still, for those early in their careers, I think it may prevent them from learning valuable skills. As Malcolm Gladwell writes in Complexity and the Ten-Thousand-Hour Rule
from almost a decade ago:In cognitively demanding fields, there are no naturals.