One of the goals of Agile software development is to deliver working software fast and frequently. Swarming is a technique that helps agile teams to do this. What is swarming, what are the benefits of swarming, and when and how to apply it?
Vin D'Amico explains in agile teams swarm to greatness that teams that use agile software development can deliver more software with less planning, and respond rapidly:
They quickly go from planning to designing to coding to testing to finishing. Then, they do it again — and they keep doing it until the software meets the goals defined by the stakeholders.
But how do agile teams respond so quickly? Vin states that:
(…) great teams swarm. They try to resolve the issue or remove the impediment now. If they can’t, fine, move it to the backlog but only as a last resort.
In seven strategies for team swarming, David Bernstein explains how swarming help to build an effective team which is able to focus and solve complex problems:
When swarming, the whole team works together on the same problem. It helps to know each other and work well together. Generally, groups need to go through the phases of forming (getting to know each other) and storming (having conflicts and resolving them) before they get to performing (being a highly functional team), so give everyone the space to become a team.
Swarming works in a similar way as pair programming, by having team members work closely together on the same task:
Rather than working alone, see if solitary tasks can be done by two or sometimes three people. Often, the momentum gained by working in pairs offsets putting two people on the same task. Remember, high performance teams almost always pair on tasks.
What is swarming? Some years ago, InfoQ published a summary of a Yahoo group discussion on swarming in swarming: what’s the point?. It explains the purpose of swarming: “getting the team to focus on getting work that is valued by the business done” and “to increase quality and consistency by getting the whole team involved in a story as near to the beginning as possible”. According to Vin D’Amico, ”[Swarming] is simply the act of coming together to solve a problem or get something done quickly”. David Bernstein defines it as “A swarm is where you get the whole team together to focus on solving a single problem”.
Oleksi Derkatch describes how swarming works, and what it can deliver:
The idea is that you get all the developers to work (swarm) on a single story, instead of having each developer working on a separate story. The goal is to get more stories fully completed. It's better to have 80% of the features 100% done, instead of having 100% of the features 80% done.
Renee Troughton explains how organization can use swarming as a way to build teams that are more innovative, in her blog post the new age of business:
This is where swarming comes in. Most organisations throw their ‘resources’ about from project to project with little thought as to whether the person is actually interested and passionate about that type or project. Additionally they do it with little thought of true speed and its relationship to return of investment.
To resource the work we need passionate people who will focus on this idea like it truly is their newborn baby. (…) Employees interested in being part of this work should be able to sign up for it and be able to be immediately released to follow through on it.
Do your teams swarm? Does it help them to deliver working software fast and frequently?