三、注重质量的“菜多多”

当马丁老师讲到质量时,木宇激动地说:“终于到了我的领域。”马丁老师看着木宇,笑着说:“这里不是很好懂,大家一定要跟着我的思路。”需求和范围是对需要交付内容的说明和限定,还需要对交付达到的绩效水平有明确的标准和规定,这就是质量。需求中的质量要求会表现在工作说明书、需求文件、完成的标准、完成的定义或验收的要求中。

质量不仅是遵循的标准,也会涉及因为管理质量而产生的成本,这些成本一般都是由组织来承担的。组织的质量要求通过组织政策、流程规范和绩效标准等,并在项目过程中逐渐落实,在项目结果上体现,所以各个项目都需要考虑在质量标准及需要投入的质量管理成本之间来获得平衡。例如,组织质量政策会要求在项目中通过执行治理工作来落实组织政策和流程规范等,会涉及一些管理资源投入、内外部培训和过程审计的成本是由组织来承担,项目只是使用,所以需要在项目规划中考虑上投入质量管控的成本和产出的质量价值效果。

(一)质量成本

质量成本(COQ,Cost Of Quality),也称为品质费用,根据ISO9000系统过级标准对于质量成本的定义是将产品质量保持在规定的质量水平上所需投入的相关费用。例如,“菜多多”团队通过开发人员交叉检查对方编写的代码来提高代码的质量。而先进质量思想则认为“第一次就把事情做对”,如果未能做到则弥补“不符合要求的代价”,则为质量成本。该方法提出质量相关的四类成本:预防、评估、内部失败和外部失败。

我们所讲的质量成本,可以总结为:为确保与质量要求一致而做的所有工作叫作一致成本,以及由于不符合质量要求而引起的全部工作叫作不一致成本。对于预防和评估归为一致性成本,内部失败和外部失败归为非一致性成本。

通过COQ方法,可以便于项目团队在质量预防和评估之间找到质量投入的平衡点,一般建议要聚焦预防的投入,建立尽早发现质量问题的审查和分析的机制。不能依赖在开发后期通过测试来提高质量,这样造成高报废率和返工率,早期时间的无谓消耗和高昂的成本。四类成本描述如下:

1.预防

为了防止交付成果出现缺陷或失败的情况而产生的成本。预防成本重在避免质量问题,一般会通过建立质量管理体系并落实在项目,来尽可能提前发现问题或错误并在未来尽快纠正和弥补。常见的范例:

(1)​ 产品或服务需求。例如,在需求中描述输入输出列表及验收标准、流程说明、特定交付物的样例、产品或服务的规范等。

(2)​ 质量规划。项目初期就建立质量相关的规划活动,如制定质量、可靠性、运营、生产和检查的计划。

(3)​ 质量保证。组织建立质量政策,如建立质量管理体系,并在项目或任务中落实,收集反馈并持续改进。

(4)​ 培训。通过周期性和针对性的培训,加强质量意识、质量管控能力及确保质量政策落实,如在项目初期就培训对于质量体系或质量政策的要求。

2.评估

评估成本则是针对已经提出的质量要求,为了验证符合这些要求或标准的程度而产生的成本。一般是通过执行质量相关的检查、监督和测量来进行的,在项目过程中及关键节点进行评估工作,确保交付成果符合要求或规范。这些工作包含且不限于:

(1)​ 核实。根据规划确定的检查清单,来检查交付物、产品或服务的符合情况。

(2)​ 质量审计。通过确认质量体系的遵守程度来反映质量体系的正常运转。

(3)​ 供应商评级。对采购或合作的供应商提供的产品或服务进行评价,并明确是否认可。

3.内部失败

所谓内部失败,是指在交付客户之前或投放市场之前查找和纠正的缺陷,这些工作结果未达到规定的质量标准就会产生的这些成本。内部失败的情况比较多,包括:

(1)​ 浪费。因为管理不当、组织不善或沟通不畅而斗志执行{?}了不必要的活动、工作,或持有较高的库存而无法销售,造成不必要的支出。

(2)​ 报废。因未能明确标准或未遵循需求、计划导致无法修复、使用或出售的有缺陷的产品或材料。

(3)​ 返工或纠正。修复发现的问题或缺陷,或造成不满足输出标准就进入下一环节且导致无法继续生产。

(4)​ 失败分析。在交付物前确定产品或服务产生失败的原则所需的活动。

4.外部失败

是指当未能达到质量标准的产品或服务在交付给客户后,在客户使用或运营过程中发现的缺陷或问题,需要加急补救并快速修复或处置,否则就会造成客户的损失,这些补救等的成本就是外部失败的成本。

这里需要大家注意,一般在项目交付客户后会继续关注产品或服务在一定时间内(如数月或数年)运行的情况,并提供维护性保障。如果客户的经济损失,根据合同有约定的情况,可能还会进行赔偿。

(1)​ 修理和服务。针对的被退回和已部署运行的产品,需要加紧修复解决并尽快恢复。

(2)​ 保修索赔。在保修期内或承诺维护范围的产品或服务,进行更换、重新部署或赔偿。

(3)​ 投诉。处理和服务客户或用户的使用体验及投诉所产生的工作和成本。

(4)​ 退货。用于调查和处置被拒绝或需要召回的产品,或者需要停止的服务造成的成本,包括运输成本、停止服务造成的损失等。

(5)​ 声誉。一般是针对企业或个人因缺陷的类型和影响的严重程度,造成公众对其认知受到损害。这种影响有些是无形的,也不好计算成本或损失。

(二)变更成本

马丁老师看了看大家,接着说,业界提出的软件质量理论表明“缺陷是被注入的,而不是被测试发现的。缺陷越早发现,纠正错误的成本就越低”,这已经得到大家的广泛认可。因为缺陷不是通过测试才发现的,而是再前期需求、设计和编码等工作中已经潜在的制造或产生了缺陷,越到后期,修复缺陷影响的范围和修复的周期会逐渐增加,纠正成本会逐渐升高,也会有更多的干系人受到影响。

这时,测试骨干站起来说,最先开始我们“菜多多”团队还没有建立起自动化测试案例集。所以,很多单元质量的缺陷就遗漏到测试阶段,导致测试周期被拉长和测试人员投入都比较多。而于倩他们开发人员一边开发新功能、一边修复缺陷,感觉忙到怀疑人生,但质量还是没有明显提升。有时候修复一个缺陷又造成衍生一个新的缺陷,这样我们就陷入了“测试发现缺陷-与开发沟通复现缺陷-开发修复缺陷-测试复测未通过-再次与开发沟通缺陷”缺陷修复的怪圈。我们称之为“缺陷沼泽”,前一个缺陷还没修复好,却因修复前一个而导致新的缺陷诞生。

大家听木宇说的都很有同感地点头,尤其开发骨干于倩的表情特别酸楚。

我们先看下图5-8PMBOK(第七版)的书上描述的成本曲线。

图5-8 成本曲线(插图来自PMBOK第七版)

通过变更成本曲线的影响,积极主动开展质量管控工作,更有利于平衡质量成本与项目过程质量问题的解决。所以,项目团队需要在初期,由质量保证工程师或质量分析师根据项目目标、需求和相关干系人的期望,提前规划质量保证和审查计划。要尽早在各个阶段都开展相应的质量保证和质量管控工作,有利于避免较高的变更成本,也能将问题解决在早期阶段,对后续的质量影响就会更小。从实际情况看,解决工程师之间的设计问题明显要比解决影响数百单元组件、召回涉及数千客户产品更快速、更容易、更具成本效率。

“菜多多”团队的对于开展单元测试前后统计数据的对比,可以显示变更成本的“可怕”。如图5-9所示。

图5-9 开展单元测试前后统计数据的对比