Scrum Tool Home

Online Scrum Software Development Blog

Digg This! Post on Facebook! Post on Yahoo! Post on Reddit Post on Delicious Stumble This! Tweet This! Post on Google

Friday, December 10, 2010

Destination: Agile

By Sally Elatta

Organizations are increasingly moving from traditional waterfall methods of software development to agile methodologies, including Scrum. If you're new to agile and not sure of exactly what it is then allow me to give you a five-minute overview before I jump into why companies are moving this direction. You should also read “The 10 Key Principles of Agile.”

Agile refers to a set of values and principles which govern a style of software development that encourages iterative, collaborative and results-focused development. The following definition from Scott Ambler says it best:

“Agile is an iterative and incremental (evolutionary) process approach to software development which is performed in a highly collaborative manner with ‘just enough’ ceremony that produces high quality software which meets the changing needs of its stakeholders.”

Agile is the umbrella for several other popular methods such as Scrum, XP, Feature Driven Development, DSDM and others.

Scrum is one of the most popular agile methods. You can think of it as the project management side of agile. Scrum provides the processes and visibility needed to manage and control complex software and product development. Jeff Sutherland and Ken Schwaber are the two founders of Scrum. Many companies that adopt agile will adopt Scrum for managing the projects and also use some engineering practices of XP (such as Test Driven Development, automated testing, coding standards, and user stories) and some of the agile modeling and light documentation techniques provided by Agile Modeling.

If you adopt Agile/Scrum, your teams will likely:

  • Gather the list of work to be completed as user stories
  • Develop a release plan to determine the project schedule
  • Estimate the complexity of each story in terms of story points
  • Work in small two- to four-week fixed iterations (also called sprints)
  • Start an iteration with a planning meeting
  • Collaborate within the team and with the business
  • Have daily fifteen-minute standups to track progress
  • Have a demo at the end of each iteration to review what was accomplished (or not!)
  • End the iteration with a retrospective

Most importantly, your agile team will have the following goal:  “To deliver high quality, running, tested stories that meet the business need in a predictable, efficient and collaborative manner—on time, on budget!”

So now that I’ve covered what agile is, let’s dive into the top reasons why organizations are moving this direction. We’ll first look at why customers and product owners adopt agile. We’ll then examine why teams and management adopt agile.

Top 8 Reasons Why Customers/Product Owners Adopt Agile

  1. Early measurable return on investment. They want to see working software at the end of each iteration and early in the process.
  2. High visibility and control over the project progress. High visibility into project progress can also yield early indications of problems.
  3. Early and continuous customer feedback. Because the customer is involved throughout development they end up with software they want and will use.
  4. Empowered Product Owner. The PO is given the information necessary to make decisions to steer the project toward the goal.
  5. Incremental delivery. Delivery of software on the scheduled release date is not an all or nothing deal.
  6. Agile change management is adaptive to changing business needs. Agile and Scrum give the product owner more control over adding, changing, or removing requirements (except for the current iteration stories) than traditional methodologies.
  7. Agile helps align IT with the business. Teams work only on the top business priorities.
  8. Agile reduces product and process waste. Nothing is developed that isn’t specifically needed. Agile processes are lightweight and value driven.

Top 8 Reasons Why the Team and Management Adopt Agile

  1. Agile builds empowered, motivated and self organizing teams. Agile produces an increased level of team satisfaction because individuals are empowered to provide input, set the iteration goal, self-organize, and help improve the process. This unleashes the creativity and innovation of the team members.
  2. Clear expectations are set and communicated. Both the team and product owners have a clear understanding of the release and iteration goals and what is expected of them to reach these goals.
  3. Success is clearly defined. The agile definition of "Done" is accepted by the product owner as completed and ready to ship. The only measurement for success is stories that are "Done" at the iteration and release level.
  4. Teams can focus on delivering measurable results. Agile teams focus on getting working software delivered instead of clearing impediments, prioritizing, or being pulled in other directions.
  5. Customers communicate directly with the team and provide timely feedback. Early and direct feedback is the only way to deliver what the customers really need.
  6. Teams feel a sense of accomplishment and recognition. The team feels a sense of accomplishment at each demo when they deliver stories that are "Done" and hear the customer and stakeholder feedback first hand.
  7. Management realizes cost/time savings due to waste elimination and efficiency. Many organizations that adopt agile seek to become "Lean" and eliminated processes that add no value.
  8. Better resource management for shared team members. The good thing about time-boxed iterations is that they are time-boxed! This means that shared members from other teams (DBAs, Technical SMEs, Report Writers, etc.) will know in advance when the next planning meeting, demo, and retrospective are scheduled.

Every person on an agile project could add a reason to this list. These, however, are the prominent reasons why more and more companies are adopting agile methods for their software development projects.