Skip to main content

GitHub Copilot–When to choose what?

A few weeks ago, I did a webinar with a colleague where we talked about GitHub Copilot and the different ways you could use it. At that time, we demonstrated both the Chat mode and the Edits mode. With Microsoft 50-year anniversary the new Agent mode was made general available bringing the number of options to 3.

 


Remark: I didn’t succeed in letting Microsoft Designer generate a pathway splitting in 3 directions….

So now the question becomes:

When to choose what mode?

Great question!

When to choose what mode?

Choosing between GitHub Copilot Chat, Edits, and Agent mode depends on what you're trying to achieve:

  • Copilot Chat: Ideal for conversational interactions where you ask questions, seek explanations, or brainstorm ideas related to coding. It's like having an AI-powered teammate that responds to your queries in real time.

  • Copilot Edits: Best when you're actively modifying code. This mode allows you to start an edit session where Copilot suggests and applies changes directly to your code based on natural language prompts. It's great for refining specific segments without manually searching through the entire codebase.

  • Agent Mode: Designed for more proactive, task-oriented workflows. It goes beyond simple responses and edits, handling multi-step tasks autonomously. If you need Copilot to execute a more complex coding workflow without constant oversight, this is the mode to use.

I typically applied the following rules of thumb when choosing between modes:

  • I used Chat mostly when I need information about my code or guidance.

  • I used Edits when making targeted modifications to existing code.

  • I used Agent Mode when I wanted to setup new projects or build complete features and tests.

That being said I noticed that I used Agent Mode a lot more than the other 2 modes the last weeks. But it is too soon to tell if this is a general pattern or accidently related to the kind of work I’m focusing on the last weeks.

An example

Let’s take a common coding scenario: You’re refactoring an old JavaScript project and need to modernize some functions.

  1. Copilot Chat: You start by asking, "How can I optimize this function?" Copilot gives an explanation of best practices, performance improvements, or alternative methods.

  2. Copilot Edits: You decide on a refactor, highlight the function, and prompt Copilot with "Rewrite this using async/await." Copilot applies the edit directly in your code.

  3. Agent Mode: You need a deeper transformation, so you say "Upgrade this entire module to TypeScript." Copilot autonomously carries out the task across multiple files, making changes where necessary and resolving dependencies.

So, it depends on whether you want a quick explanation, a targeted edit, or a more comprehensive workflow execution.

I asked GitHub Copilot to transform this into a nice diagram and this is what I got back:

 

Hope that helps!

More information

Github Copilot Edits

GitHub Copilot Agent mode (Preview)

Mastering GitHub Copilot: When to use AI agent mode - The GitHub Blog

Popular posts from this blog

Azure DevOps/ GitHub emoji

I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.

Podman– Command execution failed with exit code 125

After updating WSL on one of the developer machines, Podman failed to work. When we took a look through Podman Desktop, we noticed that Podman had stopped running and returned the following error message: Error: Command execution failed with exit code 125 Here are the steps we tried to fix the issue: We started by running podman info to get some extra details on what could be wrong: >podman info OS: windows/amd64 provider: wsl version: 5.3.1 Cannot connect to Podman. Please verify your connection to the Linux system using `podman system connection list`, or try `podman machine init` and `podman machine start` to manage a new Linux VM Error: unable to connect to Podman socket: failed to connect: dial tcp 127.0.0.1:2655: connectex: No connection could be made because the target machine actively refused it. That makes sense as the podman VM was not running. Let’s check the VM: >podman machine list NAME         ...

Cleaner switch expressions with pattern matching in C#

Ever find yourself mapping multiple string values to the same result? Being a C# developer for a long time, I sometimes forget that the C# has evolved so I still dare to chain case labels or reach for a dictionary. Of course with pattern matching this is no longer necessary. With pattern matching, you can express things inline, declaratively, and with zero repetition. A small example I was working on a small script that should invoke different actions depending on the environment. As our developers were using different variations for the same environment e.g.  "tst" alongside "test" , "prd" alongside "prod" .  We asked to streamline this a long time ago, but as these things happen, we still see variations in the wild. This brought me to the following code that is a perfect example for pattern matching: The or keyword here is a logical pattern combinator , not a boolean operator. It matches if either of the specified pattern...