Stop Over-Prompting: Why Clear Context Beats Clever Instructions
Most prompt engineering advice misses the point. The thing that actually gets better results from AI coding tools isn't a smarter instruction — it's a clearer picture of the problem.
On this page
There was a phase where I spent as much time crafting prompts as I did writing code. System prompts with twelve bullet points. Elaborate chains of reasoning instructions. Special tokens I had read about in a Reddit thread. Then I noticed something: the developers getting the best results were mostly just describing the problem clearly.
Prompting as a skill is real, but it is mostly overrated. The thing that matters is context — and that is much simpler to get right.
What "prompt engineering" actually is
Most of what gets called prompt engineering is one of two things:
- Working around a bad context setup. If the model keeps misunderstanding you, the fix is usually not a smarter instruction — it is giving it better information.
- Cargo-culting. "Let's think step by step" and "you are an expert software engineer" both have diminishing returns outside specific benchmarks. They became popular because they helped on evals. Real work is not an eval.
The exceptions exist: structured output prompts, tool descriptions in agent systems, and system instructions that constrain scope all genuinely matter. But for the everyday task of asking a model to write or review code, most of that craft is noise.
The thing that actually works: context quality
The single biggest lever is not how you phrase a question — it is what information you include. Consider:
Under-specified:
"Fix the bug in my auth code"
Properly specified:
"This middleware is supposed to reject requests without a valid JWT. It passes all requests in production even when the token is missing. Here is the middleware, the JWT config, and an example log entry from a request that should have been rejected..."
The second is not a cleverer prompt. It is just complete. The model has everything it needs and gives you something useful in one shot. The first starts a back-and-forth that wastes five exchanges to reach the same place.
A practical framework
Before sending anything, ask yourself:
- What is the goal? State the intended behavior, not just the symptom.
- What is the relevant code? Paste the exact function, file, or module — not the whole repo, not a verbal description of it.
- What have I already tried? This eliminates the first three suggestions the model would make anyway.
- What constraints apply? Language version, patterns in the existing codebase, things you cannot change.
That is it. No magic phrase. No role assignment. Just a complete picture of the problem.
Where clever prompting actually helps
I do not want to overcorrect. Prompt craft earns its keep in specific cases:
- Tool descriptions in MCP or agent systems. The model decides when and how to call a tool based on what you write in the description field. Vague descriptions produce vague, unpredictable tool use. Precise ones produce reliable tool use.
- Structured output. Specifying the exact JSON shape you need — field names, types, required vs optional — produces far more consistent results than saying "return this as JSON."
- Scope constraints. "Do not add new dependencies" and "only touch the files I have named" are worth stating explicitly when you mean them. Models will reach for the path of least resistance otherwise.
Outside these, the return on prompt-engineering effort drops fast.
The failure mode this creates
Over-investment in prompt craft has a practical downside beyond wasted time: it trains you to think the model is the variable when the problem is usually your input.
When a result is bad, the instinct becomes "I need a better prompt" rather than "I need to describe this more precisely." Those lead to different behavior. One sends you to a blog post about chain-of-thought. The other sends you to look at the actual problem more carefully — which is almost always where the answer is.
The habit that replaced it
I stopped thinking about prompts and started thinking about specs. Before I reach for a model, I write two or three sentences about what I am trying to achieve and what the relevant context is. If I can do that clearly, the response is almost always useful on the first try.
If I cannot do it clearly, that is the signal — not that I need a better prompt, but that I do not understand the problem well enough yet. And no prompt trick will help with that.