Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
10  
+1 First time I heard the term. Google knows the answer –  CodeART May 7 '12 at 20:21
    
@CodeWorks: My searches on Google produced few relevant results, and none with a clear answer to my question. If there's a canonical answer out there, then by all means, post it here. –  Jay Bazuzi May 9 '12 at 5:24
add comment

2 Answers

up vote 25 down vote accepted

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.

share|improve this answer
    
+1. Interesting. Have you seen this work in practice? –  CodeART May 7 '12 at 20:29
2  
Another way of saying it is "have as few works-in-progress as possible", right? –  Jay Bazuzi May 7 '12 at 20:31
1  
@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
1  
@JayBazuzi Yeah, pretty much. Having full-team support is also important though. –  Oleksi May 7 '12 at 20:33
7  
@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
show 3 more comments

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".

share|improve this answer
    
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
    
@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
    
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 at 20:52
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.