A Student Asks about Pairing

I gave a talk the other day at the Flatiron School here in NY, and had a great follow-up discussion over email with one of the students, including a number of questions about Pivotal. She and I decided to open source the discussion so everyone could see one Pivot’s thoughts on the questions she had:

Christina: I’m curious about pair programming and would like to learn more about your experience working at Pivotal Labs. How does pair programming actually work?

Trace: Pairing just means we both work together simultaneously, but beyond that there are many ways to do it. When creating new code, a favorite idiomatic way to do it is ping-pong pairing. One person writes a test, then (sometimes) says ‘ping,’ then the next person writes the code and the next test, then says ‘ping’ etc. You can get a great groove going that way. There’s also ‘driver-navigator’ where the navigator is the brains and doesn’t touch the keyboard, then tells the driver what to do and they type it. that’s a great way to teach and learn if the navigator has knowledge and context and the driver does not. Much of the time pairing is just free-form and collaborative, especially when planning architecture or investigating bugs.

Christina: Do you work with the same person on every project? Do you choose who you work with?

Trace: Our project has 20 devs in 5 teams of 4. We choose a new person to pair with every 1-3 days within our team, and rotate teams every 2-3 months. We also often cross-pair with members of other teams. At Pivotal it ranges from larger projects like mine to smaller 1-pair projects where the same two folks work together for a few weeks.

Christina: Are you paired with someone with the same level of skills/experience?

Trace: I’m sometimes paired with people who don’t know things I know, and I get to teach them while pairing. There are also a lot of people who know many things I don’t, and they get to teach me. Much of the time folks are about the same level but because breadth of knowledge is so vast, there are always things to teach and learn.

Christina: What is the average length of a project? do you work on each one from start to finish or do you rotate and work on projects at various stages of development?

Trace: Projects tend to be about 2-3 months. Some as short as 3 weeks for a startup’s Minimum Viable Product, sometimes 6 months or longer for a large government application or a project for an established business. Pivots often switch projects every three months or so, sometimes it takes a bit longer on the larger projects.