Instead, agile methodologies such as Scrum and Extreme Programming (XP) rely on a couple of less-formal approaches for ensuring that the application does what it is supposed to do and that it doesn't have bugs:
- They let users see the application as early and as often as possible to help confirm that project goals, whether they are stated, implied, or subconscious, are being met.
- They use automated tests, written by developers as they code, to help prevent bugs and make re-factoring easier
- They encourage face-to-face communication between developers and product owners to help prevent the misunderstandings that almost always occur in the over-the-wall exchange of documentation that often lead to failure to meet the goals of the product owner
- They employ motivated generalists (i.e. developers who are competent not just at coding, but also at analysis, testing, communication, etc.) rather than specialists to eliminate "hand-offs" in the development process
The net effect of these approaches is, when done well, a high-quality application. In the 11 production releases that I had in 2007 with my agile project, I had only one or two bugs reported by users in the production environment, and the users were openly thrilled with the functionality we delivered.
This was first published in December 2008