← Back to Code & Alchemy

Vibe Coding vs. Agentic Programming vs. Collaborative Coding

Prompting your way to a working script, delegating a multi-step change to an autonomous agent, and hand-coding the foundation yourself before AI builds on top are three different skills, and treating them as one is how all three go wrong.

Three Different Ways of Working, Not Three Tiers of Skill

Vibe coding is prompting for code and judging it mostly by whether it runs and feels right: fast iteration, low ceremony, minimal line-by-line review. Agentic programming is handing an AI agent a goal and letting it plan, edit across files, run commands, and iterate on its own toward that goal, closer to delegating a task than writing a prompt. Collaborative coding sits between them: you write the parts that actually require your judgment, the data model, the security boundary, the one algorithm the whole feature depends on, and let AI build outward from that foundation instead of inventing one on its own. People argue about which of these is "real" engineering, which is the wrong argument. They're different tools for different situations, and the actual skill is knowing which one the situation in front of you calls for.

What Vibe Coding Is Actually Good For

Throwaway scripts, prototypes you're going to rewrite anyway, exploring whether an approach is even feasible before you invest in it properly, learning a new API by poking at it. In all of these, the cost of being wrong is low and the cost of ceremony is high. Reviewing every line of a script you're going to delete in twenty minutes is wasted effort. Vibe coding matches effort to stakes, which is exactly correct engineering judgment when the stakes are genuinely low.

Where Vibe Coding Turns Into a Liability

The failure mode isn't using it, it's not noticing when the stakes quietly changed. The prototype that worked gets bolted onto the real product because it was already there and deadline pressure won. The script that touches user data was vibe-coded the same way as the one that just reformatted a CSV. Nothing about the process announces "this one matters now, switch modes." That transition is on you to catch, and it's the single most common way vibe-coded output ends up somewhere it was never actually reviewed for.

Collaborative Coding: You Write the Skeleton, AI Builds On It

This is the mode that gets skipped most, because it's slower than vibe coding and less hands-off than agentic work, and it's often the right one anyway. You hand-code the piece where being wrong is expensive or where the decision genuinely needs your domain knowledge: the schema, the auth boundary, the core algorithm, the interface everything else has to fit through. That piece becomes the baseline. Everything AI generates afterward has to build on top of a foundation you already understand completely, instead of inheriting assumptions you never actually reviewed. It costs more time up front than either of the other two modes. It costs a lot less time later, when the thing that would have been wrong at the foundation would have been wrong everywhere built on top of it.

What Makes Agentic Programming Different

An agent doesn't just answer a prompt, it takes actions: editing multiple files, running your test suite, executing commands, deciding its own next step based on what the last one returned. That's a much larger blast radius than a single generated function, and it changes what "reviewing the output" even means. You're not just reading code anymore, you're reviewing a sequence of decisions, and any one of them can be reasonable on its own while the sequence as a whole drifts somewhere you didn't intend.

The Guardrails That Make Any of This Trustworthy

Across all three modes, review is the one practice that isn't optional. Read what AI wrote closely enough that you could explain and defend it yourself, the same standard you'd hold a junior engineer's pull request to, not a lower one just because a model wrote it faster. For agentic work specifically, add three more: scope the task tightly, the same way you'd scope a ticket, specific and bounded, not "improve the auth system." Keep a real test suite in place before you turn an agent loose, because tests catch a plausible-looking wrong change faster than reading every diff line by line. And checkpoint, committing working states often enough that "it went sideways" costs you one bad step to undo, not an hour of tangled changes.

Picking the Right Mode for the Job

Ask what happens if this is wrong and nobody catches it before it ships. If the honest answer is "nothing much," vibe coding is a legitimate, efficient choice, and reaching for something heavier is wasted ceremony. If the wrong answer would live at the foundation of something bigger, hand-code that foundation yourself and let AI build outward from it, collaborative coding earns its extra time exactly there. If the task is well-specified, bounded, and backed by real tests, a scoped agent with the guardrails above can genuinely move faster than either of the other two. None of these three is the responsible choice by default. Matching the mode to the actual stakes of the task, every time, is the whole skill.

← Back to Code & Alchemy