There’s a new kind of “programming” emerging at the intersection of AI and intuition. It’s fast, loose, and often a little chaotic. Andrej Karpathy called it “vibe coding,” and the term has quickly taken on a life of its own. But as with most ideas that catch fire, there’s a risk of it being misunderstood or diluted.
So let’s clarify what vibe coding actually is and isn’t and explore how to do it well.
Let the LLM drive, completely
At the heart of vibe coding is surrender. You prompt loosely, accept the AI’s suggestions without much scrutiny, and rarely read the underlying code. It’s a mode of building where your mental model of the system takes a back seat to the language model’s output. You’re not engineering in the traditional sense - you’re basically sketching in code.
Don’t confuse it with responsible AI-assisted development
Vibe coding is not just “using AI to write code.” That phrase describes a wide spectrum, from autocomplete to fully AI-generated modules, but most of it still involves human review, testing, and understanding. If you're reviewing diffs, writing tests, and refactoring, you’re not vibe coding. You're still a software engineer, just with new tools.
It’s for experiments, not production
Vibe coding thrives in low-stakes environments: weekend projects, prototypes, sandbox tools. It’s not for production systems, regulated industries, or anything where bugs can cause real harm.
The moment a project requires reliability, reproducibility, or accountability, vibe coding should give way to rigour.
Code is clay, not contracts
Traditional coding treats software like infrastructure: stable, predictable, and explainable. Vibe coding flips that. The code becomes malleable, fragile, and opaque. It’s more like clay than concrete. You poke and prod at it until something interesting happens. It’s a creative process, not a deterministic one.
Safety boundaries still matter
Even in a playful context, you can cause damage if you’re not careful. Vibe coding shouldn’t touch anything involving real users, personal data, secrets, or systems with financial consequences. The absence of intentional design doesn't mean you’re off the hook for unintended consequences.
Embrace the sandbox
One way to vibe code safely is to restrict your environment. Claude Artifacts, for instance, run in tightly locked-down sandboxes, no external network access, using only approved libraries. These kinds of constraints are helpful. They let you experiment without the risk of leaking secrets, DDoS-ing APIs, or racking up surprise charges.
Respect the stack you’re touching
Some LLMs make it too easy to wire things together. You might accidentally spin up a backend that talks to a billing API, or paste in a secret key that gets exposed in logs. Just because it works doesn’t mean it’s safe. If there’s real infrastructure or real money involved, take a step back.
Get a vibe check
If your code is going to touch other people, get a second pair of eyes. Either you review it, or ask someone more experienced to take a look even if the project is “just for fun.” A quick review might catch something obvious (and avoid making your weekend project someone else’s problem).
It’s a gateway drug to real software development
Vibe coding is a brilliant way for beginners to get started. It removes the steep learning curve of syntax, compilers, and frameworks. You can build a working tool without understanding the entire stack. Some people will stop there—and that’s fine. Others will go deeper, and vibe coding might be what gets them hooked.
It builds intuition for what LLMs can (and can’t) do
For experienced developers, vibe coding is not mindless instead it’s another method for learning how LLMs work. By pushing the boundaries of what LLMs can generate, you develop a feel for their strengths and limitations. You learn where they hallucinate, where they shine, and how to debug a system you didn’t write. That’s valuable knowledge for anyone working with AI.
Vibe coding is here to stay. But let’s not flatten its meaning.
It’s not just “AI coding” or “lazy coding.” It’s a distinct practice: high-speed, low-rigor, intuition-led software creation using LLMs. When used appropriately, it’s an incredibly powerful way to explore ideas, prototype rapidly, and learn fast.
So go ahead. Prompt weird stuff. Copy-paste errors. Ship throwaway tools. Just remember when to zoom out and when to bring in a proper software engineering mindset. Vibes are great, but they shouldn’t be the only thing holding your code together.