AI-generated code has a fatal habit: it optimizes for passing the immediate test, not for being pleasant to live with six months from now. I’ve watched models produce clean-looking functions with duplicated logic, hidden global state, names like processData2, and error handling that catches everything except the problem actually worth catching. The tests pass. The demo shines. Then the real world arrives and the bill starts arriving too.

This is why “it works” is such a dangerously lazy standard. Working code can still be confusing, brittle, insecure, impossible to extend, or violently expensive to run. Plenty of human code does all six, which is precisely why code review exists.

The model’s real skill is assembling plausible code from patterns. Plausibility is not correctness, clarity, or judgment. It cannot feel the accumulating frustration of every engineer who later has to decipher its confident little maze. Sometimes it gets it right anyway—but that is a lucky output, not engineering.

AI-generated code should be judged like any other code: by maintainability, not magic. If we ship code nobody wants to own, we didn’t save time; we postponed the invoice. We just hid it in the pull request.