Vibe Coding vs Auto Programming

7 min read
Cover

TL;DR

Vibe coding means handing your idea entirely to AI without oversight. Auto programming means writing thorough PRD/specs first, then letting AI implement systematically. There's a lot of debate about which is better, but the answer is simple: it depends on the context.


The Great Debate

In AI coding communities lately, you'll see two camps. The "vibe coding is amazing!" crowd and the "you must review and understand AI-generated code" crowd. Whether it's Twitter/X or Reddit, this topic always sparks heated debates.

But if you dig deeper into both sides, the conclusion is actually the same. They're just assuming different contexts. Today I'll break down these two concepts and discuss when to use each.


Vibe Coding

Origin of the Term

Vibe coding was first coined by Andrej Karpathy on X (formerly Twitter) on February 6, 2025. Karpathy is a founding member of OpenAI and former Tesla AI Director—a name that needs no introduction in the AI field.

Here's the gist of his original post:

A new kind of coding where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.

Karpathy described using Cursor Composer + Claude with SuperWhisper for voice input, never looking at diffs, just hitting "Accept All," and when errors occurred, simply copy-pasting them back. He didn't care when the code exceeded his understanding.

Importantly, Karpathy himself was clear about its limitations. In his original post, he noted it's "not bad for throwaway weekend projects." Later, when building Nanochat, he coded it by hand, saying "I tried AI agents a few times but they weren't helpful enough, so I ended up writing it myself."

Key Characteristics

  • Describe what you want in natural language, accept AI-generated code without review
  • Don't need to fully understand how the code works
  • When errors occur, just paste the error message back to AI
  • Optimized for rapid prototyping and idea validation

Simon Willison's definition is the clearest: "If you reviewed, tested, and understood the code even though an LLM wrote it all, that's not vibe coding. That's using an LLM as a typing assistant."


Auto Programming

Background

The concept of automatic programming has existed since the early days of computer science. But in the current AI coding context, "auto programming" means something different. It's about writing PRD (Product Requirements Document) or detailed specs first, then having AI implement systematically based on those documents.

This approach emerged naturally as multiple people reached similar conclusions. Addy Osmani (former Google Chrome DevEx lead, current Google Cloud AI Director) calls this "spec-driven AI development" and explicitly distinguishes it from vibe coding. Andrew Ng also emphasized "don't be fooled by the term vibe coding—it's actually sophisticated engineering work" and prefers the term "rapid engineering."

When GitHub announced Spec Kit in their September 2025 official blog, they declared that "specs become the source of truth that determines what to build." Multi-agent frameworks like MetaGPT technically implement this—input a single PRD, and agents playing PM, architect, and engineer roles collaborate to generate code.

Key Characteristics

  • Write thorough PRD/spec/design documents before implementation
  • AI implements step by step based on specs
  • Verification and testing at each stage
  • Developer maintains full control over architecture and design

Ryan Carson's (Treehouse founder, 5x serial entrepreneur) workflow is a good example. He's currently building Untangle, a divorce support app, solo using only AI. He writes detailed PRDs, creates hierarchical task lists from them, processes each subtask with AI, but supervises with a "code, test, commit" cycle.


Comparison: What's Different?

Vibe CodingAuto Programming
Upfront planningAlmost nonePRD/spec required
Code reviewNoneVerification at each step
Code comprehensionCan be lowMust be high
SpeedExtremely fast initial developmentSlower start but less debugging
Best forPrototypes, personal projectsProduction, complex systems
Technical debtHighLow

Real-World Usage: It Depends on Context

When Vibe Coding Shines

For personal project improvements or quick idea validation, vibe coding is unbeatable. You can verify "does this even work?" in 10 minutes.

  • Weekend side projects
  • MVPs or prototypes
  • Internal tools or one-off scripts
  • Exploring new libraries/frameworks

In Y Combinator's 2025 Winter batch, 25% of startups had codebases that were 95% AI-generated. This shows early-stage startups actively using vibe coding for idea validation.

When Auto Programming Is Necessary

For complex feature implementation, especially company work, auto programming is essential.

  • Production codebase work
  • Team development
  • Security-critical systems
  • Projects requiring long-term maintenance

As Addy Osmani summarized, FAANG-level teams use AI with technical design docs → strict code review → TDD methodology. It's AI-assisted engineering wearing a vibe coding mask.

The Hybrid Approach

Honestly, it doesn't divide cleanly in practice. Vibe coding for quick prototypes → transitioning to auto programming for production is the most practical hybrid approach.

Morning: experiment with new features via vibe coding → Evening: agent adds docs/tests → Next day: review and merge. This rhythm seems to develop naturally.


It's Not About Preference—It's About Different Assumptions

Vibe coding fans, vibe coding critics. Online, they seem to split extremely. But dig deeper and you'll see this pattern:

  • Vibe coding proponents: Usually assuming personal projects, prototypes, side projects
  • Vibe coding opponents: Usually assuming production, team development, maintenance

They're arguing about the same term with different assumptions, so opinions seem to differ. Listen fully to both sides and the conclusions are similar: "Fast for prototypes, systematic for production."

The fact that Karpathy proposed vibe coding then hand-coded his serious project proves this. Simon Willison also did 80+ vibe coding experiments but always reviews and understands production code.

Andrew Ng's stance is the same. The term "vibe coding" sounds like relaxed, playful coding, but actual AI programming requires intense mental energy. He says he's very tired after a full day of AI programming.


AI Is a Smart Junior

At work, auto programming is clearly the right approach. Vibe coding doesn't cut it.

The reason is simple. All code must be in your head. Company code must be explainable, reviewable, and debuggable when issues arise. If you don't understand AI-generated code, it's a ticking time bomb.

The "vibe coding hangover" phenomenon reported by Fast Company in September 2025 captures this exactly. Senior engineers described maintaining AI-generated code as "development hell."

So when using AI at work:

  • Always write plans/specs first
  • Always review and understand AI-generated code
  • Have the implementation direction in your head before delegating to AI
  • At minimum, create a PRD to set direction

AI has surpassed senior developers in raw coding ability, but it's still like a junior developer. Why? Because it doesn't know project context. You don't tell juniors "just figure it out." You align on design together first, delegate implementation, then review results.


Final Thoughts

Vibe coding or auto programming—this isn't about preference. The optimal method varies by context.

  • Weekend project? → Vibe coding, fast
  • Production feature? → Write PRD, be systematic
  • Exploring new tech? → Vibe coding to get a feel
  • Code to share with team? → Spec-based, understandable

Moving fluidly between these two approaches depending on context—that might be the core competency of developers in the AI era.


Refs

  • Andrej Karpathy's original vibe coding tweet (2025.02.06): https://x.com/karpathy/status/1886192184808149383
  • Karpathy's MenuGen vibe coding retrospective: https://karpathy.bearblog.dev/vibe-coding-menugen/
  • Simon Willison, "Not all AI-assisted programming is vibe coding": https://simonwillison.net/2025/Mar/19/vibe-coding/
  • Addy Osmani, "Vibe coding is not the same as AI-Assisted engineering": https://addyo.substack.com/p/vibe-coding-is-not-the-same-as-ai
  • Andrew Ng interview "Ambient Programming": https://eu.36kr.com/en/p/3438070821653888
  • Vibe Coding - Wikipedia: https://en.wikipedia.org/wiki/Vibe_coding
  • GitHub Blog, "Spec-driven development with AI" (2025.09): https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/