Vibe coding promises to do the heavy lifting while you put your feet up. Except it never works out that way, does it? You waste precious time debugging a codebase you don’t understand, going around in circles with a mindless AI. I will explain why vibe coding is a terrible idea.
AI has been a phenomenon these past few years. However, I’m less impressed with it than most people. While I use AI in a controlled way, I think vibe coding as a concept is reckless and does long-term damage to our abilities and products in three key ways.
It removes you from the problem space, and you learn nothing
If you’re a hobbyist programmer (and you presumably are), starting a new project is as much about learning new skills as building a product. Passion drives you through tough challenges. Discovery of new tools and approaches inspires you. Without that motivation, you can’t learn and progress; without progress, you can’t solve hard problems. You attain skills through practice—a universal and invariable truth.
When you offload challenges to AI, you’re robbed of the small gains made when solving macro problems. It’s not about syntax but about the new ideas you never encounter. For example, I’ve written many thousands of tests and have learned to love property-based testing. It’s a technique (or library) that generates thousands of random values to feed into your code. It makes code more reliable but also unearths quirks about the languages I use, which improves my competence. Such an encounter would not have occurred during vibe coding, because AI would never recommend property-based testing on its own, preferring to generate tons of manually crafted tests instead.
You don’t just miss out on alternative approaches; you also become less intimate with your codebase. Instead, as your codebase grows in complexity, you rely on AI to spoon-feed you the most generic solutions. It changes the dynamics of how you learn. You become addicted to a slot machine-like robot that inconsistently produces decent answers. You trade intelligence for dependence and become weaker. By depriving yourself of firsthand experience, you never learn how to solve hard problems, which is the essence of programming and something AI cannot adequately do yet.
You’re operating blind
Vibe coding is the practice of generating code in bulk without reading it. According to Merriam-Webster, “vibe” means:
A distinctive feeling or quality capable of being sensed
More accurately, “vibe coding” means generating software and going with what “feels” good. If doctors assessed health based on feelings alone, would you trust them? No, because it’s a guessing game—winging it. Writing code that way means you don’t understand the solution, and you place absolute trust in a brainless word generator.
It’s tough to write code because it takes significant time, planning, and brainpower. However, people often want results fast, so they take shortcuts, and code is no different. Something cheaper, faster, and in larger quantities is universally appealing. But there are no shortcuts to success. Quality comes at a price: time, effort, expertise, and dedication. Until the day AI can write beautiful, bug-free code, you must be the source of quality and pay that hefty price.
Taking quality for granted is a dreadful idea for two reasons. First, where health, finance, or safety are critical, quality keeps people safe, alive, and flying at 35,000 ft. Second, it’s difficult to maintain a codebase that you don’t understand. That means you must work hard, build a strong mental model, and keep people safe or customers happy. Ultimately, it’s you who needs to guide the AI, not the other way around. Quality is key for their sake, as much as yours.
Operating on a codebase by feelings alone is essentially working blind; cooperating this way with a senseless robot is literally the blind leading the blind, and that won’t end well. Ever.
Related
Become a Better Programmer: 7 Habits to Grow
Battle-tested habits to write better programs.
It’s unable to improve a codebase over time
Software development isn’t just about writing code; it’s also about maintenance. You keep the code clean so that you and others can understand it later. Over-engineering, complex abstractions, and spaghetti code are all costly burdens in the future.
It’s your job to write clear, maintainable code. But it’s also your job to improve it over time, an idea known as the Boy Scout Rule—leave code in a better state than you found it. You should simplify code, make it readable, reduce complexity, and refactor to make it easier to test. These actions make code easier to fix, update, and verify.
AI follows instructions. It has no real insight, lacks experience, and doesn’t have any motivation. What drives us to perform persistent housekeeping is the looming maintenance nightmare (aka technical debt). That doesn’t burden AI. It doesn’t consider the long-term implications of decisions, opting to smash your code with a sledgehammer instead, or toss more garbage onto the dumpster fire. The worst part is, it’s your responsibility to put that fire out.
Related
I Tried Using Vibe Coding to Create My Own Productivity App
Is it possible to create a working app without writing a single line of code?
No matter what skills you practice, experience increases competency, which empowers you to tackle harder challenges. It changes how you think, and you grow. You gain confidence and new ideas.
By outsourcing tough challenges to AI, you limit opportunities. Your potential never goes beyond the AI’s capabilities—the same as everyone else. AI inherently hallucinates, so it always needs a skilled handler who’s intimate with the project. Failure to comprehend this idea means stagnation and dependence on an idiotic talking box, with endless loopy prompt cycles trying to fix a codebase you can’t understand.
Competency gives you an edge, now more than ever, and vibe coding robs you of that.
