What vibe coding is
A workflow where you describe what you want in plain language to an LLM, accept whatever code it generates, and iterate by prompting when something breaks. No upfront architecture, no specs, no tests, no review — just vibes.
Karpathy coined the term in early 2024 to describe building tiny apps in an afternoon. It went viral because it's real — for personal tools and one-off prototypes, vibe coding works.
Why it doesn't scale
Vibe coding breaks at the boundary between "code I'm playing with" and "code anyone else depends on":
- No architectural coherence — every prompt invents new patterns; the codebase has no consistent style after a week
- Security holes the model writes that look plausible to a non-expert
- Tests that pass for the wrong reasons (model writes the test to match the code, not the spec)
- Refactors get exponentially harder because nobody understands what's there
- Onboarding any other engineer is impossible — there's no shared mental model
The production replacement
You still use AI heavily. The difference is structure:
- Specs before code-gen (one-page scope, not vibes)
- Tests written before implementation when it matters
- Human-bound architectural decisions
- Code review on every PR, including (especially) AI-generated code
- Convention files (CLAUDE.md, AGENTS.md) so the model matches your style
When vibe coding is fine
Personal scripts. Hackday prototypes. Throwaway demos. The internal tool nobody else will ever touch. Code where being wrong is cheap.
When it's not fine: anything you'd ship to a paying customer.