Vibe Coding with AI

Apr 25, 2025

There’s a new kind of developer flow happening, and it doesn’t start with types, diagrams, or frameworks.

It starts with a vibe.

What Is “Vibe Coding”?

We used to architect before we coded. Debate folder structures. Argue about types.

Now? You have an idea, you open Cursor, you type half a sentence, and boom — a scaffolded API appears. You tweak a few lines. You ask for tests. Maybe you backfill types later. Maybe not.

Neo and Smith Jamming

Vibe coding is fast, impulsive, exploratory. You’re jamming with an AI, not composing a symphony. It’s not about correctness — it’s about momentum.

You’re not building the perfect solution.
You’re discovering what might work.

From Planning to Prompting

Traditional dev was:
Plan → Code → Test → Refactor

Vibe coding is:
Idea → Prompt → Adjust → Flow

LLMs like Copilot, and ChatGPT have radically lowered the cost of iteration, and IDEs like Cursor take it even further. You don’t need to plan meticulously because you can regenerate in seconds. You don’t stop to look up API syntax — you describe what you want and shape what the AI gives back.

It’s not lazy. It’s different economics.

When iteration is free, over-planning becomes expensive.

Real-World Vibe Coding

These aren’t hypotheticals. This is how people are building real things now:

  • Scaffolding first, designing later
    “Make me a FastAPI endpoint with SQLite.” It generates something workable. You adjust the shape later, once you've seen the path.
  • Letting types emerge organically
    You get logic working first. Then you tell the AI, “Add appropriate TypeScript types” and refine them if needed. Flow first, structure second.
  • Conversational debugging
    “This reducer breaks when the payload is empty.” The AI suggests a check, explains why, and offers a fix. It’s like narrating to a very attentive junior dev.
  • On-the-fly refactors
    You realize halfway through that this component should be a hook. You tell the AI, “Extract this logic into a custom hook,” and you’re back in flow.

Vibe coding isn’t about knowing everything — it’s about knowing what feels right, fast.

Why It Works (Sometimes)

  • You stay in flow
    No breaking context to research boilerplate or syntax. You ask and adjust. You ride the momentum.
  • You explore more
    Low-cost iteration encourages creative divergence. You’re more willing to try weird ideas — and sometimes, they work.
  • You prototype faster
    Dead ends don’t sting. You didn’t invest hours writing the scaffolding — you generated it, tested it, moved on.

When you're working on something new, where correctness is less important than possibility, vibe coding shines.

But It Has a Dark Side

  • Code rot creeps in fast
    Vibe code isn’t always clean code. Without discipline, you end up with a fragile mess that’s hard to refactor.
  • Onboarding becomes painful
    “The AI wrote that bit” doesn’t help a teammate trying to understand how your system works.
  • Hallucinations are sneaky
    The AI sounds confident, but it can be wrong in subtle ways. If you’re not reviewing carefully, you inherit bugs without noticing.
  • You stop flexing your own skills
    If you always defer to the AI, you lose touch with the underlying systems. And when the AI breaks, you might not know how to fix it.

Vibe coding makes bad habits easy — which means you need even more judgment, not less.

Finding the Balance

There’s a middle ground — and it’s powerful.

  • Prototype with vibes, polish with discipline
    Get something working fast, then step back and ask: How do I make this clean?
  • Backfill types and tests
    After you’ve figured out what this function wants to be, then write the types. Then write the tests. It’s still good hygiene — just done at the right time.
  • Treat AI like a junior dev
    Fast, tireless, and occasionally clueless. Don’t just accept its work. Review it. Guide it. Refactor it. You’re the senior in this pairing.

You don’t have to pick between chaotic flow and strict structure. Just use the right mode for the right moment.

Coding as Conversation

In a sense, we’re not coding anymore — we’re conversing.
You express intent, and the AI answers with code.
You adjust the prompt, and it tries again.

It's not about commanding a computer. It's about collaborating with one.

Yes, we still care about correctness.
Yes, tests still matter.
Yes, you still need to understand what you're shipping.

But when you’re in that early phase, chasing an idea, exploring the shape of a solution… sometimes the best way to build is to feel your way forward.

Type less. Talk more.
And trust the vibe — at least until it's time to refactor.

Final Notes

This isn't a manifesto for sloppiness.
Vibe coding isn't a replacement for good engineering — it’s an accelerant for it.

Use it when you’re blocked. Use it when you're bored.
Use it when the answer isn’t in your head yet, but you can feel it coming.

Vibe first. Structure later.
Just don’t forget which phase you’re in.