< Back to articles

GitHub Copilot: A year after

It’s been over a year since I first shared my thoughts on GitHub Copilot. Since then, Copilot has introduced a lot of updates and new features. In this blog post, I’m going to take a closer look at some of these changes and explore how they’ve improved the experience!

For context, I’m using Copilot with a free student license on VS Code. Most of my coding is backend work in Node.js, but I also do a lot of Python for my university projects. So, let’s see how these updates are helping out with my day-to-day coding!

How does inline suggestions work?

I recently came across an interesting blog that explains how basic inline suggestions in GitHub Copilot actually work. In a nutshell, every time you interact with your editor (writing code), a request is sent with a prompt that’s built from relevant information.This includes data from the most recently visited files of the same programming language, key parts of the current file, and other context. That’s why Copilot doesn’t work without an internet connection.

What’s also interesting is that a request isn’t sent every single time — it only goes through after passing a local filter evaluation. Basically, a score is calculated based on the language, whether previous suggestions were accepted or rejected, the last character typed (like a dot, for example) etc. If the score is high enough, it decides that suggesting a continuation makes sense.

GitHub Copilot: GPT-4 instead of Codex

GitHub Copilot has switched to the latest model GPT-4, moving away from their previous Codex model. Honestly, I haven't noticed a big difference in the inline code suggestions, but I’m sure the switch is making an impact on some of their newer features. Currently Copilot is gradually transitioning to GPT-4o, which promises better performance.

Chatbot

Now, let’s talk about the new features – the biggest highlight has to be the chatbot. One thing I often miss in ChatGPT is the lack of project context. Sure, I can ask it questions, but I need to frame them correctly, covering all the details, which can be a bit time-consuming.

The chatbot has introduced a bunch of features that could solve these context issues. For example, there’s @workspace, which pulls context from the entire project to give more accurate answers. If you need help with a specific file, you can use #file command. And if you forget a command or need quick terminal help, @terminal lets you ask Copilot directly—it can even suggest commands or try to fix terminal errors for you.

But a word of caution: be mindful of the solutions Copilot suggests. There’s an official VS Code video showing GitHub Copilot recommending a downgrade from Node 18 to Node 10 to solve a terminal issue, which isn’t exactly the best advice! So, always double-check before hitting enter.

Is chatbot useful?

I found this chatbot feature most useful when working with code in a language I’m not familiar with. For instance, at university, I manage a website for a student club that’s built on a really old version of Angular—a framework I had zero experience with before. In situations like this, the chat was a lifesaver. It explained everything in detail, making it easy to understand what each function was doing in just a few seconds.

Even though new updates are constantly rolling out - like chat now having the ability to remember your conversation history, read context, and even support voice chat - I still don’t use it that often. Most of the time, the basic inline suggestions are more than enough for my needs.

There are 2 hard problems in programming...

.. and one of them is naming things. One of the recent features I’ve appreciated is the ability to get suggestions for function/variable names. I sometimes find myself struggling with it and turning to ChatGPT for help. Now, with just one click, you can see several naming options, which is a great way to get a bit of inspiration.

Google Keep (2).gif

Automatic commit messages

Another feature is the automatic commit messages. It basically provides a summary of the changes made. However, most of the time, it ends up generating messages like “Update logic for someFunction” or “Refactor someFunction in abcService.” To me, commit messages should offer more insight into what was changed and why, and ideally include related task numbers or other relevant details. These summaries are often too vague and don’t add much value since they’re pretty obvious at first glance.

Google Keep (1).gif

Generating documentation and tests

When it comes to generating documentation and tests, I mostly use this feature only as a template. It usually provides a basic outline, but I often find that it’s not quite detailed enough. I then go in and refine the function descriptions or improve the tests myself. It’s a good starting point, but it’s not quite enough on its own.

Google Keep.gif

GitHub Copilot: What’s next?

GitHub Copilot is rolling out updates almost every month. There are a couple of recent features that caught my eye, though I haven’t had a chance to try them out yet:

  • Instructions for Copilot Model: This feature allows you to customize the model to better suit your specific queries. You can check it out here.
  • GitHub Copilot Extensions: It allows users to customize the chat experience and interact with specialized chat participants created for more specific tasks. Even though I don’t use the chatbot often, this new feature looks intriguing. More details are available in this VS Code blog.

To sum up, GitHub Copilot has introduced some interesting updates. I’m planning to explore more Copilot options soon, as well as try other AI tools, so keep an eye out for future updates. Thanks for reading!

Karina Balagazova
Karina Balagazova
Backend DeveloperKarina develops backend applications and studies Data Science at FEL CTU. She is inspired by learning new things, has a passion for figure skating, plays the piano and loves nature.

Are you interested in working together? Let’s discuss it in person!

Get in touch >