Concept

Vibe Coding

concept vibe-coding software-development agentic multi-source

Vibe Coding

Vibe coding is a term coined by Andrej Karpathy in early 2025 to describe a mode of software development in which the programmer narrates intent in natural language to an AI agent — and largely defers code-writing, debugging, and iteration to the agent.


Origin

Karpathy coined the term after noticing a qualitative shift in his own experience with agentic coding tools in December 2024. The model — previously useful but requiring frequent correction — began producing coherent chunks reliably. He kept asking for more; it kept working. He couldn’t remember the last time he had corrected anything. That was vibe coding.

He published this observation on X to communicate that the shift was not incremental. The experience of building had changed fundamentally: “a different relationship with the machine.”


What it is and is not

What it is:

  • Giving control to an agent (e.g., Cursor’s Composer, Claude Code) and narrating requirements.
  • Side-projects completing in a single session that would previously have taken weeks.
  • Anyone — not just trained engineers — building functional software.

What it is not:

  • Professional-grade software engineering with correctness guarantees.
  • A substitute for understanding when quality, security, or correctness matters.

Relationship to Agentic Engineering

Karpathy is careful to distinguish vibe coding from Agentic Engineering:

“Vibe coding is about raising the floor. Agentic engineering is about preserving the quality bar of professional software while moving faster.”

Vibe coding is valuable for exploration, prototyping, and use cases where the cost of errors is low. For production software — where security vulnerabilities introduced by a careless agent remain your vulnerabilities — agentic engineering discipline applies instead.


The MenuGen insight

Karpathy built a restaurant menu app (vibe-coded, on Vercel): it photographs a menu, OCRs the items, calls an image generator for each, and renders a visual version. Then he saw that a multimodal model with a single prompt could annotate the menu directly, with no pipeline. “All of my MenuGen is spurious. The app shouldn’t exist.”

This captures the deeper point: some intermediary software that vibe coding makes easier to build is software that shouldn’t exist in a Software 3.0 paradigm at all.


Michael Truell: vibe coding as the messy present

Michael Truell on Cursor and the World After Code provides the most critical product-builder view of vibe coding in the wiki. Michael distinguishes three states:

  1. Today’s vibe coding — generating code without understanding details. Problem: when the codebase grows large enough, you reach a point where you cannot change it because you do not understand what is underneath. Vibe coding creates things you cannot maintain.

  2. The world after code — the end state Michael is building toward: a representation of software logic that is terse, human-readable, and closer to pseudocode than formal language. You can edit it directly. You understand it at a high level. You do not need to understand the code underneath because the representation is designed to be comprehensible.

  3. The gap — the current lack of a product interface that gives non-coders (and vibe coders) real control over all aspects of the software. Vibe coding creates things where “the AI makes decisions that are unwieldy and you don’t have control over.” This is a product design problem Cursor is trying to solve.

“Right now, we lack the ability to let the tastemakers actually have complete control over the software.”

The implication: vibe coding is not the end state; it is the first step toward a new paradigm that does not yet exist as a product. The path from vibe coding to the world after code requires solving the control and comprehensibility problem — giving humans the ability to understand and directly edit the logic that AI is generating.

Taste as the irreplaceable skill. In the world after code, the engineer’s job is having the right idea for what should be built (taste) rather than getting the implementation details right (carefulness). Taste — specifying the what and the how things should work — is the irreplaceable human contribution when the implementation translation is automated. This connects to Product Taste.


Simon Willison: vibe coding as an irresponsibility claim

Simon Willison sharpens Karpathy’s definition into an explicit responsibility claim. Vibe coding = not looking at code = not responsible for it. Fine for personal tools where only you face the consequences. Not fine for code other people use.

The corollary: “agentic engineering” (Willison’s term for professional AI-assisted coding) is not vibe coding, even if superficially similar. Agentic engineering requires the full weight of professional experience and you remain responsible for the output. The two are not a spectrum — they differ in accountability structure. [§ Simon Willison on Agentic Engineering and the Future of Code]


See also