Here is my own personal policy when it comes to AI usage.
TL;DR:
First: AI is not optimized for software engineering.
AI is optimized for hacking. It's trained for "getting to JUnit green" 0 as fast as possible, with as few tokens as possible.
We've all had coworkers like this. They hack something together that looks like it works, but they secretly did damage to the codebase to make it happen.
Second: AI-designed code is technical debt.
Any experienced software engineer recognizes this when they actually look at the code that Claude generates.
If anyone is unconvinced of this, I recommend they do an experiment: make requirements for, then design, then implement a medium-sized feature. Then, give Claude just the requirements. Compare the outputs.
In my experience, Claude's implementation is worse about 80% of the time.
My policy with tech debt in Valen is to aggressively burn it away, and refactor up-front so that we don't incur it.
By this, I mean it's trained to get to a passing test