A Quality Management System, sometimes referred to as a Total Quality Management (TQM) System, is a simple concept that will dramatically improve software production quality over time.
Companies that don’t have a quality system are commonly reacting to production and support issues due to omissive events.
A simple rule of thumb is to ask yourself how many fires your development team has put out this month. If any come to mind, then chances are you don’t have a proper quality management system in place, and should read on…
I remember early in my career I struggled to get my employees to follow our procedures. Whenever we’d encounter a production problem with our software, it would inevitably be a result of someone not having completely followed an established procedure.
We would have a big discussion about what should have happened, and about how “we can’t forget to do that next time,” yet we’d experience the same omission later.
I would get frustrated because I could never seem to find a way to get my team accountable for following our established procedures–until I discovered the “Quality Management System.”
A Quality Management System has the following three elements (the Three P’s!):
- Process (documented–most of us have processes or procedures we are supposed to follow.)
- Proof (a separate checklist, or “receipt” that the process was followed for each software release.)
- Process-Improvement (a discussion, and then an addition or adjustment to the documented process.)
Most companies have an established–and hopefully documented–software development process. (If you don’t you can download one from my website for Waterfall, or Agile here.) This is the first ‘P’ and should be in place at every established development shop.
A great question to ask the team is “How do you know the process was followed for each release?” This is where you may get the deer in the headlights response. This is the second ‘P’ and is the piece missing from most software development shops.
Think of this ’Proof’ document as a checklist accompanying each software release. The checklist would include every major step in the documented process, names of team members performing specific functions, and locations of final source code, test scripts, install files, etc. The checklist would also require a series of quality checks. Ie: Were requirements signed off by the customer, stakeholder, tester, and developer? Was the help file updated with the new release number and appropriate functionality? Was the source code checked in? Where is it located?
As problems occur, the checklist would be added to so that the product would be protected against a similar failure in the future.
The governing driver considered here is that one particular problem might broadside the development team once, but after the process is improved, that problem should never occur again.
For example, you might have a stored procedure that goes into production without a “Go” statement at the end. After the error is discovered, and fixed in production, your team should have a discussion and conclude that a checkbox needs to be added to the quality document stating “All Stored Procedures Confirmed to have ‘Go’ at the end.”
From that point on, whenever a stored procedure is moved into production, the developer presenting it must check for ‘Go’ statements at the end and then sign their name at the bottom of the checklist.
This is the difference between process improvement, and hope. Many companies view process improvement as a discussion and some verbal affirmations. What they are really doing is “hoping.”
Actually, the “act” of process improvement is physically altering a written process or procedure. This is the real definition of process improvement–the third ‘P.’
The final endpoint of a quality management system is to achieve excellence. I’ve heard excellence defined once as “Crisp execution of established procedures.”
You can’t have excellence without procedures, proof, and process-improvement.
Mike J. Berry