How AI tools impact the way we develop software: our GitHub Copilot journey
In the fast-paced world of software development, leveraging artificial intelligence (AI) tools has become a game-changer for everyone seeking efficiency and productivity in their work.
At Emergn, we strongly believe that bringing new perspectives and ideas is the way to achieve exceptional results. It’s through experimentation and practical application that we discover how technologies can provide new ways to build solutions addressing the needs of customers and users. Encouraged to embrace new techniques, tools, and approaches, our people keep growing and developing their skills while exceeding clients’ expectations and staying one step ahead in the industry.
Over the past twelve months, our team has conducted a long-term experiment with GitHub Copilot, a ground-breaking AI tool with the potential to transform the way we develop software.
In this article, we share the insights and experiences of Martins Penkevics, JavaScript Lead Developer, Muntis Rudzitis, Lead Data Scientist, and José Mota, JavaScript Developer – who have been leveraging GitHub Copilot in their daily tasks for more than twelve months.
What is Copilot?
Copilot is an advanced AI-powered coding assistant developed by GitHub in collaboration with OpenAI. It seamlessly integrates with development environments – in our experience with Microsoft’s Visual Studio Code – providing real-time code suggestions as developers type. By understanding context and intention, Copilot accelerates coding tasks, generates code blocks, and promotes consistent coding standards. It promises to act as a thinking and working partner, transforming the coding experience, and reshaping collaboration between developers and AI tools. But how effective is Copilot, and how does it impact the code structure and the developer’s way of working?
Meeting early expectations and beyond
Our team’s expectations for Copilot differed from one professional to another, but there were some common grounds regarding how they hoped the tool would support their work. We essentially expected Copilot to predict code, complete sentences, and streamline routine coding tasks – especially in syntactically strict languages. Copilot surpassed these expectations by not only automating tasks but also adapting to their workflow and thought processes. The tool predicts thoughts and demonstrates an incredible ability to guess intentions, making it a powerful partner in navigating the complex landscape of code.
For our Lead Data Scientist, Muntis Rudzitis, Copilot evolved throughout the months, revealing two distinct aspects. First, the code completion feature accelerates routine tasks and adapts to the expectations set by historical code completion tools. Compared to traditional code completion, it learns the style of a whole code base, making it easier to keep it consistent when multiple people are working on the same code base. Second, the newly introduced chat interface, very similar to Chat GPT, provides a more conversational and interactive environment – that can help the developer to automate diverse tasks such as organizing documentation, addressing a code block, or debugging it.
Development scenarios
We worked in Scrum teams (5 to 9 people) to benefit from stronger collaboration, communication, adaptability, and focused on deliverables leveraging Copilot to develop and deliver large-scale enterprise solutions for our clients – proving its value and reliability in production environments. In most cases, we integrated Copilot with Microsoft Visual Studio Code and in some instances, with Copilot Chat Extension.
Copilot seamlessly adapted to a range of different development scenarios and technologies – from frontend development with React and our Infinity Design System; to backend development with our team using GraphQL, Node, NoSQL, and Cloud services for the delivering of intricate business logic.
Coding standards and best practices
Copilot demonstrated prime adaptability to coding standards and naming conventions. It improved our coding practices by following project-specific guidelines enforced by linters and IDE settings and following best practices in the absence of predefined standards.
Copilot’s impact on performance
Boosting productivity
One of Copilot’s standout features is its impact on personal productivity. It doesn’t merely suggest code snippets, it actively predicts patterns, making repetitive and tedious coding tasks significantly faster. Thereby streamlining the work and turning many of the less enjoyable aspects of programming into less tedious tasks.
Improving coding style and quality
Besides completing code lines, Copilot also improves coding style and overall quality. Martins Penkevics, our JavaScript Lead Developer, highlights how the tool’s suggestions for naming variables and functions contribute to a more organized and readable codebase.
Enhancing motivation
By swiftly handling the mundane or repetitive coding sections, Copilot reduces the moments of frustration. The elimination of tedious tasks contributes to a more enjoyable work environment, enhancing motivation and, consequently, creativity.
“Copilot significantly improves motivation by limiting the tedious aspects of programming. It takes care of the repetitive and less enjoyable tasks, allowing me to focus on the more interesting and creative aspects of my work.”
José Mota, JavaScript Developer
Enabling conceptual focus
By automating mechanical and template-driven tasks, Copilot offers extra time for developers to dive into higher-level, creative problem-solving – particularly valuable when tackling novel libraries or frameworks.
“It allows me to focus on the conceptual aspects rather than getting deeply involved in the specific, niche details when working with new libraries. This is particularly useful in scenarios like initiating a typical data analysis for a project.”
Muntis Rudzitis, Lead Data Scientist
Code documentation made easy
Copilot automatically generates comments and documentation snippets, streamlining the process of explaining code changes or functions. This feature not only enhances the quality of documentation but also encourages meaningful commenting practices.
“I had to work on a third-party component with tricky documentation. With Copilot, I just wrote a comment about my intentions, and voilà, I had a working code block. It saved me hours of navigating through documentation.”
Martins Penkevics, JavaScript Lead Developer
From Data Analysis to UI development
Copilot assisted Muntis in efficiently organizing and presenting tabular data. Additionally, when faced with creating a dashboard tool for a client, Copilot played a pivotal role in navigating an unfamiliar Python library (Dash), providing structure and guidance.
Teaching and learning buddy
When venturing into new frameworks or libraries, Copilot supports grasping the syntax and nuances of unfamiliar structures, reducing the time spent on trivial details and allowing for a smoother learning curve.
For junior developers, Copilot has the potential to become a powerful mentor, offering suggestions and generating code for unfamiliar tasks. This accelerates the coding process and creates a micro-learning environment that is truly work-based.
Rating the experience with Copilot
Martins: 7.5 out of 10
For Martins, Copilot is a valuable thinking and working partner, accelerating coding tasks and facilitating efficient problem-solving. He has become an advocate for Co-pilot within the team, encouraging others to explore its capabilities.
“Copilot is impactful; it enhances coding style and quality. It’s also joyful to work with. A partner that’s always there to assist and bring ease to my work.”
Muntis: 8 out of 10
For Muntis, Copilot significantly elevates efficiency and creativity, allowing him to focus on the core aspects of coding. He emphasizes that the impact may vary based on individual preferences, tasks, and coding styles.
“Different tasks benefit from Copilot at different levels. It has been really helpful for me, especially as someone who has to apply new libraries and tools quite often.”
José: 8 out of 10
José expressed his commitment to continuing the use of Copilot due to its undeniable positive impact on his work.
“It has become indispensable, significantly boosting productivity, making coding faster, smoother, and much more enjoyable in my daily work.”
Room for improvements
While Copilot has undoubtedly become an essential part of our team’s toolkit, we anticipate future updates that will refine Copilot’s accuracy and usability and make it even more useful for development teams. The dynamic nature of Copilot’s updates leaves room for exciting possibilities.
- Potential to enhance its chat interface – the ability to generate comments, interpret context for more complex tasks, and suggest improvements in branching and version control.
- Evolve to encompass broader project awareness. The tool is rapidly improving, providing potential for more extensive project integration.
- Refined accuracy in specific coding scenarios where Copilot still lacks sufficient accuracy. For example, when asking Copilot to replace a particular function as shown below.
Conclusion
Our team’s journey with Copilot showcases that integrating AI tooling into daily coding routines improves performance and the developer experience. Copilot – with its ability to predict, suggest, and streamline – stands as proof of AI’s potential to enhance productivity and creativity in software development. As we look into the future, the interaction between developers and AI tools like Copilot is set to reshape the future of software development, and we are excited to be at the forefront of this evolution.
“AI tools like Copilot and ChatGPT are now essential for staying at the forefront of innovation and for learning new skills. By constantly evaluating and experimenting with new tools and technologies, we ensure both that our people are developing valuable skills and that we can deliver competitive solutions to our clients.”
Marta Pinto, Learning & Development Manager
Would you like to learn more about the technologies we work with and our advice on best practices to implement them? You can visit our Insights page, where our team explores and shares insights on topics such as how to not confuse tools with technologies, thoughts on Rethinking learning approaches for agile work environments, and assessing if your L&D helping (or hurting) culture and employee retention.