Agile Software Development
What is Agile Software Development?
Agile is category of development approaches that includes Scrum, Kanban, Lean, XP and others. "The Agile methodology is a project management approach that involves breaking the project into phases and emphasizes continuous collaboration and improvement. Teams follow a cycle of planning, executing, and evaluating." (Atlassian - The Agile Coach)
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.
Agile organizations:
- 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