Fred Brooks named this failure mode fifty years ago: a team ships a lean first project, feels capable, then buries the second one under every abstraction it wished it had the first time. AI coding tools do not create that instinct. They remove the one thing that used to stop it: cost.
The Details:
Friction used to do your thinking for you. When a plugin architecture or a configuration layer took a week to build, developers only added it when they truly needed it. Generate five hundred lines as easily as fifty, and that natural filter disappears without anyone noticing until the codebase is already tangled.
Speculative abstraction thrives on vague futures. Building an interface before two real callers exist, or designing for extensibility based on "we might need this someday," used to die from lack of hours. Now it survives because the AI will happily generate it, and the output passes tests while nobody fully understands why it exists.
Tools answer how, never whether. A developer asks how to build something and gets exactly that scope back. Nobody asks if it should exist at all, so the check has to come from senior engineers asking three questions before anything nontrivial gets built: what problem does this solve today, what is the smallest version that solves it, and what are we explicitly not building.
Reading generated code cannot be optional. Four hundred coherent, test-passing lines can still smuggle in unused configuration options and confusing patterns. Treating that output as a first draft rather than a finished artifact, and being willing to delete half of it, is what keeps the system coherent as it grows.
Bottom Line: The scarce skill in AI-assisted development is no longer writing code fast; it is judgment about what deserves to exist.
Enjoy this article?
Listen to the Claude Code Conversations radio show or join the community.