by Florian Nöding
Would have loved to read this article a few months ago. It describes really well, and goes beyond, what I learned about pair programming as a way of mentoring.
Pair efficiency is mostly determined by the effectiveness gap. This value describes the differences in domain knowledge, programming skill, prior experience etc. of the individuals. For example two juniors have a small effectiveness gap, a junior and a senior have a large one.
There are different kinds of pair setups:
The most interesting pairing constellation is a junior plus a senior. In this case it’s most important to focus on mentoring and learning. It does not make sense to set the expectation for the senior to produce business value. Instead the focus should be on ramping up the junior really fast.
In this setting the junior should drive the pairing (especially keyboard and mouse), ask questions, design and implement the code.
The senior should provide constructive criticism and explain values behind her decisions. She must be very patient and emphatic. She must also let the junior make mistakes and not interrupt even when she sees the mistake a long way ahead.
Really enjoyed reading this, spot on.
Putting people into the buckets junior, intermediate and senior is a vast over-simplification. Especially using the notion years of experience: “A person with 10 years experience is quite different than someone who has experienced the same year 10 times”. Instead what really matters is how people build software and think about leadership.