DEV Community

Josep Mir
Josep Mir

Posted on • Edited on

The agile principles

Agile: able to move quickly and easily.

Alt Text

Almost 20 years ago, in 2001, few software developers got together in a ski resort in the mountains of Utah to discuss software development methods. The 17 people there were: Kent Beck, Ward Cunningham, Dave Thomas, Jeff Sutherland, Ken Schwaber, Jim Highsmith, Alistair Cockburn, Robert C. Martin, Mike Beedle, Arie van Bennekum, Martin Fowler, James Grenning, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, and Steve Mellor.

As an action to turn away from the documented driven, regulated, planned and micromanaged methodologies to develop software widely used, all these celebrities developers were related somehow to different lightweight methodologies to develop software such as rapid application development RAD (1991), unified process UP (1994), dynamic systems development method DSDM (1994), Scrum (1995), crystal clear and extreme programming XP (1996) and feature driven development (1997).

The outcome of the two day meeting was the signature of the well known agile manifesto:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

This is a great manifesto. It is short, easy to remember and it expresses precisely which is our position while developing software. It is a revolutionary declaration to whoever opposes us or works in a different way.

But if you don’t want to just declare yourself as an agilist, and want to gain adopters instead of enemies(skepticals), I usually refer to the agile principles behind the manifesto. They express much better what we want to achieve and the value that we will add. It is a list of twelve 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. Agile processes harness change for the customer's competitive advantage.

  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. Give them the environment and support they need, and trust them to get the job done.

  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. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

  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.

Next time you want to discuss with somebody about agile, refer them to the agile principles instead of just the manifesto, and explain the motivations and the values behind each principle of this list. It is a much more convincing and understandable way to comprehend the agile benefits. After all, software development is all about communication and interaction between humans, we need to be aligned in the way we work.

Top comments (0)