It's actually worse than that. In a repo where there is a heavy amount of AI code, it becomes impossible to manually write code. The AI code favors obtuse, unmaintainable mess (from the standpoint of a non-AI dev). Constantly overwriting your changes, large comments, hacky logic, overly-defensive programming, misunderstandings that the LLM made that cause you to waste hours debugging.
I've come to the realization that AI code bases are effectively AI-only code bases, unless one is using AI as just a code-autocomplete, then that seems mostly fine. But most devs are using it as an end2end implementation tool, having it 1-shot full features, and then iterating on them with the agent afterwards. The amount of churn and terrible code stops the manual coder from doing anything effectively.
In my own team's codebase, I'm confident that we would actually be further along without AI, and that AI coding is a hindrance (although AI debugging seems to be a pretty good tool). It is made worse that everyone does code reviews with AI now, and it constantly gets things wrong, and when its right, it's usually for the most basic, unimportant issues (again with the overly defensive coding style). This waste the manual coder time trying to figure out if the issue its requesting a fix for is an actual problem or not.
I've come to the realization that AI code bases are effectively AI-only code bases, unless one is using AI as just a code-autocomplete, then that seems mostly fine. But most devs are using it as an end2end implementation tool, having it 1-shot full features, and then iterating on them with the agent afterwards. The amount of churn and terrible code stops the manual coder from doing anything effectively.
In my own team's codebase, I'm confident that we would actually be further along without AI, and that AI coding is a hindrance (although AI debugging seems to be a pretty good tool). It is made worse that everyone does code reviews with AI now, and it constantly gets things wrong, and when its right, it's usually for the most basic, unimportant issues (again with the overly defensive coding style). This waste the manual coder time trying to figure out if the issue its requesting a fix for is an actual problem or not.