When you think of managing the triple constraints of time, budget, and quality, which of these items receives the least focus? I think it’s quality.
Why is quality the red headed step child? Well, it’s hard to manage things we don’t understand. For many project managers, quality seems to be a esoteric concept.
Let’s define quality and discuss some practical ways to manage quality for software projects.
1. Make quality management pragmatic. Many people do not invest appropriate effort towards quality because they do not understand it. The Project Management Institute defines quality as “conformance to requirements and fitness of use.” According to this definition, quality comes through clearly defining and meeting the requirements of the users and stakeholders.
2. Plan for quality. We must be intentional about quality. During the planning process, determine how you will manage quality. Quality management plans may include:
- Roles and responsibilities for quality management
- Tools and techniques to be applied
- What are the types of software testing environments needed?
- How will the team measure quality and when?
- What will be inspected and tested?
- How will defects be tracked and reported?
- How will deliverables be validated?
- Glossary of quality management terms
3. Start your project with a focus and commitment to quality. If inspections and tests are conducted periodically throughout the project lifecycle, the team is more likely to find defects at the point of origination, saving time and expense later.
4. Invest in quality management in a reasonable manner. The amount of time spent on quality should be commensurate with the size and complexity of the project. Remember – there is a cost for quality. The cost should not exceed the benefit. However, my experience is that most people do not invest enough time in quality management and pay for it exponentially later.
5. Conduct appropriate software tests. Do not skimp on critical tests. For example, some teams do an excellent job testing the functions of the software but fail to conduct stress tests. When the software is implemented, the functions work great for a few users. However, when thousands of users hit the system, the system crashes. For large, complex software implementations, make sure end–to-end testing is performed.
6. Safeguard the testing time. Most testing occurs towards the end of iterations or the end of software projects. Testers are often in a crunch. If developers get behind on their development tasks, the testers are often the ones who are adversely impacted. How? The testing time is cut.
7. Educate and negotiate with management when deadlines are mandated. We must apply our knowledge, experience, and creativity to delivering the products in the desired timeframe. However, the project manager must know when to negotiate tradeoffs of schedule, scope, quality, cost, and risks.
8. Buying commercial software packages does not ensure quality. Many times organizations purchase software solutions. Little thought is given to quality. Before purchasing commercial-off-the-shelf (COTS) software, talk with some of the vendor’s customers. What was their experience in terms of software quality? How does the vendor respond to requests to fix software defects? How timely are the fixes? What is the cost? Ask to meet with the vendor’s quality assurance manager. As you define your quality management expectations with the vendor, capture the agreements in the contract with the vendor.
One last word…thank your Quality Assurance Manager and team. They are unsung heroes. Let them know how much you appreciate them.
Question: In your experience, what are the most common causes of software problems? How should teams proactively mitigate these risks?