Let’s Do “Vibe Coding”

How it began

First of all, I hate the term so much, I have no words for it. But if I write “AI-augmented software development,” that would be accurate—yet confusing. So, giving in (like we did in the early 2000s, when hackers became the title of bad guys instead of the good ones), I tried some vibe coding.

I’d like to start by stating that I’m not new to AI or AI tools. Back when ChatGPT went live, I was working at Zapier, and it was very clear from leadership (awesome foresight from Wade) that everyone needed to get familiar with it, as it would become a major focus for the company. I immediately looked into OpenAI’s APIs and what we could build with them. Since then, I’ve been creating various AI chatbots and agents, partly for work and partly as a hobby.

I also used ChatGPT and my own bots to generate code. None of this was new to me.

Let me introduce you to my friend, Bobo. Bobo is a Croatian captain who has a boat on the island of Krk, in Punat, and offers boat trips for tourists. He also has a website, hosted and maintained on Wix, where people can book trips—and pay online. Bobo A few weeks ago, Bobo called me to ask for help. He was exploring payment processors and found that, for his use case, Revolut Pay had the best pricing structure. Unfortunately, Wix doesn’t support Revolut Pay out of the box. But it does provide APIs and a framework (Wix Velo) so you can roll your own. So, he called me.

Now, I had never used:

  • Wix
  • Revolut Pay
  • JavaScript (for more than a few lines)

So obviously I said, “Sure, I’ll take a look,” and jumped in. I’d been hearing good things about Cursor AI, so I downloaded it. I also had Perplexity AI in my toolbelt.


First Round: One-Shot

I started with Cursor AI. I linked two documentation sources for the Agent: the Wix Custom Payment Plugin docs and the Revolut Pay docs. Then I told it to “make it happen.”

It started off nicely. It generated the three required files—RevolutPay.js, RevolutPay-config.js, and http-functions.js—and wrote code that looked solid.

So obviously, I uploaded them to Wix and tried to connect to the Revolut Pay sandbox.

Failed with weird errors.

But hey, we’re vibe coding, aren’t we? So I just copied the error message into the Agent.

“Aha, I see the problem now…”

Familiar words. It made fixes, I copied them into Wix, hit the buttons…

Error.

Again, copy-paste into the agent. It made more changes…

I went through three rounds like this. Eventually, the code turned into a bloated, unusable blob.

Revert to empty repo and start from scratch.


Second Round: Understanding the Basics

Since one-shotting didn’t work, I opened Perplexity AI to dig into how this was supposed to work.

Basically, we need to implement three core interactions:

  1. When we “Connect Revolut Pay” on Wix, we need to request API keys, ask whether it’s a sandbox or production environment, and verify the credentials.
  2. When a customer hits “Pay,” we call Revolut’s API with the order data and receive a redirect URL in return.
  3. That URL is then handed back to Wix for redirection. payment flow Sounds simple enough.

This time, I proceeded step by step. I still used Agent mode in Cursor AI, but I only asked it to implement the connect call.

Code generated. Deployed. Error.

A few rounds of “I got this error, fix it” prompts—still not working.

Time to dig deeper. This is the moment where I had to put on my software engineer hat and actually understand what’s happening in the code and what’s causing the failure.

This is exactly where the tool failed to replace a software engineer.


Third Round: Reading and Understanding the Documentation

For the first time, I actually read the Wix documentation carefully—because up to this point, this was supposed to be an experiment in “vibe coding,” which I now considered a failure.

And lo and behold, within five minutes I saw the problem: the code was returning data in a structure different from what Wix expects. It’s clearly laid out in the docs.

How did th AI miss this?

I copied the relevant section into the Agent and told it to fix the code.

Deploy. Test. It works. Finally.

And that’s how it went from there for the remaining calls: I read the docs, understood them, gave detailed prompts to the AI, and it produced working code—worst case after a few iterations.

Did it replace my knowledge of APIs and software engineering?

Absolutely not.

But it did successfully augment me: I still don’t know JavaScript. But I understand the code well enough to give solid prompts and identify what needs fixing.


Conclusion: Augmentation, Not Automation

This experiment started as an attempt at “vibe coding”—just trusting the AI to build something end-to-end. That failed spectacularly.

But what worked was pair programming with the machine. It’s a powerful assistant if you know how to guide it, read between the lines, and step in when things go off-track. The key isn’t in letting go of expertise—it’s in leveraging it more effectively.

AI won’t replace skilled engineers any time soon. But it’s already an excellent second brain for those willing to work with it, not just throw problems at it.

So no, I’m not vibe coding.

But I have a good assistant for pair programming. pair programming