Saturday, February 27, 2010

Why should you look at Agile Development for Software Projects?

If your organization applies a waterfall project management approach successfully then don't change. The use of an agile method should be motivated by challenges in your current approach.
If a project does not deliver the requested product within the agreed upon time and budget on a regular basis then you should be looking at Agile Project Management. I've been involved in countless projects (big + small) at various companies (e.g. Fortune 500 and midzide) during the last 17 years and I see the main advantages for Agile Project Management for Software Development Projects  in the following points
  • Agile Projects have a lower risk than waterfall projects because in agile the hardest, riskiest problems (e.g. architecture, integration etc.) are addressed first. Therefore early in the iterations (e.g.sprints) it is possible to see what the true team spirit, individual skills and available tools are like.
  • Agile Projects work with change and not against change like waterfall projects. In a Project many requirements change for various reasons. To try and address all possible scenario's upfront is not only challenging but, especially in bigger projects, impossible.
  • Agile Projects are less complex because the complex projects or phases are decomposed into mini-projects that are manageable
  • Team Confidence and Customer Confidence in the team are increased because the Customer can see early visible progress. This is a psychological factor that is important for individual satisfaction and team building.
  • A partial product is available early. The Product is integrated and tested and gives the client a chance to confirm that this is the direction they want to go.
  • Agile Project have a higher predictability. In waterfall projects the planning is done in the early phases where you tend to have less information and therefore the planning has lower reliability which means schedules can vary widely. In agile projects you need to schedule less during each iteration and have a tested software at the end.
  • Agile Projects have a higher quality. This is because the testing needs to happen early, often and with less functionality because of the short iterations. In waterfall projects the test plans can be massive (several thousand test cases) and when one functionality changes it might impact other (already tested) functionality.
  • Early customer feedback ensures that the final product better matches what the client really wants. After every iteration the customer sees and evaluates the product. This gives the client more opportunities to correct course. In waterfall projects the client only sees the product once everything is developed. If anything needs to change that would be expensive because of the complexity. 
  • Agile Projects ensure a better communication between project teams and client. Since the delivery cycle is shorter and the product has to be ready for release the team and the client (business requirement) need to work closely together. If anyone procrastinates tasks it will be visibile quickly.
  • Agile Projects tend to have an increased productivity because every 30 days some Software is released to production. This clearly drives the focus towards that goal whereas in waterfall projects the release date might be so far out that it is considerably more challenging to focus on it that much.
In case I wasn't clear, please take the above points seriously into consideration before you run the next waterfall project for Software Development.