The Mythical CMM(CMM神话):01
Myth(神话),在软件工程的文献中常常指那些流传很广、似是而非的观点。较早也最著名的是Brooks的《人月神话》(The Mythical Man-Moth),而Pressman在其《软件工程——实践者之路》(Software Engineering——A Practioner's Approach)中也列举过软件的10大Myths。CMM因为其繁复的体系结构、晦涩的语句行文,也因为CMM实施中所涉及的诸多复杂情势,自然也有一些流传甚广的“神话”。
神话一:要降低成本,先增加成本
下面是我在CMM咨询的过程中,经常被问到的第一个问题。因为非常典型,摘录如下:
“请问东研咨询,如何让一位软件公司的老总真正认识到搞 CMM培训,不是为了过级,而是为了提高软件的产量和质量,降低成本呢?因为CMM 实施起来,短时间内看不到效果,而且在初期会带来负面影响,老总若立场不坚定,信心不足,面对公司上下的反对声和公司业绩的下降,老总就会放弃CMM。”
之所以把这个问题列为“Myth No.1”,是因为倘若没有处理好,准备实施CMM的企业就会打退堂鼓,以后的一切都无从谈起。而且,这个问题也异常敏感,涉及的是企业最关心的“成本”问题,绝非随便回答可以敷衍过去。
首先,实施CMM究竟是为了什么?这个问题没有统一的答案,按照SEI文献[1]中的说法,软件企业应该根据自己的业务目标(Business Goal),分析企业所处的业务环境(Business Context),明确本企业实施CMM的业务驱动力(Business Driver)。如果企业准备进军外包市场,而客户要求企业提供软件过程能力的资质认证,那么“过级”当然也可以作为目的。甚至,如某些上市公司为了资本市场的运作,需要概念炒作和包装,“过级”作为一种商业手段当然也是可以的。至于“提高软件的产量和质量,降低成本”,在企业能够保证源源不断有项目可作但是开发效率比较低下、程序缺陷较多的情况下,也可以视作目的。比如说某些大型国有软件企业,虽然因为体制问题沉疴积弊很多,却能凭着国企的身份接到其他软件公司接不到的来自公安司法等部门的项目。但是,如果企业发愁的是下一个项目从何而来,它的当务之急就不是“提高软件的产量和质量,降低成本”,而是管理学大师德鲁克所说的”创造顾客“。
其次,如果确定企业本次过程改进周期内的目标是”降低成本“,那么采取的过程改进措施就应该是针对”降低成本“这个目标,其他的改进措施的Priority(优先顺序)就应该低于为”降低成本“服务的改进措施,应该在下一次改进周期中实施。而且,SEI的文献[1]中一直强调CMM的实施要渐进地逐步地改进,每一步都应该有具体成效,然后才能推行到下一步。如果企图一夜之间在企业中实施CMM中的18个关键过程域,300多个子实践,”一口吃个胖子“,自然会”短时间内看不到效果,而且在初期会带来负面影响“。甚至,对企业的正常业务造成相当大的冲击,这是要尽量避免的情况。
如果像某些企业一样,只是为了公关宣传的需要,或者为了方便市场人员与客户接洽谈判的需要,决定以”过级“为目的。那么,”降低成本“就不是目的,而且软件开发从没有规范到建立规范这个变革过于”暴风骤雨“,其在初期的负面影响应该是准备实施前就应该计划到的风险而且有了相应的Mitigation Action(消减措施)的。
再其次,需要说明的是,我们的技术人员并不清楚企业会计中计算成本的方式。安然事件刚过,大家又把注意力集中到了CA(Computer Associate)公司,原因就是该公司对于财务收入的计算方式。由于CA公司对用户使用该公司软件是按照年份来收费,会计中将未来若干年份的收入提前计入,美国联邦政府有关机构则质询其是否有意通过此种会计手法虚增公司帐面价值。对企业的某项成本,应该从整个产品的生命周期来考察,而不是仅仅考察产品的开发阶段成本,而忽略产品的维护阶段成本。产品的维护成本,俗称”滞后成本“,是非财务专业人士容易忽略的。从整个产品的生命周期看,虽然产品的开发阶段成本会略有增加,但产品的维护成本则将大大降低,总的成本还是下降了。如果有意忽略产品维护成本,严格说来也是一种”做假帐“的行为。
再其次,企业实施CMM应该看成一种”投资“,而不是”成本“。CMM实施的ROI(投资收益率)的计算方式,值得讨论。在SEI的文献[2]中有部分数据,但是不同的企业情况不同,更何况国外软件企业与国内企业的具体业务环境相差更大。严格说来,CMM实施的投资收益率只能在实施以后2-3年来计算,在实施之前的ROI(投资收益率)只能是估算,而估算模型总是不精确的。因此,实施CMM作为一种投资行为从本质上说是一个风险,而对投资行为的决策和风险的判断与承担是企业高层领导的职责,不是质量经理甚至不是技术副总裁的职责。
一般情况下总是企业的质量经理或者技术副总和CMM咨询公司首先接触,说句不中听的话,他们的”说服企业领导实施CMM“的心态就是”越俎代庖“,行使了本属于管理层职责范围的决策权。军事战略学科中非常强调参谋人员和决策人员的区别。参谋人员的职责是根据一定的分析方法提出多种选择,以及每种选择的可能后果。决策人员的职责是在多种可能选择中作出决定,或者基于其自身广博的知识和丰富的经验,要求参谋人员再提供更多的参考方案。让参谋人员在提出方案或建议时带有明显的倾向(即CMM应该实施),是代替决策人员行使决策权,以及贬低决策者的学识和经验。
实施CMM是一项牵动企业各个方面的系统工程,需要对企业内外部环境的精准把握和业务形势的判断。那么,谁对企业掌握的信息最全面呢,谁更有决策能力呢?无疑是企业的高层领导。作为质量经理、技术副总或者技术人员,应该做的是提供有关CMM的客观信息,而不是带有先入之见。
最后,CMM实施必须能够实现企业递增的回报才是有意义的,我更倾向于将其理解为一个市场演进的过程。只要目前国内市场环境还允许”软件作坊“维持下去甚至盈利,只要劳动力成本低还将长期是中国软件企业的主要竞争优势,软件行业的生产方式短期内就难以产生显著的变化,我们人为变革或者拔升软件企业的过程现状就会遭遇失败。
我相信,对于CMM实施的投入与回报,我们的企业家比所有的CMM咨询机构和技术人员更清楚。
(未完,待续)
本文欢迎转载,欢迎大家来信交流讨论。
联系方式:高巍(网名DrCMM), w-gao@263.net,13851926012 。
转载时请保留本声明,谢谢。