RE09 All articles
AI & Machine Learning

Scope Creep on Autopilot: How AI Assistants Quietly Rewrite Your Roadmap

RE09
Scope Creep on Autopilot: How AI Assistants Quietly Rewrite Your Roadmap

Photo: MrAlanKoh via DALL-E 2, Public domain, via Wikimedia Commons

Ask your AI assistant to "add email verification to the signup flow" and watch what happens. You'll get back a beautifully structured module: an abstract VerificationStrategy interface, a pluggable provider system, retry logic, maybe a factory pattern for good measure. It compiles. It has docstrings. It is also, almost certainly, three times the code you needed — and it solved a problem you didn't have.

This isn't a bug in the model. It's the direct result of what the model was trained to do.

Trained on Impressive, Not on Necessary

Large language models learn from code that exists in the wild, and code that exists in the wild is disproportionately public repositories, tutorials, and enterprise codebases. That corpus rewards completeness, abstraction, and apparent sophistication. A one-liner that works doesn't look like a good answer. A layered, extensible solution does.

So when you ask for a feature, the model's gradient pulls toward the shape of a mature codebase — interfaces, dependency injection, configuration options — regardless of whether your project has earned that complexity. It's optimizing for plausibility, and plausibility has a very specific aesthetic that looks a lot like over-engineering.

The result is what I've started calling scope creep on autopilot. You didn't decide to build a plugin architecture. Your assistant did, and you merged it because it looked competent.

Why Early-Stage Projects Get Hit Hardest

At a mature company, over-engineered output gets caught in review. There are conventions, senior eyes, a roadmap. But early-stage projects — solo builders, weekend hacks, seed-stage teams — have exactly one filter between the model's output and production: you. And you're often reviewing code at 11 p.m., tired, grateful it works at all.

The cost compounds. Every unnecessary abstraction is a surface area you now maintain, document, and navigate. AI-generated abstractions are especially treacherous because they look intentional — future you assumes past you had a reason. Multiply that across a dozen features and you've got a codebase that's architecturally impressive and functionally bloated, burning weeks of iteration speed you'll never get back.

Worse, it distorts your sense of the product. When adding a feature costs 400 lines instead of 40, you start treating features as investments. You defend them. You build around them. The roadmap inflates not by decision but by accumulation.

Tactics for Keeping the Assistant on a Leash

You don't need to stop using AI assistants. You need to change how you prompt and review. What's worked for me and teams I've talked to:

State the constraint, not just the task. "Add email verification. No abstractions, no interfaces, one file, under 100 lines. Use plain functions." Models follow explicit constraints remarkably well — they just never assume them unless you say so.

Ask for the boring version first. Follow up any generated solution with: "Now rewrite this as simply as possible. What can you delete?" The second pass is routinely half the size and just as functional.

Review for scope, not correctness. When reading AI output, your first question shouldn't be "does this work?" It should be "did I ask for this?" Delete anything that answers no — even if it's good. Especially if it's good.

Treat config options as a red flag. If the generated code has settings for things you'll never configure, that's the model hedging against use cases you don't have. Hardcode your reality.

Keep a deletion log. Seriously — note what you strip out of AI suggestions each week. After a month, you'll have a personalized picture of your assistant's biases, and your prompts will get sharper.

The Assistant Is a Junior Who Reads Everything

The best mental model: your AI pair programmer is an eager junior developer who has read the entire internet but has never shipped a product. Enthusiastic, fast, genuinely useful — and constitutionally incapable of saying "you don't need this."

The judgment about what not to build remains the scarcest resource in software, and no model currently supplies it. That's still your job. Guard the scope like the product depends on it — because it does.

All Articles

Related Articles

Where Did the Day Go? A Practical Guide to Finding the Hours Your Team Can't Account For

Where Did the Day Go? A Practical Guide to Finding the Hours Your Team Can't Account For

Counting the Cost of Your Toolchain: The Friction Tax Every Dev Team Is Paying Without Realizing It

Counting the Cost of Your Toolchain: The Friction Tax Every Dev Team Is Paying Without Realizing It

Promises All the Way Down: When Async Code Is a Symptom, Not a Solution

Promises All the Way Down: When Async Code Is a Symptom, Not a Solution