alt text

Why should we promote a pairing culture? ๐ŸŒณ

Pairing offers numerous valuable benefits that help enhance team dynamics and professional growth ๐ŸŒด:

  • Knowledge Exchange and Growth ๐Ÿ’š
    • Mentoring and reverse-mentoring
    • Accelerated skill development ๐Ÿ’น
    • Effective knowledge transfer
  • Team Development ๐Ÿ’›
    • Enhanced communication skills
    • Stronger collaborative relationships
    • Faster onboarding of new members
  • Organisational Benefits โ˜•
    • Elimination of knowledge silos
    • Continuous team up-skilling
    • Improved project outcomes through shared expertise

As part of the PaaS team at Xero, when managing core CI/CD tooling, our team frequently encounters diverse customer requests ๐Ÿ˜Ž. While balancing these support responsibilities with our planned sprint work, we sometimes face challenging situations, including:

  • Attempted solutions that didn’t yield the expected results ๐Ÿค”
  • Uncertainty in problem-solving approaches or gaps in technical expertise ๐ŸฅŒ

In this case, we recommend our team members to spin up a pairing session so that we can work together. When troubleshooting a problem independently for an extended period, it’s common to develop tunnel vision and miss out on alternative solutions ๐Ÿ‡. Having a fresh pair of eyes ๐Ÿ‘€ to examine the situation can provide valuable new perspectives and potentially reveal overlooked solutions that might have been hidden by our focused approach.

How do we promote a pairing culture?

Jira (Atlassian) Setup

alt text

In Jira: which is a tool for project management, we utilise the pear icon ๐Ÿ to designate pair programming collaborators on tickets! ๐ŸŽซ

E.g. <Jira Title> ๐Ÿ Will

We’re looking forward to Jira implementing either a dedicated field in the Details section or native support for multiple assignees, which would streamline the process of tracking and documenting pair programming sessions on tickets!

alt text

Slack Setup ๐ŸŒ–

alt text

We have three slack channels setup!

e.g.

  • #<team_name>-pair-1
  • #<team_name>-pair-2
  • #<team_name>-pair-3

Based on our experience, the number of concurrent pairing sessions has never exceeded three, which has proven sufficient for our needs. The optimal number of pairing rooms largely relates with your team size.

If you find yourself requiring more simultaneous pairing sessions, it might indicate that your team has grown beyond the ideal size for effective collaboration. For reference, consider Amazon’s well-known “Two-Pizza Team” principle, which suggests keeping teams small enough to be fed with two pizzas ๐Ÿ•๐Ÿ•.

How to start a pairing session in Slack?

If anyone wants to start up a pairing session, they can start a huddle in any of the above channels!

Before we start the pairing session we send out a message in a pairing channel to book this pairing slack channel in advance:

E.g. Going to start a huddle with Will to work through <Jira Title>!

Even when pairing in-office with an in-person team member, we initiate pairing sessions through Slack as standard practice ๐Ÿ‘๐Ÿป. This approach offers two key benefits: it enables remote team members to join in if they are also interested ๐Ÿฆ™, and all shared resources: including links and discussions, are kept in dedicated pairing Slack channels for future reference โœจ

Maintaining a healthy balance between independent focus work and pair programming is also essential for optimal productivity. When initiating a pairing session for assistance, it’s important to come prepared ๐Ÿ“!

Before seeking collaboration, we should:

  • Attempt to solve the problem independently ๐Ÿ”
  • Conduct thorough research on the issue ๐Ÿ”Ž
  • Develop potential solution approaches ๐Ÿš 
  • Identify specific areas where guidance is needed ๐Ÿ˜ธ

Remember, pair programming sessions are meant to enhance problem-solving through collaboration and it should serve as a platform for refining ideas and overcoming specific challenges ๐ŸŽฏ

To effectively manage problem-solving time and team resources, I recommend establishing a structured approach: set a specific time limit for independent problem-solving before seeking assistance โณ. This prevents prolonged individual struggles and encourages timely collaboration through pair programming sessions with team members who might resolve the issue more efficiently.

Reasons why our team prefers pairing in slack huddles over Google Meets ๐Ÿ˜

  • Anyone can see that a pairing session is happening in Slack and join in if they are interested. We can also set a topic for the slack huddle so everyone can see what the pairing session is about.
    • We can easily invite anyone too! ๐ŸŽต
  • We have history within our pairing slack channels which we can refer to (e.g. doing a search in a pairing slack channels)
    • With Google Meets ๐Ÿ˜ฎ, we struggled when we kept losing all the data shared on the Google Meet messages!
  • We can also easily tag others in the team in the slack huddleโ€™s thread
  • Bonus! We can draw on each otherโ€™s screens and also attach stickers ๐Ÿฌ๐Ÿ†

Alternative Setup โš“

For Google Meet enthusiasts, consider adding a permanent Meet link in your Slack channel description ๐Ÿ“†. This maintains accessibility while accommodating different preferences ๐Ÿ˜„.

How are you promoting a pairing culture in your teams? ๐Ÿฐ Please reach out if you have any questions! ๐Ÿฐ