Why it matters: AI assistants quietly turn small requests into reusable frameworks, and that hidden flexibility becomes technical debt someone has to maintain long after the model moves on.
The Details:
- Training data skews the model's instincts. Most public code worth learning from comes from libraries and popular open source projects built for many callers and many futures. The model absorbs that as the definition of good code, so a one-off script comes back as a configurable utility even when nobody asked for options.
- Uncertainty gets resolved with extra parameters. The model cannot see your roadmap, so adding a flag or a config field feels like safe hedging. The catch: the model never pays for that hedge. It does not maintain the unused branch or explain the seven-field object where one field ever gets set. You do.
- Abstractions are sticky once they exist. The next time the assistant touches that code, it treats the abstraction as intentional and builds on top of it, adding more parameters to match its shape. A speculative decision from three months ago becomes load-bearing for everything written since, and reversing it gets harder with every commit.
- The fix is a rule, not a vibe: never generalize for one confirmed case plus a guess. Wait for a second real caller before consolidating similar functions. Scope requests narrowly, ask for a script that renames forty files rather than a rename utility, and in review count parameters with defaults that never get overridden. Each one is an abstraction you paid for and never used.
Bottom Line: The model will keep offering flexibility you didn't request. Deciding how much of it to accept is still a human job.