Agile and DevOps Bring the Focus Back on Quality
I’ve had the privilege (and the many challenges) of working in IT for more than three decades. Early in my career I tended to accept things as they were presented, following the techniques, processes, guidelines, and approaches I was taught by my peers and managers. As I gained experience and wisdom, I became a better independent thinker and started to connect the dots and ask questions.
One of my early frustrations, in a manual testing role, was receiving lots of defects from upstream—i.e., poor quality builds. But interacting with other roles in the supply chain was not encouraged; after all, the testing function was meant to be independent. The business analysis teams worked with the end-users to define the requirements, then handed them off to the technical designers and developers. The developers then wrote the code and delivered the builds to the testing team. Each team worked fairly independently of one another, and without much regard to an overall quality process.
Thankfully, as we move to agile and DevOps we are learning better ways: whole-team accountability for the value increment delivered, collaboration, and small changes delivered faster, with quick feedback. We are striving to instill a culture of systems thinking, amplify feedback loops, and experiment and learn.
Systems thinking means that our mental model of delivering value must encompass all the steps, from the initial user request to operation in production. From a quality perspective, this requires thinking about and having approaches for ensuring quality across the entire value chain in a holistic sense. You might call this the quality value stream—a focus on quality that is woven into the fabric of the overall value chain.
Static testing helps us evaluate the artifacts: user stories, designs, models, acceptance criteria, code, and so forth. Dynamic testing helps us evaluate the functional and nonfunctional aspects of the change, application, or system under test. Yet the quality value chain is bigger than that.
Specification, development, delivery, operation, and maintenance of end-user value requires the entire team—business analysts, product owner, architects, designers, programmers, testers, quality assurance analysts, database administrators, release engineers, configuration managers, specialists in security, performance, usability, and other fields, DevOps engineers, regulatory and compliance specialits, and operations engineers—to have a mindset of designing quality into every step of their practices, techniques, tools, and skills. The collective team must constantly assess and decide where the biggest risks are and strive to proactively mitigate these risks.
For example, because we are deploying small, incremental changes and ideally can roll back quickly, the risk caused by production defects may be more manageable. Yet if we don’t have the right processes or tools in place to quickly detect the production issue and immediately fall back or fix it, this may be a higher-quality risk.
We have the opportunity and responsibility to think and act more broadly as we embrace agile and DevOps. As you define your value stream, don’t forget to also define your quality value stream as an integrated element. It’s the quality focus that counts, and testing is simply one element of delivering value.