Pair Programming Workshop

Pair Programming Workshop

We do a lot of pair programming here at NetSuite Waterloo. We’re big on teamwork and we find that pair programming helps us collaborate on tasks. For a rapidly growing company (the business is growing 30%+, and our office is doubling every year), pair programming is also a great way to onboard new hires and mentor junior developers!

For those unfamiliar with the practice, pair programming is a development technique where two developers work together at one workstation to solve a problem. One person acts as the driver and writes the code, while the other acts as navigator and thinks about the larger problem being solved.

Although we frequently pair already, there’s always room for improvement — we recently held a workshop for all of our developers and QA engineers on how to pair program more effectively. Our Director of Engineering, Eric Gerlach, spoke about the benefits of pair programming, as well as the costs and potential drawbacks of this technique. We learned about the responsibilities of the driver and navigator roles. As the one with the keyboard, the driver’s role in pair programming is obvious. It’s the responsibilities of the navigator that often confuse people.

The navigator should be doing much more than just looking for syntax errors in the driver’s code. Common navigator tasks include:

  • Thinking about unit tests that need to be written
  • Recording future tasks
  • Identifying how the code fits in with the rest of the system
  • Determining the next task to accomplish
  • Researching programming issues on a separate workstation or on their phone

We were also reminded that pairs should actively communicate their thoughts to their partner. This forces developers to verbally articulate a problem, which can guide your brain to view a problem in a different way. Some helpful questions pairs should be asking each other:

  • What are your intentions?
  • What is the next step?
  • What’s the test for this piece of code?
  • Could you drive?

Both members of the pair should look for disengagement from their partner as a sign to take a break or swap roles. After Eric’s presentation we had the opportunity to practice our new pair programming skills. We were randomly assigned pairs and given a real business requirement to implement. It was very helpful to immediately apply the techniques we had just learned.

I love that NetSuite allows us to take an afternoon out of our schedule to enhance our development skills. It shows that NetSuite is committed to developing their employees, and committed to building a better product. I eagerly look forward to our next developer and QA skills workshop.

comments powered by Disqus