Mob Programming for Remote Teams: A Resource Guide
Do you believe that a software development team needs to follow a certain methodology or approach to reach its maximum productivity level? If so, mob programming is one such popular collaboration concept, especially for a group of developers sitting in a room or connected virtually from different locations.
Let’s learn what mob programming is and the essential aspects of it you need to understand in order to use it effectively for a distributed team.
What Is Mob Programming?
Mob programming is a software development concept founded by Woody Zuill in 2011. According to Zuill, it involves the gathering of a whole team to work together using a single computer system at the same time.
Marcus Hammarberg sums it up well:
The basic concept of mob programming is simple: The entire team works as a team together on one task at the time. That is, one team—one (active) keyboard—one screen (projector, of course).
The team members brainstorm, share ideas and knowledge, and learn from one another. It ultimately aims to achieve a productive meeting, not just for the company's growth but also for every individual.
How Many People Are Involved in Mob Programming?
If you've heard of the agile methodology known as pair programming, mob programming is an extended version of it. But if only two people join a session to code together on a single machine, you call it pair programming.
Unlike pair programming, mob programming doesn't limit the number of participants. As the word "mob" refers to a crowd, mob programming involves two or more developers from the team. The exact number of team members involved is based on the requirements of the mob session.
Mob programming doesn't define any specific rules for choosing people for mob sessions. So, you can call on members from different development teams at your organization. After all, mob programming is also about spreading knowledge to make a strong and cross-functional team.
For instance, if you want to discuss the design and work on some part of the user interface, it's obvious that you'll need help and coordination from both the UI/UX and the front-end developer teams.
Or if you're in the process of integrating the UI with back-end services, you also need to have both the front-end and back-end development teams.
Although mob programming is mainly designed for the software development team, you can also implement it for other teams, such as marketing and documentation.
Roles in Mob Programming
Since mob programming includes more than two people, it follows a driver-navigator model. This means a mob session includes two types of roles: drivers and navigators.
The driver is a person who sits at the keyboard and types the code. And a navigator is a person who reviews, discusses, and makes suggestions to improve the code. There's only one driver at a given time, and the rest of the team members are navigators.
However, for active team involvement, you can also switch roles between members randomly after a short period of time (10 to 15 minutes).
You also have to ensure good communication and coordination between navigators and drivers. Without that, it might become hard for a driver to understand the navigators' instructions while maintaining their keystroke and implementing the instructions in the codebase.
When and Why Teams Use Mob Programming
Have you ever thought about why all family members come together at festivals or great occasions like weddings? To show love and to share joy and happiness together, right?
Similarly, in software development, when a team feels the need to get everyone together to discuss something big, get feedback, or find a solution, a mob session is being scheduled.
But how often should mob programming be conducted? Well, it all depends on the team to decide whether they want to have regular mob programming daily or weekly, or they should have occasionally when required.
In the end, mob programming is performed to make teams more productive by working, sharing, and learning together. Which is not to forget that mob programming also brings several advantages, such as
- The team produces better quality code.
- The team bonds.
- Team members improve their interpersonal skills.
- Team members learn from one another.
- The team becomes cross-functional.
- Team members get a variety of feedback.
However, as a coin has two sides, mob programming also has some downsides, such as
- You need to accommodate for different time zones for distributed team members.
- Mob programming exposes the weaknesses of each team member.
- Team members must navigate conflicts of interest.
- Because of its collaborative nature, mob programming can exacerbate other interpersonal challenges, like workplace politics.
How Can a Distributed Team Use Remote Mob Programming?
A distributed team consists of members from different locations with different time zones across the world. Hence, it's more challenging to implement mob programming in a distributed team.
But with effective time management and regular experimentation, a distributed team can get the best out of mob sessions.
You can prepare a sheet and ask the availability time of your team member who wants to be part of mob programming. Then, based on the most common time slot that's suitable for all, you can schedule it for mob programming.
Besides the timing, a distributed team also has to agree on a single platform to interact and do mob programming easily. The platform should also be reliable, secure, available, and have all the essential features required for mobbing. These include the ability to share multiple app screens and multi-user editing.
One such platform you can try is CoScreen. It's a solution for deep collaboration that was made for developers by developers. CoScreen lets teams work, code, and learn together without hassle.
Even if you have a large team (up to 10 participants), CoScreen lets every team member share any app windows (instead of the entire screen) with one another at the same time. Not only that, but anyone can also edit, copy, and paste from any shared window using a mouse and keyboard.
So, whether you want to schedule a mob session for your team across the world or within an office space, you can use CoScreen to connect and collaborate virtually without any need for a separate room.
How to Get Started With Mob Programming
1. Decide the Agenda of the Session
Before starting the mob session, you should know what target you want to reach. Hence, label the topic and let everyone know what it is beforehand, as this could save a lot of time.
2. Choose a Common Mob Collaboration Platform for Interaction Among Distributed Team Members
Next, get a room and gather all team members. However, if members are not available to join the session physically or a room is too small to fill, you can connect with all virtually using online collaboration tools like CoScreen.
3. Select a Driver and Navigators
The session should also have a driver to type code and a navigator to guide them. Also, make sure to switch roles and give other team members opportunities to participate as well.
4. Start Reviewing and Coding
Once everything is set and comfortable, you can start reviewing the code, finding bugs, and adding improvements to it. The driver and navigators should work in sync to avoid writing bad code because of miscommunication.
5. Take Regular, Small Breaks
Never forget to take a small break to refresh the mind. You can consider the Pomodoro technique to decide when to take a break. The technique typically follows 20 to 25 minutes of continuous work separated by a short rest.
6. Reach a Conclusion
At the end of the session, you should be able to conclude the session and get a positive outcome. You can also analyze it later to find any unresolved interest or opinion.
Best Practices for Mob Programming
These are the actionable tips that you should consider for making your mob programming session productive:
- Set the rules and target of each mob session.
- Use a big or dual screen to make it visible to the whole team (if co-located).
- Maintain a clean environment.
- Keep track of each session to analyze.
- Treat each team member with kindness and respect.
- Use the driver-navigator model.
- Take small breaks regularly.
- Use a mob collaboration tool like CoScreen.
- Focus on creating quality code.
- Resolve conflicts of interest positively.
- Don't rush and force anyone to join mob session.
Is Mob Programming Really Suitable for Teams?
If, for example, you're a front-end developer who wants to discuss an API with a back-end team, you can make use of mob programming to understand the ins and out of the particular API you're having difficulty interacting with.
But what if mob programming involves a whole team, including documentation, testing, and UI/UX staff? Do they also really need to be present in the session? Or are they just adding to head count?
Sometimes you may think gathering a whole team in a room, with one computer and one screen, to work on a single thing cannot be an effective way of collaboration. This can be true, as some of the developers might not understand the purpose of the session, or others have not come willingly, leaving their important work behind.
In such cases, mob programming may not be the perfect solution for team collaboration. Hence, whether a team wants mob programming and whom they should include depends on the needs, situation, and demands of the team.
This post was written by Sarvottam Kumar. Sarvottam is an assistant software engineer at TCS with experience with blockchain, full-stack, and flutter development. He started using Linux in his first year of college and since then, he's been exploring its nuts and bolts. He’s also writing about his experiences and insights into Linux and open source.