Github Copilot, worth it?

As a developer always searching for tools that streamline my workflow, as well as being tools for adoption within the business I work with, I decided to give GitHub Copilot a try. I have been a ChatGPT user for around a year as well as having writing small web apps with Semantic Kernel so I felt sufficiently prepared to explore with an open but informed mindset. Over the course of several projects, I’ve gathered my views on how Copilot can boost productivity and where it sometimes falls short.

What is GitHub Copilot?

For those unfamiliar, GitHub Copilot is integrated directly into popular code editors like Visual Studio Code, offering real-time code suggestions as I type. It leverages machine learning trained on a vast collection of public code to propose complete lines or even blocks of code. While this has helped me overcome coding hurdles and speed up routine tasks, I’ve also noticed that it isn’t a flawless solution. It is very similar to tools like Blackbox AI and Cursor, just with different interactions. For transparency I have also tried those, might write a blog on them as well if this gets enough views.

Case study 1 – MAUI

MAUI – my first case study was using copilot to help with building an app using .Net Maui. Simple app, focused on heart health, information and some videos. Interactive element was a workout routine for cardiac rehab. I have a lot of experience on Xamarin and medium with MAUI.

Copilot was able to help me start the project, suggest a sensible structure. It really struggled with the UI elements and xaml, it just couldn’t make it look good but functionally was passable.

Case study 2 – React and Semantic Kernel

Project was to create a simple chat experience talking to OpenAI using Semantic Kernel. have done training on React but no production experience.Semantic Kernel is new to me.

Copilot was great at getting me a working React app that looked ok and functions ok. I am about concerned this is because I don’t know what good looks like. Semantic Kernel it really struggled with, often suggesting out of date approaches or things I wouldn’t accept based on my own .net knowledge. I ended up using ms learn and doing it myself.

What I Like About GitHub Copilot

Speeding Up Routine Tasks – I’ve found that Copilot handles repetitive or boilerplate code swiftly, freeing up time for tackling more complex problems. Things like setting up new APIs, Unit Tests etc.

Enhancing Creativity – Im not the most front end, so being able to talk to it about ideas like button placements, themes etc allowed me to create a UI to fit my brief infinitely quicker than I could have done alone.

Learning on the Fly – As I experimented with new languages and frameworks like Semantic Kernal, Copilot’s real-time examples often serve as a helpful guide, making the learning curve a bit less steep.

IDE Compatibility – Since it works directly within VS Code, Visual Studio and Rider, it fits naturally into my existing development environment without causing disruptions.

Context-Aware Suggestions – Its ability to analyze the code I’m writing and offer context-relevant snippets has been a real asset, though not without occasional hiccups.

The Challenges I’ve Faced with GitHub Copilot

Inconsistent Code Quality – While many suggestions are ok, I’ve encountered times when the generated code wasn’t optimal or secure, or even worked. More than that, sometimes the code was down right dangerous. It’s become clear that I need to thoroughly review every snippet to avoid introducing bugs into my env.

Complexity at scale – In larger, more complex projects, Copilot misses the full picture, leading to recommendations that don’t quite make sense with the overall codebase. Im still trying to work out how to address this, but i think its just a limitation of where we are right now with context windows being too small for the code base and no local LLM doing the heavy lifting before passing to back end.

Storing my data – Copilot doesnt give you a private instance unless you pay for it, which comes with a hefty price tag. For $10 expect your code to be stored saved and used for training, so be especially careful with any proprietary code or keys!

Navigating Intellectual Property – Knowing that Copilot’s training data comes from public code repositories has made me cautious. There’s an ongoing debate about potential licensing issues, especially when integrating its suggestions into proprietary projects.

Maintaining Coding Skills – I’ve noticed that depending too heavily on Copilot can sometimes hinder my own problem-solving abilities. It’s a fantastic tool for assistance, but I’ve learned to use it as a complement to my skills rather than a crutch. A good example of this is when working with the front end. I am not the best, but have learnt React last year. Using Copilot allows me to move massively faster, but without deep prior knowledge, I dont know if its good enough for prod and Im not learning myself to fix that if i am relying on it.

Summary

My own experience with GitHub Copilot has been a mixed bag of impressive code creation, fast debugging and moments of wtf frustration. It’s clear that while Copilot can be a powerful tool for new and experienced devs, there are significant challenges that come with using if effectively. For enterprise, this is a risk for me and would need tighter controls on things like PR to prevent bad code making it into prod. I think for personal projects, it is worth the $10 but enterprises need to make the investment in their processes before letting it loose on their code.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.