Building a Quality Department
Recently, I was asked what I usually do to set up a new Quality Department. I have done it several times over my career, and here are a few lessons I’ve learned. It isn’t a difficult task, but it requires analysis and project planning.
First, I define the program's quality status. What resources are available? Is there a test case management tool? What does the current quality team look like? Do we know if test cases are documented?
Next, I look for existing processes and whether they are documented. What quality standards do the business and engineering teams practice? Is there a definition of done for the teams? Does it include testing, and to what extent?
Finally, I determine what kind of metrics exist. Example metrics can be:
Bug Count for every deployment.
Severity and commonality of bugs.
Frequency of Hotfixes needed (for Incidents).
Are bugs coming from old or recent development?
Once I have analyzed this data, I typically write a report outlining the issues I see, the plans to alleviate them, and the timeframe I am working within. This may include identifying resource needs, such as new hires or new test case management tools. I also define the kinds of processes that should be in place for each division.
Quality doesn’t belong to the quality department; they are just the gatekeepers of whether the implemented code can be called complete. Quality falls on every team member, including business representatives (such as a project manager or business analyst) who verify that the product meets the organization's requirements. Engineering must adhere to quality practices around code, branching, and unit testing standards. Development operations (DevOps) must follow the deployment standards and maintain testing environments.
As the plan progresses, it is essential to update the state of quality on a regular cadence (monthly is usually a reasonable timeframe). This allows a proper assessment of whether anything needs to be adjusted and to update the organization’s stakeholders on what value has been added.