Agile software development started as a term for a collection of lightweight methodologies, such as eXtreme Programming (XP), Crystal, Scrum, Dynamic Systems Development Method (DSDM) and others. It has evolved into something more than that. Agile embodies a philosophy about software development, a set of common beliefs and some practices. The methodologies themselves are more prescriptive about how development is done and contain specific practices.
For example, teams that follow Scrum are Agile, but not all Agile teams are Scrum teams; the same goes for other teams following XP or Crystal. Other teams will have found their own ways of working, using the Agile philosophy and practices that work for them. Figure 2.1 demonstrates how specific methodologies are refinements of Agile.
Agile itself is a form of Lean. Many organizations outside of software development have applied Lean principles to improve their processes and practices. While Lean recommends a few specific practices – for example, value stream mapping – it is itself a way of thinking about business processes and it embodies certain ideas and concepts. These concepts lie behind much of the Agile philosophy.
Agile teams are practising a form of Lean. However, it doesn't follow that all Lean teams are Agile, because some teams may find alternative solutions that are compatible with Lean thinking but not present in Agile practices. For example, a high-performing Lean team may decide to abandon the ...