I started using ChatGPT about 3 years ago. Writing prompts to LLMs came naturally to me because it feels close to how I already think.
When I saw how capable LLMs were at writing code in 2023, I knew I needed to get involved, so I joined an ai coding startup called Augment to learn more and explore this space. I witnessed the evolution of codebase aware code completion to full blown agentic programming. Along the way I learned how to write prompts. Late nights grinding on a problem; trying to get an agent to do what I want. I’ve learned what works and what doesn’t. What follows is less Pragmatic Programmer, more blog post. But in the same spirit.
The interface is a chat box, so we treat it like a chat. We type vague things. We trail off. We ask for “something good about X” and expect the machine to know what “good” means to us.
It doesn’t. The model isn’t thinking. It’s predicting the next most likely token against a blurry average of everything it’s ever read. Where you leave a gap, it fills the gap with the most average thing that could plausibly go there.
Write a contract, not a message. What do you want. How should it arrive. What’s out of scope.
When a prompt goes sideways, it’s almost always because I skipped one of these.
Task. Start with a verb. Draft. Summarize. Critique. Extract. Not “help me with.” Say what the output is.
Context. Who you are, who the audience is, what’s already been said. If you don’t tell the model, it invents a plausible version and you won’t notice until you’re reading the output wondering why it feels slightly off about everything. Always be contexting.
Examples. Show, don’t tell. Two or three samples will do more than any adjective.
Persona. “You’re a senior editor at a literary magazine.” We’re not cosplaying here. You’re telling the model which slice of its training to lean on: how editors talk, what they pay attention to, what references they reach for. Otherwise you get a blurry average of every voice at once.
Format. Headings, bullets, tables, word count, tone. If you don’t pin it down, the model picks average. It always picks average.
I wrote a post a while back called Thinking Debt, about what happens when you let a coding agent implement features while you just review the diffs. You’re still shipping. The commits have your name on them. But a gap keeps widening between what the code does and what you actually understand about it. Like technical debt, except degrading the level of collaboration possible because conversations between humans are mediated by “asking the agent” what it did.
Prompting is the counter-move. When you prompt well, you’re forced to articulate what you actually want. Audience, constraints, the shape of a good answer, the edges of the problem. You actually have to think. It’s uncomfortable at times. It’s also the whole game.
If your head is cloudy, no trick saves you. The clever phrasing, the persona, the “take a deep breath and work through this carefully.” None of it does anything if you can’t finish the sentence I want X, which looks like Y, for the purpose of Z. The prompt is the externalized version of your clarity. The model mirrors whatever you brought.
Think step by step. Add this to anything involving reasoning. The model reasons by writing. Let it write, and it reasons better.
Self-critique pass. Never take the first draft. “Identify the three weakest parts of this. Rewrite to address them.” The model usually knows what’s wrong. You just have to ask.
Confidence rating. Hallucinations happen when the model feels pressure to sound certain. “Rate your confidence 0 to 100 for every factual claim. If you don’t know, say so.” Give it permission to fail and it stops lying.
Adversarial brainstorm. Don’t ask for one answer. Ask for three distinct approaches, then tell the model to tear each one down, then synthesize what survives. Closer to real thinking than any single shot.
After three years I don’t think of prompting as a bag of tricks. It’s a discipline of articulating intent.
The machine is a mirror. It’s as sharp as what you put in front of it, and no sharper. Which is, weirdly, kind of a gift. The tool we thought would replace thinking turns out to punish us for being vague and reward us for being honest about what we want.
Stop treating the prompt box like a wishing well.
Treat it like a brilliant, literal colleague with a lack of context. Tell them what you need. Tell them what good looks like.
Prompting is easy, and easy things can be overdone. I can keep typing, but that doesn’t replace thinking. You get out what you put in. The discipline is putting in enough. And then, knowing when to stop.
