Writing a README people use
The front door of every project — what it must answer, and in what order.
- List the questions a README must answer
- Order a README so a newcomer succeeds fast
- Write for the reader who has never seen the project
The README is the first thing anyone sees — a teammate, a contributor, an agent, future-you. A good one gets a stranger from "what is this?" to "it's running" in minutes. You learned to read docs; now you write the most important one.
The questions a README must answer
In roughly this order, top to bottom:
- What is this? One or two sentences. What it does and who it's for.
- How do I run it? Prerequisites, install, and the command to start it — copy-pasteable.
- How do I use it? A minimal example of the main thing it does.
- How do I develop/test it? For contributors: build, test, conventions.
- Where do I learn more? Links to deeper docs, license, contact.
A newcomer reads top-down and should be able to stop as soon as they have what they need. Put the highest-value, most-common information first.
Write for someone who knows nothing
The curse of knowledge is the enemy of a good README. You know the project; your reader doesn't. Concretely:
- Spell out every setup step — the one you do automatically is the one they'll miss.
- Make commands copy-pasteable and tested; a command that doesn't run is worse than none.
- Prefer a working example over prose. People copy the example.
Keep it honest and current
A README that describes how things used to work erodes trust fast. Update it in the same commit as the change it describes, and delete anything you're not keeping accurate. A short, true README beats a long, stale one.
Test it on a stranger: the real check is whether someone who has never seen the project can follow your README to a running state without asking you a single question. If they get stuck, the README — not the reader — has the bug.
Where to go next
The README documents the project from outside. Next: docstrings and comments — documenting the code from the inside, and knowing when not to.