Manifesto for Agile Software Development

David Morgan and Cecil Williams, February 25, 2013

How many times have you been presented with a phone book-sized printout of ambiguous yet carefully crafted requirements?  How many times have you, swamped with remaining work and short of time, camped in your cubical to meet a looming deadline?  Or seen your customers paralyzed by an approval process out of fear that they will not think of everything up front?  Or witnessed an organization trying to contain costs “next time” by more strictly observing the same process as last thinking it wasn’t the process that led them astray but their lack of discipline?

If you’re answering yes to some or all of these questions, you’ve felt the pain that can happen during Waterfall (or defined process control) managed projects.  Wheeler’s law states that any problem in computer science can be solved by adding another level of indirection, and in that mindset Waterfall is completely logical.  But the problems above are not computer science problems, they are people problems and those are seldom solved by adding complexity.

The Manifesto for Agile Software Development is a statement of values, which result in software development – but they place little focus on the software (http://agilemanifesto.org/):

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

The Manifesto is about simplicity.  By embracing the above values, communication and visibility increase greatly. People are not looking at abstract ideas as wire-frames and lists – they are witnessing the solution to their problems as it forms.  They are actively engaged instead of passively waiting and attending meetings where their own assumptions may go unchallenged or unexpressed.  They are free to drop features that prove less useful and add features that will add value.

In the next several blog posts you will learn about each of the above values in more detail and show how they can help you by uncovering better ways of developing software.