Teaming

Teaming, often referred to as "mob programming" or "ensemble programming" in software development, is a collaborative approach where a group of three or more individuals work together on a single task at a single workstation. Teaming is similar to pairing however there are more roles than just the driver and navigator. The group frequently switches roles, ensuring active participation from all members.

Goal

The goal of teaming is to deliver high-quality products more effectively, efficiently and sustainably.

  1. Knowledge Sharing: Team members share their knowledge which reduces the knowledge silos across the team.

  2. Improved Code Quality: Rather than waiting for a code review, when you might let smaller stylistic issues pass, the immediate feedback from teaming catches bugs earlier and improves the overall quality of the code.

  3. Mentorship and Learning: Junior team members can learn from more experienced team members which speeds up onboarding.

  4. Faster Problem Solving: Diverse perspectives and expertise can lead to faster, and better, problem solving, reducing the time to deliver.

Context

There are infinite ways to solve a problem or to design and write the code to build a feature. But they are not all equal. To ensure the most effective solutions, along with the highest quality code, we need to leverage the collective intelligence of the team. In creative work like software development, the more diverse perspectives and expertise we can bring to bear on a problem, the better the solution will be.

Inputs

ArtifactDescription
Working EnvironmentA shared working environment, including hardware (e.g., a large screen, comfortable seating) and software (e.g., Design software, IDEs, code repositories, handover timers).
Coding Standards and ConventionsPredefined coding standards and conventions that the team agrees to follow to ensure consistency in the codebase.

Roles

RoleResponsibilities
DriverThe person at the keyboard, writing the code under the guidance of the rest of the team. Their focus is on translating the team's ideas into code.
Navigator (or Pilot)Guides the Driver by suggesting what code to write, reviewing the code as it's typed, and thinking ahead about the architecture and next steps.
ScoutResearches solutions, libraries, and tools relevant to the task. Presents findings to the team for evaluation and discussion. May assist the driver with specific technical aspects.
ReflectorObserves the team dynamics and process. Provides feedback on collaboration, communication, and effectiveness. Helps identify areas for improvement and suggests adjustments.
ObserversThe rest of the team not currently navigating or driving. They contribute ideas, suggest improvements, and help solve problems. They also learn by observing and can rotate into the driver or navigator roles.
Facilitator (optional)Helps the team stay on track, facilitates role rotations, keeps time, and ensures that every voice is heard. They may also help manage the session's pace and energy.

Criticism

NameDescriptionMitigation
Decreased productivityTeaming requires the simultaneous involvement of multiple team members, which can be seen as an inefficient use of resources.Studies have shown that there is no difference in speed of delivery between teaming and working alone. The benefit of being able to solve problems quickly outweighs the apparent inefficiency. While there is no time difference, the quality of the code is higher when teaming.
Limited to Certain TasksNot all tasks are suitable for Teaming, such as tasks requiring deep concentration or individual creativity.Use Teaming selectively for tasks that benefit from collaboration, such as complex problem solving, and allow for individual work when more appropriate.
Introvert ExclusionThe highly collaborative nature of Teaming may be uncomfortable for introverts or those who prefer solitary work.The rotation of roles ensures that people have a chance to contribute and learn from the experience, and the team can adjust the session's pace and energy to accommodate different working styles.
Potential for GroupthinkThe collaborative environment might lead to conformity, where innovative ideas are not fully explored due to a desire for consensus.Encourage a culture of critical thinking and ensure that all voices are heard, valuing diverse perspectives and dissenting opinions.

Anti-Patterns

  1. Dominance: If one or two members dominate the conversation and decision-making, it can negate the benefits of diverse input.
  2. Lack of Participation: If some members remain passive or disengaged, the team loses out on their potential contributions.
  3. Burnout: Extended teaming sessions can be mentally exhausting. Teams need to ensure they take breaks and respect individual energy levels.
  4. Environmental Distractions: In an inappropriate environment, external disturbances can hinder the process. A conducive space that facilitates group work is crucial.

Was this page helpful?

Previous
Internal Team Alignment
© ZeroBlockers, 2024. All rights reserved.