GitHub Copilot: Unveiling the Pros, Cons, and Key Considerations

Davejensen
Neudesic Innovation
5 min readAug 21, 2023

--

The tech landscape is still buzzing with discussions about GitHub Copilot and other CODEX-like derivatives. As we eagerly await availability of GitHub Copilot X, a burning question remains: How should developers navigate the waters of this groundbreaking tool, especially when on client projects? Organizations are grappling with this and many other Generative AI questions today and hopefully the following thoughts and guidance will help you on your journey to optimizing, and possibly improving, programmer workflows and productivity along the way.

Why Use GitHub Copilot?

Because it is transformative and potentially a game changer. Copilot can be a power tool for good in the right hands. It can be a teacher, a gap filler, a problem solver, and maybe even a superpower. Here are a few good ways to look at it in terms of how you might add it to your software teams’ tool kit:

1. Boosting Productivity

· Faster Code Generation: Speed up your coding tasks by letting Copilot generate snippets for you.

· Code Quality Enhancements: Get optimization suggestions that could uplift your code’s performance.

· Expand Your Toolbox: Consider Copilot as a companion, much like Visual Studio Code or Postman. But remember, it’s not the ultimate solution for every coding challenge.

Developer quote: “I use it every day. It saves me time switching between IDE and browser to google something, creating test data, and doing repetitive property assignments.”

Developer quote: “one thing that jumps to mind is I was looking at a specific StackOverflow answer for something I needed to get done, I started typing, and it filled in almost the exact block I was looking at. That was impressive, but then I didn’t know the extension existed until I looked at the SO answer. However, it was slick at adapting it to my current codebase.”

2. Learning and Growth

· Discover New Coding Patterns: Get a myriad of solutions and broaden your coding horizons.

· Master New Languages: Dive into new programming territories with Copilot’s snippet suggestions.

Developer quote: “It has changed my practice by allowing me to learn other ways of thinking. If it suggests a chunk of code, I may or may not like it, but allows me a chance to see other ways of solving the problem (kind of like an always there but don’t need to deal with the awkward silence pair programmer).”

3. Top Use Cases

· Code Completion: Need a function or a snippet? Copilot has your back.

· Syntax Memory Booster: Forget the constant Google searches for syntax; Copilot reminds you in real-time.

· Boilerplate Code in a Jiffy: From setting up RESTful APIs to initiating database connections, Copilot can do the heavy lifting.

Developer quote: “My favorite part of using it is when it detects I’m doing something repetitive it provides some incredibly accurate suggestions. This saves time.”

Summary: GitHub Copilot can be a boon for developers, enhancing productivity, facilitating learning, and serving a multitude of coding purposes.

However, Beware Of…

The fact that all technology comes with certain risks. Technology has done many a wonderful and terrible things the hands of good and bad actors (sometimes just careless people cause real damage). There are always appropriate levels of risk associated with any tool or solution that claims to make life easier. In Copilot, it is no different. Think about the potential good or harm that can come to your organization and team when using Copilot, and then be wise about when and how you use it. Here are few things to keep in mind:

1. Over-Reliance Dangers

· Understanding Goes Down: You might lose touch with the underlying mechanics if Copilot does all the work.

· Atrophying Skills: Relying too much? Your skills might just become rusty.

Developer quote: “It shut off at one point and I started getting frustrated while coding. I stopped to ask myself why, turns out it was because it wasn’t running, and I was having to think a lot harder on what the syntax was.”

2. Contextual Misunderstandings

· Not Always Right: Copilot can’t always grasp the broader context, leading to off-mark suggestions.

· Flaw Propagation: If you start with flawed code, Copilot might just amplify those mistakes.

Developer quote: “…the code it does suggest can look fantastic but have bugs in it, so having that accountability to review/test the code is important.”

3. Security and IP Nightmares

· Sneaky Sensitive Info: Copilot, trained on public code, might unknowingly suggest code revealing sensitive data.

· Whose Code Is It Anyway? IP concerns could arise, with code suggestions potentially sourced from others’ work.

4. Danger Zones

· Critical Security Code: Avoid relying on Copilot here; the stakes are too high.

· Proprietary Projects: Tread carefully; you wouldn’t want to expose valuable IP or utilize competitor-derived code.

· Complex Problems: For niche, intricate issues, trust your expertise more than Copilot.

5. Ethical and Collaborative Hiccups

· AI Bias and Environment Concerns: Every AI has its biases. Plus, the environmental costs of using AI tools can be significant.

· Consistency Challenges: Different developers might get varying Copilot suggestions, causing codebase inconsistencies.

Developer quote: “It’s good at filling out repetitive blocks but usually that’s a cue for me to refactor and it doesn’t strictly help me identify that. However, it’ll help me write the similar refactored code quickly and fill in new usages as well.”

Summary: While GitHub Copilot can be a fantastic asset, developers should be wary of potential pitfalls, from over-reliance to security concerns.

Guiding Principles for Harnessing Copilot

Remember, whether it’s original, borrowed, or Copilot-assisted, it’s YOUR code. Blaming Copilot won’t cut it. Create a culture of transparency and awareness as you attempt to make your and others professional lives better. Some points to consider immediately (whether you’ve rolled Copilot out already or not):

1. Set the Rules

· Craft a clear Copilot usage guideline, defining the when, how, and why.

· Promote a culture of shared learnings and experiences with the tool.

2. Uniformity is Key

· Ensure coding standards remain consistent.

· Keep abreast of tech trends, adapting standards as required.

3. Rigorous Code Reviews

· Equip reviewers to spot Copilot-induced errors.

· Promote transparency in Copilot usage during reviews.

4. Safety First

· Reinforce security guidelines for Copilot use.

· Schedule security audits to address Copilot-related concerns.

5. Foster Collaboration

· Boost developer interaction about their Copilot experiences.

· Offer multiple platforms for Copilot discussions and clarifications.

6. Monitor and Adapt

· Track Copilot usage metrics to make informed future decisions.

· Stay updated with training sessions on Copilot’s evolving features.

Developer quote: “My summary would be that it’s 100% better to have it than to not have it, but the limitations need to be understood and worked with”

Summary: Harnessing the full potential of GitHub Copilot requires thoughtful guidelines, consistent coding practices, rigorous reviews, and a culture of collaboration.

In conclusion, GitHub Copilot offers immense potential. It’s a tool that can redefine coding. With the introduction of Copilot Chat the art of programming is evolving far beyond what it was just 1 (one) short year ago. But, like any tool, Copilot’s efficacy lies in how we use it. Navigate wisely, and you’re set for an exciting coding journey ahead! 🚀

Developer quote: “…it has cut down a lot of time spent overall so I love it and cackle manically every time it understands my intent. Can’t wait for Copilot X. Hoping it’ll be even better.”

--

--