As a senior developer, I don’t find copilot particularly useful. Maybe it would have been more useful earlier in my career, but at this point writing a prompt to get copilot to regurgitate useful code and massaging the resulting output almost always takes as much or more time as it would for me just to write whatever it is I need to write. If I am able to give copilot a sufficiently specific prompt that it can ‘solve’ my problem for me, I already know how to solve the problem and how to write the code. So all I’m doing is using copilot as a ghost writer instead of writing it myself. And it doesn’t seem to be any faster. The autocomplete features are net helpful because they’re actually what I want often enough to offset the cost of reading the suggestion and deciding if it’s useful. But it’s not a huge difference (vs writing it myself) so that by itself is not sufficiently useful to justify paying the cost myself nor sufficient motivation to go to the effort of convincing my employer to pay for it.
My company pays it for me. My use cases are split between new development, refactoring and debugging.
For new code, given that our code base is proprietary but very extensive, it provides nice code snippets that would be a pain to write by hand (it’s mostly C code) such as test code
I can focus on the concepts and have the autocomplete do the rest for me. I swap keypresses for reviewing code, which is not bad.
For refactoring, I seldom use it because I haven’t found an use case for it. Most of the changes involve moving code around, adding glue or deleting dead code.
For debugging, I sometimes use the chat to get documentation on public APIs from Microsoft or other places. I use this documentation to check for invariants and to reduce the scope of what I’m trying to find out.