I think of GitHub Copilot as intellisense/autocomplete on steroids. Instead of completing words, it is completing entire statements.
When I know what I want to write, copilot either
- guesses exactly or near-exactly what I want
- gets it a bit wrong, or completely wrong. I mean sometimes the suggestions are just batshit crazy.
In the first scenario I hit tab and I’ve just saved myself 20 or more keystrokes. In the second I ignore it and keep typing. I don’t find this process more cognitively demanding than coding on my own. It 100% allows me to get work done quicker.
When I’m trying to figure out some complex logic, and copilot’s suggestions are distracting, I’ll switch it off. Most of the time I end up leaving the computer and turning to a notepad and pen when things get that intense anyway.
Because I have a lot of experience in the languages I’m writing in, figuring out whether copilot is “getting it right” or is “drunk again” is easy for me. I could imagine if you were new to programming, the constant need to validate something copilot has suggested (because you don’t know enough to know whether it is valid) could be a massive distraction and potentially slow you down.
Even though I am still a beginner at Go, I’ve been an Engineer long enough to know I can’t just blindly accept a snippet suggestion that I don’t understand from a robot. So I find copilot really assists me getting the syntax right, and if it suggests something I haven’t seen before I will go and Google it and make sure I understand what it’s doing before I commit.
It seems to me, that when you’re in my position: very experienced with writing code, but using a new language or API - Copilot is the right amount of helpful with the least amount of harmful.