Prompt Engineering That Actually Works
People keep declaring prompt engineering dead. Meanwhile it’s still the cheapest, fastest lever you have on output quality — if you know the handful of techniques that actually move the needle.
Every few months someone declares prompt engineering dead — the models are smart enough now, just ask normally. And every day, engineers shipping real LLM features discover the opposite: the difference between a vague request and a well-built prompt is the difference between a feature that mostly works and one you can trust. Prompting didn’t die. It became the cheapest, fastest lever you have.
Cheapest because it costs nothing but thought — no training, no infrastructure. Fastest because you change a string and rerun. Before you reach for fine-tuning, RAG, or a bigger model, prompting is the first thing to try and the last thing to stop improving. Here are the techniques that actually move quality, and the mistakes that quietly tank it.
Why prompting still matters
It’s tempting to treat the prompt as a formality on the way to fancier solutions. That instinct leaves easy quality on the table, because prompting has properties the heavier tools don’t.
- It’s the cheapest lever. A better prompt costs a few minutes; fine-tuning costs data, compute, and a pipeline. Exhaust the cheap option first.
- It’s reversible. A prompt change is a one-line edit you can roll back instantly. Baked-in model behavior is not.
- It’s mostly model-agnostic. Good prompting principles carry across models and survive the next upgrade; a fine-tune is tied to one base.
- It compounds with everything. RAG, tools, and agents all still run on prompts. Better prompting makes every other technique work better too.
The techniques that earn their keep
Most of the value comes from four moves. None are clever tricks; they’re ways of giving the model what it needs to do the job well.
- Be specific and give context. The model can’t read your mind. State the role, the goal, the audience, the constraints, and the format. Most bad outputs trace back to a prompt that assumed knowledge the model didn’t have.
- Show examples (few-shot). One or two worked input-output pairs teach format and tone better than a paragraph of description. When you need a specific shape, demonstrate it.
- Ask for reasoning (chain-of-thought). For anything with logic, telling the model to work through it step by step before answering measurably improves correctness — it gives the answer room to be right.
- Use structure and delimiters. Separate instructions from data with clear markers, and ask for a defined output format. Fenced, labeled sections stop the model from confusing your data for your commands.
Putting it together
These combine into prompts that look less like a question and more like a brief. Role, rules, an example, and a clearly fenced input — every part removing one way the model could go wrong:
You are a senior support agent. Classify the ticket below.
Rules:
- Output ONLY valid JSON: {"category": "...", "urgency": "low" | "high"}
- category is one of: billing, technical, account
- If you are unsure, use "technical".
Example:
Ticket: "I was double-charged this month"
Output: {"category": "billing", "urgency": "high"}
Ticket to classify:
"""
{the user's ticket text goes here}
"""Notice how little is left to chance: the role sets the frame, the rules pin the output, the example shows the exact shape, and the triple-quoted block fences the untrusted ticket so it can’t be read as an instruction. That last point is also your first line of defense against prompt injection.
A good prompt isn’t a magic incantation — it’s just clear instructions to a capable, literal-minded coworker who has never met you and forgets everything between messages.
Where people go wrong
- Being vague. “Summarize this” invites a guess. “Summarize this in three bullets for a busy executive, focusing on risks” gets you what you wanted.
- No examples. When the output format matters, describing it is weaker than showing it. One example often fixes what three sentences of instruction couldn’t.
- Over-prompting. Piling on ten contradictory rules confuses the model as much as too few. Say what matters, clearly, and stop.
- Ignoring the system prompt. Persistent role and rules belong in the system prompt, not repeated in every user message. Use the channel the model is built to weight.
- Never measuring. “It seems better” is not iteration. Keep a handful of test inputs and check changes against them, or you’re tuning blind.
Prompting is a skill, not a trick
The reason prompt engineering keeps getting dismissed is that it looks like just typing. But so does writing, and we don’t pretend that’s trivial. The skill is the same one good writing demands: knowing your reader, saying exactly what you mean, and showing rather than telling when the format counts.
Models will keep getting better at guessing what you meant, and the floor for a lazy prompt will keep rising. But the gap between a careless prompt and a careful one won’t close — it just moves to harder problems. The engineers who treat the prompt as the first place to invest, not the thing to skip, will keep getting more out of the same model than everyone else.
Enjoyed this?
Get the next deep dive in your inbox. No spam — just the stories worth reading.
Subscribe to the newsletter