GitHub Copilot has surprised me beyond what I could have ever expected. I guess artificial intelligence is more capable than I thought initially, and this is a great example of how it can help us to code faster and better.
My idea about using GitHub Copilot as a web developer was that it will be suggesting function and method names with a hint of what the method could do given a comment previously written by the programmer. My mind exploded 🤯 when it actually suggested the full code on a video code-along exercise I was doing on Ruby!
The guessing game
I honestly had forgotten I installed the Copilot extension on VSCode (I have been very busy lately catching up on my new job). On a Saturday morning, I started with my regular studying ritual: I opened VSCode on half of the screen, which I had to update, something that included the enabling of GitHub Copilot (more on that later), and on the other half I opened a Udemy course I'm doing on Ruby on Rails: The Complete Ruby on Rails Developer Course. The day before, I started working on a method and I was planning on continuing doing so.
So, halfway through the video tutorial, I started typing away on my VSCode editor:
def a
I didn't have the chance to finish typing the name of the method that I was defining in Ruby, when suddenly, out of nowhere, GitHub Copilot suggested the rest of the code: not only the name of the method, but also its parameters, a loop, variable names, a return statement, and the whole logic. But that is not all: every single character was the same as the code in the Udemy video! 🤯 It even suggested a part of code that was further ahead on the video.
I couldn't contain my excitement, and I started smiling like a 6-years-old on a Christmas morning.
But then I thought: 🤔 "I should disable this because otherwise, I won't be doing any code by myself, which is the whole point of the coding-along!".
Even though I can see how useful and amazing this tool is, I won't be using it during my coding-along exercises. But I will definitely use it when building projects! It speeds up the development process greatly and helps to reduce mistakes.
What is GitHub Copilot
GitHub Copilot is an extension that can be installed in most IDEs and text editors (including VSCode) and suggests lines of code, or entire functions, based on the OpenAI engine. As it is trained on billions of lines of public code, I'm guessing the code from the Udemy video is on a public GitHub repository, allowing Copilot to match my code with the code in its database and make suggestions accordingly.
You can learn more about this AI pair programmer on its official website.
How to get GitHub Copilot
To get GitHub Copilot you need a GitHub account, and to sign up to the waiting list. It can take a while to receive the invite to start using it (in my case was around 4 weeks). You can request the invite on GitHub Copilot's signup page.
The future
Is GitHub Copilot working for us, or are we working for it? This tool uses our code to, in turn, suggest code right back to us.
So, the question many are pondering is: are we feeding a monster that will replace us as developers and unleash the power of Skynet on the world?
Or is it just a tool to improve our work, and still lacks the creativity that we, humans, have when coding?
🗞️ NEWSLETTER - If you want to hear about my latest articles and interesting software development content, subscribe to my newsletter. I will be giving away a Udemy course among my newsletter subscribers if we go over 100 during the month of November 2021!
🐦 TWITTER - Follow me on Twitter.
Top comments (40)
Wait... So all it took to impress you was for it to auto complete a code along exercise (which is very likely committed to someone's GitHub somewhere)?
I mean, I've been fairly impressed with CoPilot overall myself.... But you're basically saying "wow it was able to auto-complete code that I was about to copy from a lesson before I could copy it."
I don't get why that's impressive or article worthy.
It’s impressive for me because I jumped from an auto completion of a single word (without using Copilot), to a fully featured Ruby method directly related to an online course I’m doing, and I just had to type four letters.
Yeah. The difference though between it being "notable" and "meh" is that you were getting ready to type code that's already pre-existing, character for character. It's pretty impressive at what it does... The example that you gave though is an example of it giving you code that was probably used, verbatim, in it's AI training samples. Which honestly isn't all that impressive that it was able to guess that.
🙂
What would you consider being a notable feature of this tool?
I mean, the autocompletion features are notable. Just more notable if you're coding something fresh or "off the cuff". It suggesting premade code that you're typing off a guide ... Not as much.
Joe, it's been a while since you were a student, right? I was thinking to comment something like you, but when I do they call me a****le and I end up in pointless argues with students and juniors.
On a side note: TabNine and Codota are similar to CoPilot and I ended up uninstalling both. I still don't have strong opinion about CoPilot yet.
Why did you uninstall them?
Not much value when you are usually the person answering the questions on StackOverflow including your own. It was burning CPU cycles and slowing down my computer without anything that useful. Decided I like the classic-style autocomplete better.
You are on a different level altogether! :D
I just think of it as a smarter snippet tool/autocomplete. In my experience and for the use I gave Copilot, I was not impressed and it did not help me much.
I use TabNine and that works fantastic for me, copilot not as much.
I personally don't think it will replace us whatsoever, it will just support some of us like any other tool.
Interesting! I’ve used Tabnine and I didn’t find it much helpful. I guess it will depend on the programming language we are using and the specific project maybe 🤷♂️
I’m in the same boat as you. I think, in the end, this is just another tool, and the programmer will not be replaced by it.
I too didn't find it that useful initially, but after using it for around 1 year os so it really started to understand my way of coding and the projects.
I guess it won't hurt start using it again. I'll try it once more!
Keep on dreaming. Maybe programmers will stay, but they will become a hell of a lot more efficient. Like 1 programmer doing the work of 100 (or whatever). It's a pattern that arises in every field AI has entered.
Yeah I somewhat agree. In the mid/long term probably yes, it will make most of us redundant, but we will not be replaced as the question in the post asked. I also don't think we should worry much still, at least not about copilot.
I also don't see it happening any time soon. However, AI has this exponential thing which makes our guess as good as anyone else's. We may still be on the shallow curve for years, but boy, when it steepens, I'm sure things will change rapidly.
Absolutely. Also, with efficiency comes the need to trim away the unneeded heads: entry levels, juniors and even some mid levels.
I use Tabnine and GitHub Copilot... A very strong combination ☺️
Nice!
My run-through and assessment---which I wrote up on my blog but haven't had time to republish here---was similar but less generous. If you're a fledgling programmer who writes (bad) comments along the lines of "sort the input array from low to high, using the mergesort algorithm," it works as an excellent assistant...but you're still the senior developer in the relationship.
However, once you try to put it to real work, you're suddenly stranded in a Douglas Adams novel, where the AI tries to tell you what you should do instead, then flubs that task, more often than not.
This! ☝️
Agree. I started using it at my work, and so far is far from impressive.
I also like TabNine. I love autopilot for say "function fibonacciRecurively(n)" it will give me a recursive Fibonacci.
Or "const howManyPoke//autofils mon = 151" -- I don't think the second example is good.
These were known things that have been debated and evolved. A better example I am working with web audio API, and have a very orderly way or doing things to make a modular synthesiser. CoPilot can make sine wave oscillators. Great, but I can do that on autopilot myself and copilot doesn't use MY style.
In short copilot is great for coding challenges. As mentioned earlier many people will have deployed your courses code to git. For new functions with don't have a regonised pattern copilot stalls - or if you are extremely specific and lucky you might get what you need, or a commit somebody made years ago which just doesn't work.
I agree with your oppinion. GitHub copilot can be helpful, but it's not perfect.
For it to work, it needs code and that code is from us so it won’t replace developers until every sort of code is made in the world of programming.
I have to admit that that’s the smartest thing I’ve said in a while 👀
Agree! And as the world of programming is ever expanding, it will take it forever...
I'm glad you went the disable route. That was my first thought you said it filled in everything. Same reason they tell us not to copy and paste the code, we need to train our brains to be autopilot. Then we have space to learn more! 🤣🤪
Exactly! 😅
I have been working with copilot and intelliJ for 1 week now.
I am not really convinced yet. Let's see if this still becomes successful.
I think using it on work related code is not as impressive. Maybe that’s because of the code being too customized to a specific need.
that is possible.
I think Copilot is the perfect name. I'm still in control, but it helps me out on tedious or repetitive tasks. Where it really shines though is in writing code that I would have had to Google to do myself. It's probably saved me hours of work in cases like that. It's suggestions are often best practices and help me learn how to do things more efficiently. I love it so far!
This! Improving the code quality is one of the best use case I can think of about this tech.
I don't trust it.
"Deploy the firewall, Hal!"
"I'm sorry, Dave, it doesn't meet the average coding style"
😅
Love that attitude!
Thanks!