Most developers have heard about pair programming, the concept of two developers collaborating on the same development task together, at the same time, and the same computer. Mob programming extends the concept of pair programming to include several developers. Yet it’s not an approach many developers have tried or even know about.
If looking at search trends, we can see that Pair Programming gets on average 10 times more searches than Mob Programming.
Why is it like that?
Firstly, finding a group of several people to partner up with can be a more challenging task than finding just one pair partner. We can also assume that coding in a bigger group may initially not seem like a fun thing to do for some, while coding with one partner is an easier task, especially considering the more introverted nature of many developers.
In addition to this, there’s a vision that mob programming is normally done in the same physical space. However, we would argue that it is just as effective to do it virtually.
What are the different roles in Mob Programming?
Typically at a minimum, there need to be three people participating in the Mob Programming. The key roles are:
- Driver – Responsible for typing and handling the screen share.
- Navigator – Giving directions (everyone can be involved in this role)
- Researcher – Finding stuff in the docs and stack exchange and more. Responsible for passing links to the chat for the driver to display as necessary.
What are the benefits of Mob programming?
- Enhanced communication
Mob Programming helps eliminate long email chains and misunderstandings arising from communicating via documentation. The collaborative nature of Mob Programming helps work get done faster, as questions can be answered immediately from within the team.
2. Knowledge sharing
Mob Programming is a great way to increase tacit knowledge sharing in an organization. As we previously explained in this article, Explicit and tacit knowledge was popularized by Nanaka and Tokuchi in 1995 and is to date still one of the most common ways of viewing and understanding organizational knowledge.
Tacit knowledge, said to be responsible for about 90 percent of all knowledge within the organization, relies heavily on face-to-face interaction, which is a reason why it has been particularly difficult for virtual teams to share it. The spontaneous conversations during coffee breaks have disappeared and there’s simply fewer opportunities for tacit knowledge sharing in virtual teams. Hence, having activities like mob programming that you set up virtually can enable a lot of spontaneous conversations and be a great way to enhance the sharing of tacit knowledge in an organization.
3. Better code
In a Mob Programming session, multiple developers are working on the software at the same time, which means multiple shared perspectives when building new features and products. It decreases the likelihood of code conflicts and repeated code and tends to lead to code that is solid on all corners, stronger, and of higher quality.
4. Improved Decision-Making
Decisions need to be defended, which can lead to reluctance in making them. So while some people are born decision-makers, others prefer to abstain.
In a Mob Programming session, the whole team makes decisions together. As decision-making is scaled, decisions are made with more current and relevant information at hand. The decision-making in the session is also viewed as a learning opportunity.
5. Team Building (because it’s fun!)
Last but not least, Mob Programming is fun! Kind of for the same reason people love going to escape rooms. It helps build team rapport, dynamics, and collaboration.
Mob Programming at Flexiana
At Flexiana, we have Clojure developers with solid experience in doing pair and mob programming. Recently, we have started doing it on a larger scale. We have weekly mob programming sessions where we identify tasks for all our open source products and soon we will start sharing them on YouTube. Subscribe to our channel to stay updated on what we do next.