Agile Principles and Practices

by Stephane Micheloud, July 2009

[Home]
[Back]

The agile approach is to plan for what is known and to iterate against what is not known. Agile development thus focuses on building knowledge about value, cost and schedule and adjusting the plan to match reality.

Agile values

The Agile values are defined in the Agile Manifesto co-authored by 17 experts (Utah, April 11-13, 2001).

We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
That is, while there is value in the items on the right, we value the items on the left more.
Authors: Kent Beck1, Mike Beedle, Arie van Beenekum, Alistair Cockburn, Ward Cunningham1, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, John Kern, Brian Marick, Robert C. Martin, Stever Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas.

Agile principles

An Agile process should obey the following 12 principles:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity — the art of maximizing the amount of work not done — is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Agile principles emphasize building working software that people can get hands on quickly, versus spending a lot of time writing specifications up front.

Agile practices

While Agile principles must be preserved during the project lifetime Agile practices must be adapted with changes.

A waterfall project carries many uncertain features forward to the testing phases just before shipping. An agile project eliminates the uncertainty in small iterations that include every part of development.

Finding the fun
FIGURE 2.4 "Finding the fun", Agile Game Development.

Here are some thumb rules for a project:

Agile planning

The master story list is prioritized by the customer and estimated by the development team. It forms the basis of your project plan and serves as a velocity tracker (how much can get done per iteration) and as a predictor (how much will get done in the future).

Adaptive planning is a cornerstone of agile delivery: when reality disagrees with your plan, you’ll change your plan.

Delivering a feature in Agile means doing everything necessary to produce shippable code (100% complete=analysis+design+coding+testing+more).

Agile teams

Agile teams adhere to rigid development practices such as good design, continuous refactoring to keep interfaces and code clean, automated and continuous integration of code, automated unit tests and integration tests.

Blurring roles, continuous development activities and team accountability are the main characteristics of an Agile team.

About the Author

Stephane's Picture
Stéphane Micheloud is a senior software engineer. He holds a Ph.D in computer science from EPFL and a M.Sc in computer science from ETHZ. At EPFL he worked on distributed programming and advanced compiler techniques and participated for over six years to the Scala project. Previously he was professor in computer science at HES-SO // Valais in Sierre, Switzerland.
[Top]

Other Articles