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.
I often felt that current ML speeds up newbie devs by effectively teaching them the language and libraries — but slows down experts that already know the stack well from memory. I started coding in a new language and system, and ML can be a bit faster to teach me things and provide simple snippets than stack overflow
But over time I’ve learned that there are very specific things that ML can do really well, and I can save time when I apply those techniques. For example, it’s excellent at converting from one language or style to another, ex migrating configs from json to yaml. It’s also pretty good at writing configs or generating template code based on them. It’s good at picking an emoji from a list. It can write small functions or provide a template html layout. So I humbled myself and started integrating it into my workflow where it actually works
It depends. You don’t need LLMs to write stuff for you that you already know. You use them to take.care of the drudge work or explore things you are not familiar with. Things like Copilot’s /explain can speed up onboarding even for seasoned developers, and Copilot can also help you speed up iterations on proofs of concept. For example, I’ve been using Copilot to experiment with some changes to the software architecture of some projects I own, and it’s fantastic at generating code following specific design patterns. It’s also fantastic to get it to iterate designs in near-real.time by prompting it with directives such as “repeat the last example but implementing X with design pattern Y and moving the implementation to Z”. You are presented with examples that you can browse through and get a taste of what you’d get, but with a fraction of the time. To top things off, you can prompt Copilot to present pros and cons and even propose optimizations.
Like any tool, it has its purposes. You just need to learn how to use it.