Flying with/without copilot

Does coding with AI tools bring more pros or cons?

20

I've been using Github Copilot for quite some time since it was released. It is a great tool to help me write code faster and easier, especially when I'm working with a new programming language or framework. Instead of spending hours reading the documentation or Stack Overflow posts just to find a tiny syntax error, I can just focus on structuring the code and how to handle the logic elegantly.

My programming journey starts with Java and Python. In Java, type and inheritance are a big deal and can escalate to a nightmare very quickly for a beginner who is just learning the object-oriented programming paradigm. I spent weeks understanding the concept of inheritance and polymorphism, how and what interface is, the difference between abstract class and interface so on and so forth. It helped me to have a solid foundation in programming, but it was not delightful at all. It became more challenging when switching to Python, where everything I learned suddenly became not as important. In Python, I don't have to worry about runtime, compile time, and types so much. Instead, I have to focus on the logic and efficiency of the program. Copilot or other AI tools helped a lot at the time, so I didn't have to look up how to do a for loop in Python, how to migrate my knowledge from Java to Python, such as private methods and attributes, or how to handle exceptions.

Though it helped a lot save a lot of time, I find AI tools also come with some cons. It's awesome when I'm already familiar with the language and how I want to implement a feature, particularly when I have to do redundant tasks, such as writing a test case or duplicating a CRUD operation. But over time, I also find myself becoming more and more reliant on the tool. When I have to work in an environment where the AI support is gone, I feel insecure and unproductive since I'm used to waiting for my copilot to help me out. I realized I am slowly losing the ability to code and solve problems. It also comes to me that a lot of the time, the generated code is not as efficient or formatted as I would like it to be. It became more noticeable when working with a team or on a project that expects high code efficiency and readability. In fact, I ended up spending more time refactoring the code than doing the actual implementation.

So, am I a better pilot with or without a copilot? It does help me fly more efficiently and stable when I am familiar with the routes and how to handle the extreme weather on the way. On the other hand, it makes me less capable of handling the unknown and unexpected. I expect myself to be more independent and capable of solving problems without losing an open mind to utilize tools that can boost my productivity. When working on an unfamiliar language or project I do not have much know about, I tend to have AI tools. When working on projects where I have a clear idea of what to do, I have AI tools to do the heavy lifting. I believe it's essential to learn how to fly alone, and flying with a trustworthy partner can elevate the trip to a new height.