There is not a single day without any attention-grabbing headline about either some cool project made possible through LLMs, companies cutting jobs because of LLMs, new security vulnerabilities found through LLMs, and/or open-source projects getting mad and banning the use of LLMs.
Here is the short version upfront: I think LLMs can be a great tool. And just like with every tool, you can either use them wisely and measured or swing them around, shouting like a madman. The way people react to the results will probably be reflected in your behaviour.
I think the use of LLMs in programming can be an incredible boon. I’ve been one of the testers of the original GitHub Copilot back when it was just a line/block suggestion system. It was incredibly cool to see the suggestion matching a loop or a single conditional.
This is obviously not what people refer to when they talk about “vibe-coding” today. People, even tech-illiterate folks, now interact with a computer program that can basically drive your entire PC. “Build the application, make no mistakes” has become a bit of a meme but essentially hits how a lot of people picture programming today.
And yeah, sure, there are people who no longer even look at the code. Uncle Bob, for instance. But hey, the benchmark for any self-respecting software-developer is to take a look at what Uncle Bob is doing and then doing the polar opposite. We have access to sophisticated systems that are able to regurgitate the entirety of mankind’s knowledge. That includes a ton of shitty GitHub and SourceForge projects.
Trusting the machine and leaving it to dictate the coding style, the architecture and the finer implementation details is a hallmark sign of a failed project – at least in my opinion. A machine cannot and must not be trusted to make these decisions. Not to mention that LLMs cannot make decisions. It is insane to me that a ton of companies trust mission-critical data to a third-party LLM, thus exfiltrating sensitive data – all by design, by process.
However, in my opinion, a true programmer also does not reject a good tool. Give an LLM a little bit of context about errors and let it derive possible causes. A good programmer weighs the results themselves, checks the results themselves. A good programmer already has ideas and merely uses an LLM as a consult. The final decisions always lie with the programmer. Because it is his code. Because it is his job. His responsibility. His liability. When something does not work, management does not call up Dario or Sam Altman – they call up the programmer.
As such I am equally shocked that a ton of open-source projects dogmatically reject code created with LLM assistance. I fully understand that nobody wants a fully LLM-written pull request on their project, something that has not been battle-tested by a human. It sucks having to review fully generated nonsense, the structure is often bad and the formatting nearly unreadable.
But to exclude code contributions because there might be a single line of auto-suggested loops in there is just as bad as the people screaming about programming being a solved problem. It’s pure dogmatism, pure populism. It is nonsense.
The way I see it, you can go one of two routes: You can either be a dogmatist or a pragmatist. A pragmatic programmer (pun intended!) will use a good tool when it presents itself. A pragmatic programmer will weigh the use of that tool not based on propaganda and group-think but by the use they get out of it.
The other option is to be a dogmatist. Someone who outright rejects an idea not because of practical reasons but because of a self-inflicted sense of moral superiority. “My code is better”, they might say. “It is unethical”, they might add.
I hate the “you ngmi” crowd that rolled over from cryptocurrencies and now view LLM-assisted coding as the new gold rush.
I equally hate the pink-haired transgender luddite that calls people nazis for using LLMs.
At the end, LLMs are tools. You decide how to use them. You are responsible for your actions. You are responsible for the results. Do not act like LLMs produce better or worse code than the average dogshit developer. Do not simply take the dogshit code and commit it. Think for yourself. Because that is your responsibility. Your job. Your most important tool is your mind and your most important asset is your ability to make decisions – something the machine cannot and must not ever do for you.
In short: Stop being annoying about vibe-coding.
