How to Apply the Agile Principles of Quality
An agile project team commits to producing quality in every product it creates — from development through documentation to integration and test results — every day. Each project team member contributes his or her best work all the time. Although all 12 principles support the goal of quality delivery, principles 1, 3, 4, 6–9, and 12 stand out for us:
(1) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
(3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
(4) Business people and developers must work together daily throughout the project.
(6) The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
(7) Working software is the primary measure of progress.
(8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
(9) Continuous attention to technical excellence and good design enhances agility.
(12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
These principles, in practice on a day-to-day basis, can be described as follows:
- The development team members must have full ownership and be empowered to solve problems. They carry the responsibility for determining how to create the product, assigning tasks, and organizing product development. People not doing the work don’t tell them how to do it.
- With software development projects, an agile approach requires architectures that make coding and the product modular, flexible, and extensible. The design should address today’s problems and make inevitable changes as simple as possible.
- A set of designs on paper can never tell you that something will work. When the product quality is such that it can be demonstrated and ultimately shipped in short intervals, everyone knows that the product works — at the end of every sprint.
- As the development team completes features, the team shows the product owner the product functionality to get validation that it meets the acceptance criteria. The product owner’s reviews should happen throughout the iteration, ideally the same day that development of the requirement was completed.
- At the end of every iteration (lasting one to four weeks or less), working code is demonstrated to the customer. Progress is clear and easy to measure.
- Testing is an integral, ongoing part of development and happens throughout the day, not at the end of the iteration.
- On software projects, checking that new code is tested and integrates with previous versions occurs in small increments and may even occur several times a day (or thousands of times a day in some organizations, such as Google, Amazon, and Facebook). This process, called continuous integration (CI), helps ensure that the entire solution continues to work when new code is added to the existing code base.
- On software projects, examples of technical excellence include establishing coding standards, using service-oriented architecture, implementing automated testing, and building for future change.
Agile approaches provide the following strategies for quality management:
- Defining what done means at the beginning of the project and then using that definition as a benchmark for quality
- Testing aggressively and daily through automated means
- Building only the functionality that is needed when it’s needed
- Reviewing the software code and streamlining (refactoring)
- Showcasing to stakeholders and customers only the functionality that has been accepted by the product owner
- Having multiple feedback points throughout the day, iteration, and project