Nemanja Ninkovic
Software Developer at Engineering Software Lab Serbia
Getting the most out of GitHub Copilot: tips every developer should know.
As AI-powered tools continue reshaping how developers write, debug, and optimize code, many professionals are exploring new ways to improve productivity and problem-solving. One of those tools, GitHub Copilot, is becoming increasingly relevant in real-world development workflows.
Recently, during an internal Engineering hackathon focused on targeted problem-solving, Nemanja Ninkovic, Software Developer at Engineering Software Lab Serbia, dove deeper into using GitHub Copilot more intentionally. His skills and prior experience with Copilot led to a successful participation in the hackathon but also reminded him just how effective Copilot can be when used with structure, precision and purpose.
In the following interview, Nemanja shares concrete tips, real examples, and his perspective on how to get the most out of GitHub Copilot - not just as a tool, but as a valuable coding companion.
Can you share one of the most effective ways to start working with GitHub Copilot?
Start with structure — pre-prompting really matters. One of the most effective strategies when working with GitHub Copilot is setting things up clearly before diving into the code. That usually means creating a well-defined “Copilot-instructions” section, often based on the README.md file.
This structured briefing explains what the project is, what technologies or design patterns are being used, and how Copilot should approach tasks. When done right, this helps Copilot stay aligned with project goals.
Clear and precise pre-prompting keeps the tool on track. Without it, Copilot may drift into unrelated suggestions. Below is an example of what might go into a Copilot-Instructions section:
General Principles:
A practical example can be seen in a web app developed entirely with GitHub Copilot, available here: rust-tracker repository
What has been one of the biggest challenges when using Copilot, and how do you overcome it?
A major challenge is maintaining focus. Copilot sometimes overreaches — suggesting features or solutions that weren’t requested, especially when prompts are vague.
The key to solving this is to treat each interaction like a micro-task. Break the work into smaller, clearly defined steps. The more specific the prompt, the more useful the response.
Does Copilot make mistakes? How do you manage incorrect or irrelevant suggestions?
Yes, Copilot can absolutely get it wrong. But it’s important to see Copilot as an iterative collaborator — not just a code generator. When it misses the mark, the best approach is to iterate with purpose.
Here are a few techniques:
For example, a prompt like:
"This API endpoint is not working as intended — it should return status code 503 instead of 200."
helps steer Copilot toward meaningful corrections.
Effective use of Copilot isn’t about getting perfect results immediately, but about steering the interaction and refining it over time.
How useful is Copilot when it comes to debugging? What’s the best way to use it in that context?
Copilot can be surprisingly helpful in debugging — but only when given the right context. As with any good teammate, the clearer the communication, the more effective the results.
When prompting Copilot for debugging, it helps to specify:
Even short, focused comments can guide Copilot toward suggesting relevant and helpful fixes. With solid judgment and well-framed prompts, it can meaningfully speed up the debugging process.
Has your mindset around Copilot changed with time? What advice would you give to fellow developers?
Absolutely. Over time, my mindset has shifted from seeing Copilot as a convenience tool to seeing it as a companion in development.
Copilot is at its best when the developer already has a solid understanding of the language, framework, and architecture. In that case, it becomes a powerful assistant — great for exploring unfamiliar libraries, experimenting quickly, or navigating large codebases.
But over-reliance, especially by those still learning a language, can be counterproductive. It’s possible to get things working without truly understanding the “why” — which can limit long-term learning.
That’s why the best way to use Copilot is intentionally — as a learning partner, not a shortcut. Developers should remain in the driver’s seat and use Copilot to accelerate their growth, not replace the learning process.
Recommended for you
Explore additional content associated with the topic