Skip to main content

    FIELD NOTE / 8 MIN READ

    Vibe coding is fine. Shipping vibes is not.

    By Alex Cinovoj, Founder & CTO, TechTide AI · 13 years of mixed IT, last 2 focused on AI implementation.

    Vibe coding gets treated as either a miracle or a menace, depending on who's talking. It's neither. It's a prototyping mode, and a genuinely good one. The failure we keep getting called in to fix isn't the vibe coding itself. It's the moment someone quietly promotes a vibe-coded prototype straight into a path that touches customer data, without anyone deciding to do that on purpose. Here's where the line actually is, and the checklist we run at every handoff.

    What vibe coding is actually good for

    Vibe coding is describing an outcome in plain language and accepting AI-generated code without reading every line, in service of moving fast on something disposable. Used that way, it's one of the best product research tools available. A founder can go from an idea to a clickable prototype in an afternoon. A team can test three different UI directions before lunch instead of arguing about them in a design review.

    The value of vibe coding comes specifically from not reviewing it carefully. The moment you slow down to review every line, you've lost the speed advantage and you're just pair programming with an unusually fast, occasionally wrong partner. That's a legitimate mode too, it's just a different one.

    The mistake is treating both modes as the same activity. They aren't. One produces disposable exploration. The other produces software you're going to run.

    Where it becomes a liability

    We've traced production incidents back to unreviewed AI-generated code often enough to see the pattern clearly. It's almost never a syntax error or an obviously broken feature. It's a quiet gap in reasoning that looks completely normal in the diff:

    • Auth checks that pass the happy path but skip an edge case. A role check that works for the three test accounts used during development but misses a fourth role that shows up in production three weeks later.
    • Silent failure instead of a thrown error. Generated code that catches an exception and returns an empty result instead of surfacing the failure, because "handle errors gracefully" was interpreted as "never let anything crash."
    • Data handling that assumes a shape the real data doesn't have. Null fields, unexpected encodings, or a timezone assumption that only breaks for customers in specific regions.
    • Business logic nobody on the team actually understands. The prototype works, the demo goes well, and six weeks later a bug report comes in that nobody can debug, because nobody wrote the code and nobody read it either.

    None of these show up in a demo. They show up in production, usually under load, usually for a customer, usually at the worst time to discover them.

    The handoff checklist

    Before any prototype, vibe-coded or otherwise, gets promoted toward production, we run it through this checklist. It takes an afternoon for a small feature and is non-negotiable for anything touching auth, payments, or customer data.

    1. Read every line that touches auth, money, or personal data. No exceptions. If nobody on the team can explain what this code does and why, it doesn't ship.
    2. Add types to every input and output. If the prototype was built loosely typed or untyped, this is the point where that gets fixed, not deferred.
    3. Write tests for the business logic, not the UI. Focus on the decisions the code makes: what happens on a missing field, a duplicate request, an unauthorized user, a rate limit.
    4. Replace silent failure with explicit error handling. Every catch block should either recover meaningfully or surface the failure. Swallowed exceptions are the single most common source of "it works on my machine" production bugs.
    5. Assign a named owner. Someone on your team has to be able to answer for this code at 2am. If nobody can, it isn't ready, regardless of how well the demo went.
    6. Run it past a second person who didn't build it. A fresh reviewer catches the assumptions the original builder, human or AI, baked in without noticing.
    7. Load test if it touches a shared resource. Prototypes are almost always built and tested by one user. Production has many, often at once.

    None of this is exotic. It's the same discipline good engineering teams already apply to human-written code. The difference with vibe-coded prototypes is that the polish of the output makes it easy to skip these steps, because the code looks finished even when it isn't.

    Why AI-generated code is harder to review, not easier

    There's an assumption floating around that AI-generated code is inherently easier to trust because it's syntactically clean and often includes reasonable-looking comments. That's backwards. Clean formatting makes sloppy logic harder to spot, not easier, because a reviewer's eye naturally slows down on messy code and speeds past tidy code.

    We tell reviewers to read AI-generated code for correctness specifically, not for style. Ask what happens on the input this code wasn't shown during generation. Ask what this function assumes about its caller. Ask what happens if this external call times out. These are the questions a generated function often can't answer for itself, because the model optimized for a plausible-looking happy path, not the edge cases your business actually has.

    The 2026 take that gets this wrong

    The popular framing this year is a binary one: either vibe coding is the future and code review is a relic, or vibe coding is reckless and should be banned from serious engineering orgs. Both sides are arguing about the wrong variable.

    The variable that matters isn't whether AI generated the code. It's whether the code is about to touch something that can hurt a real user or a real customer relationship. A vibe-coded internal dashboard nobody outside the team will ever see can stay vibe-coded forever, updates included. A vibe-coded checkout flow needs the full handoff checklist before it goes anywhere near a customer's card number. Treating "AI wrote it" as the deciding factor, instead of "what does it touch," is how teams end up either over-reviewing throwaway prototypes or under-reviewing production auth code.

    Building the gate into your process

    The teams that get this right don't rely on individual judgment calls at 11pm before a launch. They build the gate into the process itself:

    • A visible line between "prototype" and "production" branches, so nobody accidentally deploys straight from an exploration branch.
    • A required review step before anything merges into a branch that deploys to real users, with the checklist above as the literal PR template.
    • A rule that auth, payments, and personal-data code always gets read line by line, no matter how it was written or how good the demo looked.
    • An owner assigned before merge, not after an incident forces someone to claim it.

    This is the same handoff discipline we bring into Claude implementation and Anthropic consulting engagements: let the fast, exploratory mode run free, and put a real, boring gate between it and anything a customer will touch.

    The takeaway

    Vibe coding isn't the problem. It's a genuinely useful way to explore ideas fast, and slowing it down defeats the point. The problem is skipping the handoff between exploration and production, the same handoff good teams have always needed, just with a new kind of author on the other side of the diff. Keep the checklist, keep the vibes, and you keep both the speed and the safety.

    Frequently asked

    • Yes, for the right job. Vibe coding, describing what you want and letting an AI generate the implementation without reviewing every line, is an excellent way to explore a UI direction, test a feature idea, or throw away a prototype in an afternoon. It's the fastest product research tool most teams have ever had.

    About the author

    Alex Cinovoj, Founder and CTO, TechTide AI

    13 years of mixed IT, the last 2 focused entirely on AI implementation. Alex runs TechTide AI, an implementation studio that takes stalled AI pilots into production. He writes about the work in progress at alexcinovoj.com.

    Related field notes

    All field notes →

    Got a vibe-coded prototype heading toward production?