BossaBox

This is the playbook for engineering-playbook

Why Collaboration

Why collaboration is important

In engagements, we aim to be highly collaborative because when we code together, we perform better, have a higher sprint velocity, and have a greater degree of knowledge sharing across the team.

There are two common patterns we use for collaboration: Pairing and swarming.

Pair programming (“pairing”) - two software engineers assigned to, and working on, one shared story at a time during the sprint. The Dev Lead assigns a user story to two engineers – one primary engineer (story owner) and one secondary engineer (pairing assignee).

Swarm programming (“swarming”) - three or more software engineers collaborating on a high-priority item to bring it to completion.

How to pair program

As mentioned, every story is intentionally assigned to a pair. The pairing assignee may be in the process of upskilling, nevertheless, they are equal partners in the development effort. Below are some general guidelines for pairing:

Why pair programming helps collaboration

Pair programming helps collaboration because both engineers share equal responsibility for bringing the story to completion. This is a mutually beneficial exercise because, while the story owner often has more experience to lean on, the pairing assignee brings a fresh view that is unclouded by repetition.

Some other benefits include:

When to swarm program

It is important to know that not every PBI needs to use swarming. Some sprints may not even warrant swarming at all. Swarm when:

How to swarm program

As soon the pair finds out that the PBI will warrant swarming, the pair brings it up to the rest of the team (via parking lot during stand-up or asynchronously). Members of the team agree or volunteer to assist.

Why swarm programming helps collaboration

When to decide to swarm, pair, and/or split

Benefits of increased collaboration

Knowledge sharing and bringing ISE and customer engineers together in a ‘code-with’ manner is an important aspect of ISE engagements. This grows both our customers’ and our ISE team’s capability to build on Azure. We are responsible for demonstrating engineering fundamentals and leaving the customer in a better place after we disengage. This can only happen if we collaborate and engage together as a team. In addition to improved software quality, this also adds a beneficial social aspect to the engagements.

Resources