Skip to content

Intro★★★★★6 min read

What is vibe coding? And how to do it without ending up with junk

Vibe coding is letting AI write the code while you steer the product. With Cursor, Lovable, and v0 it's now a real workflow — but only if you treat the AI like a junior, not a genie.

Vibe coding is the 2025-2026 term for building software where an AI writes most of the code, and your job is to describe what you want and react to what you get. The phrase comes from Andrej Karpathy and went viral because it described something a lot of people were already doing without naming it. Done well, vibe coding is genuinely faster than typing every line yourself. Done badly, you end up with a 50-file mess that even the AI can't navigate.

What vibe coding actually means

The core loop:

  1. You describe a feature, screen, or change in plain language.
  2. The AI writes (or edits) the code.
  3. You run it, see what's broken, and describe the next change.
  4. Repeat.

The key word is describe. You're not typing code, you're typing intent. The AI does the translation. The two main flavors:

  • Inside an IDE — Cursor, Claude Code, Windsurf, Cline. Works on real codebases, can read all your files, runs commands, edits in place. Used by professional engineers all day.
  • Whole-app builders — Lovable, v0, Bolt, Replit Agent. Type a description, get a deployed web app. Used for prototyping, side projects, and increasingly real products.

In 2026, ~80% of code at AI-native startups is written through one of these tools. "Pure typing" coding still exists but is increasingly the exception.

What's actually new about vibe coding vs old AI coding

GitHub Copilot has existed since 2021. The 2025-2026 shift isn't just better autocomplete; it's that the AI now operates at the agent level. It can:

  • Read your whole codebase (not just the current file)
  • Edit multiple files in one turn
  • Run your tests and react to failures
  • Search docs, install packages, configure environment
  • Hold a conversation about the what before the how

That's a different relationship. With Copilot you typed; now you delegate.

The honest tradeoffs

What gets faster: scaffolding new features, glue code, refactors, writing tests, fixing typos and obvious bugs, exploring an unfamiliar codebase, building one-off tools.

What stays hard: anything genuinely novel (the AI is great at things many people have done, weak at things few have done), tight performance optimization, security-sensitive code, debugging deep into a stack you don't understand, large architectural decisions.

What gets dangerously easy: producing 500 lines of code that look right but contain subtle bugs you can't see because you didn't write them. This is the #1 failure mode of vibe coding done badly.

How to vibe code well

Three principles separate people who ship from people who get stuck.

Stay above the code, not in it. Your value isn't typing — the AI types. Your value is knowing what to build, when it's broken, and what "done" looks like. If you find yourself accepting code you don't understand because "it works," you're accumulating debt the AI can't pay back.

Read every diff, especially in the first weeks. Cursor and Claude Code show you exactly what's changing. Don't accept blind. Read at least 80% of generated code line-by-line until you have an instinct for when the AI is bullshitting. Once that instinct exists, you can skim.

Maintain the codebase actively. Vibe-coded codebases tend toward sprawl: too many files, repeated patterns, dead code. Refactor regularly. Ask the AI to consolidate, but verify the consolidation. A clean codebase is one where the AI can find the right context — sloppy structure makes the AI worse.

A practical workflow

The pattern most working vibe coders use:

  1. Plan first. Before any code, ask the AI "how would you approach this? List the files you'd touch and the changes in each." Read it, push back, agree on a plan.
  2. Small, reviewable steps. Don't ask for "build the entire onboarding flow." Ask for one screen, one server action, one migration at a time.
  3. Run after every step. Boot the app, test the flow, see real output. Don't accumulate 5 changes then debug the pile.
  4. Lean on git. Commit often. When the AI goes off the rails, git reset is your safety net.
  5. Tests as guardrails. Where it matters, write or have the AI write tests. Tests catch regressions when the AI rewrites things you forgot it touched.

When NOT to vibe code

  • Anything safety-critical. Medical devices, financial trading, anything regulated. The verification cost makes pair-typing faster.
  • Code you need to deeply understand later. If you'll maintain this codebase for five years, there's value in typing some of it yourself to internalize the structure.
  • When you don't have a way to run / test. Without a fast feedback loop, the AI's mistakes compound silently. Set up the run/test loop before you start vibe coding.
  • Production code at companies without code review. AI generates plausible-looking insecurity. Review must happen.

Tools to try

  • Cursor — most popular IDE-based vibe coding tool, runs on your real repo
  • Claude Code — Anthropic's CLI agent, terminal-native, integrates well with shell workflows
  • Windsurf — Cursor competitor, smoother for some users
  • Lovable / v0 — type-an-app-get-an-app, great for prototypes
  • Bolt / Replit Agent — similar to Lovable, with hosted runtime

Most people end up with two: an IDE tool for serious work + a Lovable-style tool for fast prototypes.

Further reading

  • How to pick a coding agent (Cursor vs Claude Code vs Windsurf)
  • What is an AI agent
  • What is tool use / function calling
  • Build a Discord bot powered by Claude or GPT
  • Debug production issues with an LLM in the loop

Last updated: 2026-04-29

We use cookies

Anonymous analytics help us improve the site. You can opt out anytime. Learn more