My experience after refactoring a project created with Vibe Coding (and using Vibe Coding to do it)

Tabla de contenidos

Artículos relacionados

«Spoiler: No, it wasn’t a walk in the park. It was more like a roller coaster ride… without brakes.»

1. The context: when the MVP became Frankenstein

For those who don’t know, Vibe Coding is (very briefly) using artificial intelligence to speed up application development, with the promise that code is built faster and cheaper. If you want to delve deeper, I’ll give you my simple explanation of what Vibe Coding is, and then we can continue with the story.

It all started with an MVP made by someone in marketing. Yes, marketing. The curious thing is that it worked… more or less. It was liked so much that they started adding new pieces, patches, and features left and right… until the monstrosity lost all human form and became a digital Frankenstein.

  • The original promise of Vibe Coding in this project: “Accelerate delivery and build something of quality at a low cost.”
  • What I found when I arrived: A search for the Holy Grail but with a map drawn by a three-year-old.

2. The diabolical architecture

I’m not exaggerating. Here are some examples for non-technical people:

  • Duplicate headers and footers on every single page; no templates or reusable components.
  • Functions repeated everywhere with slight name changes, like distant cousins who hate each other.
  • PHP code inside HTML pages receiving POST calls from embedded JavaScript… inside the same file.

This is like putting the kitchen inside the bathroom: creative, yes, but unsanitary. And all of it supported by “impeccable” documentation. So impeccable that it seemed to describe a completely different project than the one in front of me.

3. The false calm: “just a few minor bugs”

I was hired for “some minor visual and functional adjustments.” Spoiler: a white lie.

I spent 20 hours of “Vibe Coding” to fix those bugs. In the end, it worked… apparently. Although I still didn’t understand what the hell was happening “under the hood” and felt like I was operating on a patient following a manual written in Russian.

4. The launch and the avalanche of complaints

We pushed the beast to production. Result: A tsunami of complaints and tickets.

The most tragicomic bug: The product was supposed to be a WebApp, but it was built in pure PHP, JS, and CSS, without modern libraries. Then, the “brilliant” idea: Let’s make a mobile app! … but users couldn’t even log into the application, let alone receive push notifications. It’s like selling a coffee maker that doesn’t even boil water, but has Bluetooth.

5. The real work: 30 hours of surgery

There was no “low-code” shortcut here. It was manual coding, line-by-line debugging, and architectural surgery:

  • I restructured how user sessions were handled.
  • I rebuilt the entire onboarding flow, preventing users from being locked out if they didn’t complete registration on the first try.

After 30 hours: I finally understood the code, eliminated redundancies, and delivered a functional MVP that, at last, did what it said on the box.

6. The deceptive shine

Was it ready to be sold as a “finished product”? No. Was it sold anyway? Yes. Because nothing shines brighter than a PowerPoint with fresh-out-of-the-oven screenshots.

The client was happy with the improvements; the app was more stable. Me… I was somewhat worried about what might happen in the following month.

7. Lessons learned

  1. Vibe Coding is an excellent co-pilot if you are very clear about where you are going and understand the underlying architecture.
  2. Low-code does not mean no-code. Complexity is still there; it’s just hidden.
  3. An MVP is fertile ground… to grow fast or to fill up with weeds that are impossible to pull out later.
  4. Never underestimate the refactor: It’s boring until it saves your life in production.
  5. Documentation + Bad Code = A treasure map to an island that doesn’t exist.

8. My final thought (or “alarmist optimism”)

Vibe Coding has enormous potential in the right hands. But if your plan is to jump in without knowing how to program, expecting the tool to perform magic… well, I hope you have good insurance and nerves of steel.

Because yes: you can build something incredible. Or a Frankenstein with a pretty interface.