Mastering GitHub Copilot: Best Practices for Prompt Crafting

GitHub Copilot, the AI coding assistant, has revolutionized the way developers approach coding tasks. Its generative AI capabilities help accelerate coding workflows by providing code suggestions. However, effectively communicating with Copilot is crucial to get the desired output. In this comprehensive guide, we will share prompt crafting best practices and tips to help you maximize your productivity when using GitHub Copilot. Whether you are a beginner or an experienced developer, these insights will empower you to generate accurate and relevant code suggestions.

Understanding Prompt Engineering - Before delving into prompt crafting, let's understand the concept of prompt engineering. In the context of generative AI coding tools, prompts are code blocks, individual lines of code, or natural language comments that developers write to generate specific suggestions from GitHub Copilot. Prompt engineering involves providing instructions or comments in the IDE to guide Copilot in generating coding suggestions that align with the desired output.

copilot image

Best Practices for Prompt Crafting

Set the Stage with a High-Level Goal

When starting a new coding task, it's helpful to set the stage by providing Copilot with a high-level goal. Imagine having a conversation with a programming partner. Break down the problem and discuss how you would approach it together. By describing the big picture and the desired outcome, Copilot gains a clear understanding of what you want to achieve. This sets the context and primes Copilot to generate code snippets that align with your intentions.

For example, when building a markdown editor in Next.js, you can write a comment like this:

/*
Create a basic markdown editor in Next.js with the following features:

Use react hooks
Create state for markdown with default text "type markdown here"
A text area where users can write markdown
Show a live preview of the markdown text as I type
Support for basic markdown syntax like headers, bold, italics
Use React markdown npm package
The markdown text and resulting HTML should be saved in the component's state and updated in real time
*/

This prompt will guide Copilot to generate code for a simple, unstyled, but functional markdown editor in less than 30 seconds. You can then focus on styling the component while having a solid starting point.

Make Your Ask Simple and Specific

To improve the accuracy of Copilot's suggestions, break down your request into simple and specific steps. Instead of asking for a large chunk of code all at once, articulate the logic and steps required to achieve your goal. By providing incremental instructions, Copilot can better understand your intentions and generate code after each step. This approach is akin to following a recipe, where each cooking step is described individually.

For example, if you want to reverse a function, you can provide Copilot with step-by-step instructions like this:

// Given a function "reverseString" that takes a string parameter and returns the reversed string
// Step 1: Convert the string into an array of characters
// Step 2: Reverse the array of characters
// Step 3: Convert the reversed array back into a string
// Step 4: Return the reversed string

By breaking down the logic into separate steps, Copilot can generate code for each step, leading to a comprehensive and accurate solution.

Give GitHub Copilot Examples to Learn From

Just like humans, Copilot learns from examples. Providing relevant examples helps Copilot understand the desired outcome more effectively. When giving Copilot an example, make sure it reflects the specific behavior or result you expect. By showcasing the desired output, Copilot can generate code that aligns with your expectations.

For instance, suppose you have an array of data and want to extract the names and store them in a new array. Providing an example helps Copilot generate the correct code:

// Map through an array of arrays of objects to transform data
const data = [
  [
    { name: 'John', age: 25 },
    { name: 'Jane', age: 30 },
  ],
  [{ name: 'Bob', age: 40 }],
]

// Extract names from the data array
// Desired outcome: ['John', 'Jane', 'Bob']
const mappedData = data.flatMap((sublist) =>
  sublist.map((person) => person.name)
)
console.log(mappedData)

By demonstrating the desired outcome and providing clear instructions, Copilot generates the correct code to extract the names from the array.

Additional Tips for Prompt Crafting Experiment with Your Prompts Prompt crafting is more of an art than a science. Experimentation is key to finding the most effective prompts for your coding tasks. By trying different approaches, you can discover patterns that resonate well with Copilot. Keep refining and adjusting your prompts based on the results you get. Through iterative experimentation, you'll improve your prompt crafting skills and achieve better outcomes.

Use Contextual Information Copilot leverages contextual information to generate accurate suggestions. It takes into account the code you've written before and after the cursor, as well as data from your open files. Utilize this contextual information by providing relevant code snippets and comments in your prompts. This helps Copilot understand the desired behavior more accurately and generate code that aligns with the context.

Collaborate with the Community The GitHub Copilot community is a valuable resource for learning and sharing prompt crafting techniques. Engage with other developers, share your experiences, and learn from their insights. By collaborating and exchanging ideas, you can collectively accelerate the growth and adoption of AI-powered software development practices.

github image

Summary

Mastering prompt crafting is essential to effectively utilize the power of GitHub Copilot. By following the best practices and tips shared in this guide, you can communicate your coding intentions more effectively and generate accurate and relevant code suggestions. Remember to experiment, provide clear examples, and leverage contextual information to enhance Copilot's understanding of your desired outcomes. With practice and collaboration, you can unlock the full potential of GitHub Copilot and revolutionize your software development process.

We hope this comprehensive guide has provided you with valuable insights into prompt crafting with GitHub Copilot. Happy coding!