Monday, August 04, 2025
When vibe coding, isn't the source code the prompt?
I've been thinking about “vibe coding” (probably overthinking) and how that might effect development in odd ways. And by “vibe coding” I mean in its original meaning, “where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.” Since February, I've come across several projects, some commercial, that have been “vibe coded” in such a manner. And I found myself asking myself, what's the source code in this case? What file should be checked into source control? And my answer was “the prompts, of course.”
I have a project where I need to parse HTML, and I wrote some PEG code to do it. But the code I checked into source control wasn't the resulting C sludge that came out of the tool, but the PEG code itself—that is the source of … um … the source, as it were. If I want to change the parser, I don't change the C code, I change the PEG code and regenerate the C code. I don't necessarily care about the C code output, much like I no longer necessarily care about the assembly output from the C compiler. And there are many DSLs out there that “compile” into some other code like C or Rust, and in those cases, it's the file that contains the DSL that is checked into source control, not the resulting output of the tool.
So how is that any different from “vibe coding,” where “you fully give in to the vibes … and forget that the code even exists?” It's not the output that you necessarily care about, but the input. So, when “vibe coding,” the source code is the prompt or prompts. And it's that source code, the prompts, that you should therefore check into source control.
I can hear the arguments, even from the pro-AI side, that this is a silly concept to even contemplate and you should check in the resulting output into source control. But, isn't a selling point that AI will improve to the point where programming will change fundamentally? That in the future, all you have to do is prompt the computer to “write a content management system for a website where updates can be made via email” and have the AI do the work? In such a scenario, it's the prompt that matters, not the resulting Rust/Go/Javescript/Python sludge that comes out. Another arguement against this would be that it would play hell with reproducable builds, but again, that can be solved by AI, right? That's the end game for this, right? To have AI write the code for us?
Full disclaimer: I find this horrifying and hope it doesn't come to pass, but I feel this is the logical outcome from “vibe coding.”