I tried it this whole week. I was initially amazed and thinking "maybe it really will replace my job." Then I switched to "it's a useful helper" and "I can use it to study things". Maybe after the gained confidence, I gave it some more difficult tasks - write code that will give a user read-only permissions - it obviously failed to note that the public schema is special, so that the user could still DROP tables. Asked it where the total count of users in Auth0 is - it lied. Asked it to solve a basic algo problem, it got it wrong. Told it to write incremental back off and remove a try-catch, it couldn't remove the try-catch. Etc, etc. Kind of over it already.
Does copilot do anything differently other than being available as an IDE extension?
I find copilot better because I don't have to disrupt my flow to "ask" it anything. I start writing code, it suggests something, I hit tab if I like it, move on to the next line.
Also, it can read all of my other code (in the project?) so it seems more context aware.
Copilot seems pretty magical to me so far. It seems to be aware of not only the AST but also the types, so if you design your types well it can often get things correct.
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.
Does copilot do anything differently other than being available as an IDE extension?