Our First Vibe-Coding Rescue Project

Joe Cooney • May 5, 2025

A friend and former colleague reached out to me recently to ask if I could help him fix a couple of bugs in a small project he’d been working on. He was not a developer, but had worked in and around developers for his whole 20+ year career as a business analyst, product owner and program manager. With the advent of tools like Cursor and Lovable his lack of coding ability was (maybe) no longer a barrier to getting some ideas he’d been incubating in his mind for a while, out into the world. With credit card in hand, he dived headfirst into the world of “vibe” coding. 


We met for coffee, and he showed me the prototype he’d built. I was quite impressed with what he showed me (running on his laptop…deploying it anywhere was a bridge he had not crossed yet) – a capable working prototype that demonstrated the ideas he was trying to prove out. I asked him about the “development experience” and he said it had been great at first, and he’d been able to make a lot of progress quickly, but at some point he hit a bit of a wall where each change he tried to make introduced more issues, and he felt like it was pointless to continue. He’d switched between a few different AI coding tools in an effort to see if the problems he encountered were specific to the tool he’d started with, but without success. The vibes had run out. 

When The Vibes Ran Out

I said I’d happily take a look at what he had and give him an estimate of how long it would take to fix the remaining issues. The architecture of the solution was simple enough and well suited to what he was trying to achieve – a Supabase back-end with some edge functions. The front-end was React, Typescript and Tailwind. So far so good. I got the solution working readily enough, but started to see a lot of small and not-so-small issues when I played around with it. I think in order to give me an overview of everything, he’d carefully worked around a few issues that now came to the fore. I figured out how to work around those too and dived in to trying to fix the first issue on his list. 

 

Fixing The 'Last Few Bugs'

In the words of Yogi Berra “you can observe a lot by just watching” and the more I looked, the more I saw. The first thing that dawned on me was the staggering lack of consistency as I tried to apply patterns that were working in one area to fix a bug in another area. Cursorrules files can be used to improve consistency, and my friend had not created one of those. Does using cursorrules go against the spirit of vibe coding? Does aiming for code consistency? 


The second thing I started to notice was regarding state management – it was a mess. It made me realise all the different ways you can access state in a react application – via an API, via props, via hooks, fetched from an API, as part of the route, and so on. Once again there was no consistent approach – values were read from props that were never set that could have been gotten from the route. The nature of the app was very simple – state was a simple hierarchy being edited by a single user, and yet it still seemed like a big stumbling block. 

The third thing I started to notice was bits of back-end functionality that didn’t work, but weren’t on my friend’s list of bugs. After discussing a few of these with him it became apparent that these were never features he’d asked for, but hallucinated features that had gone un-noticed because they were failing silently. Like a vestigial appendix in the code-base these could (and certainly should) have been removed, but teasing out what was “real” and not working, and what was just noise would take time. 


As these issues began to mount the final epiphany I had was that (for me) it was hard to fix a system like this because my mindset was now different to fixing issues in a “normal” project. In a normal project I often push through issues by trying to think about the state of mind of the previous person working on the code – you see something in there and even though it might not be right you can see what they were trying to do. Things, even buggy or misguided things, exist for a reason. Here, there was no “they” – more and more it felt like just a lot of random code that had been welded together. I was amazed that it worked at all, and suspected and subsequently confirmed with my friend that there had been a lot of back-and-forth prompting that would have gone something like this: 

 
user: I’m getting the following error when I do X  
agent: I see there’s an issue with the DoX method, let me fix that. 

user: I’m still seeing an error when I do X, it says..
agent: I apologize for the error. I see now there is another issue with the DoX method. Let me fix that.

History, Repeating

“Vibe” coding is the latest in a long list of tools from Microsoft Access, Hypercard, Visual Basic, Excel, and many “low code” tools that have allowed citizen-developers to create complex systems with no programming knowledge. Many of the aspects of this “rescue” would be familiar to industry veterans who’ve participated in similar projects for other citizen-developer programming efforts. My friend said he did find the vibe coding process to be very useful in fleshing out his ideas, but it remains to be seen whether the issues he hit can be overcome to develop production-quality applications. 


Reviewing the results of my friend’s vibe coding experience I have mixed feelings. On the one hand greenfield development is notoriously one of the most productive stages in a project, so vibe-coding a POC quickly is less impressive to me. Also, it seems like vibe coding eschews many of the time-consuming parts of development (like testing) by just not doing them. On the other hand, the fact that it even works at all does still amaze me. Vibe-coding allows non-programmers to create things that they previously couldn’t, which is a step-change in capability. 

The Road Ahead

Vibe-coding is an extreme form of agentic development. Practices, tools and foundational models are improving quickly in this area. I can envisage a more productive future that blends some of the speed of vibe coding with more of the rigour of current software engineering practices using rules files for agents, onboarding files written specifically for agents to give them more context, linting rules, test suites, judicious use of version control, and deployment pipelines as well as hosting infrastructure to take the vibes directly to production. 

Share This Post

Get In Touch

Recent Posts

Copies of the book DesignedUp are stacked on top of each other on a pink background
By Lennah kuskoff May 5, 2025
At PZ, we’re always exploring how design and technology can better complement each other. We recently hosted a Lunch & Learn featuring Emma Carter, Experience Design Leader and author of DesignedUp, whose talk was a candid, experience-rich exploration of what it takes to create great products, and even better collaboration between disciplines.
By Joe Cooney April 3, 2025
Making cybersecurity fun and engaging with capture-the-flag (CTF) events—boost team collaboration, enhance security skills, and turn dry security practices into an exciting challenge!
January 16, 2025
We are excited to share that our Co-CEO, Demelza Green , was recently a guest on 'This Working Life' , a podcast by the Australian Broadcasting Corporation (ABC) hosted by Lisa Leong . During the episode, Demelza discussed the evolving landscape of hybrid work and how virtual reality (VR) is shaping the future of workplace collaboration. "Recording the podcast was a unique experience," Demelza shared. "I was sitting on a park bench next to the river in Mooloolaba. Despite my mum insisting I've never sounded more Australian, I wonder if listeners can spot my strong Kiwi accent, as I thought it was as strong as ever. It's funny how recording outside can change the sound of your voice." Demelza also responded to Lisa's request for pictures of teams working in VR: "Our team got dressed up and coordinated a round of thumbs-up just for Lisa!"  Listen to the full episode here: Managing Hybrid Work - This Working Life
November 26, 2024
We are thrilled to announce that Demelza Green , our co-CEO, has been awarded the prestigious ARN Innovation Management Excellence Award at the 2024 ARN Innovation Awards. The ARN Innovation Awards celebrate outstanding achievements in the Australian IT industry, recognising individuals and organisations that drive innovation and contribute significantly to the technology sector. This accolade highlights Demelza's dedication to driving innovation within Patient Zero. "I am incredibly honoured to receive this award," said Demelza. "Innovation is a team effort, and this recognition reflects the hard work and creativity of the entire Patient Zero team."  Congr atulations to Demelza on this well-deserved award!
More Posts