The ‘Needs’ Aspect of Pair-Programming
In the previous post, we mentioned that both junior and senior developers have certain needs during pair-programming session and saw what happens when those needs are not met.
I already established the existence of developers’ needs and performed a high level analysis of their nature, the outcome of which is documented in my paper “Pair-programming from the beginner’s perspective”
Unfortunately, I continue to see an oversight of “the needs” aspect of pair-programming in the industry. This frightens me, as this oversight can lead to misinterpretation of the purpose of cross-skill pairing by the developers themselves and by the wider technology community and affect the practice in the myriad of ways.
If pairing across skill is deemed to be a merely ‘teaching’ or a ‘mentoring’ session for the benefit of the junior, then naturally, the choice of senior developers willing to participate in a session is narrowed down almost exclusively to altruistic volunteers, or worse, to developers whose consent was not sought by the management.
Failing to see mutual benefits in cross skill pairing can also be the reason why many teams prefer to task their juniors with online courses and with reading documentation rather than get them pairing on a live feature with a senior colleague. And I would even suggest that this oversight can be a reason why so many teams chose not to pair at all.
Early on in my pairing experience I established that pairing on technical tasks is an incredibly emotionally intense practice, and that its’ intensity grows in direct proportion with the expertise gap between participating developers.
With that observation in mind, I decided to zoom in on the characteristics of the junior and the senior developers on levels other than technical ability. I created high-level personas for junior and senior, developers which helped me understand what characteristics (if any) drive certain behaviours and decision-making of each persona, which in turn, helped me identify their needs during the pairing session.
A more detailed overview of my analysis is available in my paper ‘Pair-programming from a beginner’s perspective’, but even at a diagram level we can see that despite displaying quite different characteristics, the two personas have one thing in common: they are both hungry for learning.
The learning needs may be quite different: while the junior wants to get a grip on the basics, such as the codebase, terminology, architecture, UI of the IDE being used, the senior is keen to hone the best practices, perhaps experiment with the newest technology trends, increase systems performance and so forth.
Learning is a fundamental need of both the junior and the senior developers. Effective developers learn every day regardless of their level of expertise; continuous learning is an unwritten requirement of our profession. And a thirst for learning is ultimately, what drives people to choose a career in software engineering and love it.
The emotional intensity of pair-programming means that there are other needs which need to be met before both developers can start learning effectively during the pairing session. I won’t link to the paper any more, but I will provide an overview of the empirical research I carried out.
Now that we acknowledged “the needs” aspect of pair-programming across skill, and understand what it consists of, the next logical question is, what can teams, organisations and individuals do to meet those needs? We will write about it in the next post.