Practices and Values• Practices are evidences of values• Practices implemented in most effective way possible, shows that I value “values”.
Pair Programming – What is it? • Better work together more quickly than either could alone. • The driver types – focus on tactics - writing clean code • The navigator - focuses on strategy - how the code fits into the overall design, refactoring, tests etc. • They switch every few hours to share perspectives and knowledge. • Knowledge sharing within the team is good and the team knows the total code base better.
How to do it?• Pair on everything you need to maintain• Switch partners when you need a fresh perspective• Pair with different people throughout the day• Sit comfortably• Switch driver and navigator roles frequently• Collaborate and converse!
How to do it?• Have design discussions and agree upon as a pair what’s intended to be done.• Agree on one tiny goal at a time• Rely on your partner, support your partner.• Talk a lot• Switch roles often• Write unit test first• Pay attention – don’t check your email, facebook etc• The person who knows less about the system or language should do most of the driving, to ensure that the novice stays engaged. You learn more through your fingers than through your eyes.• Ping-pong pairing
Pairing Anti-patterns• No breaks• No pair-switching• No pairing core hours• Not communicating enough• Not listening to other solutions• Grabbing the keyboard away• Silent partner• Listening to partner, but ignoring feedback, as if they are an annoying popup in your IDE.• Egos and personality conflicts
Troubles in pairing?• I’m faster on my own• Can’t pair with that guy, he’s getting on my nerves• Pair programming is too tiring• We’ve split up the work and we’ll get it done faster if we use two keyboards• There’s too much background noise• I’m just slowing her down