Remote Mob Programming
Starting a new position in February I was introduce to a new form of software development called Mob programming. I have worked on pair programming teams before and have spent most of my life working as the single programmer in mostly an agile environment. I didn't really know what to expect and term Mob can mean a lot of things, so far it has been an interesting ride.
Here are the basics of Mob programming from what I can gather from the internet, it's a team of software engineers working on the same thing, at the same time, in the same space, and at the same computer. That is the defintion of it, but with the pandemic going on, most people are now working remotely. In my example it is a team of software developers working on the same thing, at the same time, using zoom and git at different locations.
The team I'm on has three engineers, the driver(the coder), the navigator(the one who guides), and the auditor(one who oversees). All three engineers rotate the position. Rotation time can vary, but in most examples I found on the internet it's been ten minutes, doing this remotely, has proven challenging. The preference I have is for forty min to an hour or for lists of task to be completed. The reason why this is, certain task can become very involved, rotating in the middle of it can challenging.
After working with this form of software engineering for over half a year now, I have grown to really like it. I have always been a fan of pair programming. One of the things I really like about this is it makes engineers work as a team. When people think of an engineer they typically think of someone who is coding alone. In this setup all engineers are engage and everyone contributes. There is knowledge sharing and collaborations, engineers who have a difficult time working with others will be weeded out in this setup.
Also working in this form of coding, you have two more set of eyes looking at the code. Obvious bugs or pitfalls can be easily caught in design and the team always knows where the project is, with more then one person seeing it. You get rid of the scenario where the developer who has been working on this for a month, only to discover that nothing has been done in a month scenario, it keeps all the engineers honest and you have better insight into progress.
I also think morale is better for the developer, since you are working on the team, you won't feel isolated and off o nan island. People will say you are paid to perform by yourself, yes, but sometimes the little things does make a difference, like being able to discuss and collaborate with a coworker about design. When you are stuck, it is nice to have other people there to talk about possible ways to get around.
My experience overall with Mob programming so far has been a positive one and it's very helpful. Initially, when I heard the term Mob, I was thinking of something chaotic, but it is not the case. Working on this form of software engineering can make the engineers more productive, improve quality, and better meet timelines, which I believe is the goal of any software organization.