On Prompting Well
William Zinsser wrote one of the best books on context engineering in 1976. He just didn't know it was about machines.
The views expressed here are my own and are not related to or reflective of my work or any organization I am affiliated with.
On Writing Well never mentions a model, a token, or a context window. It didn’t need to. Zinsser was teaching writers to reach a reader with limited attention and no access to their intentions, which is the only reader a prompt has ever had. He was, without knowing it, describing a transformer. The strange part is how little has to be translated. Most of his rules don’t merely resemble good prompting. They are good prompting, written decades before there was anything to prompt.
What follows runs from the single prompt up to the autonomous systems we now build on it. At every level, the old rules hold.
If the output is confused, you wrote it badly
Zinsser refused to blame the reader. When a sentence fails to land, the writer wrote it badly, and the reader who gives up wasn’t being lazy. Writers resist this. It puts every failure on them. But it is the only posture that improves anything.
Prompting demands the same. The model isn’t being obtuse when it misses; it’s answering the prompt you wrote, not the one in your head. “The model is dumb” is the prompting version of blaming the reader: satisfying, useless. Every fix starts in the same place. Say it better. Everything below follows from taking that seriously.
Attention is finite, and clutter spends it
This is the idea worth slowing down on, because most people get it backwards.
“Clutter is the disease of American writing,” Zinsser wrote. His case against it was never that lean prose is prettier. It was that the reader’s attention is scarce and exhaustible, and every needless word spends a little of it on nothing. Cut the words that serve no function, the long word where a short one works, the qualifier already implied by the verb. Not because clutter is ugly, but because it taxes a budget the reader can’t refill.
This is now literally true of models, and the research has names for the machine version. Liu and colleagues documented “lost in the middle,” the drop in accuracy when the fact a model needs sits in the long middle of a context rather than at either end. More recent work on what’s been called context rot finds the broader pattern: answer quality decays as the window fills with marginal material, even when that material is harmless.
The context window is the reader’s attention span, and it behaves exactly as Zinsser feared a reader’s would. Overspend it and comprehension degrades. More words can produce a worse answer. Token optimization, stripped of the accounting language, is his clutter surgery with a dollar figure attached.
And it isn’t a metaphor that happens to fit. It’s the mechanism. A transformer scores every token against every other token, at quadratic cost in the length of the context, so junk is never skipped. It’s actively weighed against everything else. Those scores pass through a softmax that forces each token’s attention to sum to one. Attention is therefore conserved: every token arrives with a single unit of focus to spend across everything it can see. Add a hundred tokens of clutter and you haven’t added focus. You’ve spread that unit thinner and enlarged the field it has to search. Zinsser’s finite, exhaustible reader was not a figure of speech. It is the softmax.
Before (≈70 tokens, nearly all noise):
I was hoping you might be able to help me out with something. Basically,
I've got this dataset here and I was wondering, if it's not too much
trouble, whether you could maybe take a look and possibly point out any
trends or patterns or anything interesting, if that makes sense?
After (≈15 tokens, all signal):
Identify the three most significant trends in this dataset.
Give the supporting numbers for each.Every cut word (maybe, possibly, if it’s not too much trouble, if that makes sense) was clutter in his exact sense. It cost attention and carried no instruction. Zinsser bracketed every word in a draft that wasn’t working, to see how much survived. Run that test on your prompts. Most of what you bracket is hedging the model was never helped by.
The same goes for the warm-up. Writers spend a paragraph or two clearing their throat before the piece really begins; prompts do it with boilerplate preambles and role-play scaffolding that exist to help you start, not to instruct the model. Find where the prompt actually begins and delete what comes before.
“Tight” is not “short”
Here is where most people misquote him. He never said write less. He said let no word do nothing, which is a different rule and the whole game. A sentence can be long and uncluttered, or short and starved. The test is not length. It is whether anything present is idle.
For prompting this matters, because the cost-cutting instinct (fewer tokens, always) is wrong. A human reader shares your context and fills the gaps. A model shares far less, so good prompting often means adding the detail a person would have inferred. That detail isn’t clutter. It’s doing the work Zinsser demanded of every word.
Over-cut (short, but starved):
Summarize this report.Tight (longer, every clause working):
Summarize this report in five bullets for an executive who hasn't read it.
Lead with the decision they need to make.The second is three times the length and contains no clutter. For an executive who hasn’t read it sets the register. Lead with the decision sets the structure. Cut either to save tokens and you’ve practiced the false economy he warned against. Maximize signal per token, not minimum tokens. It is the writing version of maximizing meaning per word.
The art is what you leave out
Zinsser’s deepest point about craft: writing is choosing what to leave out. A travel essay isn’t everything that happened. It’s the three details that carry the place, and the work is cutting the other forty. Include everything and you’ve abdicated the one job that mattered.
Context engineering is the same subtractive art under a new name. Give the model everything and let it sort out what’s relevant is the amateur move, dumping the notebook instead of writing from it, and it fails for his reason. Bury the one decisive fact among forty documents and the model loses it, the way a reader loses the point in an overstuffed paragraph.
Before:
[full 40-document corpus]
[entire chat history]
[complete database schema]
Which customers churned last quarter and why?After:
[the 2 churn reports from last quarter]
[the schema for the 3 relevant tables]
Which customers churned last quarter and why?Same question. The second answers it better because of the cut, not despite it. The fear is identical in both crafts (but what if they need it?) and so is the discipline. Selected signal beats undifferentiated volume. Curating context is editing a notebook into an essay.
Don’t bury the lead
Zinsser was emphatic that the opening carries a disproportionate load. The first sentence has to seize the reader, because one not captured immediately is gone. Position is a property to exploit, not a neutral container.
Models attend to position in just the way that makes this operational. Attention is heaviest at the start, strong at the end, weakest in the long middle. The lost-in-the-middle finding is not a metaphor for his point. It is the same phenomenon, measured. So the rule transfers without amendment: put the load-bearing instruction where attention is highest.
Before (buried):
[1,500 tokens of background]
Use British spelling throughout.
[800 more tokens of background]After (leading):
Use British spelling throughout. The task is below; background follows it.
[task]
[background]The buried version gives you color and organize half the time, and you blame the model. You put the most important sentence where readers stop paying attention.
The model can’t serve two readers
Unity was Zinsser’s anchor: one voice, one tense, one person. A reader yanked between registers loses the thread even when no single sentence is wrong. A prompt with contradictory targets does the same, and the fix is never better wording of one line. It is choosing one stance and holding it.
Before (fractured — the role and the audience pull apart, the voice lurches):
You are an expert data analyst.
Please review the following JSON array.
{"id": 1, "status": "active", "value": 42}
Hey, make sure the final output is simple enough for a fifth-grader!
After (one stance, one audience, one voice):
You are translating raw database logs into plain language for a non-technical reader.
Explain the status of these records using simple, everyday analogies.
[Log Data]
{"id": 1, "status": "active", "value": 42}Each line of the first is fine alone. The fracture is that “expert data analyst” and “fifth-grader” name two different readers, and the model has to serve both at once. Unity isn’t decoration. It is the model knowing who it’s writing for.
Prompt engineering is writing law
Everything so far is about a single prompt, which is essay-writing, Zinsser direct. But prompt engineering as a discipline isn’t essay-writing. The essayist writes one thing for a reader they can picture. The prompt engineer writes one instruction that has to hold across thousands of inputs they’ll never see. That is closer to drafting law than composing an essay: rules robust to cases you can’t anticipate.
This is the one place his method doesn’t scale, and it’s worth admitting. His instrument was a trained ear. He knew when a sentence would land because he had an intimate, inferred sense of the reader. You can’t hear an input that hasn’t happened yet. The intimacy that made his craft possible is exactly what writing for a distribution removes. His principles still hold. His feedback mechanism does not survive the jump. Which is what evals are for.
Evals are the prosthetic ear
Zinsser could trust his judgment because he could feel the reader. Prompt engineering severs that nerve. You’re writing for a distribution you can’t picture. Evals are the prosthetic: the systematic reader-feedback you build precisely because you’ve lost the ability to sense whether the writing works.
And his most underrated rule maps straight onto them. The writer’s first job is to picture the actual reader and write for that reader, not a flattering imaginary one. A good eval set is chosen the same way, to represent who you’re really writing for and not the easy cases that make the numbers kind.
The easy set is the one you reach for first. Clean inputs, well-formed questions, the prompt’s home turf:
- "Summarize this three-paragraph memo."
- "What's the capital of France?"
- "List the action items from these tidy meeting notes."The honest set is the distribution that actually shows up:
- a memo with the decision buried in paragraph nine
- a question that contradicts a detail in the supplied context
- meeting notes where two attendees disagree and nothing is resolved
- an input long enough that the instruction lands in the lost middleThe first set tells you the prompt works on the reader you wish you had. The second tells you whether it works on the one you’ve got. Zinsser would have recognized the pull toward the first.
When the prompt becomes the program
The ladder has one more rung, and it’s the steepest. As systems move from single answers to autonomous workflows, a prompt stops being a question and becomes control flow. The instruction at the root of an agent doesn’t ask for output. It decides what the agent does next, which tool it reaches for, what it hands downstream. You’re not writing a message anymore. You’re writing the program.
Here bad writing stops being an annoyance and turns structural. A cluttered prompt in a chat costs one wrong answer you correct on the spot. The same ambiguity at the root of a multi-step agent has no human in the loop to catch it.
Watch a few soft words do the damage:
You are a research assistant. Gather relevant information,
prioritize the most recent data, and keep the user updated
as you work.Relevant to what? Recent by what cutoff? Updated how often? Answered once in a chat, you’d shrug and clarify. Run in a loop, each of those words gets re-read at every step, and the readings drift. Step three’s idea of “recent” is not step nine’s. The tight version fixes the readings so they can’t move:
Research one question at a time.
When sources conflict, prefer the most recently published, and
state in one line which source you dropped and why.
"Recent" means published within 18 months. If nothing qualifies,
say so rather than widening the window silently.
After each tool call, write one line: what you learned, what you'll do next.The instruction now decides the same way every time it’s consulted, instead of drifting a little with each pass. Prioritize the most recent data is harmless answered once and corrosive run in a loop, where each step compounds the last one’s reading of it. Confusion doesn’t stay local. It propagates. Lost-in-the-middle becomes lost across the pipeline.
The attention tax compounds the same way. Context in a stateful agent isn’t authored once. It accretes. Every tool result piles into the window until, without the same ruthless selection applied continuously, the system clutters its own context and loses the thread. At this scale Zinsser’s rules aren’t style notes for a chat box. They’re the governing laws of stateful behavior: the difference between an agent that holds its purpose across a hundred steps and one that’s forgotten it by step ten.
What it all serves, and how it rots
Strip every layer and the same rule remains, the one he never stopped repeating: everything is in service of the reader, and the reader’s attention is finite. Clarity, cutting clutter, selection, the lead. None of them were ends. They were servants.
Which is why every layer rots the same way: the instant a proxy starts serving itself instead of the reader.
Optimize tokens for cost alone and you get a system prompt trimmed until it no longer says who the user is: cheap and useless. Optimize an eval for its score and you get a support bot that aces the golden set and irritates every real user it meets. Optimize a prompt to sound clever and you get cleverness admiring its own reflection, which is the writing-to-impress he held in contempt.
The metric is a proxy for the user. The eval is a proxy for the reader. The token count is a proxy for attention. Forget that any of them is a stand-in, promote it to the goal, and the work curdles, in 1976 or now, on the page or in the window.
Say exactly what you mean. Make every token earn its place. Cut to signal, then stop before you cut signal. Put what matters where attention is. Rewrite until nothing is there by accident. And once you can no longer hear the reader yourself, measure.
Prompting well is writing well, aimed at a stranger who takes you exactly at your word and has only so much attention to give.
