Monday, April 21, 2008

Lean foundation of Agile Methodologies

Agile methodologies such as Extreme Programming and Scrum emerged in the 1990's as a radical departure from traditional, waterfall software methodologies. But were these agile methodologies really so new and radical? Many thought leaders have recently made the point that agile principles and practices are a software manifestation of the principles behind the lean product development strategies applied so successfully by Toyota starting decades before the agile software movement began in earnest.

Listed here are the seven principles of lean software development as identified by Mary and Tom Poppendieck in their book Lean Software Development: an Agile Toolkit and their agile counterparts from the Agile Manifesto (1), Scrum (2), and Extreme Programming (3).

Eliminate Waste
  • Working software is the primary measure of progress (1)
  • Simplicity - maximizing work not done - is essential (1).
  • Simple design - YAGNI (3)
  • The most efficient method of conveying information is face-to-face conversation (1)
  • business people and developers work together daily (1)
  • XP planning game (3)
  • Test-driven development (3)
  • Continuous integration (3)
Amplify learning (feedback)
  • early and continuous delivery of valuable software (1)
  • business people and developers work together daily (1)
  • Scrum sprint reviews held with all stakeholders (2)
  • XP - small, frequent releases (3)
Decide as late as possible
  • Welcome changing requirements, even late in the process (1)
  • Scrum product backlog - prioritized prior to each sprint (2)
  • Sprint planning / XP planning game (2) (3)
Deliver as fast as possible
  • deliver working software frequently (1)
  • potentially shippable software at the end of each short sprint (2)
Empower the team
  • Build projects around motivated individuals...trust them to get the job done (1)
  • The best...designs emerge from self-organizing teams (1)
  • Scrum self-organizing teams and Scrum master as servant leader (2)
Build integrity in (to delight customers)
  • Our highest priority is to satisfy the customer through early...delivery of valuable software (1)
  • Continuous attention to technical excellence and good design (1)
  • Design improvement / refactoring (3)
See the whole (optimize the whole system, don't sub-optimize)
  • At regular intervals, the team reflects on how to become more effective (1)
  • Scrum - sprint retrospective (2)
  • Design improvement / refactoring (3)
  • sustainable development - should be able to maintain a constant pace indefinitely (1) (3)
  • Design improvement / refactoring (3)

No comments: