One pattern I've noticed with AI-generated code is that the first version often looks productive because it ships quickly, but the real test comes during the third or fourth feature request. That's usually when hidden coupling starts showing up.
The most effective teams seem to treat AI as an implementation accelerator, not an architecture decision-maker. If the boundaries, contracts, and ownership are defined first, AI can generate a lot of code safely. If those boundaries are unclear, it tends to compress everything into the same layer because that's the shortest path to a working result.
What's interesting is that maintainability has become a bigger competitive advantage in the AI era. Generating code is cheap now. Understanding, modifying, and safely evolving that code months later is still expensive.