Am I a Better, or Worse, Dev by Using AI?
This question has been bugging me a lot lately. I struggled to really pin down an answer because it can be both cases at once. I am better because I can hammer out boiler plate code in a fraction of the time. I’m able to get solutions for some really tricky state handling that would have taken me many times longer to figure out. I am worse because I now pause for an autocomplete to pop up so I can tab over. I understand and read the output but find my muscle memory for simple syntax fading away.
The experience I liken it to is the industrial revolution and when machines made productivity sky-rocket by use of machines (just the productive part, not the 12+ hour days and risk of dismemberment). A cobbler who made shoes would need a plethora of skills and tools to craft good shoes but with machines, they could produce many times more shoes than a single individual. You could embrace the new technology, use it, and increase your productive but lose out on fine tuned skills you get by creating the individual parts.
I’ve always prided myself on my technical skill and the ability to learn new things and understanding how things really work. If you’re not careful, it’s easy to let the AI do the work for you and not actually learn. It’s sort of like copy and pasting from a stack overflow comment that works but not taking the time to know what it’s doing. On a personal level, that scares me.
That’s one of the biggest fears I’ve faced with working with LLM’s. Not that I think it’s going to take my job, but I might not progress my technical skills as much, or might lose them. Using an LLM I was able to create a complex component that may have taken me a day or two, in a few hours. I did have to struggle through the steps of getting complex state management to work, I was able to review code and tell the LLM changes I wanted made. Then it dawned on me, it’s like shifting into a managerial role.
Many developers transition into roles where they no longer code, or code substantially less, but instead guide the project at a higher level. They review PR’s for quality, make suggestions and changes when things seem off. They may not be the most technical individual on the team, but they understand the bigger picture and direct others what to do. Working with an LLM feels like that transition to me. I can let something that is very fast with a massive knowledge base do the work, but I still need to make sure the quality is there and it’s progressing the overall goal.
I embrace AI tools because they aren’t going away. I rather understand how to leverage them and learn to harness the machine than be cast off and left behind by the revolution. In doing so, I am creating guardrails for myself, however. I review every line of code suggested by the LLM, much like reviewing a PR. I ask questions, make suggestions, and learn from it, like I would any more experienced developer, and even they make mistakes. Often times I’ll work on the problem myself first, then ask the AI to help refactor or refine. I will even turn the AI off, and struggle the old fashion way. I’ll talk out loud to myself and shout “WHY?!” only to realize it was a syntax error in the first place.
So, am I a better or worse dev by using AI? Well, it depends. I am certainly evolving as a developer. I can designate tasks while thinking about organization and architecture. My hands on technical skills might have slowed but my overall productivity is up. Learning how to leverage these tools and thrive with them and not be afraid of them. I think the key is maintaining conscious intent. Stay engaged in the process so you keep learning and growing, even if you didn’t lovingly hand craft every character of code. LLMs are powerful tools in my developer toolkit, but like any tool, their value depends entirely on the skill and judgment of the person wielding them.