Thinkr

Craft

Handoff Is a Document Problem, Not a Meeting Problem

If the spec needed a meeting to be understood, the meeting was patching it — and the patch is not written down anywhere. What handoff is actually for.

Galang Aulia · 5 min read
Craft

Most teams treat the handoff meeting as the moment a spec becomes real. It is usually the moment a spec gets quietly rewritten.

Someone walks the document. Engineers ask questions. The PM answers them out loud. Decisions get made in the room — real ones, about behaviour, limits, and edge cases — and then everyone leaves and nobody updates the document. Three weeks later the spec is wrong, and the only complete record of what was actually agreed lives in four people's memory.

The meeting was not the problem. It was doing repair work on a document that needed it.

The two costs of deciding out loud

Verbal decisions are unreviewed. Whatever scrutiny your PRD went through — a critique, a peer read, a stakeholder pass — the decisions made in the handoff room skipped all of it. They were made under time pressure, by whoever was talking, and nobody applied a single check to them.

Verbal decisions are unavailable. Not to the engineer who joins in month two. Not to QA writing test cases from the document. Not to whoever is paged at 2am and reads the spec to find out what the system is supposed to do. Not to you, in six months, trying to remember why it works this way.

A requirement that exists only in memory is a requirement with an expiry date, and the date is sooner than you think.

What handoff is legitimately for

Three jobs, and none of them is explaining requirements.

Surfacing disagreement. A document cannot argue back. Someone who thinks the approach is wrong will say so in a room and will often not say so in a comment thread — the social cost is lower when it is a conversation. This is the strongest reason to keep the meeting.

Sequencing and dependencies. What order, who is blocked on whom, what can start now. Genuinely conversational, genuinely faster out loud, and mostly not spec content.

The context that does not belong in a spec. Why now, what happened last quarter, which stakeholder is watching. Real and useful, and it would be strange to write it down.

Notice what these have in common: they are all about the work around the requirements. The moment you find yourself explaining what the feature should do, the document has failed and the meeting is absorbing the failure.

The test

After the next handoff, before you close the tab, write down every decision that was made in the room and is not in the document.

That list is your gap report. It is specific, it is free, and it was produced by the people best placed to find the holes — the ones who have to build the thing. Most teams generate this list every sprint and throw it away.

Two things to do with it: put those decisions in the document today, and look at what kind they were. The kind repeats.

The five questions, and what should have prevented them

Handoff questions cluster. Almost all of them map to a section that would have made them unnecessary:

The questionThe section that prevents it
"What happens if it fails / times out / is empty?"Error states
"How many? What's the limit?"Bounded data and thresholds
"Who can do this? What does everyone else see?"Permission rules
"Is X part of this?"The out-of-scope list
"How do we know it's done?"Acceptance criteria

This is the same list that shows up as six ambiguities when you ask for an estimate. It arrives as estimation trouble in one conversation and as handoff questions in the next, because it is the same gap being encountered from two directions.

Which is the useful part: you do not need to guess what to improve. Your handoff meetings have been telling you, every sprint, in the same five categories.

The async version

A handoff that mostly works in writing looks like this: the spec goes out, questions go in a thread attached to it, answers get written as replies, and anything that changes a requirement gets appended to the document itself rather than living in the thread.

Three things improve at once. Answers get written, so they exist. The record is durable and searchable by people who were never in a room. And nobody has to be awake at the same time, which matters more than it used to.

The failure mode to avoid is treating async as a principle rather than a tool. The disagreement job degrades badly in text — people soften, hedge, or say nothing, and the objection surfaces three weeks later as reluctance instead of an argument. Keep synchronous time for that, and let the rest be writing.

One rule

If it was decided in the room, it goes in the document before the room empties.

Not later. Not in the ticket. In the spec, where the next person will look. Five minutes at the end of the meeting, while everyone is still there to confirm you wrote down what they think they agreed to.

Everything else in this post is optimisation. That one rule is the difference between a spec that stays true and a spec that becomes a historical artifact the week after handoff — accurate about what you intended, and quietly wrong about what you shipped.

FAQ

Do we still need the meeting? Yes — for disagreement, sequencing, and context. Not for explaining requirements.

What's wrong with explaining the spec? The explanation contains requirements, and those skipped review and are unavailable to everyone not in the room.

How do I make handoff shorter? Write the answers to the five questions you get asked every time. They cluster.

Should it be async? Mostly. Keep synchronous time for disagreement, which is the one thing that genuinely degrades in text.

New posts and release notes. No spam, unsubscribe anytime.

Stop shipping foggy PRDs.
Start the critique loop.

Three minutes to sign up. No credit card. Cancel by closing the tab.

Start freeSee pricing