在给软件企业做差距分析时,经常听到大家说:“我们需求变更很频繁”,“我们项目拖期很严重,客户很不满意”,“我们开发人员太忙了”等等各种主观的说法,这些论断基本上是有通用性的,各个组织都存在,表面上看,软件组织的问题都是类似的。这些论断也是有争议性的,因为不同的人得出的结论可能是不同的,张三认为需求变更频繁,而李四可能认为就是正常的。因此,我们需要客观准确地刻画企业的现状、描述问题的原因。
正如我们到医院看病时,中医是望闻问切,凭经验进行诊断,不同水平的中医大夫,凭经验所下的结论可能差异很大,用的药也差别很大,有的管用,有的不管用,所以导致很多人认为中医不是一门科学,中医是不严谨的。而西医在诊断时,依赖的是体检报告。当你来看病时,需要你做各种化验与检测,通过各种量化的指标来判断你得的是什么病,然后对症下药。这是一种客观的判断,不同的西医大夫根据你的化验与检测结果所下的结论是很近似的。
我们对软件研发的体检诊断可以学习西医的看病方法,通过量化的指标来准确地刻画现象与原因。H. James Harrington 曾经说过“如果你不能量化某些事情,那么你就不能理解它。如果你不能理解它,那么你就不能控制它。如果你不能控制它,那么你就不能改进它。”此话明确地告诉了我们,过程改进始于量化!
基于量化管理的基本思想,我们可以设计度量指标帮我们准确地刻画某种现象,也可以设计度量指标帮我们识别现象背后可能的原因。从现象到原因可能是经验推理,也可以做定量的相关性分析。基于我的咨询经验,对于常见的问题,设计了如下表的对软件过程进行诊断的客观指标,供大家参考。这些指标并非完备的,如果通过这些指标不能找到原因,我们还可以再增加其他指标。