Recently, there has been much discussion in the IT world about the emergence of AI, which is said to potentially replace programmers. Even the CEO of Nvidia suggested that it’s better to learn agriculture than programming. Is he correct? Could tools like GitHub Copilot or Gemini Code Assist (formerly Duet IA) really put us out of work? 🤔 Serving as GitHub Copilot Ambassadors for our company’s initiative, we investigated the potential for AI to disrupt our professional landscape.
Let’s begin with an overview of GitHub Copilot. It is an AI-powered code completion tool developed by GitHub. Its primary objective is to assist developers, SRI, or software QA engineers in writing code more efficiently. Through context analysis and code snippet suggestions, GitHub Copilot enhances productivity and minimises errors. Leveraging machine learning, it absorbs insights from vast amounts of code to offer relevant and contextually appropriate suggestions during the software development process.
Beyond the official narrative found on the internet, what’s the real-world effect of these industry developments on our daily tasks? We’ve gathered three different opinions from experts working in different roles and projects at Sabre. 👩🏻💻👩💻👩🏼💻
JOANNA (Principal Software Quality Engineer)
GitHub Copilot: First Impressions
I’ve recently started using GitHub Copilot alongside Java and IntelliJ in my daily work. Here are my early observations:
The Good 🔥
- Autocomplete Magic: One standout feature of GitHub Copilot is its autocompleting functionality. It not only speeds up my coding, but also surprises me with suggestions I hadn’t considered initially. These unexpected prompts often inspire me to explore more creative solutions or alternative approaches.
- Code Scanning and Improvements: GitHub Copilot goes beyond code writing, it’s also a helpful tool for scanning existing code. I’ve used it to identify potential improvements, significantly enhancing my workflow efficiency. During a recent code review, GitHub Copilot’s suggestions proved really helpful in saving me time.
The Bad 😔
- Nuanced Usefulness: GitHub Copilot’s effectiveness varies depending on the complexity of the task. For repetitive, boilerplate code, it’s brilliant. It excels in automating repetitive, boilerplate code but may struggle when confronted with more complex logic or crucial sections.
Limitations ⛔
- While GitHub Copilot won’t write every line of code for us, it certainly boosts our productivity. With practice, we’ll become adept at formulating precise questions and receive even better responses.
To sum up, my first impressions of GitHub Copilot have been positive. While it’s not perfect, it represents a valuable addition to my toolbox. I look forward to exploring its possibilities further.
KINGA (Software Engineer)
Some time ago, I started exploring ChatGPT in my private projects. Witnessing its efficiency and time-saving benefits, I eagerly awaited the opportunity to incorporate GitHub Copilot (known for its more advanced features) in my professional endeavours and explore its coding capabilities. Here are my early insights:
Power of integration with IDE 🦾✨
GitHub Copilot is integrated with Visual Studio Code, IntelliJ IDEA, and a few other IDEs. As a result, GitHub Copilot Chat is available in the same window as your code.
Less context switching 🧠🔁
With GitHub Copilot, there’s no need to switch between your IDE and a browser to find solutions to your coding challenges. Let’s dive into an example.
I haven’t used Stream in Java to get the last element from it, so I didn’t know how to do that when I needed it.
Normally, I would:
- go to a browser
- search for something like “java stream last element”
- go to one of the displayed web pages (probably Stack Overflow)
- look for the solution I needed.
- go back to IntelliJ
- write the solution adapting it to my case
With GitHub Copilot 🪄 I’ve just:
- selected the Stream
- wrote my question in the GitHub Copilot Chat
- in a few seconds, I got a solution with a code proposition for my case
- I inserted the code proposition to my code using the dedicated button for that (it’s visible when you hover over a code block in GitHub Copilot Chat)
As you can see, I didn’t have to leave my IDE, and I implemented what I was looking for within less than a minute. ⏰
Easier context providing 📲
You might have noticed that by just selecting a piece of code, the chat could quickly gather information about the code in question. What’s more, during each chat query, GitHub Copilot also analyses all files you currently have open in the IDE. There’s no need to copy and paste code snippets or entire classes (as in the case of ChatGPT) when seeking AI assistance, for example to find a bug, refactor code, or split a large method into smaller ones.
Did I find any flaws? ❌
So far, I haven’t faced any disappointments with this tool. I only regret that GitHub Copilot for IntelliJ doesn’t have as many functionalities as for VSCode (inline chat, @workspace), but I hope it’s just a matter of time. 🤞
MY TIPS💡
Learn how it works
Before delving into experimentation, consider taking a brief moment to learn about this tool. 🔍 I suggest reading a few articles, such as those found on the GitHub Blog, to understand how and why GitHub Copilot was created. I’m sure this will help you avoid any disappointments that might come from having too high expectations.
Play with it
Don’t be afraid to experiment with this tool. You won’t break it. If you are not satisfied with the answer to your question – change it! Add/Delete something.
Don’t give up!
GitHub Copilot is a TOOL 🛠️ to ENHANCE your work efficiency. It is not a WIZARD 🧙♂️ who will do ALL THE WORK for you. It’s not enough to have it in your IDE.
MAGDA (Principal Software Quality Engineer)
I’m currently immersed in Java programming daily. My tasks include crafting automated tests for backend applications, which I accomplish using the IntelliJ IDE.
Having prior experience with such tools in private projects, integrating GitHub Copilot into my work environment was notably smooth. However, to write code more efficiently and quickly, it’s advisable to acquaint oneself with best practices for creating prompts.
👉 You can read more about this here.
🟢 GitHub Copilot has accelerated my work primarily in:
- Reviewing and better understanding Pull Requests (code) from colleagues, not only technically but also assisting in communication style.
- Writing simple code, such as standard functions like Streams.
- Adding similar, less logically complex functional tests (based on the PR information and the class with current tests, it can suggest quite good solutions).
- Checking emerging errors faster than searching in the browser.
🟠 My recommendations after using GitHub Copilot for several weeks:
- GitHub Copilot Chat generates better code than GitHub Copilot.
- Context is crucial; open files that matter and close those that are unnecessary. Although this may seem to slow down the work a bit, the resulting effect is much better.
- Use .copilotignore to avoid analysing insignificant files and folders unnecessarily.
- Invest time in learning to create prompts efficiently; it will help you achieve the desired result faster, especially in more complicated cases. This skill is useful not only in using GitHub Copilot but also in other similar tools.
- GitHub Copilot does not always generate correct versions of libraries or modules; always verify them.
- Update your IDE and GitHub Copilot plugin as frequently as possible. Visual Studio Code provides the best support for GitHub Copilot, with several additional highly useful functionalities not yet supported by JetBrains IDE.
📝 To sum up, remember that GitHub Copilot is only your assistant; while it facilitates your work, it’s essential to verify its suggestions.
🎰 Always keep in mind that sometimes, the generated solutions may be technically correct but not necessarily business or logic-wise. The generated code may not always be optimal. Last but not least, insufficient context leads to less satisfactory results.