English for Remote Pair Programming: Narrating Code and Sharing Context
Learn the English phrases for remote pair programming: narrating your thinking, asking clarifying questions, sharing context, and switching driver and navigator roles.
Remote pair programming — two engineers collaborating on code in real time over video call — demands a specific register of spoken English. You need to narrate your thinking, ask precise questions, and maintain shared context, all while writing code and managing a call.
The Driver and Navigator Roles
Pair programming uses two roles:
- Driver — the person typing code
- Navigator — the person reviewing, thinking ahead, and guiding
Understanding these roles in English helps you switch between them smoothly.
Suggesting a switch
- “Do you want to take over the keyboard for a bit?”
- “Shall I drive for a while?”
- “Why don’t you navigate and I’ll type — you have a clearer picture of the design.”
- “Let’s swap — I’ve been driving for 20 minutes.”
Handing over
- “I’m going to share my screen now — you should see the editor.”
- “Can you see my terminal? I’ll walk you through what I’m about to type.”
- “I’ll hand over control now. Use the Live Share link.”
Narrating Your Thinking
The most important skill in pair programming is thinking aloud — narrating what you are doing and why, so your pair can follow and contribute.
Narrating what you are typing
- “I’m creating a new function here to handle the database retry logic.”
- “I’m going to extract this into a separate method — it’s getting too long.”
- “Here I’m injecting the dependency rather than instantiating it directly.”
- “I’ll add a guard clause at the top to return early if the input is null.”
Narrating what you are thinking
- “I’m considering two approaches here — let me think for a second.”
- “My instinct is to use a map, but I’m not sure if that’s overkill for this use case.”
- “I’m suspicious of this timeout value — it feels too low for a network call.”
- “Let me just check whether this library handles Unicode correctly before we rely on it.”
Narrating uncertainty
- “I’m not 100% sure about the API contract here — let me pull up the docs.”
- “This is a bit of a guess — I think it works, but let’s add a test to confirm.”
- “I vaguely remember there was a bug in this area — worth checking the git log.”
Asking Clarifying Questions
Remote pair programming requires more explicit communication than in-person — you cannot point at the screen as easily.
Asking about intent
- “What are we trying to achieve with this function?”
- “Is the goal to validate the input or to transform it?”
- “Are we doing this for now or is this the final design?”
Asking about the codebase
- “Where does this get called from?”
- “Is there a test for the existing behaviour before we change it?”
- “What does
UserContextcontain — is it documented anywhere?”
Checking understanding
- “Just to confirm — we want the error to bubble up, not be swallowed here?”
- “So the expected behaviour is: if the token is expired, redirect to login?”
- “Am I understanding correctly that this runs synchronously?”
Sharing Context and Background
When you know something your pair does not, share it clearly:
Giving background
- “A bit of background: this module was written before we adopted the new error handling pattern.”
- “Worth knowing: there’s a known bug here — I’ll link the ticket.”
- “Context: this function is called 10,000 times per second in production — performance matters.”
Flagging a concern
- “I’m going to flag that this approach could cause issues if the network is slow.”
- “One concern: this is not thread-safe as written.”
- “Just a heads-up — we’ll need to update the migration script if we change this schema.”
Giving and Receiving Suggestions
Suggesting without taking over
- “One option would be to use a decorator here — what do you think?”
- “I wonder if a factory function would be cleaner than the constructor approach.”
- “Have you considered making this async? It might simplify the caller.”
Receiving a suggestion
- “That’s a good point — let me try that.”
- “I see what you mean. Let me refactor to see how it looks.”
- “I’d like to understand why that would be better — can you walk me through it?”
Politely disagreeing
- “I see the appeal, but I’m worried that would make it harder to test.”
- “That’s a valid approach. My concern is readability — is there a middle ground?”
- “I’d push back slightly — I think the extra abstraction adds more complexity than it removes.”
Managing the Session
Keeping focus
- “Let’s stay on track — we can refactor that later.”
- “That’s a good idea for a follow-up ticket. Let’s park it for now.”
- “We’ve been on this for 30 minutes — should we take a break or push through?”
Checking in
- “How are you doing? Is the pace OK for you?”
- “Is the audio clear? I want to make sure you can hear me.”
- “Can you see the line I’m editing? It’s line 87.”
Wrapping up
- “Let’s commit what we have and write up the outstanding questions.”
- “I’ll open a ticket for the refactor we discussed.”
- “Good session — we made solid progress on [X]. Next time let’s start with the tests.”
Key Takeaways
- Narrate constantly: tell your pair what you are typing and why.
- Think aloud: “I’m considering… my instinct is… I’m not sure…”
- Use precise questions: ask about intent, context, and expected behaviour — not just “what does this do?”
- Share background proactively: do not assume your pair has the same context you do.
- Suggest without commanding: “one option would be,” “have you considered,” not “just do X.”
- For remote sessions, over-communicate: describe what is on your screen, confirm audio, check understanding explicitly.