Teaming
Teaming, sometimes called "mob programming" or "ensemble programming" in software development, is a collaborative way of working where a group of three or more people work together on a single task at a single workstation. Teaming is similar to pairing but with more roles than just driver and navigator, and the group frequently rotates roles so every member contributes actively.
Although the practice originated in software development, teaming applies across the whole product lifecycle: research synthesis, ideation, design experiments, development, and continuous improvement all benefit from the same "all the brilliant minds working on the same thing at the same time" model.
Goal
The goal of teaming is to deliver high-quality products more effectively, efficiently and sustainably.
Knowledge Sharing: Team members share their knowledge, reducing knowledge silos across the team.
Improved Quality: Rather than waiting for a code review or design review (when smaller stylistic issues might be let through), the immediate feedback from teaming catches issues earlier and improves overall quality.
Mentorship and Learning: Junior team members learn from more experienced colleagues, which speeds up onboarding.
Faster Problem Solving: Diverse perspectives and expertise lead to faster, better problem solving and reduce time to deliver.
Context
There are infinite ways to solve a problem or to design and write the code for a feature. They are not all equal. To produce the most effective solutions and the highest quality output, we need to leverage the collective intelligence of the team. In creative work like software development, the more diverse perspectives and expertise we bring to bear on a problem, the better the solution will be.
Inputs
| Artifact | Description |
|---|---|
| Working Environment | A shared working environment, including hardware (e.g., a large screen, comfortable seating, single keyboard) and software (e.g., design tools, IDEs, code repositories, handover timers). |
| Coding Standards and Conventions | Predefined standards and conventions that the team agrees to follow to ensure consistency in the work. |
Practices
The detail of how to run teaming sessions is broken out across these pages:
| Practice | Description |
|---|---|
| Setting Up | The roles, equipment, and physical or remote layout needed to start teaming. |
| Running a Session | The guiding rules: rotate every 4–5 minutes, describe in English first, work in small steps, close happy. |
| Challenges | The five common challenges teams encounter — and how to handle each one. |
| Anti-patterns | Failure modes that kill teaming sessions before they get traction. |
| Case Studies | Hunter Industries and SVT Interactive — what teams have actually achieved with teaming. |
Roles
| Role | Responsibilities |
|---|---|
| Driver | The person at the keyboard. The driver is not allowed to think — they can only type what the navigator says. Their focus is on translating the team's ideas into code. |
| Navigator (or Pilot) | Tells the driver how to solve the problem. Reviews the code as it is typed and thinks ahead about the architecture and next steps. |
| Facilitator | Ensures the rules are followed. Can step in if the session is going badly. Helps manage the pace and energy of the session. |
| Mob (Observers) | Everyone else not currently driving or navigating. They contribute ideas, offer hints when the navigator gets stuck, and help solve problems. They learn by observing and rotate into the driver and navigator roles. |
Criticism
| Name | Description | Mitigation |
|---|---|---|
| Decreased productivity | Teaming requires the simultaneous involvement of multiple team members, which can be seen as an inefficient use of resources. | Studies have shown there is no difference in delivery speed between teaming and working alone, but quality is significantly higher when teaming. The benefit of solving problems quickly outweighs the apparent inefficiency. |
| Limited to Certain Tasks | Not 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 Exclusion | The highly collaborative nature of teaming may be uncomfortable for introverts or those who prefer solitary work. | The rotation of roles ensures everyone has a chance to contribute and learn, and the team can adjust the session's pace and energy to accommodate different working styles. |
| Potential for Groupthink | The 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. |