[
CMMI模型被批判的最大不足之处,忽视了市场交付压力和竞争对手的压力。CMMI模型原本是美国国防部在外包军事软件的时候,对于承接单位能力的评判,然后逐步推广到民间企业中来。
很显然,国防部的软件的交付日期是不会经常变动的,国防部是没有很多竞争对手的,需求是稳定的,因而承接国防部软件开发的企业自然不需要考虑市场交付压力,不需要考虑市场需求的变化,不需要考虑竞争对手突然提前推出产品等因素。
而在实际的竞争环境中,这些都是不得不考虑的。很多时候,市场用户需要的不是最高品质的产品,而是最快交付的,提供了有吸引力功能的“质量尚可”的产品。
马克思同样为人们提供了一个历史发展的模型,姑且不论这个模型本身是否准确。但是不同的国家在引入这个模型的时候,必须也必然会根据自身的国情进行必要的修正。比如列宁对俄国十月革命和帝国主义理论的解释,中国对中国特色革命路线和社会主义建设路线的解释等。
我们可以退一步假想,政府和企业从众多模型中选择了CMMI模型作为公司过程改善的模型。
CMMI只说明了what to do,没有说明how to do,更没有说明why should we do?即:CMMI本身并不包含具体的软件方法学,不能帮助企业理解各个具体的方法学。
比如CMMI需要进行同行评审,但是并没有告诉你如何才能获得有效的评审。这就需要具体的评审方法学的知识。CMMI也没有告诉我们为什么同行评审很重要,这就需要我们自己去首先寻找行业的实践和数据,然后建立我们实践的方法,遵循“组织创新”的原则,逐步导入这样的方法,并进行必要的培训和效果的评估。
我觉得如果不是为了CMMI的虚名,不如自己进行方法论的学习,根据自身的实际情况,进行扎实的过程改善。我们根据企业的实际情况,不一定需要按照CMMI模型的级别设定的内容进行改善。比如:难道我们非要建立了管理过程之后,才需要考虑组织统一的培训么?难道我们非要建立标准的组织过程之后,才能导入定量管理么?难道我们非要定量管理之后,才能进行根本原因分析和组织创新么?
具体的企业有具体的开发领域,开发文化和市场背景,与其刻板地按照CMMI模型的要求来改善,不如秉承“拿来主义”,挑选自己认为有价值的内容进行改善。
这就涉及到人员能力的培养,要培养优秀的过程改进人员,要培养过程改进人员的软件方法学的理论和知识;要培养软件过程改进人员的分析和判断能力。
形式上通过CMMI不是很困难的事情,因为CMMI中提供了很多practice的例子,照猫画虎,再加上咨询公司提供的模板集合,就可以在纸面上通过各级评估了;但是理解CMMI中的knowhow和根植这些knowhow是需要时间的。
如同驾校考试一样,短期突击通过考试拿到驾照是可以的,但是如果不练习,就只是paper driver。不仅企业是paper driver,甚至指导企业的很多咨询公司都是paper licenser,因为咨询公司的年轻的咨询师们自身并没有足够的软件开发经验,他们也只是从CMMI的paper上来学习这些理论,学习这些模板,然后再照猫画虎地传授给企业。这让我感觉到咨询业的通病:外行人教内行人。
当然,我们也不必妄自菲薄,似乎全世界的咨询公司都是这样的。
3.CMMI不是中印软件差距的根源;抓住自身优势,进行开发实践积累和内在的全面改善是企业的致胜之策
同样,我觉得政府在谈论软件产业的时候,有两个误区:
1) 政府谈软件必然软件外包;
2) 中国软件不如印度,原因是我们没有“国际通行”的CMMI级别; 项
从几年前开始,政府反思中国软件业与印度的差距。很不幸的是,政府主要的结论是:印度导入了CMM模型,并且在世界上占据了最多的CMM5的企业。随即在国务院的首先倡导下,中国各级开始了大力支持企业导入CMM/CMMI模型进行过程改善,并提供高额的资金补助。
可是,按照CMMI模型的设想,导入CMMI进行过程改善,是可以提高品质降低成本的,是有受益的。既然有受益,为什么企业还需要政府的资助?这几年看来,基本上,市场的敲门砖成为一些中等以上公司的需求,赚政府补贴是一些小公司的需求,追求品质是很少一部分公司的需求。
政府谈软件必谈软件外包,接着就是中国软件不如印度。那我们就来仔细对比一下中印的软件差距。首先,中国的软件产业并不比印度差。中国国内的软件市场要远远大于印度市场,唯一差的是软件外包出口。可是,软件外包出口差的首要原因不是品质和过程不行,而是起步早,语言好,经验多。
首先,印度软件起步早。印度的软件起步是在90年代初期,特别是在解决“千年虫问题”上,印度人为全世界做出了贡献。千年虫问题的解决方法现在想想其实很简单,相当于是reverse Engineering,阅读代码,寻找出与时间定义相关的代码,并修改定义;然后进行全面的回归测试。软件业的一个不可思议但是很普遍的现象是:软件开发的文档实际上是不完备或者与实际代码不一致。因此很多时候所谓的reverse engineering就是靠直接看代码来找bug。这可是无聊的活,美国人不愿意干,全部交给印度人干了。印度人兢兢业业地看代码,修改,测试,也就开始了印度和美国软件业合作的起源。
而当时中国在干什么?我记得非常清楚的是,中国的媒体一方面在使用非常浅显的词汇来让大家理解千年虫的含义,一方面在展开各种奇妙的想象,万一发生千年虫问题,世界会变成什么样。可是,没有一个媒体在问:我们该怎么办。当然在同时,中国开始了世界历史上最大规模的纺织业等初级制造业的外包转移,成为世界工厂。
因此,印度的软件产业起步领先中国十年,并因此积累了开发经验和市场渠道。随着经验的积累,品质和过程的改善和标准化会自然成为内在的动力。经验是要靠时间的,品质改善是靠内在需求的,而不是靠CMMI。
就如同人的成长需要时间,拔苗助长,贴成人标签是没有用的。中国现在的CMMI已经是世界第二多,但是软件行业和印度的差距仍然是那么多。我们需要的是时间和经验,不是CMMI资格。
其次,印度人语言好。我们在说软件外包的时候,通常都以为是在说软件开发,实际上软件外包涵盖的概念太广泛了,远远不局限于软件开发,包括了整个IT软件和服务的各个环节。
我们来看看印度面向北美的IT软件和服务产业。
比如呼叫中心(Call Center)负责解决客户投诉和技术支持的。美国有一些大公司为了节省成本,将呼叫中心转移到印度,培训一下当地技术人员的英语口音,尽量像一些北美的通用口音,就可以接电话了,而北美的消费者完全不知道接电话的人实际上人在遥远的印度。
在上海的微软全球技术支持中心,在某种意义上就是这样的呼叫中心,却因为高薪(相对于美国就成了毫无趣味的低薪工作)戏剧化地吸引了中国很多很有天分的软件工程师。
再比如BPO(Business Process Outsourcing),将业务流程的某个环节外包。比如印度某著名IT公司帮助美国高盛公司进行数据维护,将每天美国交易的数据在后台进行统计,分类,计算,备份等处理,这样美国人就需要每天晚上紧张地处理数据,并在天亮之前提供报表给第二天的交易员了。
最近的例子是,英国中小学期末考试,英国人居然也外包给印度人去批改,统计,排序,汇总,实在是做到了极至。 [本文共有 3 页,当前是第 2 页] <<上一页 下一页>>
]