DEV Community

Cover image for Why Use GitHub Copilot And Copilot Labs: Practical Use Cases for the AI Pair Programmer

Why Use GitHub Copilot And Copilot Labs: Practical Use Cases for the AI Pair Programmer

Rizèl Scarlett on April 13, 2022

Introduction Even though I didn't work at GitHub when they announced Copilot, I remember it piqued my interest. Perhaps, I was mostly ex...
Collapse
 
klausdonnert profile image
Klaus Donnert

If Copilot is good enough, I will be glad to pay for it.
Tabnine is billed as AI code completion. I know Tabnine does not compare to Copilot. I haven't used Copilot yet - I can't wait to try it.
I have tried the paid Tabnine but it's to wonky. For instance, I use a specific pattern for new function declarations. The first parameter is always (99.9%) preceded with the "required" keyword. Tabnine does not predict required until I get to the i so that it actually slows me down. Jetbrains built-in predictions work better without Tabnine.
Tabnine actually seems to get worse the more I use it. Not surprisingly, I've disabled it.

Collapse
 
blackgirlbytes profile image
Rizèl Scarlett

Interesting! I never heard this perspective before. Let me know how it goes!

Collapse
 
klausdonnert profile image
Klaus Donnert • Edited

Now after a month of using it, Copilot gets some things right. Let me stress that, Copilot gets some things right.
But it doesn't seem to learn about what I do. For instance, when I start a new class my first function is always

    public function init( required cfg config ){ 
        /*some code*/ 
        return this; 
    }
Enter fullscreen mode Exit fullscreen mode

Copilot never suggests this method so I type out by hand. Then at the return statement it always suggests return true; - slowing me down.
At other times when I start to declare a method by typing the letter f it will suggest the entire method body including the name but also a function body consisting of maybe 20 or 30 lines of code, all of it, unrelated to what I'm doing. Some of those times it gets the first line including the name correct, but I can't just keep that line. It's all or nothing. Of course, this slows me down.
It also frequently misspells variable names, in sql it misspells table and column names.
Meanwhile Tabnine has improved. Running both Copilot and Tabnine together is not hard because I can put Tabnine in single line mode. The enter key selects the Tabnine suggestion and tab accepts the copilot suggestion.
One of the things I like about Tabnine is in the situation where I need a new variable at the current place in the code block I'm writing. After I finish writing the current statement, including the undeclared variable, I move my cursor to the top to make the declaration - Tabnine correctly predicts the variable name. No other code completion tool that I've used does this. I use long variable names - this helps.
I expect both to get better over time.

Thread Thread
 
blackgirlbytes profile image
Rizèl Scarlett

Love this feedback. Thank you!!! I too think both Tabine and Copilot will mature with time.

Collapse
 
halimsamy profile image
Halim Samy

This was a very well discussion, I have found a lot of useful tricks and some I am already aware of!

Well done mate!

Collapse
 
adambiggs profile image
adam-biggs

GitHub Copilot certainly has its strengths and weaknesses. Here’s a roundup of key takeaways:

  • Fewer browser searches: Common functional solutions are available after a few words + Tab, and established patterns used in the most used frameworks/libraries are there, too. It’s a great time-saver.

  • Context matters: “Context” is key here. The AI considers factors like the frameworks or libraries in use, the variables in the current file, and related files and scope in order to produce better suggestions. Patterns are also considered in part of the answer as well.

  • It's best for experienced developers: Although AI assistance might look like a good learning tool, it’s not. Code suggestions are just that: suggestions. The developer needs to be able to evaluate these suggestions and choose to accept, skip, or ignore them. In order to use the tool properly, it’s necessary to know the context, logic, and expected output to make a smart (and fast) decision. Otherwise, the suggestion can create errors.

If you would like to learn a bit more about GitHub Copilot, I'd suggest checking out this article written by my colleague, Rafael: scalablepath.com/full-stack/ai-pai...

Collapse
 
blackgirlbytes profile image
Rizèl Scarlett • Edited

I agree with fewer browser searches and context matters..These are both very true, but I think it's also great for new developers. I actually find that it's a great learning tool, but it does depend on the way you learn. I say this as someone who works at GitHub and has years of experience teaching new developers. There's a skill and learning curve to using Copilot well, so I believe both experienced and newer developers will face similar problems.

That's a great article by your colleague. I will share it with the Copilot team. They will be interested in this.

I wrote this blog post months ago, so some of my thoughts that I wrote in this post have evolved. Check out a newer blog post that I wrote on the GitHub Blog: github.blog/2022-09-14-8-things-yo...

Collapse
 
mdazaman profile image
Md A Zaman

Co-Pilot is good for developers until it becomes advanced and matured (now it's at a very early stage but performing really good) and shrinks down developer job market.

Collapse
 
klausdonnert profile image
Klaus Donnert

All of my experience so far with AI is that there is no real intelligence in it. It's pretty dumb. It should be ASI, Artificially Simulated Intelligence.

Collapse
 
mdazaman profile image
Md A Zaman • Edited

Yeah agreed. But, that simulated intelligence can process and convert natural language into code. It will remove the barrier between people who knows natural language and who knows technical/programming language, which will not ever take away developers jobs fully but will shrink down the market and also devalue the developer's role in a team.

Thread Thread
 
klausdonnert profile image
Klaus Donnert

Not shrinking anytime soon.

Collapse
 
renanfranca profile image
Renan Franca

Thanks! I want to use it but I didn't because it's going to be paid after the test period. Do you know if is it going to have a free plan?

Collapse
 
dillonb07 profile image
Dillon Barnes

I'm not sure, but I have the technical preview and it would definitely be worth paying for. However, GitHub won't auto-charge you so don't worry about that if you want to use it. If/When it becomes paid, it'll probably just stop working until you purchase the plan.

Collapse
 
amruta_khandekar_5a7a1861 profile image
amruta khandekar

This was a very well discussion, I have found useful. Thanks

Collapse
 
willdkdevj profile image
William Derek Dias

Interesting!