raxel.studio

Series · Shipping with AI

  1. 01Vibe coding: the good, the bad, and the ugly
  2.   02The unruled space

Journal

Vibe coding: the good, the bad, and the ugly

No single line is wrong. That's exactly the problem.

2026-07-08/raxel

You open your codebase one day and you find the same function written three times. A date formatter. Slightly different in each place. None of them broken. You didn't write any of them on purpose, and you can't remember asking for three.

That's vibe coding showing you its real problem. On a date formatter, it's harmless. On money, it's not. Let me back up.

The good

With AI getting better, vibe coding took off. People started building apps just by talking to a model, and at the start it looked great. You'd see someone build their own idea, fast, and sometimes actually ship it and have it work. And when it's the right kind of thing, it really does work. A landing page, a simple site, something small — hand it to AI and there's honestly not much that can go wrong. It writes faster than you, in a genuinely good way. This part is not hype. We use it every day.

The trouble is people take that feeling and point it at things that are not landing pages.

The bad

Here's the thing about vibe coding when you don't actually know how to code: you can't debug it. You can't open the code and see why it's not working — or why it is working. If it works, it works, you leave it. Then one day something breaks. You ask AI to fix it, it fixes it, but something else pops up somewhere else. You fix that too. For a couple of weeks it's fine. Then the first problem comes back.

So what's going on?

Two things about the model you're leaning on. First, it wants you happy. It tends to agree with you, tends to tell you you're right — you've probably felt this. Second, it's lazy more often than people admit. You ask it to do something and it quietly skips part of it, or just misses it.

But the real killer is context. The model can't hold your whole app in its head at once. So you already have a utility for formatting dates — you built it last week — but this time it doesn't see it. Instead of reusing it, it writes a new one. And again next time. Zoom out a little and you've got the same logic scattered in five places, slightly different in each.

Now you want to change how dates look. You ask it to fix page X. You check, and page Y is still doing it the old way, so you fix that too. And you probably miss page Z. On a date, fine — your app looks a little inconsistent, this format here, that one there. Nobody's hurt.

The point isn't that the AI wrote bad code. Every one of those functions works. The point is nothing is individually wrong and the whole thing is quietly drifting apart — and no demo ever shows you that.

The ugly

Now stop talking about dates and talk about money.

Same failure, different stakes. Two places in your app calculate a total, written at different times, drifted apart the same way your date formatters did. One applies a discount the other doesn't. One rounds, the other doesn't. Nothing throws an error. Nothing looks broken. Then a customer gets charged twice, or charged the wrong amount, and you find out from the complaint — not from the code. Now it's not a formatting quirk. It's refunds, angry emails, maybe a security hole sitting in one of the copies you forgot existed.

Same mechanism as the date formatter. Just somewhere it actually costs you.

So what do you do about it

You can't hand this to AI and walk away. Not yet. Asking the model to review its own work helps and you should do it — but it has the same blind spot that made the mess, so it's a safety net, not the answer.

The answer is you review the code at the end. Actually read it. Make sure the same thing isn't being done twice, or worse, five times in five slightly different ways. And for anything past a certain complexity, that reviewer can't just be whoever prompted it. It has to be someone who knows software engineering. Someone who knows what clean code looks like.

That's the truth right now. You can't trust AI to be fully autonomous. We run it as a daily driver and it makes us faster in a way that's hard to overstate — right up until you stop paying attention to the things that matter, the things you'd have caught yourself. For a landing page, let the AI go, nothing can go wrong. The further you get from that, the more complex it gets, the more you need a real person watching the code.