Going into the pandemic the team I worked in at Funnel started using VS Code with a plugin called LiveShare. It allows everyone to type at the same time. This may sound chaotic and sure is but it is the best tool I have used to get the team into flow mode. Many developers use this as an argument against doing mob programming. “I like to be in the zone” and so on. But what if you can be in the zone together?
What is swarm programming?
Swarm programming is the natural next step after mob programming. If you like you can see it as a kind of mob programming. The formal setup for the mob is - after all - just a place to get started. And then it can and should evolve depending on the individuals that form the group. A group where the psychological safety is high and there is a high degree of inclusion can move in the direction of the swarm. Instead of taking turns typing, navigating, slacking and so on everyone is involved at the same time. This works best with 3 or 4 developers - otherwise there will be a sub group that drives the thing. (This can also be fine but a stricter mode of mob programming is probably better then.) A tool that lets each participant control a cursor is essential for this to work. A shared terminal of sorts can also be useful depending on what stack you work in. Once the setup is right all that is left is to communicate and code together. The feeling when one in the team goes: “What do you think about this” and types something to show, another one pipes in with a challenge and soon there is a path forward where everyone just adds a part of the needed code. Someone makes a typo, someone else fixes it. List of things are updated at 3x speed.
Well there are lots of benefits and it will differ between groups. Here are some that we have seen.
- each developer can have their own set up with color schemes, fonts and weird bindings (vim?).
- the speed at which the team can move is much higher than with standard mob programming and it is not hurting quality in any way
- the feeling of doing it together - really collaborating at the same time.
The main challenge is to make sure that everyone is on board. Listening and communicating gets more important. We have done it with new team members but in hindsight it would probably have been better to go back to formal mob programming for a while to create a safer environment for the newcomer the first weeks or so.
The other main challenge is probably for the most senior developers in the team to take it down and make sure to include everyone in the effort. A focus on learning and interaction is essential as well as a culture of sharing.
Another drawback is that the there needs to be some consensus about the tool used.
We have used VS Code with LiveShare and it has been working fine when doing python. We tried the offering in PyCharm when we started out but at that point it didn’t really cut it but it is likely much better now. I guess any JetBrains IDE whould have nice support for this now. There are screen sharing tools also that support this - pop is one such.
This is just one way of working together that we use here at Funnel. Each team set up the best way for the group or individuals that it is formed from. Since we all are unique we have as many ways of working as we have teams. I would be happy to chat more about it if you was intrigued by this and want to dig deeper.