Docs That Lie Are Worse Than Missing Docs

Learn how to write trustworthy docs with clear READMEs, tested examples, and explanations that stay true as code changes.

Docs That Lie Are Worse Than Missing Docs

Have you ever opened a project README, read it from start to finish, and still had no idea how to run the thing? The problem is rarely a lack of documentation. It is documentation nobody trusts.

Communicate the central idea — trustworthy documentation versus documentation that rots — in a clean editorial opening for the article.
Communicate the central idea — trustworthy documentation versus documentation that rots — in a clean editorial opening for the article.

The problem isn't a lack of docs; it's docs nobody trusts

Every team has a full docs/ folder. Nobody reads it. Because the first time someone followed a step-by-step guide and it was wrong, the docs became fiction. From then on, everyone goes straight to the code or asks in chat.

Good docs aren't long docs. They're docs you read and trust. Everything else in this article is about earning that trust.

The README answers the first 5 questions

When someone opens your repo, they usually have five questions, almost always in this order:

  1. What is this?
  2. How do I run it locally?
  3. How do I run the tests?
  4. How do I contribute?
  5. Where do I ask for help when I get stuck?

If the README answers these five questions within thirty seconds of reading, it has done its job. Everything else is a bonus. And be careful: everything you put before those answers — a pretty badge, the project's history, an architecture diagram — becomes an obstacle between the person and what they need. Push that content further down.

Explain why, not just how

The how is already visible in the code. retry(3) is obvious to anyone reading the line. What nobody can guess is why three instead of five. Or why a retry exists at all.

Docs that only describe what the code does are redundant and age quickly: the code changes, and the docs start lying. Docs that explain the decision survive refactoring. So record the reason, the trade-off, and the approach you tried and abandoned. git blame won't give you that at two in the morning.

Docs far from the code are dead docs

Documentation that lives in a forgotten Confluence space dies the day after deployment. Nobody updates what they don't see in their normal workflow.

Bring the explanation closer to what it describes:

  • A README at the root of each module, not just at the repo root
  • A comment above the strange function, explaining what makes it strange
  • A short ADR — one decision, half a page — in the project folder itself

The shorter the distance between the code and its explanation, the more likely the explanation is to remain true when the code changes — because it is there, in the same diff, asking to be updated.

An example is worth more than three paragraphs

Nobody reads the textual description of a parameter. Everyone looks for the example, copies it, and adapts it. A code block that runs teaches faster than any carefully written prose.

Even better: an example that is tested. If the README snippet runs in CI — even if it's just a simple test that executes the example — it can never lie for long. Docs that break the build when they become outdated practically maintain themselves. It's the cheapest trick for preventing rot.

Docs that lie are worse than missing docs

Missing docs are honest: you know you'll have to ask someone or read the code. Docs that lie cost an hour following a path that no longer exists — and they also destroy your trust in everything else that is written.

So treat docs like code:

  • Deleted a feature? Delete its docs in the same PR.
  • Changed a step? Change the text now, not "later."
  • Won't maintain it? Delete it.

A README with three true lines is worth more than thirty lines of lies. Write less, but write what is true today. Documentation doesn't die because it's short — it dies because it's false.

Did you enjoy this article?

Share it with your friends and help spread knowledge!