Agile as a development method has been around since the 1990s. There has been a steep increase rise in adoption. The rapid growth and adoption of this methodology often causes confusion, about what Agile is, how it should be applied, and who should use it. According to Wikipedia Agile is defined as ” incremental method of managing the design and build activities of engineering, information technology and other business areas that aim to provide new product or service development in a highly flexible and interactive manner” Source
In simple terms. Agile is creating a base product, then adding to it incrementally. By starting small, with a core deliverable, a customer or stakehold can provide feedback early in the creation process. Feedback drives the creation of the product, allowing it to more closely meet the needs of the customer or stakeholder. Agile is meant for new development, not sustaining products. Agile can be used to build software, design processes or manufacture products.
Agile has many flavors. Each has their strengths. Often the lines between the different methodologies blur because they share many common practices and common terminology.
Scrum: Most common version of Agile. Scrum comes from Rugby, and provides Agile the daily standup. Consists of small, self organized team working from a prioritzed backlog, driven by customer feedback. Scrum Alliance and Scrum.org are two key organizations who define Agile Scrum values.
Kanban: Kanban focuses on incrimental improvement and leverages LEAN principles of limiting work in progress and visualization of work in progress. Kanban teams focus on reducing cycle time, and increases product frow through the system. More information on Kanban.
XP: Extreme Programming, based around 12 core practices. XP has strong software development practices including Continuous Testing, Pair Programming, More information on XP can be found here: XP FAQ.
LEAN: Lean manufacturing prinicipals, pre-date Agile. However, Agile organizations often include LEAN principals in their Agile implementation, including: limiting work in progress, visualizing work in progress , using cross-functional teams. More information on LEAN can be found in the “The Toyota Way”.
DSDM: Similar to scrum agile. Has a broader range of roles, and more upfront planning then tradition scrum. DSDM Handbook
RAD: Rapid Application Development. Focused on quick prototyping cylces. You build product samples, reusing code between iterations and implement feedback from the customer. Rapid Application Development on Wikipedia.
There are many other smaller frameworks out there, with their own practices. For our purposes, Agile is defined as iterative development focused on delivering customer value. Any framework that helps accomplish this through small, crossfunctional teams, prioritization , and customer focused development is an Agile candidate.
Why Not Both?
Very often teams will implement more then one of these with their agile implemention. It is common for teams to practice Scrum, and have a Kanban board or to pratice Scrum and use XP Development practices.
Image from Flickr user :faungg