Beyond the Hype A Developers Perspective on GitHub Copilot.
Use Cases and Deployment Scope
We use github copilot as a coding assistant mainly. We have been using the IDE integrations of Github Copilot in both IntelliJ IDEA as well as VSCode. It has acted as a very strong coding assistant, providing valuable suggestions and feedback to the code. It also suggests code for problems that I describe, thus helping me "vibe-code" in my work. We have not yet procured the agentic capabilities for github copilot so my review is based on the non-agentic version.
Pros
- Reading codebases and understanding the same.
- Providing valuable code snippets for problems or tasks that I describe in English.
- Also helps with other supplementary technical activities, such as, from time to time, I have asked it to suggest places where I can add logs and suggest how I can monitor those logs on Splunk via a dashboard. It has helped me with both.
Cons
- Sometimes code generated by Copilot is not of the best quality, doesn't handle all the edge cases, and misses some requirements.
- I have noticed that the Copilot is not the best at analyzing large monolithic codebases and placing them in their context. It has suggested to me APIs and methods from time to time that don't exist in my codebases.
- I would have loved it if there were a deeper integration available with the IDEs. Although the IntelliJ IDEA extension is decent, I would have loved it if there were, say, a direct integration available of the GitHub Copilot agent with the IntelliJ Debugger.
Likelihood to Recommend
Copilit is fantastic at the following: 1. Solving simple, well-defined problems, such as implementing an algorithm, manipulating a data structure, or string manipulation and regex. 2. Implementing simple APIs that are mainly CRUD in nature, with moderate business logic inside them, which may involve some processing or passing the data through an algorithm. 3. Implementation of well-defined activities, such as implementing a connection to an Oracle DB using Hibernate or JDBC, or implementing boilerplate code for a backend service to listen to Kafka events. It is not that great when it comes to understanding and implementing code in a proprietary DSL. It struggles when implementing a major feature across a complex codebase. I believe developers should also adopt the trust-but-verify paradigm when expecting highly secure or regulated code from GitHub Copilot.