ben.milleare
All notes
· ai · engineering · leadership

Vibe coding isn't engineering

Engineers treat coding agents as smart junior devs. Vibe coders treat them as their CTO. The gap matters more than the AI hype suggests.

Split-panel cinematic illustration. Left: a developer hunched over a single laptop in dim neon-lit chaos, sticky notes everywhere reading 'idea', 'no tests we'll fix later', 'ship it', and 'good vibes code'. Right: an engineer at a clean multi-monitor desk with an architecture diagram, an open notebook, and labelled boxes - system design, reliable systems, clean code.

“Everyone is a developer now” is something I keep hearing lately, but just because you can prompt Claude Code to produce something that works doesn’t mean that thing is doing what you think it is.

The disaster stories are mounting. People wake up to AWS bills in the tens of thousands of dollars because their API keys ended up committed to a public repo and a Bitcoin miner found them first. SaaS founders discover their multi-tenant boundary check was never actually enforced and customers have been quietly seeing each other’s data for weeks. Cron jobs duplicate work because nobody told the agent that two replicas would run them in parallel. Token-based authentication ships with the secret hard-coded at ten different call sites because the agent kept fixing the symptom instead of the cause.

Every one of those happens because the people in the loop aren’t engineers.

A real engineer carries a stack of judgements that doesn’t show up in any prompt. Which technology actually fits the constraints, which pattern keeps the next change cheap, which inputs need validation and which can be trusted. They know there’s a race condition lurking the moment they see two writers and a shared resource. They know what a code smell looks like, and which kinds of duplication are fine because they’ll be deleted next week and which kinds will rot the system from the inside. They know how to write a test that proves a thing is right rather than one that just happens to pass.

None of that is something an LLM gives you for free. The model is genuinely impressive at producing code that compiles and runs, and most of the time it’ll produce something a competent engineer can clean up in a few minutes. But the gap between “compiles and runs” and “is safe to put in front of customers” is filled by exactly the judgements above, and right now the only reliable way to apply them is to have an experienced engineer in the seat.

The framing I keep coming back to is this. Real engineers treat coding agents as smart junior developers. Useful, fast, capable of doing the obvious work, but they need direction, code review, and someone above them in the chain who actually understands the system. Vibe coders treat coding agents as their CTO. They hand over the architecture, the security model, the data flow, and the deployment topology, and they expect the right answers to come back.

We’re a long way from that working.

What AI actually does, for now, is make engineers faster and make non-engineers dangerous. Knowing which side of that line you’re on before you ship is the only thing that matters.