How to increase quality the right way in the agile era by focusing on business value and being more productive
Dustin Johnson
Global Technology Leader specializing in DevOps and FinOps, transforming IT strategies to enhance enterprise agility for optimized business outcomes.
Quality in Agile
In many agile frameworks, quality is often something that is never explicitly talked about. Part of this stems from the fact that quality is embedded into every aspect of agile so much that so long as you achieve successful agility, quality will emerge as a result of that success. In order to achieve successful quality, the key is to not focus on quality but rather on delivering business value by being productive and predictable.
Built-In Quality
By defining and clarifying the business value increments to be delivered up front the whole team becomes engaged and accountable for delivering the increment and thus fosters Collective Ownership for the increment. This team ownership facilitates the definition of acceptance criteria, sought out feedback, and grooming of the product backlog which by pairing these practices with efforts to increase productivity create built-in quality.
Productivity breeds Quality
Productivity is something everyone on a team or in an organization can understand and get behind. No one really wants to waste time. So how do you increase productivity in an agile paradigm? A typical cross-functional agile team may consist of developers, quality analysts, and business analysts and possibly other roles but let’s dive into these three and the concepts can be applied to any role.
Development Productivity
For a developer to increase productivity let’s consider all the tasks that need to be completed in for any given piece of development in its life cycle. These can be but are not limited to development, unit-test, package, deploy (to each environment). Which of these can negatively affect productivity? Development itself can be very unique from person to person so there might not be a general productivity solution we can apply to everyone and it’s typically a one-time occurrence for any given item. Packaging is also a one-time occurrence that might not have room for improvement so long as a method to package any given item exists. Unit Testing and Deployments may be performed multiple times in each environment so here we find redundancy that certainly affects productivity. This challenge can be addressed with automation. Challenge developers to automate their unit test. This turns a single occurrence investment into productivity gained for every repeat of the unit test that is needed. Deployments can also be automated gaining productivity from not having to deploy manually multiple times for each environment or for each repeat of a deployment test.
Quality Productivity
While it is common for cross-functional teams to have quality analysts to test the product testing does not equal quality so I’m going to simply refer to quality in a more generic term. Quality needs to ensure acceptance criteria is met, deployments don’t fail, and existing functionality is maintained. So how is this done productively? Continuous Integration or CI and even Continuous Deployments is key. To ensure deployments don’t fail you need to merge your code base on a nightly basis and this needs to be deployed on a nightly basis. This does not imply it must be to a production system, it just needs to be to an environment used solely to test the deployment. Once this is automated, you have just eliminated a large risk typically faced only when deploying to production. To ensure existing functionality is maintained you must regression test, but this is a productivity sinkhole so again it must be automated. You need to invest in some form of test automation. This doesn’t have to automate every style of testing but it needs to cover your largest area of concern. Often this is the basic end-user functionality of the system so automating behavioral driven test scripts even if only 20% is light years beyond having nothing at all. From this starting point, the test you automated can be driven by your defect clustering analysis. The only piece left out is to ensure acceptance criteria is met. They key here is ensuring it’s met, not defining what it is. In this manner, quality can be largely made up of deployment engineers and quality engineers pushing existing quality analysts into the business analyst landscape which I will discuss next.
Business Analyst Productivity
For a business analyst, their focus is often on business best practices and working with clients, consumers, or stakeholders in understanding the requirements. Business analysts often spend most of their time once requirements are gathered in working with the team to understand them, perform their own exploratory testing, conducting user acceptance testing and many other client-facing activities all designed to ensure the product works and it aligns with the best practices sought after. Basically, most of this is all a productivity killer so how is this mitigated. They key here is the focus on Acceptance Criteria. If a BA defines the requirement along with its acceptance criteria and they are defining the business processes then the BA should spend the bulk of their time writing the behavioral acceptance tests. They do not need to be technical to do this as they can pass of the drafts to quality engineers to perfect these scripts. The key, however, is that once these scripts are automated, their dependency from the team becomes less, allowing them to focus on ensuring value is delivered which is often ignored due to time constraints and it makes the whole team more productive by removing bottlenecks and determining failures and fixes on a shorter turnaround cycle.
The key roles for Agile Quality
With the increase in efficiency allowing for requirements that have clear acceptance criteria to be automatically tested as soon as they’re built or within a short cycle, an increase in quality will emerge as there are no longer long stagnant waits and long turn around cycles between communication from the key roles in a cross-functional team. This allows for quality to take on new responsibilities in an agile paradigm. These new roles include a focus on continuous integration (no this does not have to be a developer task) and automated testing (at all levels of the testing pyramid).
Delivering Business Value - The icing on the cake
With a confidence in increased productivity, shorter communication cycles among the cross-functional team, and increased quality, members of the team suddenly have the breathing room to increase customer engagement having conversations about user stories, defining acceptance criteria, conducting sprint reviews, and defining business value so that the most business value is delivered early and often leaving low hanging fruit for the tail end of a project if ever at all. Embrace the 80/20 rule and deliver value with both speed and quality.