Pairing as a learning while working activity
Last year I did a deep dive in thinking, talking and reading about learning cultures in tech companies. This is included in my podcast series and a webinar where I shared what I learned.
The practice of pairing came up several times.
What is pairing in software development?
Pairing is a practice from the Extreme Programming (XP) software development methodology. It’s an approach where two developers work side by side in front of the same computer, where one is writing code and the other is watching and thinking about what is happening. The roles are constantly being changed. It’s literally two people doing work one person would normally do. It's not reviewing someone else's work and giving feedback, it's working together on a task.
At first glance you might think, 'isn't this more expensive to have two people doing a task that normally one person would do?'
It’s the opposite:
- Problems are solved faster, software development is fundamentally a series of problems requiring solutions.
- Work is of a higher quality.
- There is less to be reworked later.
The power of pairing
In the podcast From Junior to Senior Developer: Speed Up Career Progression for Your Team, Farhan Thawar; VP of Engineering at Shopify said that the most powerful way to learn is pair programming and if he had unlimited money, he would pay the best programmer in the world to pair program with him.
For Farhan Thawar the reason it’s a powerful way to learn is because:
- you are guided by an expert
- you see someone else’s conceptual thinking
- you learn their thinking short shortcuts.
In the book Joy, Inc.: How We Built a Workplace People Love Richard Sheridan says,
‘What I have learned is that pairing is one of the most potent managerial tools I have ever discovered because of all the traditional problems it helps solve. Pairing fosters a learning system, builds relationships, eliminates towers of knowledge, simplifies the onboarding of new people, and flushes out performance issues.’
One of the keys to this approach which Sheridan and his teams use at Menlo Innovations, is switching who is working in pairs each week.
At Sprout Lab’s, the development team doesn’t pair all the time. Pairing is often just used for solving challenging problems. Every time this happens I’m reminded of the power of pairing.
It’s common in high-risk and mission critical roles for employees to work in pairs, e.g commercial passenger flights have a co-pilot as well a pilot, healthcare workers often work in pairs etc.
Often in L&D when thinking about building a culture of learning, that focus is one strategy that is often nebulous and hard for L&D to change e.g. building a culture of trust in an organisation. Pairing is a practical & tactical work practice that can rapidly build a learning culture.
The negatives of pairing
There are some negatives:
- software development involves deep work, abstract thinking, constant talking and interaction, and pairing doesn’t work for everyone.
- it's not something everyone enjoys doing all the time.
- there are parts of software development that work well collaboratively, but the whole process doesn’t need to be collaborative all the time.
With most software development, it’s now more common that pairing is part of a day’s work to solve complex problems, to mentor new junior developers and to introduce new projects or parts of projects to new people.
It’s not about giving feedback, it's about working together and collaborating on projects.
Pairing for remote and hybrid teams
The tools for remote and hybrid work have made it even easier.
- Screen sharing makes it ‘easier to look over someone shoulder.’
- Collaborative document editing in MS Teams means it is easier to work together.
In remote and hybrid teams pairing is even more important as it’s easy to lose casual collaboration. Pairing is a way to embed collaboration into these types of teams.
Pairing as a learning while working activity
Pairing is a powerful learning while working activity that can be applied in other professions.
When pairing is used outside software development and remote work, the definition does need to be changed a bit. The definition becomes:
Pairing is an approach to work where two employees work together on the same project, where one person is actively doing the work and the other is watching and thinking about what is happening. At regular times the roles are switched.
An example is, instead of a team drafting a report and then a peer or manager reviewing it, it could be written together working in collaboration.
Some of the ways pairing can be used for learning include:
- Pairing between team members being a part of development plans for individuals
- Pairing becomes part of the workflow e.g. if it’s not something that happens every day, then it’s part of what a team does e.g. each week
- Embedding pairing into onboarding
Pairing may not be something that can be embedded in all workplaces all the time, but it can be added to your workplace learning toolkit as an effective way to enable learning while working.