I really need to try copilot, if it's truly aware of the overall context, it would be way more helpful than chatGPT, which seems truly good for isolated pure functions (clear input, clear output, DRY). At the end of the day, a good coder can write the function faster than they can describe it. Of course, ChatGPT does throw cool new syntax your way once in a while. For example, I didn't know .Chunk existed in .NET to cleanly break up ids and such into batches to process.
Copilot also describes the function for you. It can code-complete a block of comments which describes the next many lines of code, and then also code-complete the lines of code for you.
It makes mistakes tho. For example, if you have two fields in a struct that could have been used and their names are very similar and they have the same type, then Copilot could use the wrong one. This is effectively a typo, except in code that was autogenerated, and it often takes a LONG TIME to debug a typo like this....
Ideally, you would be in a language with a more expressive type system (like Ocaml) so that those two fields have different types and such a typo cannot be valid.