Thoughts on My First Real Vibe Coded Project
Join me on my write up about my first fully vibe coded experience writing a Pokemon Johto interactive music map in React. Spoilers: I don't think it's for me.

At the time of writing this, vibe coding is hot stuff. GenAI with Agent mode and MCP is making it easier to extract the fun out of coding into something that seems to run. So it's time to try it out myself - even if it's on a toy project to get the vibe of vibe coding.
The project
At some point while playing Pokemon Crystal, I noticed that a lot of routes had the same music, wondered how many of them did, then moved on. Only much later did I think about it again and decided it would be a fun project to apply vibe coding to. And you can play with it here on GitHub Pages🔗 and check out the code in the GitHub repo🔗.

You can hover over a location on the map or in the location list to show which other locations have the same music, then you can click either the map or the list to play the music via an embedded YouTube video.
The project is written in React and with zero manually written code. Even single lines to fix problems were prompted. Prompts were via Claude 3.7 Sonnet Thinking in Visual Studio Code using GitHub Copilot Edit mode.

The only given before prompting was the empty /app folder, the maps, the location coordinates, and a JSON file linking the maps and music YouTube links.
Thoughts
The following are the thoughts I had during vibe coding.
I guess I'm a technical project manager now?
I couldn't tell you how this project works. I barely saw inside the files outside of quick diffs for changes wanting to be applied when I got curious. I wanted the true vibe coding experience. But at the end, I found myself tired and unfulfilled. Being a turbo nerd, this would've been a fun little afternoon passion project but that was taken from me and replaced with trying to steer an uninterested horse to a watering hole.
The tweet below sums up some of it - the disconnect.

But I like solving problems
I want to return to "I found myself tired and unfulfilled" from the previous section. I think some of the disconnect is because I vibe coded on something I would've enjoyed doing and as such, took away the joy in my hobby. There are problems I love solving - it's why I'm a turbo nerd by trade and by hobby. So perhaps someone like me should be using it to eliminate busy work or boilerplate work. Similar to how a business may outsource production, but keep innovation in-house.
We could go further and never let GenAI write code, but still rely on it. DHH wrote a piece I found myself agreeing with: Coding should be a vibe!

Maybe one day, wanting to write code will be a quaint concept. Like tending to horses for transportation in the modern world — done as a hobby but devoid of any economic value. - DHH
I think for me, I need to find where my balance is.
I'm tired of PoC/toy projects
GenAI is moving fast - as a lot of things in tech do but I'm getting worn out being sold on proof of concepts. I want well crafted, battle hardened code that can live in a codebase for decades with minimal maintenance. It's that dependable code that proves the craft and saves a business money.

I understand the irony here because this is a toy project but I'm also not touting how grand vibe coding is.
It struggled on CSS
I used mock up images and the VSCode element picker to try to push the work in the right direction but there's something up with getting it visually correct. I guess it makes sense since there is a disconnect between raw text and images - even with Copilot Vision. I'm not sure if I even want to look at the can of worms.
The reactive website was a pain and it still doesn't properly work on mobile.
Unused code was kept
As features were being added and modified, the now redundant code wasn't being removed. It was only changed if it was on the path of what was being edited. I hadn't noticed this before because I hadn't let GenAI make broad and sweeping changes while only being mildly supervised.
At times, that slow internet feeling
This one can be summed up with an internet speed meme:

Coding with no GenAI expectations is fine, coding if we had incredible GenAI is fine. But at the moment, with the amount of hiccups that can happen with prompting results and having to get the right point across can be excruciating and sometimes I'd rather just move on and do it myself.
But it did run
As much as getting the visual part prompted was mildly frustrating, it does run. It does the core of what I want which was to see the locations in game and what music they had in common.
That's hard to fault. Sure there may be code quality issues, but you can begin to see how the cruft of work can be outsourced to GenAI under a careful and experienced human eye.
So what are my takeaways?
I think the following:
- I really like coding for fun, so I guess if I'm going to use it, the boring problems should be outsourced. This isn't a GenAI hit piece, it's a: vibe coding as it stands now, isn't for me
- Everything still needs to be looked at, even the simple stuff
- I think if I find myself using GenAI, it will be for the boring problems or for looking up things that are difficult to find otherwise
- This was a fully vibe coded project as a vibe coding experiment. This is not commentary on proper collaboration between developer and GenAI tooling.
To Conclude
This project was an excuse to dig into how I feel and approach vibe coding with GenAI. Turns out, the really nerdy part of me doesn't want to outsource all the problems - perhaps only the boring ones. Though even the boring ones still need supervision.