Table of contents
- Quick read
- Readiness check
- Start with one testable question
- Assign driver, navigator, and note taker
- Time-box the first block and measure progress
- Share the smallest useful context
- Record decisions while pairing
- End with a handoff the next shift can run
- Review the session's value afterward
- Role brief
- Frequently asked questions
- Sources
Is the handoff ready?
Use these checks before access expands or the first ticket begins.
Question
Ready: One behavior, environment, and evidence source are named.
Needs work: A broad goal such as improve quality.
Roles
Ready: Driver, navigator, and note taker are assigned.
Needs work: One person talks while the other watches.
Context
Ready: Only the needed screens, logs, and test data are open.
Needs work: A desktop full of unrelated tabs and customer records.
Handoff
Ready: The next command or test is written and accepted.
Needs work: A note that says continue investigating.
Start with one testable question
A pairing session should begin with one question that the pair can answer or narrow in the time available. Write the question in the ticket before the call, such as why a retry loop stalls after a timeout. A broad goal like improve the checkout flow will pull the session in several directions. The question should name the behavior, the environment, and the evidence the pair will inspect.
Choose a question that benefits from two people. Debugging a race condition, reviewing a risky migration, or walking through an unfamiliar module are good candidates. Reading documentation together usually is not. If the work can be done alone with a written note, cancel the session and protect the focus time. Protect the session from turning into a routine status update.
Time-box the first block and measure progress
Start with a short block, usually twenty-five to forty minutes, and check whether the pair has learned something useful. Progress can be a confirmed reproduction, a ruled-out cause, or a smaller question. A session that only produces more discussion has not earned another block. Stop and rewrite the question before continuing. Write the check result in the ticket before starting another block.
Use a visible timer so the pair does not drift past the agreed end. At the check, ask what changed in the evidence and what remains unknown. If the pair is close to a result, extend once with a clear stopping point. If not, end with a written next action rather than an open call. Record the stopping point in the ticket.
Record decisions while pairing
Write decisions in the ticket while the pair is still talking. Capture the question, the evidence inspected, the conclusion, and the next action. Do not wait until the end, when the details have already blurred. A short note written during the session is more reliable than a polished summary later. Use the ticket's own comment stream, not a private file.
Distinguish a decision from a hypothesis. A decision changes the plan or the code; a hypothesis still needs a test. Label each one so the next engineer knows what is settled. If the pair disagrees, record both positions and the evidence that would resolve them. The ticket should let a reviewer follow the reasoning without watching the recording. That label keeps the next session honest.
End with a handoff the next shift can run
End the session with a handoff that names the next command, test, or question. The note should say what to run, what result to expect, and what to do if the result differs. Link the branch and the failing test so the next engineer does not rebuild the environment. A handoff that says continue investigating is not a handoff. Name the person who will run it.
Ask the person who will pick up the work to read the note before the call ends. If they cannot explain the next step, revise the note while everyone is present. Record the time of the handoff and the person who accepted it. The session is complete when the work can continue without the original pair. That read-back is the acceptance check.
Review the session's value afterward
After the session, compare the time spent with the result. Did the pair answer the question, narrow it, or discover that the ticket was wrong? A session that produced a clear no is still valuable because it prevents wasted work. Record the outcome in the ticket rather than in a private note. Record the outcome directly beside the original question.
Look for patterns across sessions. If the same module requires repeated pairing, the documentation or the test coverage may be weak. If the offshore engineer never drives, the access model may be too restrictive. Use the pattern to improve onboarding or the ticket template. Pairing should reduce future dependence, not create a permanent meeting. Review the pattern once a month, not after every call.
Copy-ready brief
Put the operating agreement in writing.
The ticket names the question, branch, test, and environment before the call.
The pair rotates roles, keeps a timer, and records decisions live.
The next engineer reads the note and confirms the next step before the call ends.
Frequently asked questions
How long should a pairing block last?
Start with twenty-five to forty minutes, then check whether the evidence changed before extending once.
Who should drive?
Both engineers when access allows; a session where one person only watches is a demo, not pairing.
What belongs in the session note?
The question, evidence, decisions, rejected hypotheses, and the next command or test.
Sources
- Google Technical Writing courses
Concise written handoff and meeting-note practices.
- NIST Secure Software Development Framework
Review and evidence expectations applied to pairing notes.
- GitHub Docs, about pull request reviews
Review record conventions used in the handoff.
