Pair Programming at Planet Argon
We’re proud of the collaborative and supportive culture we’ve created at Planet Argon, and one major factor contributing to this culture is our commitment to pair programming. Pair programming (pairing) is the practice of two developers working together to complete a task, fix a bug, or solve a problem. Scheduled pairing sessions last roughly 90 minutes and are generally used to tackle a project-related issue encountered by one or both of the developers.
How Pairing Works at Planet Argon
Section titled “How Pairing Works at Planet Argon”Planet Argon encourages the use of Llewellyn Falco’s “strong-style” pairing. In this method, one developer takes on the role of the “driver” and the other takes on the role of the “navigator”. The driver is one at the keyboard writing out code. However! They are not allowed to write code without the navigator telling them what to type first. The navigator’s role is to decide on what code should be written and how, which the driver then types out.
Does this sound complicated and challenging? Good! That’s a big part of why we do it. As Falco states, the golden rule of strong-style pairing is “For an idea to go from your head into the computer, it MUST go through someone else’s hands.” In order to effectively do this, the navigator has to be able to clearly explain what they want the driver to write and why, and the driver has to fully listen. This practice in communication has multiple benefits:
- Develops trust between pairing partners.
- Encourages discussion about proposed technical solutions before any code is written.
- Requires partners to recognize and use shared language.
- Passes app-, domain-, and tool-specific knowledge between pairing partners.
After a few successful strong-style pairing sessions, developers should not only be resolving issues in their code quicker, but also learning new keyboard shortcuts, dev patterns, and terminology.
Pair Programming Tools
Section titled “Pair Programming Tools”You’ll need a few tools on your computer to successfully pair with a member of our fully distributed engineering team:
- An IDE - we prefer VSCode as it has plugins that make pairing easier if your machine is not compatible with Tuple
- Tuple - this is a two-way screen sharing system that allows users to both interact with and type in a single codebase on one user’s machine. This is our preferred pairing method.
- Zoom - It’s certainly possible to pair using Zoom and have the driver simply share their screen. This is not ideal because in order to switch roles, the code must be committed then opened on the same branch.
- Alternatively, Slack’s huddle feature allows for screen sharing, too.
Types of Pairing Sessions
Section titled “Types of Pairing Sessions”There are two types of pairing sessions we use at Planet Argon: Scheduled and One-Off.
Scheduled: Most of what this page discusses refers to the scheduled pairing sessions. These are regular sessions that are on your calendar and follow the strong-style format. As you’ll see below, only full-time employees (FTEs) participate in scheduled sessions, and while these sessions are often used to solve project-specific issues, you can certainly spend this time pairing on a Quarterly Study or professional development project.
One-Off: One-off sessions must be specific to a billable project task. They only loosely follow the Planet Argon pairing standards and can involved both FTEs and contractors. They don’t need to follow the strong-style format and don’t need to last for any specific length of time – in fact, because they are billable hours, the quicker the pair can solve the issue the better. These are coordinated by project devs and do not need approval by a PM or manager. However, if a project budget is being spent too fast because of one-off pairing sessions, your PM might ask to reduce the number or duration of these types of sessions for that project.
Pairing Breakdown per Role Type
Section titled “Pairing Breakdown per Role Type”How and when a developer pairs depends on whether they are a full-time employee at Planet Argon or a contractor. The following is the current make-up of the team and the types of pairing sessions in which each type of role may participate:
| Full-Time Employee | Contract Developer |
|---|---|
| Erin Claudio | Jaison Coelho |
| Brian Middleton | Liz Pantalone |
| William Mena | Sergiu Truta |
| William Weber | |
| As a full-time employee, these developers… | As contractors, these developers… |
| are part of the pairing schedule | are not part of the pairing schedule unless it is scheduled as part of their assigned project work |
| can pair on any project issue | may pair on project-related issues for which they have been approved to bill |
| can pair on non-project topics, such as general development basics (mentoring) or Quarterly Studies | must be approved in writing (email, generally) to pair on non-project topics |
Team Pairing
Section titled “Team Pairing”The following is the agenda you’ll see in your pairing calendar event. Please try to keep each pairing session consistent and productive!
Calendar Agenda description
Agenda:
1. JIRA Board grooming (~5-10 minutes) -- what issues are in-progress and would be appropriate for pairing?
2. Pair Programming (~1.25 hours) -- a. Collaborate on issue(s) until they are at a good stopping place. b. Use the strong-style pairing method. c. Commit frequently. d. Switch roles at least once during the session. e. Push your branch(es) at the end of each session.
Question: Where do we log time for this?Answer: Log your time to the client project(s) like you normally would if you were working independently. Make sure to include the issue # in the Harvest time entry description.
3. High-fives! 🙌🏻
FAQs.
Q. Should both participants in the pairing session bill their time to the client?A. Yes! The PA Handbook considers pairing to be "any activity where 2 or more people work alongside each other and they are each past their first 2 weeks.We bill clients for each person's time."
Q. What happens if one of us is on vacation?A. The default is to just skip that week -- but if you're able to sort out a backup plan with someone else, feel free to do that.
Q. What happens if one of us is out sick?A. Try to reschedule, if possible.Pairing with Planet Argon CEO Robby Russell
Section titled “Pairing with Planet Argon CEO Robby Russell”Robby isn’t on the team pairing schedule, but he’s happy to pair with you nonetheless! You can summon Robby to a pairing session by using this Calendly link to find a time that he’s available. Reach out via Slack if it’s urgent!