All

Mob Programming Tips from Sadanauts

Introduction

If you read this blog regularly, you may already know that we practice relay mobbing at SadaPay. While mob programming is often advocated – particularly in our engineering circles – it is rarely being practiced at scale.

At SadaPay, all 11 of our Product Engineering squads are mobbing for several hours each day. We’ve learned some good lessons that we’re eager to share with other teams, who might be earlier in their journey. If you’re thinking about mobbing in your team – or already mobbing and finding it challenging – please consider this advice from some of our experienced practitioners. We hope it will make your mobbing experiences more enjoyable and beneficial.

Rayan Saeed

When you’re the driver, think out loud. Articulating your thought process helps others follow along and contribute.

Frequent rotation is also encouraged, particularly having different team members to take the keyboard during sessions. Utilizing tools like mob.sh makes this easier.

When starting the mob, make sure everybody has all necessary dependencies to set a strong foundation for the session.

Finally, incorporate short breaks or task milestones to maintain high energy levels and prevent burnout.

Murtaza Kazmi

Team size (around 4): Keep your mob programming team small to prevent communication overload and maintain a swift pace. As the team size grows, communication complexity multiplies exponentially!

Clear communication: Clear communication among team members enables the creation of high-quality code at a rapid pace.

Rotations: Similar to a relay race, rotating responsibilities among team members keeps the development process moving smoothly and prevents burnout.

Conceptual Uniformity: Shared understanding is vital for effective mobbing. Activities like book club sessions, such as reading “Clean Code,” help cultivate this shared knowledge.

Uniform machines: Consider your development environment as a shared kitchen. If everyone has the same set of tools and ingredients (e.g. IDE formatting rules), it’s easier to follow the recipe (coding standards) and cook up a delicious meal (high-quality code) without chaos in the kitchen.

Knowledge sharing: Encourage learning and growth through shared knowledge, not dictatorship-style decisions, which can stifle creativity and hinder team cohesion.

Prioritization: focus on what’s most significant, guided by a shared practical mindset. This ensures the team invests time and effort where it makes the most impact.

Omar Labib

Align with your team on a mobbing schedule, book mobbing hours in your team’s calendar and stick to them. This will help everybody plan their day ahead so that they are aware when they are mobbing and use remaining time to pursue solo challenges.

Break your mobbing into multiple sessions where each session has its own context and goal. Take a refreshing break between those sessions as long sessions are tiring and the group can lose focus.

Mobs are effective when they are relevant to all participants. Having idle people just present when one or two people are looking into some issue is not the best value you can get out of mobbing.

Treat a remote mob just like working on one machine with your colleagues in the same room. Be at ease and enjoy your time together.

If you’re thinking about employing mobbing for your team, I would recommend doing so wholeheartedly. That is because if some people are working in-person, the old-school way, and others are joining virtually, it just won’t work well. You’ll quickly end up with a case where the in-person folks are talking amongst themselves and the virtual joiners won’t know the context that they just shared. Make sure everyone joins remotely.

In order to make the process effective and frictionless, you should focus on making handovers and documentation smoother using tools like mob.sh and comit.

Although this one applies to any online activity, a bad internet connection (high latency particularly) is detrimental to a mob session when you’re the driver and sharing your screen because code becomes unreadably pixelated on high latency connections. So, a good internet is a must!

Mob sessions foster a sense of unity within the team, as collaborative work and shared experiences contribute to stronger relationships among team members. Creating these bonds through team building is very beneficial to organizations.