Agile development has been around since the mid-late 90s. It is a bit confusing for those new to it though. Agile, scrum, lean, xp … what else? How do they relate to each other? Are they the same or different things?
According to some agile refers to a way of thinking. According to others it is a collective noun for scrum, xp, lean, and other practices, frameworks and methodologies that are considered agile.
The confusion is not so strange. All the agile methodologies involve a different way of thinking about software development than most of us are familiar with.
Here is a short overview of the most well-known agile methodologies / frameworks.
- XP – a collection of both technical and iterative planning practices, like Test Driven Design, refactoring, continuous integration, but also user stories, backlogs and iterations.
- Scrum – product management framework. Defines roles, artifacts and activities for product planning and delivery.
- Lean – methods focussed on maximizing value for the customer and eliminating waste in the end-to-end delivery process.
- Kanban – a single practice from Lean. A way to visualize the delivery pipeline and flow and bottlenecks.
- DSDM – Dynamic Systems Development Method. An agile project delivery framework.
- FDD – feature driven development. We don’t hear much about FDD these days.
- Crystal – Alistair Cockburn’s version of agile development.
Scrum and Lean are currently most popular and both are often complimented with XP. They lack technical practices that properly support iterative and incremental development. It is strongly advisable to address both the non-technical and technical practices.
Additional practices that have come along the last few years are:
- Continuous Deployment – end to end continuous delivery of new features, bug fixes and changes. Push button releases.
- DevOps – the combination of technical practices to support continuous delivery with focus on intensified communication and integration of development and operations.