Extreme Programming has been around for a while. It brought with it the concept of pair programming. 2 (or more) developers working together on one keyboard to complete a single task. Sounds crazy, no? In practice it turns out not to be. Which leads to the next question. How long should a pair program together?
I came across this paper from 2005 that describes one company’s results from experimenting with how much time there should be between pair changes. Very surprisingly, their results showed that the best results came with 90 minute pairing sessions. The authors go into some detail about why that is. One of the biggest factors they found that made that important was that there was always one member of the pair who was not deeply familiar with the code being written.
That seems counter-intuitive. Making sure that part of the pair doesn’t know what’s going on makes it better? What they concluded was that it was because of the benefit of the Beginner’s Mind. Not just learning about something, but cultivating an active curiosity and openness to new things. This leads to fast and deep knowledge transfer. It also leads to new insights. Because the beginner comes without fixed/preconceived ideas, they ask questions that can lead to new avenues of thought.
But it goes beyond that. Before an “expert” can explain something, they need to understand it. If you don’t understand something you can describe it. What it is. How it responds to known inputs. Where it’s known to fall over. But to explain it, you need to deeply understand it. It’s that deep understanding that leads to clear explanations. More importantly, it also leads to simplification. To removing the cruft and noise that gets in the way of doing the one thing well and truly. To building a system that is easy to use, hard to misuse, and powerful enough to meet today’s and tomorrow’s needs.
Something to think about. And if you need to apply a beginner’s mind to your problem feel free to ask.