Why do agile methodologies work?  More importantly, why do they work better than traditional methodologies?  I’ll single out two reasons. (Martin Fowler’s excellent article provides many more.)  Agile methodologies work because:

  1. They recognise, and emphasise, creativity
  2. They are based on real-world experience

Recognising Creativity

For many years we have drawn analogies between software engineering and traditional engineering – making cars, buildings etc. Traditional engineering makes a clear distinction between designing and building. The designer(s) figure out exactly what should be done, then the builders create the physical objects according to the specified design.

Software engineering is different because no physical objects are constructed.  It’s all “brain work”, so our analogies with traditional engineering are flawed.  We should consider all software development, including coding, to be “design”.  In other words, making software is not like making a set of blueprints and building a house, it’s like making only the blueprints.

Martin Fowler and Jack Reeves explain this very well in their respective articles.

If we accept that making software is like making blueprints, not houses, we can draw some important conclusions:

  • Making software is a creative process
  • Creative processes cannot be planned and scheduled in the same way as other processes
  • It is very important to have regular face-to-face collaboration between all interested parties

Imagine asking an architect to create a set of blueprints for a house.  Would you provide a written specification and then review the design in the form of UML diagrams?  Or would you prefer to communicate your needs verbally and review the design by discussing the actual blueprints, as they evolve according to your feedback?  That’s agile development 🙂

Experience

My own “favourite” agile methodology is Alistair Cockburn’s Crystal Clear.  Crystal Clear is based on extensive research.  Alistair spent 10 years visiting software projects all over the world, then he wrote Crystal Clear to summarise what he saw in successful teams.  It’s not a theory about what might work, it’s a description of what actually does work.

Finally, my own experience corresponds with the claims made by agile methodologists.  Simplicity, customer collaboration, and flexibility tend to create successful projects.