Have you ever been to a LAN party? It’s not quite like other parties. It usually resembles a bunch of people piled in a small room, all joined to the same local area network (LAN) connection, and all playing the same video/computer game together. It’s pretty overwhelming.
Well, mob programming is pretty similar, but instead of playing a video/computer game, they’re writing code. Booking.com Senior Software Engineer Sam Fare had a firsthand experience doing basically that for five months and says he learned a lot.
Usually, mob programming involves face-to-face and side-by-side collaboration because all of the developers are working on the project simultaneously. But with the help of the right tools, like CoScreen, you can mob remotely, so you can work from anywhere and with anyone.
What is mob programming?
Mob programming is a team-effort approach to delivering a single work item, usually to develop software. It extends the concept of pair programming but with more than 2 developers. The key concept that drives mob programming, also loosely called mobbing or ensemble programming, is to create pockets of localized optimization.
“The basic concept of mob programming is simple: the entire team works as a team together on one task at the [same] time,” writes programmer Marcus Hammarberg. “That is: one team – one (active) keyboard – one screen (projector of course).”
In mobbing, everyone is given a role and always has a part to play while they are working together to brainstorm and write the code. This makes the process more efficient.
There are two major roles in mob programming — the driver and the navigator (or facilitator). The navigator is the person who instructs what’s supposed to be happening, and the driver is the person acting, so they do all the typing.
According to Scrum.org, the roles will change over time as the team collaborates on the code. When the navigator gets to the point where they don’t know what else to do or don’t know what direction to go in next, they have the opportunity to ask for help from the “mob” or the members of the team who are watching the process live on a screen projector. After a certain amount of time, they all switch team roles clockwise, so they don’t lose track of who goes next.
The rotation of roles depends on the number of people involved and how much time is allocated to the project. You want to have a chance for everyone to work on the project several times. Three people minimally should be involved in the process, but four to six people are best. The Mob Programming Guidebook is a more in-depth guide to this process.
Why use mob programming?
The concept can cut back on the amount of time it takes to develop software because if you’re individually working on the software and then merging it, it can be very time- and labor-intensive. Mob programming can speed up things like integrations and design.
If your team is all working on separate parts simultaneously and also helping each other with questions when someone gets stuck, you’re also potentially spending less time lost and more time programming.
According to Woody Zuill, a mob programming expert, it’s easy to see the benefits of mob programming when you compare the productivity of teams that use the approach to teams that don’t.
“...perhaps we can judge our productivity by comparing the number of projects delivered into use for the year before discovering Mob Programming, and the year after we adopted it: We had an increase of approximately 10 times the number of projects delivered. There are many factors we are not taking into account using this measurement, such as project size or the number of features.”
The benefits of mob programming
There are a bunch of benefits to using mob programming, such as:
- It helps with the organization. A good rule of thumb in any programming approach is to keep your code updated and make it easy to manage.
- Questions can be answered immediately from within the team because you’re all working on the same project at the same time.
- Multiple developers working on software in their own specialties create a code that is solid on all corners. There are shared and differing perspectives on building new features/products. This results in stronger and higher-quality code.
- One of the big selling points to using mobbing is to introduce a new hire or junior developer through a codebase. It reinforces and teaches coding stylings, conventions, and best practices across the team.
- It helps to rule out code conflicts and repeated code. The general rule to coding is not to have a repetition of unnecessary code.
- It builds team rapport, dynamic, and collaboration. In mobbing you and your teammates are able to work together; you have shared goals and a shared process.
- It allows for team-wide, on-the-go software system design.
- It improves visibility within the team, especially for new hires and junior developers.
Why should you mob program remotely?
Mob programming remotely can have all of the same benefits of co-located mob programming, except with the added benefit of getting to work together from the comfort of home (or wherever for that matter). But it can be a bit tricky, so we need some new resources to help us work remotely.
Remote mob programming: Why it’s challenging to collaborate together from afar
The major issue with working remotely is you need to be able to communicate with multiple people at the same time, in different locations, all while viewing different sections of code and comparing it all to make sure it works.
The problem: Video conferencing tools don’t go the distance
Zoom, Skype, and Google Hangouts allow you to communicate and share a screen, but it gets complicated when you want multiple people to share screens simultaneously. And if you want to have the ability to make changes or edits to your teammate's code on their screen as if it were your own, it’s not going to happen. Mobbing is meant to be interactive, live, adaptable, and you need the tools to allow you to do that from everywhere.
For a more in-depth comparison of other communication tools out there, we created The Developer’s Guide to Remote Debugging.
The solution: CoScreen makes mob programming from anywhere possible
CoScreen allows you to do all of that, plus each person can make alterations on each other's shared windows as if they were working side by side or on the same machine.
How to Do Remote Mob Programming with CoScreen
First, you should probably download CoScreen!
At this point, you’ll want to set up your account and get your team to all do the same! When everyone is all set up you can get started and have a meeting.
Now you’ll all want to have the code up that you’ll be working on, and do the same mob programming you’d normally do, except instead of passing the keyboard around and alternating every X number of minutes, just “pass the torch around” (figuratively speaking) to who’s doing the typing (driver) and who’s doing the instructing (navigator).
Make sure you plan accordingly. Google Calendar is a great tool to help people coordinate times when everyone can work simultaneously.
Set timers to make sure the navigator and the driver are alternating regularly, the same as you would with in-person mobbing. This can usually be done on your phone. A good alternative is a project management platform like Teamwork.
Take advantage of mob programming’s benefits
In conclusion, mob programming can have many benefits, such as team building, a more integrated software design, and cleaner, more organized code, and it’s possible to do remotely.
Here at CoScreen, we recently celebrated the 10-year anniversary of mob programming in our podcast.
Try CoScreen for free in your next mobbing session!