Mob Programming: A Collaborative Approach to Solving Complex Problems

Unais Yousha Siddiqui
Bazaar Engineering
Published in
6 min readFeb 10, 2023

What is Mob-Programming

Mob programming is a collaborative software development approach that involves a team of developers working together on the same task at the same time, using a single computer. This approach aims to improve teamwork, communication, and knowledge sharing among developers, while also delivering high-quality and efficient software solutions. Despite its growing popularity, mob programming is often seen as a radical and unconventional approach to software development, and can be difficult for organizations to adopt.

What Were The Issues In Previous Practices ?

Here are some examples of past issues that mob programming has helped to solve:

  1. Lack of Communication: In traditional software development methods, communication is often limited to email, instant messaging, or code reviews. Mob programming encourages face-to-face communication and collaboration among developers, allowing them to share their ideas, knowledge, and experience more effectively.
  2. Siloed Knowledge: In software development, siloed knowledge can occur when individual developers work in isolation and don’t share their knowledge and expertise with others. Mob programming helps to eliminate siloed knowledge by allowing developers to work together on the same task and share their knowledge in real-time.
  3. Inefficient Code Reviews: In traditional software development, code reviews can be time-consuming and can slow down the development process. With mob programming, code reviews are integrated into the development process and are performed in real-time, making the process more efficient and effective.
  4. Slow Problem-Solving: Solving complex problems in software development can be slow and challenging, particularly when working alone. Mob programming helps to solve complex problems more quickly by allowing developers to work together and collaborate on solutions in real-time.
  5. Lack of Collaboration: Collaboration is essential in software development, but can be challenging in traditional work environments. Mob programming encourages collaboration and teamwork by allowing developers to work together on the same task and share their knowledge and experience.

Key Elements Of Effective Mob Programming

The benefits of mob programming are numerous, and can lead to more effective and efficient software development. Here are some key elements of effective mob programming:

  1. Clear Goals: Before starting a mob programming session, it’s important to establish clear and achievable goals. This will help to keep the team focused and ensure that the session is productive and efficient.
  2. Collaboration: Collaboration is at the heart of mob programming, and it’s important to create an environment that encourages teamwork and open communication. This can include sharing ideas, knowledge, and experience, and working together to solve problems.
  3. Clear Roles: In mob programming, it’s important to establish clear roles and responsibilities for each team member. This can include a driver, who is responsible for typing and executing the code, and navigators, who provide guidance and feedback.
  4. Time Boxed Sessions: Mob programming sessions should be time-boxed, with a clear start and end time. This will help to keep the session focused and ensure that the team stays on track.
  5. Continuous Feedback: Continuous feedback is essential in mob programming, as it helps to keep the team focused and ensures that everyone is on the same page. This can include regular check-ins and status updates, as well as real-time feedback during the development process.
  6. Regular Review: Regular review and reflection are important in mob programming, as they allow the team to identify areas for improvement and make necessary adjustments. This include retrospectives, code reviews, and continuous integration and testing.
Driver, Navigator and Next

Tools to help with mob programming:

Tracking Time and keeping track of driver and navigator

The first issue that arises is that how to track time for each member and know the order of rotation within the mob for this we can use https://mobti.me/

Steps to use mobti.me:

  1. Create you own link for the timer by entering name of your feature, squad or team in the given space and press the start button. This will create the link which you can share with your team so that everyone can have the timers in their browser.

2. Next, we will change the setting according to our needs. Lets shift the order of Driver and Navigator, enable the browser notifications and enable timer sound with your favourite sound. We can also add next in our member role so that the person who will become the next navigator is aware of it. Now save the settings.

3. Now, we will add name of the members in the mob by going in the Mob tab.

4. In the end, our overview tab will look like this and now we can start our mob session by pressing the start turn button. By doing this the timer will start and after every 5 minutes it will indicated by the timer sound that the time of the current driver has elapsed and we need to switch the driver.

Constant Code Integration for Remote Teams

For remote teams, it’s important to maintain constant integration in the branch so that each team member can access the code they need to work on. However, constantly pushing and pulling code can be a hassle. To address this, a remote programming tool can be utilized.

Install remote mob programming which will help in fast git handover among the remote members of the mob.

To install run the following command:

Mac:

brew install remotemobprogramming/brew/mob

Windows:

scoop install mob

How to use

You only need three commands: mob start, mob next, and mob done.

Switch to a separate branch with mob start and handover to the next person with mob next. Repeat. When you're done, get your changes into the staging area of the main branch with mob done and commit them.

Demonstrating how the commands work

Conclusion

In conclusion, mob programming is a collaborative and efficient approach to software development that can effectively solve many of the common issues faced by development teams. By encouraging teamwork, communication, and knowledge sharing, mob programming can help organizations to deliver high-quality and efficient software solutions. If you’re looking for a new approach to software development, consider giving mob programming a try.

Disclaimer:

Bazaar Technologies believes in sharing knowledge and freedom of expression, and it encourages it’s colleagues and friends to share knowledge, experiences and opinions in written form on it’s medium publication, in a hope that some people across the globe might find the content helpful. However the content shared in this post and other posts on this medium publication mostly describe and highlight the opinions of the authors, which might or might not be the actual and official perspective of Bazaar Technologies.

--

--