Changing my relationship with GitHub Copilot
Monday, August 28, 2023
I've been using GitHub Copilot on personal projects since March. It's been an interesting experience, and one that I realized I have to change. Using Copilot nearly full time has had some positive and negative impacts on me, and it's time to take control of how I interact with it.
The honeymoon phase
I've liked a lot about working with Copilot. For this duration I've had Copilot enabled full-time in code files1. I pretty quickly found that I was able to be productive in ways that I was struggling with before due to life circumstances. With two kids, a full-time job, a time-consuming running habit, and ongoing medical treatment, by the time I sit down to write code for myself, I'm just tired.
But with Copilot enabled, it was a lot easier to actually write code in the evenings even when I was tired. I could put in simple comments as prompts and get back out something that mostly-sorta worked, then shape it into what I needed.
This led me to get some work done on small projects and a few assorted scripts. I made progress on an issue tracker I am working on with a friend. I wrote the parser and formatter for my programming language. This was pretty good work, and I was able to get it done even when tired! It seemed like everything was going well.
Outside of work, all my coding was done with Copilot enabled. I also had vim configured with rust-analyzer to show errors automatically and give me suggestions.
This worked pretty well, and it felt immediately productive. The common wisdom is that you should use the best power tools you can in your editor to be as productive as possible, and I wanted to be productive. More tools, we're told, will help us be better.
I stopped writing very much code for fun. It wasn't conscious, but when I sat down at my desk, the last thing I wanted to do was work on personal projects. Sometimes I made myself and it was enjoyable, but then I'd fall into a funk again. I just couldn't motivate myself for the projects I was working on.
There are a lot of factors at play in my life right now. I told myself that this is because work is a lot, because kids are a lot, because transition is a lot. I didn't suspect that my editor and the tools that I setup to help me were related.
But last week, a friend at RC noted that she doesn't use syntax highlighting and doesn't use other noisy editor plugins. I've been curious about stopping using syntax highlighting, and her reasoning really spoke to me, so I tried it.
I went and found a grayscale color scheme (since I do like a small amount of visual distinction for comments) and installed it. Immediately, I felt some relief. I disabled my LSP plugin in vim, disabled rust-analyzer. More relief.
When I went to work on a project, suddenly it was... fun again? The editor was sitting there, waiting for me to enter code. No code would appear unless I typed it. The only thoughts entered would be mine.
This is the way that I fell in love with programming: the editor a channel for my thoughts, the compiler transforming them into something I could run, and little else in the way.
It has taken me much of adulthood to come to understand how my brain works. It baffles me that people can take in a lot of visual and auditory noise and still be productive; how anyone can achieve anything in an open office is beyond me. This noise extends into the digital: Slack pings, email notifications. And by using plugins that push information into my editor, I extended it into vim.
This works for a great many other devs, and I'm glad that we have these tools. But I don't understand it. It's not a relatable experience.
It's like with word processors and spellcheck. When we used them in school for homework, most of my classmates left spellchecking on, and caught errors as they went or ignored them until they were done, with seeming ease. I had to disable it. Each red squiggle under a misspelled word would vaporize my thinly held train of thought, which I then had to claw back. Some of the time I would remember to run it after my assignment was done; other times, I just got points off.
It's like that with LSPs that give error checking, and it's like that with Copilot. When my tooling pushes information into my editor, it vaporizes my concentration. This is harder to see with Copilot, since the value it gives is in part being able to do more with less focus. But the end result is that it sucked the joy out of things, because with these tools I could not reach the flow state I am so deeply in love with. If I got close, an error or suggestion would rip me back out.
Looking for equilibrium
Last week, after that conversation with my friend, I had disabled everything. No more LSP, no more Copilot, no more colors. That was great at first, and it was a reactionary response.
But I think I can strike a better balance. These tools do provide value, and my problem isn't with the tools but with my relationship with them. I was letting them control me and control my interactions with them.
From now on, I'm in charge. I'll control those interactions, and the tools will do what I ask them, only when I ask them to do it.
I've dipped my toes back into the tool waters. I re-installed my Copilot plugin, but left it disabled. There's a hotkey to invoke it when, and only when, I want to reach for a suggestion.
Sometime I'll add my LSP integrations back in for some more power, without the visual noise. I like some aspects of them, but I can't deal with others. Finding equilibrium is hard, and I think it's worth pursuing.
But only if the joy remains2.
I have never had it enabled in Markdown files or for other prose writing. My words are an expression of my humanity, and I refuse to use LLMs in my writing practice.
This is my opinion, not the opinion of any of my former employers. I'm fairly sure that my former employers don't care if joy remains or not, as long as they make money.
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts and support my work, subscribe to the newsletter. There is also an RSS feed.
Want to become a better programmer? Join the Recurse Center!