[citation needed]
I tried out Copilot for months and didn't get much value out of it. The majority of my time and effort is not writing code, which is about the only thing an LLM can generate semi-useful output for. It's not more useful than a tailored search engine experience and it doesn't replace deep dives into text books, code, and white papers. Where are you seeing major benefits?
Maybe it's sector dependent? Maybe systems programming doesn't have enough reference materials for them to learn from?
Certainly not the "Clearly obvious difference" some people seem to be claiming to see in some places online.
The advantage, that actually is a game changer[0], is that it can do languages I can't. I'm an iOS dev, I've technically been paid to write JavaScript at various points, but the best of that was about 20 years ago and just before jQuery got popular.
ChatGPT lets me turn my ideas for JavaScript projects into things that almost work and are usually close enough for me to fix — turning me from an iOS dev into a JS project manager.
Likewise Stable Diffusion: I've done some game artwork when I tried self employed for a bit, SD can act like a mostly amazing artist that does a few bits (mostly hands) like it was temporarily high on LSD, and I can just highlight those messed up regions and say "do again five times", and the actual images get to me faster than a real human would notice a message on slack or email or whatever, let alone be able to actually attempt a fix.
As for music… I actually made a procedural music generator back then (for the games while self-employed), and while neither the music nor the generator is going to win any awards, the output was sufficient for the games it went with. All the various new music AI are way better than what I did.
[0] and now I realise the cliché; ugh
Meanwhile, the stuff it is good at filling in - it was never that hard to google it and copy and paste it in the first place.
I've seen this like 20 times in tech before. We're peak hype cycle for LLMs and the trough of disillusionment has yet to set in. During peak hype cycle for any tech a lot of people defer to the crowd's excitable opinion, disbelieve the evidence in front of their own eyes and express a level of optimism over future developments that is ludicrous.
Rather than spending potentially hours to sift through documentation or ask around on the forums to find the magic incantation I need, ChatGPT just spits it out instantly and I can move on to solving actual problems.
That said, in a team environment with experienced devs, it would probably be better for me to just ask someone more experienced. Learn faster and more in-depth.
Also worth pointing out that GPT-3.5 and GPT-4 are completely different beasts. If you were getting the devs to use 3.5, you will get bad results no matter who is using it.
Maybe if you're slinging HTML and JS all day it helps more
I did this as late as yesterday. Type in a case, type in a variant of the case that is more or less symmetric, it fills in what you would have typed. Or you add a member to your object, thus requiring it to be tested. It figures out that you need to check this new thing in all your tests.
Other thing it does well is syntax. Some weird c++ template parameter thing, it does it for you. Little things like "what's that thing that makes the sort go the other way" it will know, and save you a minute of googling.
What there doesn't seem to be is an interface for that I've found is any kind of refactoring. That's still a form of donkey work that a junior guy can do, but you'd think there would be some way for the AI to suggest DRY candidates and re-orgs.
It's just that boilerplate is usually an indication of a bad design or a bad/verbose language. Both of it are painpoints that should be fixed.
But if that's not possible then Copilot is a good helper.
For example, it's helpful to be able to see all the steps a test case is doing in the one function, so you can read that and see what's going wrong if it fails. If a lot of your test cases are similar you might be tempted to refactor and put common parts in separate methods, often with unhelpful names like "assertResult()", etc, but now the reader has to jump about to understand the logic. Whereas this allows you to write the more repetitive but also more readable code easier