Agile vs traditional planning

In the next weeks I am going to write a series of blog posts covering our agile planning and development process. In this first post I'll introduce the agile approach, its benefits and key differences to the traditional approach.

The traditional ways of planning software projects have shown that [1]:

  • 2/3 of the projects overrun their cost estimates
  • 65% of the features implemented were rarely or never used
  • the average project exceeds its schedule by 100%

 

Agile development tackles these and other issues with a special approach as stated in the agile manifesto [2]:

  • 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 agile approach involves working as one team delivering features in short iterations focusing on business priorities. Delivering features after each iteration means that the team works towards having a stable version of the software that is enhanced incrementally. This enables to collect early feedback from the client and potential or actual users. This feedback is fed back into the development process to make sure the team always works on the highest valued features.

 

Customer collaboration is valued over contract negotiation because it means that all people involved in the project, including the product owner and the customer, have the same goals as the developers or the project manager. In traditional contract negotiation the development team and the project customer are usually set against each other, arguing over estimates, changes, etc.

 

There a few roles within an agile team:

  • the product owner, which makes sure all the people involved share a common vision and goal for the project. The product owner establishes priorities so that the team is working on the highest valued features.

  • the customer, which is the person that funds the project or buys the software.

  • the developer, which should be understood as anyone involved in the development of the software. Programmers, testers, database engineers, usability experts, designers, copywriters, and so on.

  • the project manager, which represents the person that assumes the leadership of the team.

 

In some cases some people can assume more than one role. Perhaps the product owner and the customer roles are played by the same person, or perhaps the project manager sometimes acts also as a developer and sometimes as product owner.

 

[1]. Cohn, Mike. 2006. Agile Estimating and Planning

[2]. http://agilemanifesto.org/