Pair programming is an Agile practice we put much focus on at Typemock. It is also one of my favorites. Getting some tasks done in pair with two different partners today got me thinking about the concept and how to keep it effective. It occurred to me that presenting some of these tips can borrow a lot from a ballroom dancing analogy:
– You can’t pull off a good tango all alone with a passive partner; having someone drag you around the floor would be a waste of both your time and I doubt either of you would come out of the experience satisfied. My tip: when working in pair try to be active, and make sure your partner has their eyes on the ball. It will make the dance much more appealing and the code better.
– When doing a slow dance you may stomp your partner’s feet and get your own share of toe-smashing. My tip: if you find yourself arguing a lot when pairing up, it doesn’t matter who started – either way the dance gets out of whack. Try to understand points of disagreement – your own as well as your partner’s – and communicate them in an effective way (and no, a shouting contest is not considered effective here). Something to keep in mind: even if you win the argument your partner may finish the dance on a stretcher and may not even want to dance with you again…
– The good news: toe-stomping gets better rather quickly once you know your dance partner well. In the parallel universe of pair programming: even if it’s hard at first to keep your temper in check it gets easy real fast once you know your partner. Each one will get to know the other’s strong points and defer judgment where the task will benefit.
– Dancing with different partners of various styles makes you a better dancer yourself. Limiting you to one partner means limiting the challenges you face and removing excitement from the equation. In the past I’ve been paired up with several partners and had vastly different experiences: sometimes I am led, while sometimes I lead my partner; sometimes I try not to get in the way of an excellent performance and only make sure we don’t bump into any obstacles or miss any of the taps (i.e. coding conventions, correct testing, etc); I took hold of the keyboard by force, and on other occasions had to force myself sit on my hands to avoid hogging it. The experiences are limitless and enriching.
– You would look mighty silly if you tried Waltzing all alone on the dance floor, while other dances lend themselves better to solo performances. Not all tasks are made for pairing. In our team we assign the ‘thinking tasks’ – new features, spikes, reengineering, design and more – to pairs. Lighter tasks such as preliminary debugging, scripting, external documentation etc. work out more effectively alone.
– Dancing all night is exhilarating but you will end up exhausted and unable to dance the following day; taking a break off the floor will help keep you rested. In Typemock we frequently play a game of Foosball to relax and unwind – it also helps settle any arguments you may have carried over from the pair work J