Skip to content

rvasdug/ensemble-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Ensemble Programming

Introduction

Ensemble Programming also known as mob programming or software teaming is "a software development approach where the whole team works together on the same thing, at the same time, in the same space, and at the same computer. This is similar to Pair Programming, where two people sit at the same computer and collaborate on the same code at the same time. However, with Software Teaming, we extend the collaboration to everyone on the team while still using a single computer for writing the code and doing other work." - Woody Zuill

Set up

  • A large TV or projector connected to the computer along with a keyboard and mouse.
  • Seats arranged such that everyone can see the display clearly.

Roles

  • Mob (Team): The mob refers to the group of developers working together. They are responsible for discussing multiple alternative implementations and selecting the best course of action. Everyone in the group should actively participate at all times and contribute to the process.
  • Navigator (Talker): This developer is responsible for listening to the mob's discussion and communicating instructions to the driver. The navigator should communicate at the level of abstraction that the driver can follow - very low level if the driver is a novice and high level if the driver is experienced.
  • Driver (Typist): This developer is responsible for converting the navigator's instructions into code. The driver should only listen to the navigator and seek clarifications as needed.
  • Others: Facilitator, Coach, Recorder, Researcher, Subject Matter Expert

Rules

  • Treat fellow team members with kindness and respect.
  • Switch roles at a regular interval. Start at 3-4 minutes when team is new at mobbing and increase to 10-15 minutes once team has become comfortable with the flow.
  • Establish a rotation so that everyone in the team gets to be the driver and the navigator during the session.
  • Avoid distractions and stay engaged. (Cancel meetings, silence phones and put away laptops unless needed for research.)
  • Schedule breaks if session is longer than an hour or two.
  • Have a retrospective at the end of the session and apply learnings to future sessions.

Benefits

  • Knowledge sharing
  • Tight feedback loops
  • Collective ownership
  • Overcome individual weaknesses
  • Work continuity
  • Improved communication

Drawbacks

  • Individual discomfort
  • Perception of inefficiency
  • Organization culture barriers
  • Remote team challenges

Practice Option

About

Intro to Ensemble Programming

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors