As a follow-up to my last post a week in, I decided I’d post a small update with my impressions after a little more time. Overall, my opinion hasn’t really changed, but I’ve found a few places where Copilot is particularly handy and thought it worth pointing those out.
Where it Shines
Copilot is particularly good when you’re writing a bit of code that’s a common problem. For instance, I recently needed to implement a simple base64 string conversion in .NET. This is typically something I’d go to Google to look up the code for because I never remember (it’s a write-once and never look at again sort of thing).
I wrote my function definition (it’s an extension method):public static string ToBase64(this string input)
Then opened the Copilot tool window and had it generate some options. I can’t remember if it was the first suggestion, but one of the options gave me both the ToBase64 and FromBase64 implementations. Perfect. So it saved me a trip to Google and a few minutes of coding time. Not a huge gain, but it’s something and was actually convenient. (Though on a side note, the inline suggestion wasn’t as useful.)
In addition, as I mentioned in my previous post, Copilot is pretty good at generating documentation. I can start a sentence and sometimes it’ll give me exactly what I want; though I have to do some editing about half the time, so overall it maybe saves me a few seconds each day.
I’ll occasionally use Copilot in unit tests, but typically I find myself writing those by hand. I follow some common patterns for my tests, and I typically set up templates for the common parts, leaving me with just the specifics that change with every test. Copilot isn’t as great at filling in those details. That said, it can sometimes be pretty helpful.
Where it Fails
I’m still not letting this thing generate more than a few lines of code. It’s still obviously following patterns instead of understanding anything about code and will regularly make up property names that follow a pattern but don’t actually exist on other objects.
It also doesn’t play nice with other auto-complete extensions. I might need to find a way to disable the inline suggestions, since it keeps conflicting with ReSharper (which I find more helpful in general). Along the same lines, I think I’ll need to change the shortcut used to fill in the inline suggestions, because I’ve found that I’ll sometimes fill in Copilot suggestions when I just meant to add a tab.
Finally, as I mentioned above, Copilot isn’t good at working from scratch. It can write code, but it’s always going to be modeled on existing code, so anything “new” is basically impossible unless it’s a common problem (the sort you’d look up a solution online for).
Final Thoughts
I think Copilot works in a few very specific scenarios. If you’re learning a new language, Copilot can accelerate that process, but you’ll still need to be mindful of what it generates. If you’re solving a common problem, it can generate that code for you, saving you the time you’d spend searching for the solution. If you’re writing code based on an existing pattern in your codebase, Copilot can do a decent job of mimicking it.
However, as a senior developer, most of my work isn’t cranking out code. Most of my time is spent designing or refactoring. I mostly work with languages I’m already familiar with. My time is spent working on the “new” or context-specific problems and not things I could find solutions for online.
If Copilot were a free tool I could turn on when needed and ignore the rest of the time, I’d use it everywhere. But at $10/month, I don’t think I’d ever purchase the individual subscription, aside from possibly for a month or two when learning something new. In my day job, I’ll use it if it’s provided, but it’s not something I’d push to have. (Unlike ReSharper, which is basically a requirement wherever I work.)
I’m still annoyed by a lot of the hype around Copilot (and LLMs in general), saying that developers will be obsolete or replaced by this technology in a few years. I doubt it. Being a developer is a lot more than typing code, and Copilot is only barely able to do that reliably. It might make some developers more productive, but I don’t think it will be replacing good developers anytime soon.




