← back to home

vibecoding: a double-edged sword

---

An opinion piece on the current state of AI generated code and how it can both benefit and hinder software engineering

"Vibe coding is an AI software development technique popularized by Andrej Karpathy in February 2025. It describes a chatbot-based approach to creating software where the developer describes a project or task to a large language model (LLM), which generates code based on the prompt. The developer does not review or edit the code, but solely uses tools and execution results to evaluate it and asks the LLM for improvements." - Wikipedia

Use of AI in Development

There's no denying how helpful AI is to software developers. As the culmination of millions of solved problems, it's easy to see why people run to AI instead of reinventing the wheel. Paradigm shifts come with innovation. The same happened with the calculator, the computer, and the internet. Right now AI is just the latest on a growing list of products of human ingenuity. AI can write much faster than any human possibly could. I see vibecoding and AI development as a double edge sword, as even with the clear benefits, there are serious disadvantages that hinder projects and developers themselves.

Benefits

Developing software with AI presents many benefits. When used correctly, AI can increase a developer's productivity by automating repetitive tasks, an increase in the speed that software is shipped due to quicker coding and testing, enhanced debugging and error detection, by adding a defense against human error, while allowing developers to focus on complex, creative problem solving. While these benefits might make it seem like AI has no faults in its use in the software industry, overdependence on it can have numerous disadvantages/side effects.

Disadvantages

Personally, my biggest gripe with AI is its passive nature. Actions that previously required thought and careful planning, can be performed with prompts, and in some cases, even anticipated by agents. For a lot of more experienced developers this may not be a problem, as they've already built a foundation of problem solving skills that they can fall back on. But many early career devs/new vibecoders may not have this acumen, so repeatedly having problems solved for them stunts growth.

Apart from stunted growth, another major disadvantage that many overlook is that AI is trained using other developers' code. This includes code with bugs and in many cases — security vulnerabilities. There have been many recent cases of vibecoding mishaps in which the developers did not have knowledge of security best practices (Tea), which led to endpoints being exposed, databases being public and other "big no-nos".

AI will generate code quickly based on your prompts, but whether the code is good for the use case in the long run is never certain. AI struggles to write maintainable code, as it can't determine how your codebase will change overtime and the needs you will have at certain points. So it's still up to developers to architect their systems according to the current needs.

My Stance

Contrary to a lot of the points I just made, I advocate for the use of AI in software engineering. It's important to understand that we are moving in a modern direction and that requires adopting the skill of using AI to build and scale quickly. This doesn't mean that domain knowledge is obsolete. It's equally important to have deep understanding of fundamentals to make sure software is robust and secure. At the moment, many believe AI is taking the role of developers. We're FAR from that, so we need to continue sharpening our greatest asset which is our problem solving skills.

Closing Statement

Evolve with the times. AI will continue to get better, and those who learn to use it the right way now, will exponentially increase their value. Remember to also improve your own skills and understanding, as it will help to fill in the gaps that AI cannot.