Leeann Trang

Hailey Quach - I Revolted Against “Vibe Coding” — Until I Realized I’d Been Doing It All Along

With Hailey's permission, we're re-posting her Confessions of a former Vibe Coding hater blog post.

Were you a former Vibe Coding hater? What made you change your mind?

I Revolted Against “Vibe Coding” — Until I Realized I’d Been Doing It All Along

Confessions of a former Vibe Coding hater (who now vibes… cautiously)

When I first heard the term “vibe coding,” I had a visceral reaction — namely, a full-body cringe. As a developer who takes pride in actually understanding my code, the phrase sounded like a bad joke. Coding by vibe? What does that even mean — light some incense, play lo-fi beats, and let the code write itself? In my mind, AI coding assistants were meant to assist me (suggest a snippet here, autocomplete a line there), not replace the real work. The idea of surrendering the driver’s seat to an AI felt like an affront to my hard-earned coding skills. I’ll admit it: I was revolted by the very notion of vibe coding at first.

I wasn’t alone. Plenty of seasoned programmers on Twitter (X) feed were rolling their eyes at the buzzword. The conventional wisdom in software engineering says good code requires careful thought and skill, not just “going with the flow.” I had spent years honing the craft — learning algorithms, writing unit tests, agonizing over naming variables — so the suggestion that one could simply “give in to the vibes” and let AI handle the heavy lifting felt almost insulting. If vibe coding was going to be the future, as some claimed, I was prepared to be that grumpy developer yelling “get off my lawn!” to all the AI code generators.

But then came the twist: I found out who coined “vibe coding.” When I learned it was Andrej Karpathy — yes, the AI guru and former director of AI at Tesla — I did a double take. Karpathy is known for deep technical expertise and meticulous work, not throwing buzzwords around lightly. Yet there he was on X (formerly Twitter) describing a “new kind of coding” where you “fully give in to the vibes” and “forget the code even exists” (businessinsider.com). He gleefully wrote: “It’s not really coding — I just see stuff, say stuff, run stuff, and copy-paste stuff, and it mostly works.” (businessinsider.com)

Excuse me? Hearing this from Karpathy, of all people, made me spit out my coffee. This wasn’t some randos chasing clout; this was a respected expert basically saying he stopped carefully coding and just vibed it out with AI. I was equal parts horrified and intrigued.

Surprise: Karpathy’s on Board (Wait, What?)

My surprise only grew as I dug deeper. It turns out Karpathy had fully embraced vibe coding in his own projects. In fact, he bragged about “vibe coding” an entire iOS app in Swift (a language he hadn’t used before) in about one hour​ (x.com). One hour! As someone who remembers spending days learning Python basics, I found this both unbelievable and a little humbling. According to Karpathy, it was “so ez… I had my hand held through the entire process. Very cool.”​ He literally talked the app into existence by chatting with an AI, and got a running app on his phone in the time it takes me to configure Xcode provisioning profiles. If that doesn’t make a programmer question their life choices, I don’t know what will.

Karpathy’s enthusiasm made me reflect. This was the same person who famously quipped that “the hottest new programming language is English” (businessinsider.com) shortly after ChatGPT’s release. In other words, writing good prompts in plain language might be as valuable as writing code itself. At the time (late 2022), I chuckled at that idea. I treated tools like ChatGPT or Copilot as handy assistants, sure, but I still considered real coding to be me typing out logic. Yet here we were in 2025, and Karpathy’s casual tweet had put a name to a practice that had been stealthily creeping into my own workflow. The more I thought about it, the more I had to admit a hard truth: I’d been vibe coding too — I just never called it that. 🙃

We’ve Been Vibing All Along (Thanks to ChatGPT)

The revelation hit me like a bug in production: I have been vibe coding, in some form, ever since ChatGPT came on the scene. And chances are, so have you. Remember the first time you offloaded a tedious coding task to an AI? For me, it was asking ChatGPT to write a regex because I was too lazy to get the syntax right. I literally described the pattern I needed in plain English, hit enter, and voila — the regex appeared. I had effectively “vibed” my way to a solution without manually coding anything. At the time, I didn’t think of it as anything radical; it was just using a tool to save time. Little did I know I was participating in a budding movement.

As AI coding assistants improved, my “vibing” only increased. I started letting GitHub Copilot auto-complete whole chunks of code while I casually tabbed through its suggestions. I’d begin writing a comment like “// function to shuffle a deck of cards” and before I could finish my thought, Copilot would offer to generate the entire function for me. Often, it was correct or at least a decent starting point. I wasn’t typing those lines; I was just guiding the AI with hints and prompts. Essentially, I was coding by vibe — focusing on the high-level idea and trusting the AI to fill in the blanks.

By early 2023, many of us had adopted this habit. We would describe what we wanted in natural language, get AI-generated code, and then tweak or fix it as needed. We just didn’t have a catchy term for it. Now we do, and apparently it’s “vibe coding.” The moment someone slaps a label on something, it becomes real and, inevitably, controversial. In hindsight, the practice was already commonplace: AI’s ability to write code took a quantum leap with large language models, letting developers “just say stuff, run stuff, and copy-paste stuff” to build software that “mostly works” (businessinsider.com). It’s like we all woke up and realized we’d been speaking prose this whole time. Or rather, speaking code.

Once the term went mainstream, the reactions were polarizing, to put it mildly. On one side, you have true believers heralding vibe coding as a revolution that will democratize software development. They point out how even beginners can now create working apps by simply describing their ideas to an AI. (Indeed, an AI researcher noted how “a total beginner… can build something that works in the space of an hour” with these tools (businessinsider.com.) On the other side, you have the skeptics and meme-lords: experienced devs who see “vibing” as a shortcut to disaster (or at least a source of endless jokes). A popular meme account snarked that “vibe coding, [is] where 2 engineers can now create the tech debt of at least 50 engineers”​ (x.com.) Ouch. 😬 Another pro put it bluntly: “do not hire anyone that thinks vibe coding is a good idea for production level products. Experimenting? Playing? Sure. But not for serious work.”​ (cdevroe.com) In other words, vibe coding was either the coolest thing since sliced bread or a ticking time bomb of spaghetti code, depending on whom you asked.

Meme or Revolution? Finding the Middle Ground

At first, I planted my flag firmly in the skeptic camp. I cracked my share of jokes about “vibe coders” hallucinating APIs and producing code that works only by cosmic coincidence. I secretly cheered on the grumpy engineers warning everyone not to ship vibe-coded monstrosities to production. The emotional reactions were strong on both sides. Some folks treated vibe coding as if it were a literal mind virus corrupting the software industry’s youth. Others treated it like a badge of honor to be an early adopter, latching onto the term with almost meme-like enthusiasm (half serious, half tongue-in-cheek).

After my initial revolt, though, I took a step back. Was I letting the silly name (“vibe coding” does sound absurd, let’s be honest) blind me to the underlying reality? Perhaps yes. Strip away the hype and the trolling, and what do we have? We have a powerful new way to create software, one that shifts a developer’s role from writing every line by hand to steering an AI that generates code​ (en.wikipedia.org.) The practice isn’t new to me — I was already doing it. What’s new is the spotlight and the social baggage. Call it AI-assisted development, prompt programming, or vibe coding — it’s here, and it’s only going to grow.

I realized I had a choice: I could keep emotionally reacting (dismiss it, fear it, mock it), or I could engage with it more constructively. After all, ignoring a trend doesn’t make it go away; it just means you get left behind. And fearing that AI will replace us doesn’t stop it from advancing; it just leaves us unprepared. This brought to mind a quote from AI pioneer Andrew Ng that really shifted my perspective:

“One question I’m asked most often is what someone should do who is worried about job displacement by AI. My answer is: Learn about AI and take control of it, because one of the most important skills in the future will be the ability to tell a computer exactly what you want, so it can do that for you. Coding (or getting AI to code for you) is the best way to do that.”​ (info.deeplearing.ai)

Reading that, I almost felt like Ng was speaking out my internal dilemma. The key phrase is “take control of it.” Instead of seeing vibe coding as relinquishing control to an AI, I should see it as a new skill to master. The skill of clearly telling a computer (via an AI) what you want it to do is incredibly valuable. In fact, it might be the defining skill of the next generation of developers. It’s not about giving up on coding; it’s about leveling up how we code. After all, writing good prompt instructions or reviewing AI output is still coding, just a higher-level kind.

So I changed my mindset. I stopped worrying that vibe coding was going to turn me into a “code zombie” and started thinking about how I could use it intelligently. The term might be hypey, but the concept has merit if done right. “Fine,” I thought. “If we’re going to vibe, let’s vibe responsibly.” 🎧✨

How to Vibe Code (Without Losing Your Soul or Your Job)

If vibe coding is the new reality, how do we embrace it properly? How do we “give in to the vibes” without, you know, accidentally deploying garbage or forgetting how to code altogether? I set out to find a balance — to use AI-driven coding to my advantage, without surrendering all control. After a lot of trial and error (and yes, some spectacular AI-generated bugs along the way), I’ve compiled a few best practices for vibe coding sanely:

Break Problems into Bite-Sized Pieces: Don’t ask the AI to build your entire app in one go; that’s a recipe for disappointment. Instead, split the work into small chunks. Tackle one function or feature at a time. This is basically the age-old principle of modular design — divide and conquer — applied to prompting. As one guide put it, “divide large tasks into smaller, manageable components” so you can focus on one aspect at a time​ (zencoder.ai). For example, instead of saying “Make me a social network,” start with “Create a simple user login form.” Once that part works, you move to the next. I found that this incremental approach keeps both me and the AI on track.

Be Specific About What You Want: Vibe coding is not mind-reading. The AI will do exactly (and sometimes only) what you ask, so clarity is key. Provide as much detail and context as possible in your prompts. Mention the language or framework, describe the desired behavior, and even outline the steps if you have a particular approach in mind. For instance, “Write a Python function that takes a list of numbers and returns the list sorted in descending order.” is going to yield better results than “Sort some numbers.” A well-crafted prompt is gold. As the saying goes: garbage in, garbage out.

Review Every Output with Skepticism: Think of the AI as a junior dev intern handing you code — you must review it. Does the code do what you asked? Does it have bugs or glaring inefficiencies? Don’t just trust that it’s correct. In fact, the collective wisdom from experienced devs is to treat AI-generated code with extreme skepticism​ (substack.com.) I learned this the hard way when I blindly accepted an AI-suggested database query that seemed fine but was subtly dropping records. Now I always read through the diff. Remember, vibe coding might let you “forget that the code even exists” during generation, but at some point you (or someone on your team) will have to maintain that code. So do Future-You a favor and keep an eye on it.

Test as You Go (Really, DO IT): This might be the most important habit. Each time the AI writes a piece of code, run it and see if it actually works. It sounds obvious, but when you’re vibe coding at warp speed, it’s tempting to generate five functions in a row and then test. Don’t fall for it. Treat it like an interactive conversation: prompt, get output, run/test, then refine. As one tutorial emphasizes, testing the AI’s output is key (medium.com.) If something is wrong or unclear, you’ll catch it early and can ask the AI to fix it or tweak the prompt. I’ve gotten into the habit of writing a quick unit test or at least a print statement every time I accept an AI-generated function. If it fails, I feed the error back to the AI: “Here’s the error I got, please fix it.” This iterative loop — prompt → code → test → refine — is basically the vibe coder’s bread and butter (medium.com.)

Maintain Control of the High-Level Design: Using AI for coding doesn’t mean you check your brain at the door. You are still the architect of the program. Decide how the pieces should fit together. Outline the modules or classes you need. Maybe the AI can fill in the code for each part, but you should still sketch the blueprint. In my experience, vibe coding works best when I use the AI as a partner or an assistant, not the lead architect. I often start by writing comments or a rough outline of the program structure, then have the AI flesh out each part. That way, I ensure the overall design makes sense and I’m not ending up with a Franken-codebase that only the AI understands.

Keep Your Coding Skills Sharp: This is more of a philosophy than a step, but it’s worth stating: Don’t let vibe coding atrophy your fundamental skills. It’s easy to become reliant on the AI for everything and forget how to do things manually. I combat this by occasionally doing tasks without the AI, just to prove to myself I still can. Think of it like using a calculator — it’s fine to use one, but you should still know how to do basic arithmetic on paper in case the calculator gives a weird result. Some critics warn of “skill degradation” if we rely too much on AI (magnimus.com.) I’m not overly worried (I doubt I’ll forget how to code a loop), but I take the point. Using AI should feel like having a superpower, not like losing your own abilities. As Andrew Ng implied, learning to wield the AI is the key, which by extension means not becoming completely dependent on it. AI enhances great programmers; it doesn’t replace them.

Following these practices, I’ve found that vibe coding can indeed be both fun and productive. It’s honestly addictive to see your ideas come to life faster than ever. And when done right, the quality of the code can be surprisingly solid. I’ve built small apps by essentially chatting with an AI, but I always make sure I understand and verify what it produced. Far from feeling like I’ve “lost control” to some black box, I feel empowered that I can delegate grunt work to the machine while I focus on the creative and analytical parts of development. It’s like having an intern who never sleeps, never complains, but also occasionally writes nonsense — so you still need to manage them.

When Vibes Go Wrong: The InterviewCoder Saga 😳

No discussion of vibe coding’s rise would be complete without touching on the ethical dilemmas it’s surfacing. Perhaps the wildest story to come out of this trend is the saga of Roy “Chungin” Lee and his tool InterviewCoder. Roy is (or was) a student who decided to take vibe coding to a controversial extreme: he built an AI assistant specifically to help people cheat in coding job interviews. Yes, you read that right. He created an “invisible” desktop app that would feed him real-time answers and hints during technical interviews, right under the interviewer’s nose​ (businessinsider.com)(medium.com.) Essentially, InterviewCoder could overlay AI-generated suggestions on your screen in a way that the interviewer on the other end of the Zoom call couldn’t detect​. It’s like having ChatGPT whisper the solutions in your ear while you pretend to type them out.

Roy claims he used this tool on his own interviews and landed offers from several big tech companies​ (businessinsider.com.) A stealth AI sidekick that gets you a FAANG job — talk about living in the future! But when he started selling subscriptions to InterviewCoder (for $60 a month) and bragging about it online, things blew up. Many people felt this was crossing a serious line. It triggered an ethical storm: Is using AI in an interview cheating? What if the company doesn’t know? Does it undermine the integrity of the hiring process?

Columbia University certainly wasn’t amused; they suspended Roy for a year over the incident (ostensibly for violating some academic conduct rules in how he publicized the tool and confidential university communications)​ (businessinsider.com.) The news made headlines and sparked heated debates. Some argued that InterviewCoder was just leveling the playing field for candidates who struggle with tricky algorithm interviews. Others said it was plain, old cheating and would lead to unqualified engineers being hired. As someone who’s been through barrage of technical interviews, I understand the frustration with LeetCode-style questions — but having an AI feed you answers in real time feels wrong. It’s one thing to use AI as a learning tool or a coding assistant; it’s another to use it to deceive a human evaluator about your abilities.

I bring up this story not to condemn or condone Roy’s actions (that’s a whole separate debate), but to illustrate a point: vibe coding, if taken to extremes or used irresponsibly, can have serious repercussions. It’s a powerful tool, and like any tool, it can be misused. The InterviewCoder saga is an extreme case, but it forces us to ask where we draw the line. For me, the line is pretty clear: use AI to enhance your own productivity and learning, not to commit fraud or pretend to be something you’re not. If you let an AI do all the thinking for you, whether in an interview or in your day-to-day job, you’re not really growing as a developer — and you will get exposed eventually (if not by an academic committee, then by a debugging session that leaves you stumped because you didn’t actually write the code).

Conclusion: Embrace the Vibe, Keep Coding Alive

So, here I am in 2025, publicly confessing that I’ve made peace with vibe coding. In fact, I’ll go further: I’m excited about it. Once I got past the silly name and my initial defensiveness, I recognized vibe coding for what it is — a natural evolution in how we build software. It doesn’t mean the end of programming or the obsolescence of developers. It means our roles are shifting. We’re moving from being the sole authors of code to being editors, directors, and collaborators alongside AI co-pilots.

I’ve come to see vibe coding as neither a meme nor a revolution, but something in between: a cultural shift in our industry. It’s making coding more accessible (you can be productive with only basic knowledge by leveraging AI), which is amazing. It’s also challenging us experts to up our game — to learn new skills like prompt engineering, AI oversight, and rapid prototyping. Those who adapt will find they can build bigger and better things faster than before. Those who don’t…well, they might end up like the Cobol programmers of yesteryear, insisting that real programmers punch cards while the world moves on.

My journey from hating the concept of vibe coding to adopting it has been humbling, to say the least. It taught me that sometimes our gut reaction to new tech (especially one that threatens our sense of craftsmanship) can be off-base. Instead of rejecting it out of pride, it’s better to tinker, understand, and harness it. By normalizing the practice and learning to do it properly, we ensure that we remain in control of the code we ship, even if an AI helped write it.

I’ll continue to write code the old-fashioned way when it makes sense, and I’ll “vibe out” with ChatGPT or Copilot when that makes sense. The key is, it’s my choice — a conscious decision of the best tool for the job. Vibe coding doesn’t mean turning off your brain; it means using all the tools at your disposal, intelligently. In the end, maybe that’s what Karpathy was getting at with his playful terminology. It’s not about abdicating our responsibility as developers. It’s about exploring a new, faster, sometimes whimsical way to create — and doing so with our eyes open.

I started out revolting against vibe coding, and now I’m writing a love letter (with cautionary footnotes) about it. Life comes at you fast, just like AI. 😉 Happy vibe coding, but do it with your brain firmly in the loop. After all, the vibes may be immaculate, but the accountability is still ours.

Naturally, parts of this article were vibe-written with the help of OpenAI’s DeepResearch tool.

73 views

Add a comment

Replies

Best
Steven Smith

Totally understand your frustration. As someone who respects the craft of programming, the idea of replacing hard-earned skills with “vibe coding” feels dismissive. Coding isn’t just about output—it’s about logic, clarity, and responsibility. While AI tools can help, they shouldn’t replace foundational knowledge. Like in Drive Zone Online argent illimité, where unlimited resources can ruin the thrill of progression, relying too much on AI may take away the essence of programming.