Skip to main content

What is "swarming"? [Resolved]

I've heard swarming mentioned in the context of Agile or Extreme Programming. It seems to be a complement to pairing.

What exactly is it? When should it be applied? How do you do it well?

Asked March 20, 2017
Posted Under: Programming
3 Answers

The idea is that everyone on your team works on the same story at the same time. Instead of everyone focusing on different tasks, everyone focuses on one task at a time until it's completed. Then they move on to the next thing, where they all work together on it.

This helps team that struggle completing stories before the end of sprint. Often teams finish 80% of all the stories, but none are complete. This is less useful than completely finishing 80% of the stories, since unfinished stories have (effectively) no value to an end user. It's easier to get stories completed when everyone on the team is focusing on one story at a time. This is the motivation behind swarming.

There are some difficulties here. For instance, QA can't always test things before they are built (or even designed). In this case, you should establish a design together early on, and then QA can write (initially failing) tests against the design and not the actual implementation.

Answered March 20, 2017
@CodeWorks, Not at all. In fact, it probably increased it. Because everyone was working so closely together, there were less blockers that surfaced. When something came up, at least someone on the team knew how to solve it, and were able to do so right away since it had their full attention. Also, context-switching is generally bad for your productivity. Just ask you CPU. :P – Oleksi May 7 '12 at 20:36
 CanDoerz  3 months ago
@JayBazuzi Yeah, pretty much. Having full-team support is also important though. – Oleksi May 7 '12 at 20:33
 CanDoerz  3 months ago
@CodeWorks Yes. We have used it where I currently work to some success. It's a pretty fun way to develop, because it's feature oriented. Everyone is working towards the same goal at the same time, so I found that it fosters teamwork really well. – Oleksi May 7 '12 at 20:32
 CanDoerz  3 months ago
Another way of saying it is "have as few works-in-progress as possible", right? – Jay Bazuzi May 7 '12 at 20:31
 CanDoerz  3 months ago
+1. Interesting. Have you seen this work in practice? – CodeART May 7 '12 at 20:29
 CanDoerz  3 months ago

Swarming just refers to the fact that multiple people work together to complete a task or story. In my experience this isn't something you do often.

Typically, each member of my team works on a different task and/or different story. If someone is falling behind, or if there's a desire to finish a task or story early, other people will stop working on other tasks and "swarm" to complete the task, which means they all work together on a single task or story until it is completed.

We recently had a small number of stories that was some fairly boring, uninteresting work. I gave the team a small incentive (pizza) and deadline (end of the day) to finish the work, so they swarmed on the story and knocked out at least a couple days of work in one afternoon. They got the work done and out of the way early, then each team member went back to whatever they were working on. They got a free lunch, I got work done early that could have dragged on due to it's dull nature, and the team got ahead of their sprint. Win-win-win.

"Swarming" is nothing more than a fancy term for "hey, let us help you with that".

Answered March 20, 2017
I think your answer is very key here. The other answer that is 'accepted' is the "what". But yours seems to address the how. – Ape-inago Feb 7 '14 at 20:52
 CanDoerz  3 months ago
@Jay Bazuzu: Whether everybody is put on a single task as part of sprint planning, or whether it happens organically as needs arise, the definition is still pretty much the same -- everyone works together on a single task. – Bryan Oakley May 9 '12 at 21:19
 CanDoerz  3 months ago
This seems quite different from the other answer. You're saying "when there's an unusual, urgent need, get everyone on it". @Oleksi said "when planning a development cycle, better to put everyone on one task at a time than to have each person working on a separate task in parallel." Either definition is plausible, and both are useful practices, but his has 4x the votes, so I'm assuming his answer reflects the most widely-accepted definition. – Jay Bazuzi May 9 '12 at 16:37
 CanDoerz  3 months ago

Swarming is actually a central concept to agility. It is not something that is done "when there are problems". Swarming, in its simplest form, means that teams work collaboratively on items (stories) and work them to completion. The core concept is to "quit starting, and start finishing". In other words, instead of every developer working independently on a story, the team focuses on a more limited set of stories/tasks together and get each item done sooner. Think of it as the difference between a single-threaded system, and multi-threaded. If a User Story has 10 tasks that must be done, and each one is 8 hours, assuming that there were no complications, one developer could work each task sequentially and complete the story in 80 hours, or about two weeks (given 10 day sprint of 8 dev hours per day). What if two developers split the tasks and worked them concurrently? The same 80 hours of work can be completed this way in one week. Add a third, and you can see now it might be done in 3 to 4 days.

Swarming can be done in several ways:

  1. Pair Programming (two developers sitting side by side to work on the code, one is the "driver" writing the code, the other is the navigator, keeping the longer term direction in mind and helping to code review simultaneously.
  2. Pair work: A developer and a tester work simultaneously on the same work, one coding and the other testing, writing automation, etc
  3. Swarming like I mentioned above, which is very common. Usually, team members swarm a Story, but each owns individual tasks in this method.
  4. Mob programming: the entire team is focused on one story (or even task) at a time.
  5. Teams that give a story to every developer tend to have too much "work in progress" or WIP, and often many stories get started but not done. This is an ANTI-PATTERN, and is NOT best practices.

    Teams that swarm tend to have less WIP and complete more stories--and by done, I mean Developed, Tested, Approved, ready to deploy. Thus, this is a practice is that core to agility.

Answered March 20, 2017
Your Answer