rainmirage

Vibe Coding

I'm about to explain something that isn't vibe coding:

There's a method of programming that doesn't require knowing how to code. In fact, you can create running programs with minimal understanding of what's going on. All you need is access to an aggregation of coding knowledge, which can be searched using accurate prompt engineering to create the result you need. The more general your question, the easier it is to find the answer - but for rarer, more specific problems, the efficacy of the method suffers. Sometimes this method results in broken code, and you may not have the prior knowledge necessary to fix it.

What I just described is NOT vibe coding. I just described copy-and-paste programming - the act of getting pre-existing code (usually from the internet) and copy-pasting it into your own code. Copy-and-paste programming is problematic because you are using other people's work without their permission, and because you aren't fully understanding what you're copying; otherwise, you wouldn't need to copy it. If the code introduces a problem, it's hard to fix. Often you have to go through the code anyway line by line, changing variables and fixing problems to integrate it into the rest of whatever you're making.

'Vibe coding', or the act of prompting an LLM to assist with coding, seems to me exactly like copy-and-paste programming. Because the models used to vibe code were trained on code found on the internet in the first place, it's bit like an ouroboros. We're just copy-and-paste programming again - but this time, because the output isn't copyrightable, it's somehow ethically ok now.

I can imagine some people would defend vibe coding by pointing out that vibe coding can be used to create templates and cut out the 'fluff' of setting up code. This is true, and also something which basically any IDE already does. Visual Studio Code already spits out the bare bones of Java classes for me, and didn't require emitting massive amounts of carbon to learn how.

I am by no means a good coder. I make little projects for fun, mostly in Java and HTML/CSS, although I have also made things in Python before. So it is entirely possible there are benefits to vibe coding that a professional programmer could observe which I can't. But I have my doubts.

One of my favourite things about coding is how deeply I understand it by the end. I created something out of nothing, and I know absolutely everything about what I just created. Code is logical, and you can follow the flow of its logic to find where your instructions to the computer were incorrect. Talking to an LLM is not logical. There is an invisible layer of mediation between my instructions and the model's output, where it makes inscrutable decisions I am totally incapable of predicting. My control over the process is tenuous at best, and calling writing prompts 'engineering' obfuscates that fact.

Code spat out by a computer is unknown to me. I can read it line by line, but I didn't write it. It won't look like code I wrote. If I don't understand it, I can't know if it's safe. If I do understand it, then asking an LLM to code for me is nothing more than me being lazy.

Code that isn't understood by its creator is inherently unsafe and unusable for anybody serious about distributing it. So why the fuck is Microsoft having its employees use LLMs when coding, to very little advantage? Why the fuck is anybody doing this? Why even bother?

(It's because the current economy is being precariously held up by constant growth, and AI is the latest desperate grasp at that. But anyway.)

← Previous
Crying Cat Webring
Next →