There is a set of common practices found in most of the Agile methodologies. These practices embody Lean principles, but are ready-made for teams to adopt without needing to re-invent existing work. These practices are interlocking and tend to support one another. Several of the practices could be placed in more than one of the categories outlined in the following sections.
As already noted, Agile development fully embraces Philip Crosby's Quality is Free argument. By maintaining a high standard of work during development, faults (bugs) are significantly reduced, thereby reducing the amount of rework required. In software development, the need to re-work adds three types of costs: firstly, all work must be extensively tested; secondly, once problems are found, re-work takes time in addition to the original work; and, thirdly, re-work is disruptive.
Many software projects focus on completing the required feature set and then declare themselves 'feature complete' or 'code complete'. At this point, software testing begins in earnest. Each fault that is found must be fixed or a lower quality accepted. Yet because there's no way of knowing how many bugs will be found – let alone how long it will take to fix them – it's impossible to predict when the software will be finished.
In such conditions, the number of bugs found may simply be a function of the number of testers employed. More testers report more bugs, requiring more work. ...