Why Should You Pair/Mob Programming?
Often there's a misconception about being working in code that we don't need to talk to anyone. Granted, there are times we don't have to talk to anyone (perfect for an introvert who likes to stick headphones on and crack on with the task at hand) but there are times we do need to talk to our stakeholders, fellow developers etc.
How about the times we don't *need* to, but we do anyway because of the benefits? No, I'm not going to go into the social/mental health benefits of being a bit more extroverted, but focus in on the benefits to learning and productivity.
What is Pair/Mob Programming?
You might well have heard of pair programming, and it is what it says really...you work in a pair to program. But mob programming you might not have heard of, but it's nothing more complicated. It's the name for programming with multiple people.
The format of this group working might vary, depending on your environment. It is definitely possible to sit around one device (hopefully with a big enough monitor) but this obviously isn't something possible if you're not all in the same location and could get a bit cramped even if you are!
In this time where remote working has become a lot more ubiquitous, it's more common (and in some ways easier logistically) to do this via a video conferencing call with one person sharing their screen. I find this way easier and more productive in a lot of ways, everyone can see the one screen being shared more easily and any research/Googling that needs doing which can be done alongside viewing.
What are the Benefits of Programming Together?
Simply, this is a "two [or more] heads are better than one" type of answer. If there's a bug fix, or something needs creating it can be helpful to have different perspectives and knowledge bases collaborating on a piece of work. It gets things done quicker in a lot of times without asynchronous back and forth.
To give a more specific example, as an Machine Learning Engineer more focussed on the deployment and testing infrastructure working on a project with Data Scientists who make and refine the model, I like to bug fix and explore any issues alongside a Data Scientist. I am not as much as an expert in the model as they are, and I spent more time testing than them. So together, we work well contributing knowledge in our respective areas of expertise.
Not to forget, of course, that's it's always helpful to have another pair of eyes when you're writing anything to check for typos or even act as your more responsive rubber duck to check logic!! (If that last joke went over your head you can check out my previous post What Exactly Is the Function of a Rubber Duck?)
It can also be a great learning exercise for you, no matter your level of expertise/experience. There's always so much to learn in this industry and seeing how other people work through problems, fix bugs or even teach/explain things. There's always something to learn, in my opinion.
Are There Any Drawbacks?
I would say, time and place. Depending on the situation it might not be necessary to set up a call/time where everyone is free. This could delay a simple fix for no reason.
The other main drawback I see is more about group dynamics; if the mob group gets too big, and there are too many voices trying to compete the session can become unproductive. Similarly, if there is a dominating voice and people are left out this can diminish the learning experience for those not able to be actively involved and can actually stop people from speaking up if they have a different opinion or suggestion.
Overall, working with other people can be a good way to learn new skills and develop current ones. It's a great way to foster team collaboration and tackle conundrums.