Ram.Franco LogoRam.Franco
Vibe Coding: When You Do Not Understand Your Own Code (And Ship It Anyway)
AI

Vibe Coding: When You Do Not Understand Your Own Code (And Ship It Anyway)

7 min read

I need to confess something.

Last week, I shipped a feature. It works. Tests pass. The client is happy.

I have no idea how it works.

I prompted Claude until it gave me something that didn't throw errors, copy-pasted it into my codebase, renamed some variables to look like I wrote it, and merged the PR.

This has a name now. It's called "vibe coding." 🎵

And I'm not proud. But I'm also not sorry.

🤷 What is Vibe Coding?

Vibe coding is when you:

  1. Have a rough idea of what you want
  2. Prompt an AI until something works
  3. Don't deeply understand the output
  4. Ship it anyway
  5. Pray it doesn't break in production

It's the developer equivalent of assembling IKEA furniture without reading the manual. Sure, you have a bookshelf now. Those extra screws? They're probably decorative.

Did you know? The term "vibe coding" reportedly originated on Twitter/X in early 2024. It's already in the Urban Dictionary. That's how fast we normalized not understanding our own code.

📜 The Old Way vs. The Vibe Way

Traditional development:

9:00 AM: Understand the problem 10:00 AM: Research potential solutions 11:00 AM: Architect the approach 12:00 PM: Lunch 1:00 PM: Implement carefully 3:00 PM: Write tests 4:00 PM: Review and refactor 5:00 PM: Documentation 6:00 PM: Ship

Vibe coding:

9:00 AM: "Hey Claude, I need a thing that does the thing" 9:05 AM: Error 9:06 AM: "Fix the error" 9:08 AM: Different error 9:10 AM: "Okay but what if we try—" 9:15 AM: It works! 9:16 AM: "...why does it work?" 9:17 AM: Don't ask questions. Ship it. 9:30 AM: Playing ping pong

(Narrator: He did not understand why it worked. He never will.)

🤖 Why This is Happening

The economics changed.

Before AI:

  • Time to ship: High
  • Understanding: Required (to debug later)
  • Value of deep knowledge: Essential

After AI:

  • Time to ship: Low
  • Understanding: Optional (AI can debug too)
  • Value of deep knowledge: ???

If AI can help you write code AND help you fix it later, the incentive to deeply understand... diminishes.

I'm not saying this is good. I'm saying this is happening.

😰 The Scary Part

Let me tell you what keeps me up at night.

Scenario 1: Your vibe-coded payment system has a subtle bug. It charges some users twice. AI didn't catch it. You didn't catch it. Nobody catches it for months. The lawsuit is expensive.

Scenario 2: Your vibe-coded authentication has a security hole. AI generated it from training data that included similar vulnerable patterns. You shipped it because tests passed. The breach is spectacular.

Scenario 3: You vibe-coded your entire product. Now you need to pivot or scale. But nobody on your team understands the codebase. Including you. Especially you.

Did you know? A 2024 study found that AI-generated code has similar security vulnerability rates to human code—around 30% contain some flaw. The difference? Humans are more likely to understand and catch their own mistakes. Vibe coders... aren't.

🤔 The Defense of Vibe Coding

Okay, let me steelman this.

In defense of vibes:

  1. Speed matters. In startups, shipping fast beats shipping perfect. A working feature today beats a beautiful feature next month.

  2. Abstraction is normal. I don't understand how my compiler works. I don't understand how my database engine works. I still use them. Is AI-generated code just another abstraction layer?

  3. Tests exist. If it passes tests and works in production, does my understanding actually matter? (Genuinely asking.)

  4. Everyone does it. The Stack Overflow copy-paste era was vibe coding before the term existed. At least now the AI might explain what it wrote.

🚫 The Case Against Vibes

Against vibes:

  1. Technical debt compounds. Vibe-coded systems become unmaintainable. Every new feature is harder because nobody understands the foundation.

  2. Debugging is hell. When vibe code breaks at 2 AM, you can't "vibe debug." You need to actually understand. Except you don't.

  3. Career atrophy. If you only vibe code, your actual skills decay. What happens when you need to work somewhere that doesn't allow AI? You're cooked.

  4. The AI isn't magic. AI generates plausible code, not correct code. Without understanding, you can't distinguish "works" from "happens to work right now but will explode later."

🎯 My Actual Position

I vibe code. I admitted it at the start.

But I try to follow some rules:

  1. Vibe code the boring stuff. Boilerplate, utilities, CRUD operations. Fine.

  2. Don't vibe code the critical stuff. Authentication, payments, security? Understand every line

  3. Understand WHAT before accepting HOW. I should know what the code is supposed to do, even if I didn't write it manually.

  4. Refactor vibe code eventually. If something works, go back later and learn why. Don't just leave it mysterious.

  5. Be honest. In PRs, in documentation, in conversations. "I used AI for this and I'm 80% sure how it works" is better than pretending.

💀 The Future

I think vibe coding is the new normal. Not because it's good, but because it's fast.

Companies will hire "AI-augmented developers" who can ship quickly.

Some of those developers will understand their code. Many won't.

The ones who understand will fix things when they break. The ones who don't will call the ones who do.

Choose which person you want to be.

I'm trying to be the first. Some days I'm the second.

We're all just vibing now. 🎶

AI
Development
Controversial
Humor

More from the Blog

Limited Availability

Ready to Build Something Extraordinary?

Whether you have a fully-defined project scope or just a high-level vision, let's discuss how we can bring it to life with production-grade engineering.

Available for new projects