The key is to have clear specs and clear architecture, and then have agents enforce this.
I devote most of my time to specs and much more of my time to e2e and integration tests.
I find a lot of value, even more value than before, in strictly hexagonal designs and even a large does of DDD.
Following these principles, it’s relatively easy to design systems of systems that decompose to domains that decompose into use cases / ports / adapters.
By the time you’ve decomposed to this level, AI is very capable and it’s easy to review or verify by tests. I am very comfortable with AI verifying if a basic CRUD port is functional, for example, because at this point each operation becomes less than a dozen lines of code.
Stop thinking of yourself as a programmer and start thinking of yourself as an architect.
The key rule is that decomposition of a problem into smaller problems is what wins. This was always true, extremely true before AI and extremely true with AI.
Focus your individual effort on the top-level decompositions and let AI handle the lower-level decompositions. Trust AI to test the lower-level and make sure you test the higher levels.