Tuesday, December 04, 2007

Top Ten Reasons that Agile Produces Higher Quality

The best way that I currently know to convey why I think that Agile produces higher quality is via a 1 hour PowerPoint presentation. I thought it would be worthwhile to attempt to put it into a blog post. But, I couldn't figure out how to condense it down to a reasonable length. There's lots of diagrams and animation, etc. But while I was working on it I created a list of points to make. Looking at the list I thought "Hey! Here's yet another top ten list!"

Please note that in this list I am referring to truly Agile projects. See “No Really, What is Agile?" for details.

10. More appropriate distribution of test coverage. Typically, QA gets a big dump of functionality near the end of a release and has to figure out how to best use the time available. That often means that the "most important" new features get very thorough testing and the rest get a "spot check." In an Agile project, test plans and automated tests are created throughout the project and each work item is given the amount of QA resources that is appropriate for it.

9. Because testing is done in the same timeframe as the coding, problems are found earlier.

8. Writing tests early catches requirement and design problems earlier.

7. Because problems are found and fixed faster, there is less chance of the quality of a project being poor for long stretches of time. When there are lots of tests that don’t pass, it is difficult to get accurate feedback on new code. In contrast, code written on a stable base is more likely to be stable itself because there will be accurate and timely feedback on the results of the changes.

6. It is hard to succeed in an Agile environment without automated testing. Automated testing helps to increase the consistency of testing.

5. One effect of short iterations is the evening out of resource demands. That means that testing is done consistently and on a regular basis and there is no need to take shortcuts in contrast to typical development which compresses most of the testing to the end of the process which then requires taking shortcuts due to schedule pressure.

4. More frequent customer input on direction. Part of quality is usability and match of features to needs.

3. More frequent customer input on results. Customers are the ultimate arbiter of quality and their level of expectation is often different than you expect.

2. The Development and QA organizations must be integrated for Agile success. Integrated development and QA is far better than the typical “separation of church and state”.

1. Especially when doing one piece flow, there is significantly more opportunity to detect process problems, diagnose them, try corrective action, and gauge the results of the corrective action.

Many of the above deserve further elaboration, but I wanted to get this out there for discussion.


Mike Coon said...

Good list.

On integrated dev and qa I agree with a caveat. The builds must be hands-off in a clean build environment that ensures everything in the build came from the SCM system and the QA environment must be separate from the Dev environment for the same reason. We live in SOX world...


Anonymous said...

Most of the stated gains come from TDD and the others from short iterations. Gains from other agile techniques must be a long way down the list. So is a team that just does TDD in short iterations agile enough?

Damon Poole said...


Sort of! Getting to short iterations isn't easy, it often requires enabling practices such as timeboxing, continuous integration, and others. Anyway, short iterations and testing early (not necessarily full-on TDD) are two of my most highly recommended practices and I believe that's where most of the primary benefits of Agile are derived from.

Oscar Centeno said...

Cool list, Im gonna share it with my Dev and QA leads. Our last project suffered a lot just by the fact that testers and developers met first time after 6 months of programming!

Anonymous said...

Good article

Ethan Moore said...

Nice Article!!Scrum facilitates delivery of value very early on in the project and continues to do so throughout the project lifecycle. One of the key characteristics of any project is the uncertainty of results or outcomes.For more, please visit: https://www.scrumstudy.com/blog/is-value-driven-delivery-the-key-to-scrums-success/