learn-tech-writing-with-phoebe / Session 1 of 8
Learn Tech Writing with Phoebe · Session 1 of 8

Why docs fail: the audience equation

Most technical docs fail before the first sentence is written, because nobody decided who they were for. Today you get the one formula behind every good doc, and you meet Pulse, the undocumented pipeline we'll document together for eight sessions.

🟢 Easiest Practitioners Data & AI teams Anyone who writes READMEs 45 min live + self-study depth
0-3 · Welcome 3-18 · Concepts (live cards) 18-40 · Build-along on Pulse 40-45 · Q&A
Part 0

Why this session exists

You already write docs: READMEs, design notes, runbooks, that one wiki page nobody reads. This course makes them the kind people actually use, using the same sources Google trains its own engineers on. Every session works on one real artifact: Pulse, a small CSV-to-metrics pipeline that ships in this repo with working code and zero documentation. By Session 8 it has a doc set you'd be proud to inherit.

Live - presented in session Self-study - read after class ★ Try it now exercise Sources: Google TW One + Write the Docs
★ What you walk out with today The good-docs formula (the single idea underneath everything else in this course), a written audience statement for Pulse, and a doc plan that maps every doc Pulse needs to the session where we'll build it. Cards marked "Live" are what we do together; "Self-study" cards give you full source depth at your own pace.
Part 1 · covers Google TW One "Audience"

The good-docs formula 7 min live

Google's Technical Writing One opens with an equation, not a grammar rule. Everything you will ever decide about a doc - what to include, what to cut, which words need defining - falls out of this one line.

What your readers need to know to do the task skills + knowledge required - What they already know today their current skills + context = What your doc must say nothing more, nothing less Overshoot the gap: you re-explain what a CSV is to a data engineer, and they leave. Undershoot it: you say "just rerun the DAG" to a new analyst, and they're stuck. Every doc decision is an estimate of this gap. Write the audience down first, then the doc.
🔍 Click to zoom - the good-docs formula, from Google Technical Writing One's audience unit
LiveAudience analysis in three questions3 min▶

Before writing anything, answer three questions in writing. Not in your head - in writing, at the top of your draft. It takes two minutes and changes every sentence that follows.

  • Who are they? Their role, not their name: "data analysts new to the team", "the on-call engineer at 2am", "future me in six months".
  • What do they already know? Assume real knowledge honestly. An analyst knows what a CSV is; do not explain it. They may not know your team's alert conventions; do explain those.
  • What do they need to DO after reading? Docs exist so readers can act: run the pipeline, choose a config value, decide whether to page someone. If you can't name the action, you don't have a doc yet, you have a diary.
★ Try it nowPick the last doc you wrote (a README, a wiki page, a long Slack post). Answer in one line each: 1. Who was it for? 2. What did they already know? 3. What could they DO after reading it? If question 1 has two very different answers (say, analysts AND executives), that's usually two docs pretending to be one.
Real world

The two-audience README. A data team's README opened with an architecture philosophy essay (for engineers) followed by click-here screenshots (for analysts). Engineers skipped the screenshots, analysts bounced off the essay, and both groups DMed the author anyway. Split into a README plus a separate quickstart, the DMs stopped within a week. Same content, right gaps.

LiveThe curse of knowledge2 min▶

The curse of knowledge is the single biggest enemy of technical writing: once you understand something, you literally cannot remember what it was like not to understand it. The expert who built the pipeline is the worst-placed person to guess what a newcomer needs - and usually the person writing the doc.

You cannot cure it, but you can compensate:

  • Name the assumed knowledge explicitly. "This guide assumes you can run Python scripts from a terminal" turns an invisible assumption into a checkable prerequisite.
  • Test on a real newcomer. One fresh reader following your doc, while you stay silent, finds more gaps than three expert reviews.
  • Watch for insider vocabulary. Every unexplained team-ism ("the staging thing", "Dana's fix") is a wall for the reader you claimed to write for.
Writing tip The words "just", "simply" and "obviously" are curse-of-knowledge alarms. If it were simple for your reader, they would not be reading your doc.
Self-studyWriting for a global audience2 min read▶

Most technical docs are read by more non-native English speakers than native ones. Google's guidance is blunt: prefer simple words, short sentences, and zero idioms. "A piece of cake" costs a translation lookup; "easy" costs nothing.

  • Drop cultural references and sports metaphors. "Hit it out of the park", "punt on this" and "the whole nine yards" all die in translation.
  • Prefer standard American spelling and unambiguous date formats (2026-07-17, never 07/06/26).
  • Simple vocabulary is not dumbed down. The technical terms stay exact; it's the connective tissue around them that gets plainer. "Utilize the aforementioned methodology" and "use this method" carry identical information.
Part 2 · covers Google TW One "Documents"

Documents that declare themselves 6 min live

Readers give a new doc about thirty seconds before deciding to read on or close the tab. Good docs spend those seconds declaring three things: what this covers, what it doesn't, and who it's for. Google calls these scope, non-scope, and audience statements.

Reader lands from search, a link, or a panicked Slack ping Scans for 30 seconds title · first paragraph · headings "is this doc for me, right now?" Reads - the gap matches Skims to one section, acts Leaves - and DMs you instead Scope + audience statements in the first paragraph are how you win the 30-second scan.
🔍 Click to zoom - the thirty-second reader, and what your first paragraph must do
LiveState scope, non-scope and audience up front3 min▶

The highest-leverage sentences in any doc are the ones that tell the reader whether to keep reading. Google's pattern is three declarations, right at the top:

StatementPatternPulse example
Scope"This document explains how to...""This guide explains how to run the Pulse pipeline end to end."
Non-scope"This document does not cover...""It does not cover adding new event types; see the reference."
Audience"This document assumes you...""It assumes you can run Python scripts from a terminal."

Non-scope statements feel like admitting weakness. They are the opposite: they save the wrong reader ten minutes, and they save you the support conversation afterwards. A doc that quietly hopes to serve everyone serves no one.

★ Try it nowWrite the three statements for a doc you owe someone right now: This document explains ... This document does not cover ... This document assumes you ... If the non-scope line was hard to write, your doc's scope is probably too big.
LiveFront-load the key point2 min▶

Busy readers read the first paragraph and the headings, then decide. Google's rule: state your key points at the START of the document - the conclusion, the recommendation, the one number that matters. Academic writing builds to a conclusion; technical writing leads with it.

  • Page one is the whole doc for half your readers. Make sure the thing you'd most want them to know survives if they stop there.
  • The same rule fractals down: the first sentence of each paragraph carries that paragraph (Session 3 makes this precise), and the first paragraph of the doc carries the doc.
Real world

The buried migration deadline. A platform team announced a breaking change in paragraph nine of a wiki page, after eight paragraphs of background. Three teams missed it and broke in production. The postmortem action item was one line: "put the deadline in the first sentence." Front-loading is an incident-prevention technique.

Self-studyCompare to what readers already know2 min read▶

The fastest way to teach a new concept is to anchor it to one the reader already has. Google recommends explicit comparisons early in a doc: "Pulse is like a tiny Airflow DAG with three fixed tasks" tells a data engineer 80% of the architecture in one sentence.

  • Pick anchors from the audience statement. The comparison only works if the reader actually knows the anchor - this is the formula again.
  • Say where the comparison breaks. "Unlike Airflow, there is no scheduler; you run the steps by hand" prevents the anchor from over-teaching.
Part 3 · covers Write the Docs "beginner's guide" + "mindshare"

Why write docs at all 4 min live

Write the Docs' beginner's guide makes the selfish case first: writing docs improves your own code and buys back your own time. The altruistic case (onboarding, bus factor) is real, but the selfish case is what gets docs written on a Tuesday afternoon.

LiveThe selfish case for documentation2 min▶

Four returns you collect personally, before anyone else benefits:

  • Writing docs finds design flaws. Explaining an interface in prose is the cheapest usability test that exists. If the run order is hard to explain, the run order is the bug.
  • Docs answer questions while you sleep. Every question a doc answers is a DM you never receive. The README you write once outworks the explanation you give weekly.
  • Future you is a stranger. Six months from now you will know none of what you know today. The doc is a letter to that person.
  • Docs make work legible to the people who rate it. An undocumented system is invisible in a promo packet; a documented one is an asset someone else can point at.
Data team tip For pipelines specifically, the question "why is today's number weird?" arrives on a schedule. A doc that explains the alert threshold and the known failure modes converts a recurring meeting into a link.
Self-studyBuilding doc mindshare in a team3 min read▶

Write the Docs has a change-management playbook for teams where "we should document this" always loses to the sprint. The moves, in order:

  • State the problem with receipts: count the repeated questions, the onboarding weeks, the incident minutes lost to tribal knowledge. Make the cost visible before proposing the cure.
  • Start where you are: one team, one system, one good doc set as the demo. Pulse plays exactly this role in this course.
  • Make writing easy: templates, a known home for docs, and a norm that docs ship with the change (Session 7 wires this into CI).
  • Keep a rhythm: docs reviewed in the same meetings as code, dead pages deleted on sight. A small set of fresh docs beats a large set of stale ones.
Build-along 1 of 3

Meet Pulse, and feel the pain ★ 7 min · everyone follows

Pulse lives in this repo under pulse/: three Python scripts, a config file, sample data, and one NOTES.txt someone left behind. It works. It is also completely undocumented - on purpose. Your first job is to experience it as the newcomer.

Open the pulse/ folder and look at the file list only - no opening files yet. Guess: what does this thing do, and how would you run it?

Now try to answer three questions a new teammate would actually have, using anything in the folder: How do I run it, and in what order? Which event types are valid? What does the LOW alert on a day mean?

Time yourself. Note WHERE each answer was hiding: run order is implied by nothing, valid types hide in config.yaml, the alert logic hides in metrics.py.

Read NOTES.txt, the only prose in the folder. Every fact in it is true. Count how many times you have to re-read a clause to extract one fact - we fix exactly this in Session 2.

★ The point of the pain Everything you just felt - the guessing, the code-reading, the unparseable notes - is what every newcomer feels in every undocumented repo, including yours. Keep that feeling. It is the audience-empathy engine for the next seven sessions.
Build-along 2 of 3

Write Pulse's audience statement ★ 7 min · build your own

Apply Part 1 for real: decide who Pulse's docs serve, in writing. This file becomes the first commit of the doc set, and every later doc gets checked against it.

Create docs/AUDIENCE.md in your copy of the repo (or any scratch file if you're reading along).

Fill in the template below. Be honest in the "already know" column - that honesty is the formula working.

Sanity-check with the gap test: for each audience, name one thing you must NOT waste their time explaining, and one thing you must never skip.

docs/AUDIENCE.md template# Who Pulse docs are for ## Primary: new data analyst on the team - Already knows: Python basics, CSVs, what a metric is - Does not know: our repo layout, run order, alert conventions - Needs to do: run the pipeline locally and interpret daily_metrics.csv ## Secondary: on-call engineer, 2am - Already knows: everything above, plus our infra - Needs to do: diagnose a LOW alert day and decide whether to escalate ## Also serving: future maintainers (including future us) - Needs to do: change config or add an event type without archaeology
Writing tip Notice what the template forces: an action verb for every audience. "Needs to understand the architecture" is not an action; "needs to add an event type without breaking clean.py" is.
Build-along 3 of 3

The doc plan: what Pulse needs, and when we build it ★ 8 min · build your own

With the audience written down, the doc list almost writes itself: match each audience action to the doc that serves it. This plan is also your map of the course - every line lands in a specific session.

Create docs/PLAN.md and copy the skeleton below.

For each doc, write one line: which audience it serves and what they can DO after reading. If you can't fill the action column, cut the doc.

Mark the one doc you'd write first if you only had an hour. (Almost everyone picks the README - which is why it's Session 4's milestone.)

docs/PLAN.md skeleton# Pulse documentation plan | Doc | Serves | After reading, they can... | Built in | |-----|--------|---------------------------|----------| | README | new analyst | run the pipeline end to end | Session 4 | | How-to: diagnose a LOW day | on-call | resolve or escalate an alert | Session 5 | | Reference: config.yaml | maintainers | change any setting safely | Session 6 | | ADR-001: why UTC everywhere | maintainers | understand the tz decision | Session 6 | | CHANGELOG | everyone | see what changed between runs | Session 6 | Rule: no doc without an action. No audience without a doc.
Real world

The plan that killed a wiki. A team ran this exercise on their 40-page wiki and found 28 pages served no audience action at all - meeting notes fossilized as "documentation". They archived them, kept 12, and search suddenly worked. A doc plan is as much about what you refuse to write as what you write.

Homework

Try it yourself - this week ◐ 30-45 min total

Source material

Official sources covered

This session teaches the working content of these source units. What stays with the originals: Google's in-class facilitated exercises (facilitator guides are free) and the full Write the Docs guide prose.

✓Google TW One · Audience10 min unit · Part 1: the formula, curse of knowledge, global audience
✓Google TW One · Documents10 min unit · Part 2: scope, non-scope, audience statements, front-loading
✓Google TW One · Introduction3 min unit · Part 0 framing
✓Write the Docs · A beginner's guide to writing documentationPart 3: the selfish case, what docs buy you
◐Write the Docs · Building documentation mindshareSelf-study card: the change-management playbook; full essay at writethedocs.org
Check yourself

Three questions before you go 🎯 ◐ 90 seconds

1 · The good-docs formula says a document should contain...

The subtraction is the whole trick. Option B without the subtraction is how you end up explaining CSVs to data engineers.

2 · Your doc keeps getting "quick question" DMs from people who clearly opened it. Most likely missing?

Readers who can't tell in 30 seconds whether the doc answers their question fall back to DMing the author. The declarations at the top are the fix.

3 · Which line in a doc plan should make you CUT the doc?

No action, no doc - that's Demo 3's rule. Small audiences and short docs are both fine; actionless docs are diaries.

Session 1 cheat sheet · pin this

The formulaDoc content = what readers need to know - what they already know. Every cut and every inclusion is this subtraction.
Audience analysisWho are they · what do they know · what must they DO after reading. In writing, before drafting.
Curse of knowledgeYou can't unknow what you know. Name assumptions, test on a newcomer, ban "just" and "simply".
Three declarations"This explains..." · "This does not cover..." · "This assumes you...". Top of every doc.
Front-loadKey point in the first paragraph. Half your readers read only page one - serve them anyway.
The selfish caseWriting docs finds design flaws, answers questions while you sleep, and briefs future you.
No action, no docEvery planned doc names what the reader can do afterwards. Otherwise it's a diary - cut it.
Pulse statusAudience statement ✓ · doc plan ✓ · everything else still painfully undocumented. README lands in Session 4.