Good management is the antithesis of project failure. And nowhere is this more true than in testing and software quality assurance. If your software doesn't work as advertised, your implementation will fail and users will curse you.
Although this equation may seem obvious, I can't begin to describe the failures brought about poor software quality. Just yesterday, in fact, I described a nasty situation over at the Netherlands Tax Office, where inadequately tested software caused 400,000 businesses to file reports twice. Rest assured, those business owners were not happy.
Quality in software development projects doesn't happen on its own. Quality happens only when careful planning is done, when the entire project team maintains a quality-conscious approach every step of the way, and when problems don't escape from the phase in which they were introduced.
Lesson #1: Don't reward for shipping on schedule. Anyone can ship garbage. Base rewards on quality metrics.
Lesson #2: Don't reward heroes for their Herculean effort late in the project to fix problems that could have—and should have—been fixed by the same people much earlier in the lifecycle.
Lesson #3: If you expect to work your people inordinate hours, you might want to consider corporate-sponsored flu shots!
Lesson #4: Always include QA and other project team members in all reviews to get the most well-rounded input possible.
Lesson #5: It's easy to ignore documents that are sent by e-mail for approval. No response does not equal approval: No response means, "I didn't have time to read it."
Lesson #6: Don't start coding until the requirements are stable and understood, or else budget time for subsequent rework.
Lesson #7: Code isn't "complete" until it works. Good unit testing is part of the development effort, not an optional item to be jettisoned when the schedule is tight.
Lesson #8: Is your test team always grumpy? Maybe it has good reasons!
Lesson #9: To maximize team efficiency, the project plan must consider testing efficiency. This may determine feature implementation order.
Lesson #10: Buggy software takes longer to ship.
Testing and quality assurance are critical supports for any successful IT software rollout. The deployment may be well-planned, but if the software doesn't work, the project fails anyway.
Please leave comments with your QA war stories. Your fellow readers and I would love to hear what works and what doesn't!