> But we have no test suites that answer "is this code maintainable" or "does this feature make sense in the context of our business", so AI still fails those tests.
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...
> 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?
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.
In my work I use AI for code generation in two distinct ways:
- 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