What is Agile Software Development?
“…. Agile is an umbrella term covering multiple development approaches including Scrum, Kanban, Lean, XP and others. Agile software development is a set of beliefs that influence and guide specific approaches like Scrum and Kanban. It is not a prescribed methodology." (Brainslink.com)
More practically described, “Agile is a time boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end” (as was the case with the Waterfall method) (Agile in a Nutshell) It breaks down projects into bits of user functionality (user stories), prioritizing them, and then continuously delivering them in short two week cycles called iterations.
Agile suggests “move quickly”, which is misleading. Agile development teams shouldn’t focus on being quick or nimble. They should focus on building software that the customer wants. Wikipedia’s definition of Agile emphasizes the collaborative effort of self-organizing and cross-functional teams.
The Manifesto for Agile Software Development describes the values and principles of Agile. In short the Manifesto declares: “We are uncovering better ways of developing software by doing it and helping others doing it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
While the right part of each statement is important, the focus should be on the left part.
- are highly cohesive, loosely coupled and decentralized
- implement constant feedback cycles and continuous improvement
- are known for rapid responsiveness and swarming behavior
- have diverse skill sets and share a common vision
How Agile relates to Intelligent Swarming
There are many similarities between Agile Software Development and Intelligent Swarming (sometimes called Agile Collaboration): collaboration, multi-disciplinary team (skills), and the focus on customer. As well, Agile teams are self-organizing and cross-functional, which is similar to the swarms in Intelligent Swarming.
Intelligent Swarming can help support teams to respond rapidly. “Swarming focuses energy at a critical area or key activity so it gets done. Most often, teams swarm when there is a mission-critical problem such as system or customer down.” (Brainslink.com)
Agile Software Development distinguishes between pairing, swarming and mobbing:
- Pairing: one task (WIP), two developers, one keyboard (shared PC)
- Mobbing: one task (WIP), entire team, one keyboard
- Swarming: one WIP, team collaborates to get the one item done