With humans language, sometimes "wrong" is in fact "right."
But yes, in my experience the code is often quite bad in other, harder-to-quantify directions: readability, maintainability, simplicity.
If we had a way to write a test suite for English that could reliably answer "is this sentence useful to my target audience" or "does this paragraph make any goddamn sense", you might be able to run some sort of agentic loop to approach good writing, but so far we don't.
I've been struggling with this because I do believe maintainability of code is important. But the way it is going, if AI is writing all the code and no human needs to read it anymore, does it really need to be maintainable? Does it matter if it looks like alien code since we can throw it away when using the next AI model? I have no answers of my own to these questions...
- For throwaway prototypes I pretty much vibe code, only making manual tweaks occasionally if the agent gets stuck or something looks wrong visually. - For production code I stay in the loop, reviewing and iterating on the code with an agent.
This leads to me having experience with “messy” prototype code and “maintainable” production code. Whenever my prototype code lives longer than expected it gets to a point where the agent starts introducing regressions or churning on changes.
This happens much less often with the “maintainable” code. From my perspective it seems pretty clear that LLMs are faster, more effective, and less error-prone in a well structured codebase
It's more important than ever, because code is just a way of expressing intent. If the code becomes overly complex, it de-coheres, and intent is lost across the system you are building.
This is why vibe coded projects turn into slop and eventually stop iterating: at some point that actual intent is too vague and contradictory because of the many layers of code that have been added.