What is mob programming
“Mob programming is a software development approach where the whole team works 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. With mob programming, the collaboration is extended to everyone on the team, while still using a single computer for writing the code and inputting it into the code base.”
“‘All the brilliant minds working together on the same thing, at the same time, in the same space, and at the same computer’ - We call it “Mob Programming”. With dual projectors, one computer, two keyboards, and a very collaborative approach we use this practice to super-charge our development efforts and deliver high value software quickly.”
Facilitating a sucessfull mob programming session is way harder than running a session with a pair of developers. Before I started I read about other peoples expriences namely Maaret Pyhäjärvi and Llewellyn Falco and Emily Bache.
The facilitator needs to decide and communicate the session objectives, select and explain any exercises, communicate the format of the session, be ready to take the navigators role when the situation requires and most important fade to the back of the room when the mobsters are making progress. As a facilitator we need to allow for mistakes. Jumping to early to avoid mistakes may take away a very valuable learning opportunity.
Make sure the session develops acording the the objectives. If the session deviates from objectives intervene.
Make sure everyones voice is heard, be an advocate for the ones whose voices tend not to be heard. Specially if any mobsters are remote.
Empower the navigator.
“As a facilitator, your job is to ensure that all the steps of mob programming are being carried out appropriately.” Maaret Pyhäjärvi and Llewellyn Falco
Llewellyn Falco addresses the problem of the overwhelmed driver by using the “Strong pair technique” where its not the driver making the decisions but the navigator. The golden rule of this style is “For an idea to go from your head into the computer it MUST go through someone else’s hands”.
The driver is only responsible for tranlating the navigators ideas, transmited in an abstract way, into code.
The navigator is the main person programming. Coordinates ideas from the mobsters and is reponsible for intructing the driver on a path, making sure it describes the path in “the highest level of abstraction the driver can understand”, avoid giving precise instructions to the driver.
Mobsters contribute ideas. They should never address the driver directly, ideas must go through the navigator that in the end decides what path to take and instructs the driver.
Time based rotation
Event Based Rotation
A typical mob session
- Define objectives
- Create materials
- Select or create exercises
- Explain objectives
- Present material
- Explain rules
- Register mobsters on schedulling tool
- Start mob on exercise
- Tool nominates first driver
- Choose first navigator
- What have we learned?
- Feedback on materials, exercises and session
My experience of using mob programming in technical coaching
I’m moving from coaching pairs of developers to a mob programming format. I’ve ben trying this format for the last couple of months and I’m finding it more productive and customer feedback has been great. In the past I used to coach a pair of developers or maximum two pairs. Although this format allows for a much more personalized experience it’s a bit slow for organization with many developers.
I allawys favoured having a pair of developers instead of 1 to 1 coaching because when a pair iterates the learning is magnified. When I first tried using mob programming for coaching I was worried that too many people would be deterimental to learning. Indeed it can be: endless dicussions can lead to analysis paralisys; driver can feel overwhelmed by all mobsters giving instructions at the same time; some people my not like being in the spot in front of so many people and egos may lead to personal clashes.
I’ve found that using mob programming for technical coaching is a great tool not only because it allows to coach more developrs in a faster way but specialy because it allows for greater learing opportunities amongst mobsters, even if they make a mistake and take the “wrong” path.Share on Twitter