Saturday, 04. January 2025
No GitHub Co-Pilot For Me
In the company I work for, I am the "AI-Guy." This does not mean that I work in Machine Learning or have anything to do with the actual in-depth AI stuff. I am just the go-to guy when it comes to utilizing AI for our web projects because all the projects I worked on so far had to do with AI. All developers in our company have access to Co-Pilot — yet I do not use it. In this blog article, I want to explain why. Before we start, I want to emphasize that the following is just my personal experience, and I totally respect other opinions on this topic.
Co-Pilot Is Very Helpful...
Please do not get me wrong — GitHub Co-Pilot is super useful to speed up the development process, especially since you can now choose different LLMs to power it. It can help you write all this boilerplate code and make life a little easier. It is a nice addition and has its benefits. Buuuuut...
... If You Know What You Are Doing ...
... it is also far from perfect. I used Co-Pilot for around 2 months last year. At first, I was super hyped, and it really felt like I was speeding up my process of writing code. Okay — a lot of times the code that Co-Pilot produced for me was not exactly what and how I wanted it, but it was a very nice starting point. Sometimes it wrote complete dogsh*t — but I do that too sometimes. So that is okay, I guess. But troubles arose after a couple of weeks when my program showed some weird behavior. I found out that the source of this issue was code produced by Co-Pilot. The problem was: I didn't really understand what the code did.
You need to know — I am still a Junior developer and do not have that much experience yet. So some concepts are hard to wrap my head around — especially since I am also a self-taught developer. Co-Pilot used one of these concepts that I didn't really understand to the fullest and mixed some stuff up. I asked a senior for help, and he explained what went wrong. He said the code looked right at first glance, but he finally managed to narrow it down and fix the line that caused the issue. This was the first time I realized that using AI as an assistant can be very dangerous when you do not fully understand what you want to do.
... And If You Already Have A Lot Of Experience
So I started to be a little more skeptical with the code from Co-Pilot. I wrote more tests to really prove that the code works how I want it to work. This solved most issues, but over time, I noticed a change in my behavior.
When I started to learn how to code, I enjoyed the constant feeling of being a little bit confused—sometimes even frustrated (okay — this part was mostly not fun) and researched a lot about topics I did not understand. When I finally made my code do what I wanted it to do — exactly the way it was supposed to work — it was such a nice feeling of relief, and I was proud of myself for making it through the frustration and wrapping my head around a concept. But after I started using Co-Pilot, this part of myself shifted more and more into the background. When I had a problem, I opened ChatGPT and asked for help. Or I just let Co-Pilot fix it.
As you may know, these tools often do not work properly on the first iteration, and you need to write pretty good prompts explaining exactly what your problem is. I do not know about you, but when I encounter a problem and cannot fix it in five to ten minutes, I start to feel uncomfortable. And then I do not want to waste more time writing everything down and explaining everything to Co-Pilot. So I realized a pattern: I encountered a problem I could not solve easily → I instantly ask Co-Pilot or ChatGPT → I try the answer → It also does not work → I ask again → and again → and again... → Somehow it works and I am happy OR It does not work, and I ask someone for help.
But It Has A Major Downside
I do not know how you see it, but I see a problem with this pattern. Where is the curiosity that wants to understand what's going on — why exactly the code does not work — and that looks for the challenge of solving it on my own in order to have this feeling of relief and satisfaction? That was buried somewhere deep under all the memories with quick and easy solutions by just asking Co-Pilot or some other tool.
Now you could argue that personal satisfaction does not matter because it is my job to make a product, and as long as it works, it's okay. But I think there is a major issue here. Especially since I am still a Junior developer and still need to learn a ton of concepts and other stuff — I need to be curious — I need to learn it the hard way in order to really understand what is going on behind the curtains. If I want to become a better developer—and ultimately also a better human being, I should strive for dopamine earned the hard way. Using Co-Pilot was making me a faster coder for sure, but not a better one. So I decided to drop it and write every line by myself in order to build muscle memory and understand concepts.
Now I need longer to finish tasks at work, but I told my PM and my boss that if they want to have a good developer in the future, they need to give me some more time now. Otherwise, they and I run into the potential issue of my stagnating at this level of skill. This is not what I want for myself. I want to constantly learn new things and improve my skillset, and at this moment in my career, I think Co-Pilot is standing in my way to reach this goal.
Juniors Should Learn The Hard Way
This leads me to the "Hot Take" that Juniors should not use Co-Pilot. In this early stage of a career, it is incredibly important to build muscle memory and repeat basic and easy concepts of coding. You need to burn them into your memory and really understand them 100% in order to safely expand the skill set. If there are some holes in the basic knowledge or basic building blocks of your software, it is nearly impossible to build on top of that.
I do not say that Co-Pilot is bad. I just want to say that, if you are not disciplined enough, it can trick you into this cycle of easy and fast solutions which may benefit you in the short term, but will hurt you in the long term if you do not constantly remind yourself that you need to really understand what you are doing and strive for the hard parts of learning and doing your job. This is how you grow as a developer and as a person - at least in my opinion.
There Are Always Trade-Offs
As I said previously—Co-Pilot can be beneficial, and I think it is a useful tool. However, I will not use it in the foreseeable future because I feel less tempted to use "shortcuts" when not using it. I think when I am confident enough with several concepts and really know them inside out — I may start using Co-Pilot again. But just for these concepts. And whenever I feel like my curiosity and resistance to frustration are getting lower, I will disable it again.
There are always trade-offs in using tools like Co-Pilot, and I think it is very important to not just fall for the hype but rather look a little bit deeper into what using these tools does to you as a developer. If the benefits are much bigger than the downsides, go ahead. Otherwise, do not be afraid to stop using them.
What are your thoughts on Co-Pilot? Do you use it in your daily work, and have you experienced something similar to what I did?
Happy Coding and see you next time!