Safaa Alnabulsi, Platform Engineer for Application Platform at Scout24: Pairing or No Pairing?

Scout24
Scout24 Engineering
7 min readJun 24, 2020

Safaa Alnabulsi has been with Scout24 since 2017 and has been working as a Cloud Platform Engineer in the field of Application Platform. In her recent blog post, Safaa provided some handy insights into how to find success with pair programming — a collaborative technique she regularly does together with her team at Scout24.

Safaa Alnabulsi, Cloud Platform Engineer at Scout24

Some of the team's highlight and data-driven projects where they've utilised pair programming include the completion of AutoScout24 after its sale and the Unified Backup DR solution ⏤ which is a solution for the Scout24 Group to create backups cross-region and cross-account for various data store types (Aurora, RDS, Mongodb, Dynamodb, EBS, S3).

Recently, Safaa published a blog post about her experiences with pair programming at Scout24. We share this with you here.

This article represents Safaa's own opinions based on her experience with pair programming practice. Scout24 has made some minor edits to the post.

People have different opinions about pair programming. Some people like it while others hate it. Each group comes with prepared arguments to defend their perspective.

I have been personally part of both groups and had different opinions about pairing practice in past years. Lately, I have shifted from:

“I don’t like it, it’s a waste of time”

to

“I really like it! It’s so much fun and helped me grow”.

Recently, I worked at Scout24 with a team that was spread between Berlin and Barcelona. We were following the remote-first approach (i.e, if one is remote, everyone is remote).

Nonetheless, I was skeptical at first of the cross-location team idea. I doubted our ability to communicate and work efficiently together.

However, after some time, my doubts started to clear out. Along with other great practices we did, adopting remote pair programming was a key point in reducing the distance between us and changing us into an efficient team.

Moreover, being part of a multicultural team needed better ways of communication. Luckily, the remote pairing made it feasible!

In the following article, I will share with you my findings and thoughts of pair programming.

What is pair programming?

Pair programming is simply two people thinking about, and working on the same problem, alternating roles during the session.

Two brains and four eyes dedicate their skills to reach one goal. They brainstorm ideas, analyse the problem from different perspectives, discuss, exchange experiences, and implement a solution.

Why do pair programming?

There are many benefits to adopt pair programming, such as:

Individual gains

  • Improve the ability to express oneself
  • Strengthen the relationship with colleagues
  • Learn new techniques and strategies to solve problems
  • Develop new ways of explaining and sharing ideas
  • Learn how to be more explicit, especially in a multicultural team and a remote setup
  • Get more organised
  • It’s an opportunity to grow engineers to the next level; I can’t speak enough about this point. Pair programming especially with same level or higher level engineers is a great chance to grow further. That applies for both sides. It helps juniors to learn new technical skills and more importantly gain problem-solving skills. Besides that, it helps more seniors to polish their mentoring skills, improve their communication skills and simplify complex problems.

Team gains

Pairing is beneficial not only on an individual’s level but also on a team’s level. Here are some points which a team can gain from adopting pair programming:

  • Getting rid of knowledge islands in the team

Having one or even two ninja-level, experienced engineers in the team who “know it all” can be convenient for many managers. However, it is also risky and creates a single point of failure, whereas pairing will pay off later as it ensures that any team member can work on any of the team’s projects.

  • Exchange different skills between team members

Teams usually consist of diverse skills for greater results. Each engineer had a different path and experience before joining their current team. However, it’s not easy to force skill-sharing on people of different backgrounds and within crowded working days. Pairing does that naturally!

  • Improving the quality of the resulting work

Combining the experiences of two people to solve a problem is clearly better than a single one. The pair will challenge each other while working, and the code will be reviewed directly.

  • Build trust across team members with constant ideas sharing

The time the pair spend on thinking of a solution and building a system will build more trust in the team. This itself is an important factor in building any high-functional team.

The more you pair, the easier it gets! (Image via iStock.com)

How to make it more effective?

Pairing can be tough, exhausting, and more challenging than one thinks. It takes time to develop ways of handling it. Clearly, the more you pair, the easier it gets. Below is a list of helpful points, which I found useful:

  • Come ready and relaxed to the pairing session.
  • Start your pairing session with an ice-breaker.
  • Keep the atmosphere light. It’s ok to have a side chat and to giggle while working with a joke or two.
  • Share your schedules with each other to avoid distractions or overlap with other meetings. You can plan your pairing sessions by calendar invitations in advance as well.
  • If possible, snooze notifications from Slack or any other distracting tool.
  • Take frequent breaks to stay productive.
  • Stay hydrated. You will talk a lot!
  • Start by sharing your understanding of the problem (e.g. this could be by simply explaining the problem verbally and confirming both of you have the same understanding or by drawing diagrams, etc.).
  • Agree together on a structure of work before starting the actual work (e.g. different strategies you will try, list of tasks you will perform, etc.).
  • Switch roles (i.e. driver-navigator) after every break. In the remote pairing context, switch the one who shares their screen and types.
  • Listen, listen, listen!
  • Make sure to keep asking your pairing partner about their opinion.
  • Share with your pairing partner all of the resources which you worked on during the pairing session, especially before it ends.
  • Finish your pairing day with a plan for the next day.
  • Have a feedback session at the end of the pairing work. This is very helpful to keep the atmosphere healthy and improve the quality of the next pairing session.
  • Rotate pairs in the team and rotate topics.
  • Make sure to also mix levels of the pairs.

Remote Pairing Tools

The tools that my team and I mainly use, include:

  • Zoom with sharing our screens and giving mouse/keyboard permissions to each other
  • Miro boards to brainstorm and visualize our ideas.

And of course, other well-known collaborative tools (e.g. Github, Confluence, Jira, etc.).

What ruins any pairing session?

Not all pairing sessions are great, successful, or eventful! Some are boring. Others are just awful. In my opinion, the biggest killer to any pairing session can be summed up in one word: “Ego”. Who wouldn’t like their solution or idea to be taken and implemented? Simply, no one.

Before starting to pair with anyone, leave your ego at the door. Otherwise, you will be wasting both your time and energy. Pairing is about sharing.

During the session, you or your partner can read the air and see some signs of a non-functioning pairing session:

  • One-sided engagement: one person is typing alone while the other one is silent, distracted, or at worse, half-a-sleep! Or one person is talking alone explaining each line of code they are typing.
  • When the language of the session is “I did this “ and “I will do that” instead of “we” and “let’s do it”.
  • You are uncomfortable sharing your opinions as your pair always responds negatively. Either verbally or with their body language.
  • You are simply uncomfortable and feel awkward.
  • When you think: It’s boring and I’m not learning anything.
  • One person thinks and acts as their other pair is “not enough” or “not on their level”.

The seniority of your pair shouldn’t prevent you from listening and accepting their ideas and opinions. If you are unconsciously doing that, it’s time to stop and think again. If you are the other person, then speak up directly or at the feedback session.

As a final note from my personal experience, sometimes pairing with specific people simply doesn’t go smoothly. No matter how hard you try to make it work.

I believe that forced pairing with someone you are not comfortable with can have bad consequences and make your work time unpleasant.

Finally …

Thanks for reaching it to here! As you can imagine, I didn’t always have a pleasant experience while pairing. It’s totally normal to have difficulties at the beginning until you get used to the practice and to the other person’s way of working.

Always keep in mind that people have different ways of approaching the same problem. This will help you a lot to open up and accept others’ opinions.

Thanks very much to Safaa for sharing her valuable experiences with us. If you want to read more, make sure to follow Safaa on her Medium blog.

--

--

Scout24
Scout24 Engineering

With our digital marketplace @ImmobilienScout, we inspire people's best decisions in housing. We make hard decisions easy. https://www.scout24.com