As someone who can code, has coded for 40 years for a living, I’ll say: LLMs can be heavily abused to write a lot of garbage. I’ll also say: give a human enough time, and they can write almost as much garbage but they usually get discouraged by all the errors and crashes and have the good sense to give up - but these humans armed with LLMs can at least make stuff that runs.
I’ll also say: LLMs can be used as very effective tools, if you exercise the kind of care and planning that has always been required to write “good” (whatever your definition of “good” may be) software. They do speed up development - some development ends up in a good place, some… not so much. It was always like this even long before LLMs, but LLMs help get to those endpoints much faster.








See, I don’t know Billy, and I don’t know what his app looks like. If Billy is a logically thinking, good graphic designer who communicates well with his clients, understands what they want, and can express all that in logically coherent statements, Billy’s first app using LLMs might be great. Probably not, but it stands a chance. Everybody starts somewhere.
If Billy just says "hey, like, I want an app that runs on Android and iPhone and desktops too, and I want it to do this list of random stuff, some of which is internally conflicting, and while I’m at it I’m going to spec that I want it in Scala, because reptiles are cool (like cold blooded, get it?) Yeah, Billy’s first app is only likely to be awesome for Billy.
Now, when I fire up Claude Fable and ask it to make me a webserver in Python, how does Codeberg determine if my app is “Vibe coded” or not?