Blogs Why 'Vibe Coding' Makes Me Want to Throw Up

17th March, 2025
Why 'Vibe Coding' Makes Me Want to Throw Up
A Programmer's rant against "Vibe Coding" and the dangerous trend of blindly accepting AI-generated code without understanding it. Learn why this approach is destroying the real fun and craft of programming.
For your information, Vibe Coding means using LLMs and AI chatbots to make your project and just vibing with the code the LLM gives you.
Introduction
Remember when programming meant understanding your code? When debugging wasn't just pasting errors into an AI? When you could explain how your application actually worked?
Those days are apparently over, according to Andrej Karpathy's recent X Post (Tweet) of "Vibe Coding"it's a troubling approach where programmers surrender their craft to AI tools while hoping for the best. As someone who's spent years honing actual programming skills, I find this trend not just concerning but downright dangerous.
So Karpathy dropped this absolute gem about "Vibe Coding" and I nearly spit my third coffee of the morning all over my keyboard. Let me get this straight - we're now PROUD of not understanding our own code? Cool cool cool. Totally sustainable approach to Software Engineering.
Look, I've been slinging code solutions on StackOverFlow since many years. Remember those dark times? When you had to actually gasp READ DOCUMENTATION? And now we've got Mr. "I co-founded OpenAI" casually bragging about how he just vibes with his code like it's some kind of tech acid trip.
Let me explain why "vibing" with your code given by AI instead of understanding it is the fastest route to technical catastrophe and why real developers should be pushing back against this weird trend.
There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper…
— Andrej Karpathy (@karpathy) February 2, 2025
The Rise of the "Accept All" Developer
I 'Accept All' always, I don't read the diffs anymore. @karpathy on X
WHAT. THE. ACTUAL. FUCK. Oh cool, cool. So we're just smashing the "Accept All" button like it's a game of Whack-A-Mole now? I can already smell the merge conflicts brewing like a bad cup of coffee that someone left in the break room for three days. I mean, sure Andrej, that's fine when you're building a cute little weekend project that nobody depends on. But some of us work on systems where "Accept All" is the digital equivalent of playing Russian roulette with five bullets loaded. Let me paint you a picture of my Tuesday last week:
- Junior dev "vibed" with the codebase
- Nobody reviewed the changes because YOLO, right?
- Production server caught fire at 2am
- Guess who got paged? Not the vibes, that's for sure
The Comprehension Gap
The code grows beyond my usual comprehension, I'd have to really read through it for a while @karpathy on X
If this isn't the most terrifying sentence a developer could read, I don't know what is. Sure, Andrej, let's just build a house where we have no idea where the load-bearing walls are. What could possibly go wrong?
This isn't a badge of honor but it's a red flag the size of Texas. When you don't understand your own codebase, you're not a developer anymore. You're just an extremely inefficient person who never learnt to code and just using AI.
The next steps are predictable:
- Incomprehensible code leads to unpredictable behavior
- Unpredictable behavior leads to unstructured code, hacks and workarounds
- Hacks and workarounds lead to even more incomprehensible code
- Repeat until your GitHub repo is legally classified as a crime scene
This is like saying "I let my toddler design my financial portfolio by randomly selecting stocks based on which company logos have the prettiest colors." Except the toddler is an AI that was trained on StackOverFlow, including all the downvoted answers.
Look, I'm going to let you in on a little secret that apparently needs saying in 2025: GOOD ENGINEERS UNDERSTAND THEIR CODE.
This "Vibe Coding" horseshit is the programming equivalent of closing your eyes while driving because your Tesla's on Autopilot. It works great until you're wrapped around a tree wondering why the AI didn't see that coming.
It's Not Really Coding™
Look guys, I'm not against AI assistance. I've been using Copilot, ChatGPT, Claude since they were launched, and they are genuinely useful for boilerplate and simple patterns. But there's a difference between "AI-assisted coding" and whatever horror show Andrej Karpathy is describing. Real coding involves understanding. Debugging. Problem-solving. The satisfaction of finally figuring out why that damn function keeps returning undefined and NaN at 2 AM. The existential dread when you realize it was because you misspelled something wrong and didn't try to read the function again properly. These are the authentic experiences that shape us as Developers!
The "Working Around Bugs" Philosophy
Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away @karpathy on X
Oh my god, this is actually triggering me. This is like fixing your car by hitting different parts with a hammer until the weird noise stops. Sure, the noise stopped! The underlying issue? Who cares! VIBES! This is programming equivalent of kicking your damn TV until the picture comes back. Very professional. Very sustainable. I swear I'll get a call from a recruiter in 6 months: "We're looking for a Senior Vibe Engineer with 10+ years experience in exponential embracing, and 5+ years forgetting code exists."
"Hey, why is our app crashing in production?"
"No idea, man. I just kept poking it with a stick until it stopped doing that thing on my machine."
Not What I Thought "Vibe Coding" Would Be
When I heard "Vibe Coding" being discussed in programming circles, I thought it meant vibing with colleagues and programmer friends to make projects together just for fun. You know, actual human collaboration, sharing ideas to each other, pair programming while sharing a pizza and energy drinks at midnight. But nope. The actual definition of "Vibe Coding" is apparently "surrender your intellectual agency to an AI and hope for the best." It's the gateway drug to programming hell. Next thing you know, you'll be in a meeting trying to explain to the users on X, why the app keeps sending users' credit card information to a random Telegram channel. "It's not a bug," you'll say, sweat dripping down your forehead, "it's a vibe."
The Technical Debt Tsunami
Let's talk about technical debt. Normal coding already creates enough of it and we've all written that "temporary" code hack that's still in production five years later. But "Vibe Coding" is like taking out a subprime mortgage on your codebase and then immediately setting your financial records on fire. When you don't understand your own code, you're not just creating debt but also you're creating debt that you don't even know exists until it comes crashing down on you. It's like playing Jenga blindfolded, drunk, and with vodka in one hand.
Title: App randomly deletes user data when Mercury is in retrograde Description: No idea why this happens. The vibes must be off. Priority: Maybe high? Who knows
The Death of Debugging Skills
There's a special kind of satisfaction that comes from properly debugging a complex issue. Following the trail of breadcrumbs, setting up the perfect reproduction case, narrowing down the problem step by step. It's like being a code detective. With "Vibe Coding," that skill is replaced by "paste the error into the AI and pray." When that doesn't work, the solution is apparently to "ask for random changes until it goes away." This isn't debugging but it's digital exorcism. "THE POWER OF AI COMPELS YOU!" sprinkles holy water on the keyboard.
The Error Message Copy-Paste Shenanigans
When I get error messages I just copy paste them in with no comment, usually that fixes it. @karpathy on X
Oh boy. This is like saying you will give all the errors and bugs of your app and wait and think "This time it will be fixed without drama." Sometimes it works! Until it doesn't, and you're dealing with a headache to fix that issue at 3 AM because you never understood why that particular error/bug happened in the first place. Let me paint you a picture of the this approach:
Developer: *pastes error message* LLM: I've fixed that by adding a timeout. Developer: *3 weeks later* Why is my database locking up? LLM: Let's add another timeout! Developer: *2 months later* Why is my entire system a house of cards built on arbitrary timeouts? LLM: Have you considered a career in management?
The Illusion of Productivity
Sure, you might build something faster with this approach at first. You'll marvel at how quickly your app takes shape, how effortlessly features seem to materialize. "This is amazing," you'll think, "I'm 10x more productive!" Then reality hits. The house of cards collapses. Your database is corrupted. Your state management is a nightmare of circular dependencies. Your CSS is more specificity wars than actual styling. And worst of all, you have no idea how to fix any of it because you never understood it in the first place. It's like claiming you're a productive painter because you can quickly throw buckets of random paint at a canvas. Sure, you covered the canvas fast, but what exactly did you create?
The End of Code Ownership
There's something deeply satisfying about looking at a piece of code and knowing you wrote it. Even better is revisiting code you wrote months ago and thinking, "Damn, past me was like this blah blah blah." (Or more realistically: "What was past me thinking? This is terrible!" ) With "Vibe Coding," that ownership vanishes. The code isn't yours but it's a collaborative effort between you (20%) and an AI (80%) that has no stake in the project's success. When things go wrong, there's no pride pushing you to fix it, just confusion and frustration. It's like claiming authorship of a book when all you did was give vague prompts to an AI. "Chapter 3 should have more dragons, I guess?" is not the same as writing Chapter 3 from scratch with your imagination and creativity.
The Slippery Slope
It's not too bad for throwaway weekend projects @karpathy on X
But habits formed on weekends don't magically disappear on Monday mornings. This mentality is contagious, and before you know it, your production code looks like it was written by an LLM with ADHD. When we surrender comprehension for convenience, we're no longer engineers but we're just prompt engineers, which is to coding what microwave instruction reading is to culinary arts.
The Real Engineering Alternative
Instead of "Vibe Coding," try these radical concepts:
- Understand what your code is actually doing
- Write tests that validate your assumptions
- Refactor regularly to keep complexity manageable
- Document your reasoning, not just your code
- Use AI to amplify your boring tasks (repeatable tasks), not to replace your actual skills
Conclusion
So yeah, Andrej Karpathy, I'll stick with my old-fashioned ways of actually understanding what my code does, thank you very much. I'll keep using AI tools as assistants rather than replacements for my brain. I'll continue to read my diffs like it's traditional approach. Because when the AI-generated code inevitably breaks in spectacular ways (and it will), I'd prefer to be the developer who can fix it rather than the one saying "I don't know, man, the vibes were telling me to use 17 nested promises for this button click handler." True engineering excellence comes from understanding and not from outsourcing your comprehension for the sake of speed. When you prioritize "vibes" over comprehension, you're not a 10x developer but you're just someone who's going to create 10x the problems for the poor soul who inherits your codebase. And yeah, maybe I sound like some crusty developer yelling at clouds. "Back in my day, we used to code apps by ourselves and WE LIKED IT!" But some principles don't change just because technology evolves. Understanding your code isn't optional but it's the fundamental difference between an engineer and someone who's just playing programmer dress-up. The real pros know: Use AI as a tool. Not as a replacement for your brain.
P.S. - If your reaction to this rant wasn't "BASED, GOTTEM," then you're probably a vibe coder yourself. Sorry, you still got time to change yourself and LEARN TO CODE, it isn't too difficult.
Abbreviations
Abbreviations | Full Form |
---|---|
AI | Artificial Intelligence |
LLM | Large Language Model |
ADHD | Attention Deficit Hyperactivity Disorder |
YOLO | You Only Live Once |
NaN | Not A Number |
P.S. | Post Script |
Why 'Vibe Coding' Makes Me Want to Throw Up by Kush Creates is licensed under Creative Commons Attribution 4.0 International
- Table Of Contents:
- Start
- Introduction
- The Rise of the "Accept All" Developer
- The Comprehension Gap
- It's Not Really Coding™
- The "Working Around Bugs" Philosophy
- Not What I Thought "Vibe Coding" Would Be
- The Technical Debt Tsunami
- The Death of Debugging Skills
- The Error Message Copy-Paste Shenanigans
- The Illusion of Productivity
- The End of Code Ownership
- The Slippery Slope
- The Real Engineering Alternative
- Conclusion
- Abbreviations