Tallygist

Back to Journal

Issue 8

Collaboration lessons from mob programming

Synchronous collaboration in remote environments has its obstacles, but it is possible, and highly rewarding. This article summarizes my experiences with Remote Mob Programming.

By Martin Drohmann

Published

What mob programming taught me about remote collaboration and why it might make your team faster.

Nowadays many software companies operate at least somewhat hybrid, with employees working from home for parts of their week. This relatively recent shift has changed how we collaborate: on the one hand, we can meet synchronously with almost anyone, almost any time; on the other hand, our human capabilities are often under-utilized in these settings. Reading the room and setting it up for an effective meeting is reduced to a grid of small rectangular windows. Who knows how many of your co-workers are glaring at you in their pajama pants?

And even though technical solutions try to emulate the experience of sketching quick diagrams on a whiteboard or taking over someone’s keyboard when they are stuck, these tools have real limitations in my experience. They rarely feel natural. It is harder to read the room: on a large Miro board, for example, it is difficult to track what everyone is actually looking at and engaging with.

Effective collaborative meetings in remote settings are genuinely hard.

When collaboration tools are involved, the organizer needs to educate the group in advance and often run trial sessions before things click. It takes tenacity: accepting some frustrating early attempts, integrating the lessons, and refining the approach until it actually works.

As a result, I think many leaders default to a more hierarchical divide-and- conquer structure, where collaboration happens either asynchronously or under heavy top-down direction from one person issuing directives. Those directives favor clarity and executability over adaptation and diverse input. The outcome, predictably, is more likely to lack coherence.

There are certainly legitimate reasons why many companies are returning to in-office or hybrid models where coffee-machine conversations are the norm: synchronous collaboration comes more naturally in a shared physical space, while focused individual work tends to suit the remote environment.

My experience with synchronous work in a remote setting

That said, even in a fully remote environment, synchronous collaboration can be done well.

Early in my career as an engineering leader, I was asked to integrate a second team into my existing one after their team lead quit. My first team owned the core platform components; the new team was building on and extending those capabilities. There was obvious potential for collaboration and mutual learning, but after a sprint of business as usual, it was clear we were not speaking the same language.

I did not really know what the new engineers were doing day to day: what problems they were running into, what tools they used, what practices they had developed. There were plenty of written documents about their work and planned tasks, and we spent time going through them together, but the whole process felt overwhelming and directionless, more resource management than real collaboration. But I did not want to just be a manager for them.

So I tried mob programming: the entire team works on one clearly defined task together, in the same room, on the same computer. Since my team was remote, that meant a Zoom room. We could not literally share a machine, but we used a tool that made it easy to hand off control of the codebase, the steering wheel, so to speak. Rotating the driver role regularly is essential: if the same person drives the whole time, others disengage and stop contributing.

Yes, engineers are introverts, have their preferred ways of doing things, and are often very opinionated about it. So, I cannot say that everyone was excited about it from the start. But it was highly effective:

  • Learning was immediate and visceral. Everyone saw the pain points firsthand, and when the team got stuck, someone usually knew the answer. New team members could quickly contribute to tasks the core platform team had always owned. The core team, in turn, learned a lot about what it actually felt like to use the platform they had built.
  • At every moment, it was clear what mattered most. An experienced developer who has long since forgotten the struggles that shaped their setup often cannot write good onboarding documentation because those struggles are invisible to them now. But in a mob session, when a junior engineer or someone unfamiliar with the codebase takes the wheel, they naturally ask the questions that lead to the most important conversations. After a few sessions, we learned we needed a designated note-taker to capture the substance of those exchanges.
  • Team spirit grows, far more than it does when people see each other for fifteen minutes a day to discuss yesterday’s blockers.
  • There is some shared vulnerability, for example when something does not work and for a while nobody knows what the cause is. How beautiful to get humbled together.
  • There is a shared sense of ownership when a task actually gets finished and everyone has contributed to it.
  • And we actually get to know each other, because we are hanging out together. There is room for laughter and some stories, as opposed to a more transactional meeting approach.

Is collaboration really slowing us down?

After that experience, I started using mob programming sessions deliberately for specific tasks, and the most surprising thing was how fast the team could move. Collaborative mob programming is most effective when:

  • The problem is complex or ambiguous.
  • Alignment is critical.
  • The cost of miscommunication is high.
  • Learning and capability-building matter.

One such opportunity arrived when a specific customer needed a demo of a potential product feature by a fixed deadline.

Predictably, the requirements were ambiguous at first and changed several times across the two-week window we had.

Rather than assigning the task to one or two engineers and leaving them to wrestle with the ambiguity alone, I decided to implement it as a team. What followed:

  • Progress was always visible. At any point in the process, we knew exactly where we stood relative to the goal.
  • When the team encountered a fork in the road, or a technical constraint that required a product or customer decision, I could step away from the mob session, get answers quickly, and come back with minimal disruption. While I was gone, the team would shift to the next well-defined task, or simply take a break.
  • When customer requirements shifted, we could pivot quickly. Because we had built a shared understanding of the problem throughout the process, we could adapt and re-align without starting from scratch.

In the end, we had plenty of time to test the solution and hand it off to the customer success team before the demo.

What surprised me was the reaction from people outside our team. Many thanked us for the sacrifices we must have made to deliver something so messy on time. In reality, we probably worked fewer hours than usual:

  • At the end of each day, everyone was aware of the progress and could give a confident, grounded assessment of where things stood.
  • It took some time, but we also got better at taking regular breaks. The drop in energy in the room became legible to everyone. We started holding each other accountable for taking care of ourselves. As the group leader, I had some responsibility to model and celebrate that. It made the work more sustainable and, ultimately, more effective.

Lessons for the office and non-engineers

Offices are more conducive to synchronous collaboration than remote environments, but the physical setting alone is not enough. The company still needs to provide the cultural foundation. I have worked in office environments where top-down planning made real collaboration difficult: the priority was focus and output, not necessarily the best long-term solutions.

Learning this the hard way in a remote setting, I have come to believe that effective collaboration comes down to four core ingredients:

  • An ambitious but clearly defined goal, something like next quarter’s strategy.
  • A process that encourages, or ideally requires, active participation from everyone.
  • A way to evaluate progress and velocity toward the goal.
  • Awareness of the group’s capacity.

If you consistently get through every agenda item in every meeting, that is probably a sign that the people in the room are not really collaborating with you, either because they feel unsafe speaking up, or because they have not been given the support to develop that skill.

This perspective from Jensen Huang on avoiding one-on-one meetings offers an interesting example of how leaders can foster more collaboration.

Reflections of the day

  • Think of a task for your team. Does it call for more collaboration, or more focused individual work?
  • Do you think more collaboration could make your team faster? If not, why? If yes, what would it take to get there?

With care,

Martin

Newsletter

If you want to receive a weekly reminder of where to look for leadership obstacles and tips how to prevent them, sign up to my newsletter here