In short
Vibe coding refers to a way of working in software development in which a person describes to an AI in natural language what a programme should do, but no longer reads, understands or evaluates the generated code line by line. Instead, the AI's suggestion is accepted largely unchecked, executed and, in the event of errors, the error message is simply copied back into the model until the result "works".
The code becomes a black box: it fulfils its purpose at the moment of execution, but no one in the team can reliably explain how it does this.
The term was coined on 2 February 2025 by Andrej Karpathy, one of the best-known representatives of machine learning and co-founder of OpenAI. In his original article, he described a programming style in which one "fully surrenders to the vibe" and even "forgets that the code even exists". Within a few months, "vibe coding" became a collective term for the practice of creating software almost entirely through prompts to coding agents such as Cursor, Claude Code or GitHub Copilot.
How vibe coding differs from AI-supported development
Vibe coding is not the same as the general use of AI in software development. The difference lies not in the tool, but in the attitude towards the generated code. Anyone who pairs with a model, reads every proposal, specifically requests tests, asks safety questions and consciously makes architectural decisions themselves is carrying out AI-supported development - but not vibe coding. Vibe coding, on the other hand, skips the human evaluation instance: The model writes, the human accepts.
This distinction is crucial because it determines what quality ends up on a system. An experienced developer makes dozens of small design and architecture decisions in a single hour - for example, pulling a database query out of a loop before it slows down the system with large amounts of data. Vibe Coding does not replace these decisions, it skips them.
Typical features
- Target description instead of implementation: The human formulates the desired behaviour, not the solution path.
- Untested adoption: The proposed diff is accepted without reading it in full.
- Error ping-pong: Error messages are passed back into the model until it runs.
- Code as a black box: The result works, but cannot be explained in the team.