Mob Programming is a term used to describe a software development approach where the entire team works on the same project, at once, in the same space, and the same computer. This extends the concept of pair programming from two people working together to the entire team simultaneously collaborating at one computer to deliver one work item at a time.
In addition to code, teams practice Mob Programming working together on almost every work of a typical software development team, including defining
Mob Programming brings many problems that software development teams prefer to “fade away”. This includes:
– Communication Problems such as waiting for answers from question, the time that takes for an email conversation to go back and forth is big, along with the chance to misunderstand. These types of problems are reduced or even elimitated by the collaborative face-to-face type of communication present in Mob Programming.
– Decision Making Problems such as hesitation to perform decisions and need to hold the ones that are made. Because the entire team makes decisions, those decisions are made with much more up-to-date and relevant data. Also by using Mob Programming the teams view the decisions as an opportunity to learn and to keep the path to a better solution.
– Doing more than is what is necessary causes waste. When a team works on the same thing at the same time and aims to deliver something into actual use every day, the team tends to keep things simple and prevents the addition of unnecessary things. The inclusion of the entire team, including the product owner in these daily efforts avoids someone from unintentionally adding more than what is truly necessary.
– Technical Debt is any type of code that makes it difficult to maintain. Mob programming puts multiple pair of eyes on the same project and dramatically reduces the chances of any type of technical debt from being introduced in the first place. This type of work increases the chance of the team identifying technical debt along the development of the product.
– Trashing of team members from context shifting results in a loss of time and focus. Mob Programming prevents that through the use of a single flow piece, reducing the impact that it has on others. Due to this other members of the team can continue on even if one of the team members is asked to switch workplace.
– Politics at the individual level, such how much people will help each other, can have a large impact on how effective is the team. Mob Programming reinforces the work of the team and encourages people to figure out how they are the most suited for the job.
– Meetings can lead to a division of work and knowledge creationg from the ability to perform decisions. Ironically through the use of ongoing “working meetings”, Mob Programming ensures that work, knowledge creation and decision making are combined, leading to a much better alignment and more effective action.
Here’s what to have in mind when considering adopting Mob Programming:
– Working with your team for the duration of the day may seem counterproductive, making some member of your team disrupt due to the fact of not being confortable. The team might be able to address these issues with some working practices by making team members withdraw from the group during certain periods if they need time to re-focus, or even finding a different group to work with.
– When a team works closely together day in and day out, there is a higher chance that contagious illnesses will run rampant through the team members. Team practices that recognize this fact and account for it can reduce the probability and impact of this liability.
– Mob programming only works if the team sees value in this type of approach and chooses to work this way. Since Mob Programming involves commitment and changes, it’s crucial to everyone make changes in their works style. This will not be nearly effective if people feel they are obligated to make changes.