Classical vs. Flow vs. Agentic Coding – What is what?
When people talk about “vibing” or “just vibing” in coding today, the meaning is usually all over the place. The term spread quickly, but as often happens with buzzwords, it drifted far from its original meaning. Andrej Karpathy, then at Tesla, first mentioned vibe coding in a tongue-in-cheek tweet. It wasn’t meant to define a new standardized workflow or replace how we write software. It was a joke, an idea, a thought experiment. But the hype machine picked it up, and suddenly “vibing” became a trend of its own.
The result is that more and more developers are exploring what it means to “vibe code,” but their understanding and the outcomes differ widely. Depending on the angle you approach it from, “vibing” can mean anything from using autocomplete to letting AI agents run wild. And that’s where the confusion starts.
Let’s untangle it by examining the various modes of working with code and AI.
Classic Coding
This is the traditional approach: you write every line of code yourself. No copilots, no agents, no shortcuts. It’s the most labor-intensive way of building software, and for many of us, it’s how we learned the craft. While it’s effective for learning and for specific projects, there’s no AI “vibe” to be found here, just good old-fashioned hard work.
Flow Coding
Then came flow coding, which really took off with ChatGPT and Claude. In this mode, you stay in the zone, leveraging AI to assist with repetitive or low-level tasks. The AI is there to keep you moving smoothly, helping you maintain momentum by filling gaps and answering questions without pulling you out of your focus. It’s an enhancement to productivity, and many of us use it daily. But while powerful, flow coding isn’t “vibing”; it’s more about accelerating the same workflows we already know.
Agentic Coding
The next step is what we’re seeing now with agentic coding. Tools like Claude Code, Cursor, or Junie go beyond simply providing suggestions. They plan, decide, and even execute tasks semi-autonomously. Instead of micromanaging every step, the agent can navigate the repository, edit multiple files simultaneously, run tests, and propose solutions before implementing them.
Agentic coding is an evolution of flow coding, where the AI takes initiative rather than waiting for prompts. You still stay in the loop, but the AI acts more like a junior developer who can not only write code but also propose plans and carry them through. It’s incredibly promising, but again, it’s not the same thing as vibe coding.
Vibe Coding
Here, we arrive at the original idea. Vibe coding means you don’t concern yourself with the how at all. Instead, you describe what the outcome, the feel, the vibe you want. The AI handles the entire implementation. It’s black-box development: the AI is the driver, and you’re just along to explain why the thing should exist, not how to build it.
This is the only definition that truly fits the term “vibing” as Karpathy used it. And it’s also the only one that, at least for now, doesn’t really work in practice. Software development still requires too much specificity, too much structure, and too much ongoing maintenance for us to simply vibe out entire applications.
So, Where Does That Leave Us?
It’s worth being precise. Classic coding, flow coding, and agentic coding are all valuable modes of working, but they’re not vibe coding. Only the last one, which hands over implementation entirely to AI and merely describes the vibe of the outcome, fits the original spirit of the term. And ironically, it’s also the least practical for real-world development today.
So next time someone tells you they’re “vibing with AI,” ask them what they actually mean. Chances are, they’re flow coding or experimenting with agentic tools, both of which are already transforming how we work. Accurate vibe coding, however, still sits more in the realm of theory than practice.
— Adrian