A few weeks ago, our teammate Aleksandar Gjorgjevski who is a Senior Java Developer, held a presentation about Mob Programming at a local meetup of the Java community. He spoke from his experience on the topic, since he and his team have been employing this methodology of working for a few years now with one of our clients from the telecommunications industry. Here’s a brief recap of what was said.
What is Mob Programming
Mob Programming is an extension to pair programming – the methodology where two programmers work on the code together. Mob Programming is a methodology where more than two programmers work together on the same task using one single workstation. By definition, it is said that the entire development team may take part in mob programming, including developers, testers, and other stakeholders. In Aleksandar’s case, it’s a team consisting of 4 developers.
Some Rules of Mob Programming
A Mob team is organised so that there is a driver, and there are navigators. The driver is the programmer who usually sits at the workstation and does the actual typing of the code. The navigators are there to keep a close eye on the code, as well as navigate through the input. They discuss and dictate, while the driver types. It is allowed for the driver to ask questions during mob sessions, but they should not take part in discussions about the solution. There is only one driver at a time, and they operate as listeners.
The navigators discuss between each other. They think ahead, instruct the driver, and raise a hand when they have something to say.
Behaviour and Environment
In Aleksandar’s team, drivers take 10-minute turns. The entire team takes a brief break every 40 minutes, or when an important milestone is reached. Each mob session ends with a 5-minute retrospective of everything that has been done. It is very important to obey the “one-person speaking at a time” rule to keep a respectful and professional atmosphere during the session. Aleksandar mentioned that it is preferable to do the mob coding sessions in person, however when this isn’t possible it should be done with the web cam on as much as possible. It is important to note that being a part of the session is not mandatory, although the entire team is invited. Stepping out of the structure is always possible and anyone can leave at any time.
A ‘mob order’ is established at the beginning of a session. It determines who will take the first turn at being the driver, the second and so on. A ‘mob channel’ is determined as well. If the sessions take place online, a Teams (or another platform of choice) channel is created to avoid searching for an event or being stuck in the meeting lobby. If the session takes place at the office, it’s important for the participants to have a dedicated space that is easy to go in and out of, without interrupting the mob session.
Benefits of Mob Programming
Aleksandar mentioned multiple benefits about his team’s work during the mob programming sessions. One of the benefits was that it was a single process, where the team learns from each other, but also plan, design, review the code, test in the process, review each other’s work, easily onboard and offboard new employees.
“Even as a Senior Developer I’ve been able to learn so much from my teammates during these sessions. We are so much smarter when working together,” says Aleksandar.
Except for this knowledge exchange, this way of coding allows the team to cover all the requirements and remove the bottlenecks of the decision-making process. It’s a precise process that produces the best design and code logic. The reason behind this is that the team decides the code together, and this makes for a clean code. It basically takes the code to the next level.
The team learns to communicate and work better together. They build a healthy relationship with one another. The team shares responsibility for the code they produce during the mob programming sessions. This creates collective code ownership and makes everyone accountable for the quality and maintainability of the codebase.
Useful Tools for a Mob Session
Here’s a list of tools used by our team during mob programming sessions.
Aleksandar mentioned that for the duration of this project, they’ve had a minimal and insignificant number of bugs. Mob programming has made the team resilient to outside factors, since there are always 4 team members who know the code in detail. If a team lead or a member of the development team changes, there are still multiple members who understand the code and are able to keep the flow of the project.
Mob programming works well with agile development practices, since it puts an emphasis on collaboration, adaptability, and flexibility. This makes it possible for a team to respond quickly to changing requirements.