Copilot is an AI-powered code suggestion tool developed by GitHub in collaboration with OpenAI. It assists developers and automation engineers by providing context-aware code suggestions as they write code in their preferred programming language. It is designed to save time, reduce errors, and improve code quality by offering relevant suggestions and snippets based on the current context.
Alexander Belenkov, Lead .NET Engineer and Andrei Salanoi, VP of AI Engineering discuss the features of Copilot and share tips for using it effectively.
What does GitHub Copilot provide?
AB: GitHub Copilot offers several practical benefits for developers at various stages of software development such as auto-completion of code, generating boilerplate code and documentation, and writing tests. Copilot can also help you adjust new or evolving requirements by suggesting modifications.
AS: Copilot provides IntelliSense. So whenever you type, it tries to suggest the next few lines of code based on what you have so far. To some extent, it is similar to chat GPT, but it’s born for development topics, and there is no way to discuss weather with this bot! The usage of Copilot is quite niche, so it’s like supporting the development process. From this perspective, two major bits of functionality are in line, IntelliSense and chat.
What are the benefits of using GitHub Copilot?
AB: GitHub Copilot boosts development speed by providing context-aware code suggestions, allowing developers to focus on solving high-level problems rather than writing boilerplate code. It enables programmers to transition from idea to code more quickly, reducing the time spent searching for solutions and examples online. Recent studies show that over 70% of developers already utilize generative models like ChatGPT in their work, often using them in place of traditional resources like Stack Overflow. Additionally, GitHub Copilot can serve as a learning tool using Copilot Chat by offering code examples and explanations.
AS: The main benefit in my mind is saving mental energy because Copilot usually offers good suggestions, it’s not like a single line, like traditional tools, it might offer a multi-line suggestion, and by doing this, you’re simply saving time on typing. In many cases, Copilot can predict what you would write, so it’s also a time saver here as well. If you want to transform your code quickly, and you know what you are trying to do, you can also ask Copilot to repeat this. You may look at sophisticated transformations of code, if they are properly described it saves you time on doing this manually. If you don’t know something, you can ask Copilot. To some extent, it can be seen as an alternative to a search engine where you are getting this answer right into your development tool or Visual Studio with no need to switch to Google or any other search engine to find the information you need. I believe this is the main benefit of using Copilot in comparison to not using it.
Why are customers using the tool?
AS: I believe the main reason for using these tools is customer perception that their development teams may become more productive in contrast to not using this tool. This is probably the main driver, such as increased productivity of developers. A secondary driver for some customers is that they need to demonstrate that they can follow the trend and explore the AI space by trying to adopt at least development processes to the latest tools and technologies. To present that AI exists in their companies, customers may want to use Copilot as well.
What are the challenges of using GitHub Copilot?
AB: GitHub Copilot is not a silver bullet and cannot perform complex tasks or make decisions on behalf of the developer, so you can encounter some challenges. The biggest challenge is Copilot does not always provide optimal solutions or follow best practices. The generated code may contain bugs, inefficient logic, or security vulnerabilities. The main challenge in my opinion is developers who are new to programming might become overly dependent on Copilot for generating code, rather than understanding the underlying logic themselves, which can hinder their development of fundamental coding skills.
AS: The main challenge with using Copilot is you need to educate yourself because it’s not enough to just install this tool and start using it. If you follow this approach, you’re only using about 10% of the use it can actually bring. You need to spend time on prompt engineering learning how large language models work and studying what kind of functionality is offered by Copilot. So after this upskill and activity, you will become significantly more productive than if you just straightforwardly use this tool.
The challenge is also that people don’t always want to invest their time in the sub-skill and activities and as a result, they are not getting like significant boost in their productivity from this tool. After some time, they may become disappointed that there is a lot of buzz around Copilot, and there is a perception that some magic will happen and that somehow this tool will read your mind and do the work instead of you. But this is not the case. You need to be very precise on what you would like this tool to do. It takes some time to start directing this tool and getting some valuable results.
What initiatives are in place at Godel?
AS: In the first instance I would say education courses were created for internal and external use, and it’s already been provided to one of our clients. In addition to this, we had a demo day where we presented an overview of Copilot and we have internal materials created for Godel employees on how to use Copilot. Also, we evaluated an alternative to Copilot, a tool called Continue. We also have education courses, references and resources about various prompting techniques.
What is your personal opinion of Copilot?
AS: If you know when and where to use it, it’s a brilliant tool to use. When I develop something, I know how to form my request using this tool to get something valuable. It’s not always the case that I’m happy with the result of Copilot, but for certain types of tasks, when I’m creating, like repetitive code, or I have examples of similar code I would like to create, it works well. It is also a significant time saver when we come to legacy code and ask Copilot to do something with it.
My personal observation is knowledge is power. It’s not enough just to read an article and do some advanced practice, you need to constantly train and master the skills. The more you use this tool, the more complex user scenarios you’ll come across and you’ll begin to test whether they make sense or not.