Establishing a culture of PairingTopic: Developers
Last week we discussed how pairing can be introduced to a developer or a team of developers. This week, in our final post in the series, we discuss how experience and culture play a key role in effective pair programming.
Pairing is a skill
A team that pairs effectively does so by utilising pairing skills they have learned within a workplace culture that is set up to support pairing as a practice.
The key point to remember here is that pairing is a skill that you learn and improve like any other. As you work in a pairing environment, you acquire the skills to pair more effectively. This is a big part of the reason many developers find pairing difficult at first.
Stick at it and you will learn how to deal with different personalities (also a useful life skill), how to work in a way that supports healthy pairing behaviours (such as ping-ponging) and how to efficiently articulate your intentions and ideas.
Development of a team’s pairing skills can be encouraged using discussion, retrospectives and coding practice alongside any other professional development you would normally do.
Every week the Esendex dev team holds a coding dojo, and we have used these as an opportunity to play with our pairing arrangements. Past examples have involved pairing developers with others they wouldn’t ordinarily work with, randori sessions, or rotating pairs in rapid succession.
A culture that supports pairing
The most valuable asset one has in supporting an effective pairing arrangement is the culture in which the team operates. It is very important to establish a culture of mutual respect, wherein team members are not judgemental, but are able to question and challenge one another’s preconceived ways of working. There is little value in pairing with someone who is not comfortable questioning and challenging the things you do and the assumptions you have made.
As a group, the development team must agree that it is okay to question and challenge one another. Should there be an issue with a pairing arrangement (perhaps because someone is not communicating well, or is hogging the keyboard, or even just needs a break) that it is absolutely okay to say “this isn’t working”, and address the issue (tea helps here).
We have found it helpful to make that agreement explicit within the team, ensuring that all new members are aware of that agreement and also agree to it themselves.
What techniques have you found help you pair effectively? Let us know — we are always looking for ways to improve.