You are certainly familiar with pair programming. This development practice advocated by Extreme Programming involves the collaboration of two developers to achieve the same task on the same workstation. In turn, one is the driver, writing the code, the other, the navigator that guides his colleague and reviews the lines of code as they are being typed.
In mob programming, we push this concept further. This is now a group of developers working on the same task. In short, there is a development team, a room, a large screen and one workstation.
Are you skeptical? You don’t see what this faux peplum scenario has to offer? Read on to find out how this activity could be beneficial to your team.
Mob programming is an activity that is quite easy to describe. In fact, it has been made popular in the world of software development by Woody Zuill.
As with pair programming, we exchange the role of conductor at regular intervals—every 15 to 30 minutes—to allow the participation and learning of everyone at a reasonably sustained pace.
Other strategies for the distribution of roles are possible. For example, for the development of a feature, a new driver can be designated a phase from the following:
- Writing a test (test run: red result)
- Writing code that will make the test pass (green)
- Refactoring, as needed, depending on the advanced comments.
During the session, we have to make sure that only the driver is able to “drive” the development workstation as soon as this role is assigned to him. Navigators are allowed to reflect and speak amongst each other without interrupting the driver’s activity. If there is to be a discussion between the driver and a navigator, the exchange of a totem, the introduction of a signal, or the participation of a facilitator is required. The rest of the time, the driver is encouraged to spontaneously explain the code he is writing.
To do what?
By now, you must think that mob programming is a great idea, but that it is rather utopian and productive to a lesser extent.
It is true that, at the end of a mob programming session, the finished product is often limited. But beyond simply counting the number of lines of code written per hour or the number of half-days of support lost, this activity offers real benefits in the medium and long terms:
- Concretely launching a project or a complex idea while achieving modest sub-objectives
- Sharing and disseminating knowledge and quickly improving skills in new or unfamiliar technologies or fields (the time spent together is shorter than the accumulated work done individually for the same result)
- Increasing technical multidisciplinarity within a team or division
- Breaking down silos in a segregated organization, therefore decreasing interdependencies
- Promoting and maintaining the developers’ creativity by changing up the routine.
The recipe for a good mob programming session
Are you convinced and inspired by a theme in particular for your next session? If so, here are the steps to get started:
- Collect ideas (even the crazy ones!) and the needs expressed by your team.
- Select one idea among the most popular.
- With those interested, set an achievable objective (quick win) and the maximum duration of the session to achieve it (time box). A suitable period will ensure the team’s focus and spice up the challenge.
- Decide on a time slot for the session and communicate it (gather up to ten participants).
- Prepare a comfortable and properly equipped environment (also minimize any external disturbances). There is no need to have as many workstations as participants. Notepads and laptops will do the trick! Appoint someone to act as a facilitator during the session (a subject-matter expert, a coach…).
- On the D -Day, start mob programming!
- Finally, capitalize information by presenting the results and sharing the experience.
Go ahead! It’s your turn…
So, what will be the next topic of your group workshop? Are you still undecided? If this is the case, do not hesitate to target modest goals, at first, to assess the effectiveness of this method and reuse. Also, I invite you to take a look at the following links and share your successes using mob programming in the comments section.
- MobProgramming.com (Woody Zuill and Mob Programming community);
- Experience feedback (Marcus Hammarberg on Codebetter.com);
- Video of a mob programming session: com/watch?v=p_pvslS4gEI (Woody Zuill, YouTube).
Good session to all!