A teammate asked me something last week that stuck with me longer than it should have.
âDonât you think LLMs are incredibly shortsighted? They make whatever decision looks optimal right now, but zoom out to the full project and itâs often the wrong call.â
He was right. But not about where the blame lands.
The three hardcoded ifs
Ask a model for a component with three statuses. Youâll get three if-statements. Hardcoded. Working. Clean. Zero flexibility for the fourth status that product is already sketching on a whiteboard somewhere.
And itâs not because the model canât write something more resilient. Itâs because nothing in your prompt told it to.
It doesnât have the business context you didnât share. It wasnât in the planning meeting. It doesnât know the PM has five new variants on the roadmap. It sees three statuses because you showed it three statuses.
Training rewards favor âworks now.â For years, users complained about over-engineered output â abstract factory patterns for hello worlds. So the pendulum swung hard the other way. Models learned to take the shortest path to working code.
It deliberately avoids YAGNI violations. It wonât build flexibility you didnât ask for. Thatâs not a limitation. Thatâs the model doing exactly what it was trained to do.
One sentence changes everything
This isnât a âdumb modelâ problem. Itâs a default setting. And you change it with a single sentence of context.
Tell it: âthis domain is uncertain, weâll probably add more types, design it so a new variant doesnât require touching fifteen filesâ â and you get fundamentally different code. Strategy patterns. Discriminated unions. Config-driven architecture. The kind of structure that bends instead of breaking.
The model was always capable of this. It just needed the signal.
Where the experienced developer actually matters
Not in typing code faster â the model does that better. Not in framework knowledge â the model knows more of it. Not even in âbest practicesâ â the model has those memorized.
In knowing where you need slack and where you can go straight.
Thatâs the thing no model can infer from a prompt. The awareness that this part of the system will change three times before launch, while that part has been stable for two years and will stay stable. That intuition comes from sitting in the meetings, hearing the product debates, watching the domain shift under your feet.
One hint â âthis is certain,â âthis will change,â âthis is uncertainâ â and the shortsightedness disappears. The model gets decision context and writes code on a completely different level.
An experienced developer paired with an LLM has absurd leverage. But only if the developer stops complaining about the âdumb modelâ and starts passing along what they already know.
The next time you prompt a model, ask yourself: did you give it business context, or just technical requirements?