Hidden cost caused by bad quality
Software life cycle is divided into 5 main processes: Acquisition, Supply, Development, Operation and Maintenance. The cost for Acquisition and Supply is obvious and company must pay for that within the defined budget. However, when they perform the third process 'Development' that can cause cost of phases 'Operation' and 'Maintenance' can not be controlled.
Many project managers tend to think a successful project must meet only the following criteria:
- All features are implemented.
- The quality rate meets is lower than upper constraint limit.
- All documents meets client's request.
- All non-functional requirements meet the client's request.
All above criteria is good but it is not enough. The quality rate is low when team deliver does not mean the product has high quality. One important thing the project/product manager must focus on, it is the quality of product that falls into two categories:
- Quality on functionality:
The quality of functionality is showed by number of defects in tracker, phone that user call for support, complaints of user to forum, web site etc. - Quality on source code/architecture:
The bad quality of source code can cause the bad quality of functionality. However in case product has high quality on functionality, the quality of source code/architecture is bad. That leads the effort for operation. maintenance high or even very high. Modify a little functional requirement that cause a lot of modification and testing is a signal that product has no quality and it is not acceptable.
By losing the product's quality, the cost for operation and maintenance can be high than expected. In some cases, the company would like to build another product that is lower cost and more maintainable than the old one, and the life cycle Have one - Bad quality - Have new one started
Project/Product manager tends to focus on quality rate in specific time (not entirely quality of functionality) and they rarely focus the quality of source code/architecture. Though TA is responsible on quality of source code/architecture but PM has the right of assignment. PM try to urge development implement as much features as possible, the reason is they are not confident on product quality and they would like to have more buffer time to correct mistake if any. Developers and QC, under the pressure of PM, try to implement and cost as soon as possible. After that the code is mess, the quality is low. After that, QC try to find all possible defects and developer try to fix all. But low quality in source code/architecture can cause fix is a mend, one fix defect can cause one or more defects. Team try to work overtime and fix defects until defect rate is lower constraint. Many complaints will be raised during development such as hard client, complex project or estimate is wrong but the root cause is team that does not control product's quality well and schedule for development is not appropriated that lead the team's productivity is low.
So, pay enough focus on product quality on both functionality and architecture will decrease the cost of development, operation and maintenance. Project manager should make all members are aware that. Implement a feature faster than schedule in many cases not good for product's quality and it can be a signal that PM is not confident on team, however some see it as the best practice while team is lazy and press schedule will force them run faster. Make enough pressure to team and notify them care about the product's quality is a preferred way that decrease the cost of project.