Flavours of pairing in software engineering

“Pair programming provides an excellent test of technical and social skills.” — Kent Beck

Software Engineers code — but not always in singleton. Being an individual contributor works out just fine. But working as a team or with pairs will power up one’s abilities and technical skills.

In this article, I’ll provide you the taste of different flavors of pairing in software engineering that I’ve come across and effectively utilizing some of it.

Pair Programming

Pair programming is the widely known methodology of pairing for engineers. For the sake of introduction, it’s a developer pair with another and write code. When you code in tandem, it’s quite natural to come up with different approaches to the same problem. It’s not about the solution itself, but about how you get there, discussions and tradeoffs made.

Durian — King of fruits

Pairing can happen b/w any level of engineering and it’s ideal to see a new developer pair with an experienced developer to learn how things are done in a better way.

Pair System designing

System design can’t be done alone. It involves a lot of moving parts and interconnected components where expertise is distributed among different teams. In such cases, system design can be done along with the team or in pairs. Doing in pairs is a good exercise to share expertise and go in depth in certain parts of the system and technologies. This also increases trust with other engineers and fills the knowledge silos for individuals.

Kiwi — refreshing taste

Pairing ahead will also eliminate the risks in project completion and delivery becomes predictable. When designing systems, aspects like fault tolerance, reliability and availability of it are important and vary between components in the system. You can pair with experts on these aspects who can bring in all these considerations into the equation.

Pair Reviewing

Reviewing in pairs is an effective technique to understand others’ perspectives of reviewing the code. Being the code author, you can also pair with a reviewer as they can share feedback straightaway and can discuss why things are done in a certain way, alternative approach to the same problem and the tradeoffs between them. Same can be done by pairing with developer A to review code of developer B. Pairing with the one who mastered the art of review will equip the other to learn the tricks and nitty gritty involved.

Mango — sweet taste

Pair reviewing will improve the review cycle time and reduce to and fro communication (long threads of discussion) that might happen otherwise.

Pair Debugging

How often we stumbled upon debugging alone but fixed it faster while working in pairs? — Debugging is one of the complicated duties that developers have to tackle on a daily basis. Pair debugging is basically pair programming in debugging mode. Against the inscrutable code, your partner will help you through tight spots and see things you don’t notice. Sometimes just explaining the problem to your partner may shed light on what’s going on.

Pineapple — spiky outside tasty inside

I’ve had a very good track record where the combined efforts of the pair found the root cause after a single programmer was stuck for a long time banging their head against the metaphorical wall.

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” — Brian Kernighan (co-inventor of the C programming language)

My recommendation would be that when you face a difficult problem, try to solve it on your own, but as soon as you run out of ideas or feel overwhelmed, call in the cavalry. Describe what you know and what you have done so far and you’ll be surprised that often that alone will get you unstuck. If not, your partner will probably have some ideas regarding how to move forward.

Pair Learning

Are you bogged down to learn technologies alone and could never complete it? — Try pair learning. Learning is an intense process which needs sheer dedication and motivation. Pair learning will help in holding each other motivated and get questions cleared among each other while learning. Sharing learning progress with your pair will gauge your speed and process of learning to fine tune accordingly. Most importantly it enables peer learners to ponder on thoughts and learnings exchanged.

Avocado — clean & fresh taste

Pair learning can also turn into pair coaching where the newbie is coached by an expert on the subject. But learning is inevitable for both the parties as the latter might also explore something new while coaching the newbie.

Pair with non-techies

Best of all types of pairing is pairing with non-technical stakeholders such as customer support, product managers, etc. Pairing with them will enable you to see the code as a product, customer-centric feature or anything else than the code itself. In fact that’s the truth. As they are the domain experts, you will get deeper insights into what you’re engineering so that you can craft exactly what’s best for end users.

Dragon — Unique taste

Conveying the technical challenges to them will gain their empathy and understanding of HOW WE GET IT DONE.

That’s it for now.

Out of all these flavours, which fruit taste do you like the most? — I would love to know your thoughts.

Engineering Leader