Agile teams have shown to be a great way to deliver high quality software products. The agile values favor quality, and there are several agile practices that are applied by agile teams to develop high quality software. Customers are happy with the early and frequent deliveries of working software by agile teams.
What is Quality?
I define quality as “software that satisfies the needs of the users, and delivers value to them”. Quality is in the eye of the beholder, it is the user who decides if a software product or service has is quality, not the agile team. So teams can only deliver quality if they are driven by the needs of the users. In agile, this is supported by the agile values, and by intense collaboration of the product owner and the agile team.
The agile manifesto describes the values that agile methods consider important. In my opinion, these values support the delivery of quality software. Like “Working software over comprehensive documentation”, which focuses on delivering products to users. It encourages to deliver early and frequently, enabling users to use the software and start getting value by serving their customers. Also “Responsing to change over following a plan” results in higher quality, as it urges agile teams to adopt software that does not satisfy the needs of the users.
Collaboration with the potential users of the software is crucial to build understanding of what quality is. Scrum recognizes the role of the product owner, who defines the user needs and focuses upon customer value. In the planning game, the product owner and the agile team work closely together to define and prioritize the needs of the users, with user stories.
In the daily stand-ups, teams tracks their progress and brings up impediments that would hamper the delivery. At the end of the sprint, the demo is used to show the products and services that have been developed, which are then accepted by the product owner.
Since the agile values already support quality, and agile teams are highly collaborative, it is no surprise that agile teams deliver high quality software. But how do they do it? Let’s look at some practices for delivering quality software, that are applied by agile teams.
For instance, pair programming, which is done by two developers who are sharing one keyboard and screen. One developer is typing, while the others reads the code, signals potential problems and suggests improvements. With pair programming, the code is reviewed when it is typed, which gives quick feedback to the developer and prevents defects from entering the software at the earliest stage possible.
Another agile practice that increases product quality is Test Driven Design (TDD). If write your test case before writing the software, then you know by executing the test that the functionality is working. Test cases are added to the regression test, so during the development the agile team knows that the software remains correct.
Refactoring is a practice to adapt existing code to enable meeting current needs. It can be used to increase the performance of the product, or to add new functionality. Team member need to develop their refactoring skills, so that they can update the code efficiently, and assure the quality of the software product.
Agile teams continuously improve their way of working with retrospectives. By reflecting at the end of a sprint, the team looks at things that went good, could be improved and evaluates what they have learned. Agile has improvement embedded into the way of working, teams continuously learn and get better in what they are doing, increasing both their effectiveness and efficiency.
Agile teams are driven by values that favor quality, collaborate intensively with the users of the software, and use practices to develop high quality software products. Due to this, it is no surprise that agile teams deliver high quality software and services to their users.