Skip to content
Adam Manuel’s “Dev Blog”Could Another Developer Take Over Without a Meeting?

Find your next rabbit hole

A topic, a tool, a tiny curiosity. Start anywhere.

Could Another Developer Take Over Without a Meeting?

On this page21

Reading paths: Start below for the plain-language explanation, or jump to the technical deep dive for implementation details and verification.

I once asked for a handoff complete enough that another developer could take over without talking to me. That is a demanding and useful test for project documentation.

The history records preparation of handoff materials. It does not establish that a new developer successfully used them. That final check would be part of proving the handoff works.

Start with the outcome

A folder tour is difficult to follow when the reader does not know what the system is supposed to accomplish.

Begin with a short explanation of the user, the input, the expected result, and the boundaries of the project. Define what finished delivery would mean.

Then explain the main path through the system in ordinary language before listing files.

Separate written from verified

"Implemented" can mean several things. A feature may exist in code without having been tested against its real dependency.

A useful handoff distinguishes:

StateMeaning
WrittenThe code exists.
Tested locallySpecified local checks passed.
Observed in the target environmentA particular real run was verified.
Still uncertainEvidence is missing or a problem remains.

Include dates where current state matters. Yesterday's working service may not explain today's deployment.

Give the next person a safe first action

Describe how to set up the project, run a limited check, and recognize the expected result. Explain which commands affect external systems before someone uses them.

Document the approved way to obtain access. Do not turn the handoff into a file full of copied secrets.

For known problems, record the symptom, supporting evidence, attempted fixes, and the next useful investigation. That prevents the next developer from repeating abandoned work.

Preserve decisions, not every conversation

A long transcript can contain valuable evidence, but it also contains guesses and superseded plans. A handoff should identify the current decision and link to supporting material when more detail is needed.

Keep large recordings, logs, and other artifacts organized separately from the main guide. Explain what each is useful for.

Give the reader a first-hour route

A new maintainer should not need to read every document before doing anything useful. Start with a short route through the project: understand the purpose, locate the entry point, run a safe check, and inspect one known example.

Each step should say what success looks like. "Run the tests" is less helpful than explaining which check is relevant to the first workflow and what a normal result means.

Keep deeper references available for later. The first-hour route is a map through the material, not a replacement for the full details. It reduces the chance that someone starts with an old experiment simply because its filename looks important.

Document a real path through the system

Choose one representative input and follow it to the expected output. Explain which component receives it, which rules apply, where it is stored, and which external systems it touches.

At each boundary, identify the useful evidence. Where can the reader see the job state? Where does the output appear? Which error would indicate that the next component never received the request?

This path gives the repository map a purpose. Instead of memorizing folder names, the new developer connects files to behavior. Once they understand one path, they can use it as a reference when exploring another workflow.

Explain why unusual decisions exist

A strange-looking rule may protect a customer requirement or work around an external system's limitation. Without that context, a well-meaning maintainer may remove it.

Record consequential decisions with their reason and the conditions under which they could be reconsidered. For example, a fixed concurrency limit may reflect a single shared desktop session rather than an arbitrary performance choice.

Avoid defending every historical decision. Some choices are known compromises or have uncertain origins. Label those honestly. "We have not verified why this exists" is more useful than inventing a rationale that makes the current code sound deliberate.

Separate current instructions from historical evidence

Old runbooks, transcripts, and incident notes are valuable, but they may contain superseded commands. A handoff needs a clear place for the current procedure and a separate path to the history explaining it.

Date the current-state summary and identify the code version it describes where practical. If a deployment differs from the local checkout, say so. Otherwise, the reader may debug behavior using files that are not actually running.

Do not delete useful history merely to make the folder look tidy. Instead, label archived material and link it from the current explanation when it provides relevant evidence. The reader should know what to follow and what to consult for context.

Write a known-problem entry that saves work

A useful issue note contains the observed symptom, the narrowest supported explanation, the evidence location, and the next useful check. It also records failed approaches when they prevent repeated investigation.

For example: "The transfer succeeds, but the final status update sometimes fails. The destination contains the expected file. Check the result-persistence path before rerunning the external action."

That note is more actionable than "File workflow flaky." It protects the reader from repeating an action that may already have succeeded and directs attention toward the unresolved boundary. Keep guesses clearly separate from observations so the next engineer can challenge the explanation without losing the evidence.

Make access discoverable without copying secrets

Document which systems are required, what level of access is needed, and the approved process for obtaining it. Name the owner or team role responsible for granting access where that information is established.

The handoff should not rely on a departing person's private login or an untracked local configuration file. It should also avoid embedding credentials in examples, screenshots, or exported transcripts.

If some access cannot yet be transferred, list it as a blocker with its impact. That lets the team resolve the dependency before it becomes an urgent incident. A complete folder of code cannot compensate for an undocumented permission needed to operate it.

Package evidence so someone can inspect it

Large artifacts need a small index. For each recording, log bundle, or sample input, explain what question it helps answer and whether it contains sensitive material.

Use stable filenames and preserve enough provenance to connect an artifact with its run or code version. An unexplained video called final-final-demo offers little help when several similar workflows exist.

Provide only material appropriate for the recipient and transfer it through the intended channel. The historical handoff preparation included substantial packaging work, but packaging success and understanding transfer remain different outcomes. The archive can be intact while the explanation is still difficult to use.

Define maintenance ownership

A document can be accurate on the day it is written and misleading a month later. Decide which changes should trigger an update: a new entry point, a changed deployment path, a new external dependency, or a revised recovery procedure.

Keep ownership proportional to the project. A small team may need only a clear expectation that the person changing a critical path updates its instructions in the same review.

The important part is that the handoff does not become a one-time ceremony. Its most useful pieces should become normal project documentation that stays close to the work people actually maintain.

Measure independence, not page count

The strongest check is a small task completed by someone who did not write the guide. Can they explain the system's purpose, run the safe example, find a known failure, and identify the next action without private hints?

Record where they hesitate. Those moments reveal missing context more reliably than adding another general architecture paragraph. Revise the guide around the observed gaps, then let them try again with a different small task.

Test the document with a person

Ask another developer to follow the setup and trace one workflow. Note where they need an explanation that is missing from the guide, then improve it.

The measure of a handoff is whether someone can act confidently with it. Creating the document is one step; transferring understanding is the result we want.

Technical deep dive

Plain-language bridge: A handoff works when another person can connect the source, the running system, the evidence, and the next safe action without relying on your memory.

Diagram: Test transfer of knowledge through independent action

[source + configuration + decisions + evidence]
                       |
                       v
                 [handoff guide]
                       |
                       v
          [another person tries one task]
                  /             \
                 v               v
             succeeds          gets stuck
                 |               |
                 v               v
        record tested scope   identify missing step
                                 |
                                 v
                           revise and retry

Completing one independent task verifies that path under the tested conditions. Preparing the guide alone does not establish that the handoff works.

Provide a reproducibility manifest

An illustrative handoff manifest records:

source revision and relevant uncommitted changes
runtime and dependency-lockfile identity
configuration names and where authorized access is managed
database schema/migration state
build artifact identity
deployment target and observed version
verification commands and expected outcomes
known gaps with evidence references

Keep secret values out of the document. Naming the required configuration and its authorized source is different from copying credentials into a convenient checklist.

A source revision alone may be insufficient if behavior depends on an external schema, feature flag, or generated asset. Identify those dependencies explicitly so a reader does not assume the repository completely defines the running state.

For each unusual design choice, record the problem it addressed, considered alternatives, and the condition under which it should be revisited. A decision note is most useful when it explains what would break if someone "simplified" the design without context.

Keep historical rationale separate from current operating instructions. A workaround that was necessary last month may no longer be the correct startup procedure.

Design a first independent exercise

Choose one bounded task: start the application with test data, trace one request, reproduce one known issue, or make a harmless local change and verify it. State the expected result and the point at which the reader should stop if reality differs.

Use a clean environment where practical. Record which undocumented steps the reader needs, which links are inaccessible, and where the instructions assume local knowledge. Those failures are defects in the handoff, not evidence that the reader should have guessed better.

Measure the dependency you are removing

Useful observations include successful independent completion, author interventions, and unresolved access blockers. Elapsed time can help, but separate machine wait from active work and avoid generalizing from a single person's first attempt.

Do not use page count as the success measure. A shorter document with a verified path and precise evidence links can transfer more usable knowledge than a complete transcript.

Keep the evidence fresh

Give volatile sections an owner and a review trigger, such as a deployment change or schema migration. Durable architecture rationale needs less frequent rewriting than commands and environment instructions.

The historical work established preparation of handoff material. Independent completion by a replacement developer remained unverified; the exercise above describes how to close that evidence gap rather than claiming it was already closed.

You made it. Thanks for reading.