评《CMM欺骗了中国的软件业》

来源:百度文库 编辑:神马文学网 时间:2024/04/28 02:21:43
今天,从同事邮件里看到这篇《CMM欺骗了中国的软件业》。从逻辑的方面说,此文存在一些不足之处,有欠严谨;从对于CMM的理解的方面来说,也存有值得商榷之处。当然,此文所欠缺的思维,我以为,关键的,似未完全认识CMM/CMMI推行环节的重要性,从而也相应的欠缺推行方法层面的考虑。
与作者“批判的角度审视”的态度相同,我也以这个态度,简评如下。(评论用红色字标记。)
 
本人经历过CMM2、CMM3、CMMI4和5,随着对CMM的理解的深入,越发产生了深层次的思考。CMM对我个人影响也很大,的确有很多好的实践和理念供我们学习和借鉴。本文不是全面否定CMM,而是从批判的角度审视我们对CMM的认识。大家可以共同探讨。
中国人实际是一个很特殊的人群,中国人的思维方式、价值观和处世方式与西方国家的区别很大,这与中国历史5000年漫长的封建文化有直接的关系。
“中国历史5000年漫长的封建文化”的说法是不容易站得住脚的。对于我们自己的历史,一言以弊之:封建。这是不合适的,于历史的真相是不合的。
关于“封建”,钱穆的意见很值得注意。钱穆是谁?近代中国,有两位没受过高等教育,而又自修为一代国学宗师的人物。一位是梁漱溟,另一位,就是钱穆。就是对自己的历史,总怀有温情与敬意的钱穆。
西方历史的发展是以科技为主线的,因此在西方的管理学中明显体现的是科学学科的态度和方法。在西方的管理学中分权和量化是两个重要的特点,而在中国的管理学中,为人处世却是主体,西方管理以事为主体,中国的管理以人为主体。
中国的文化,关注人。这是事实。集先秦儒家之大成的孔子,就有一句著名的宣言:“道不远人”。
关注人的文化,本身是不错的。就像CMM这样的管理框架,它也是要落实到人上。Watts Humphrey(CMM主要创始人之一)说:“不要寄希望于银弹。”他这话是针对人们寄希望于工具的观念来说的。就是说,对于软件工业,不要存有侥幸,不要有机会主义的想法,幻想着某个“强大”的工具,能够使我们混乱的研发管理在一觉醒来以后,变得井然有序。为什么不能寄希望于银弹?我们的说法:人不发生改变,一切都不会变。再好的工具,人也可能把它做烂。这样的例子,我们看的还少吗?
从以上可以看出,不仅中国文化、中国的传统关注人,CMM一样关注人。
国内现在通过了CMM/CMMI从二级到五级那么多的企业,有多少企业生存的比以前好?又有多少家企业从此就消失在这个行业中了?
这段话是想说什么呢?大概是说,搞了CMM/CMMI,也没造出些一流软件企业来;没搞CMM/CMMI的企业,也没因此就被淘汰掉了。
其实这问题意义不大。在一个独立的主权的国家里,软件业作为它整个产业结构中的一个元素,总要有些企业,总要有那么多的企业吧?比较有意义的问题是软件产业,能够为国家的整个产业带来多大贡献?比如印度,它的软件产业就在整个产业结构中所占比重越来越大,贡献越来越大。美国的软件产业有产品,印度、爱尔兰的软件业有外包,有软件咨询,我们有什么?我们有没有产品?金蝶ERP、用友财务软件,再就金山词霸。相比而言,软件产品少的可怜!我们有没有外包?东软对日外包,零星的外包公司也是存在的。遗憾的是,这些零星的外包业务,至今没有让人们看到它们作为可以燎原的星星之火的可能性。至于软件业相关的咨询,产品既不突出,外包也无优势可言,谁肯问津呢?
那么,我们有什么?我们有项目。我们有的是:因为种种原因,这里发生了一个,那里发生了一个项目,拉一票人过来,做完项目,然后散伙。这种形势意味着什么?意味着软件业没有利润空间,因为社会的资源,现实的分配在拉项目的人们手里,而没有向软件业分配资源的机制。这种形势同时意味着,软件人才,没有长足的成长空间。
控制着社会资源的群体,他们对软件业因认识不到位,嘴里轻松地说:“哦,就是Coding嘛……”潜台词是:我随便拉一票人过来。渐渐地,对软件能力没有一个正确的认识形成一种风气,似乎每个人都开始轻松地从嘴里蹦出Coding来,甚至包括软件从业人员本身。而事实上,中国的软件人才,真正具有软件生产能力的并不多见。在软件企业里,真正能够独力地、独立地写出基础数据结构的人都不多,更不用说系统分析与设计的能力!这是让人沮丧的。很不幸,这是事实!
造成这种空气以后,便要连锁地造成一系列问题,走入一个恶性循环。因具有一定的敏感性,这里暂不详说。
纵观国内软件行业的大局,究其原因有如下:
1. 引入了模型却引入不了文化:
任何一项管理制度和管理的方法模型都有其生长的根源和文化背景。比如独裁的管理、民主的管理等等。CMM起源于西方的软件行业,很多考虑问题的思路是有其背景的。比如分权治之的思想、量化管理的思想等。
管理不仅仅是科学,尽管我个人认为过程管理更多是一门科学。但是管理离不开对人的管理,只要涉及到人在中国就不是一件单纯的事情了。
另外国内的软件企业很少有成熟的企业文化的,这也是不论是CMM还是ISO9K都面临失败的原因之一。实施CMM更是一种文化的塑造和改革,是全体意识的提高和变革。自己本身都没有成熟的企业价值观和文化观,怎么可能让CMM在企业生根?不能在企业每个人的头脑中生根的CMM又怎么能发芽、开花、结果呢?国内企业通过CMM基本上都只是一个研发部或者产品部通过的。
认为CMM模型在中国普遍收效不大的原因在于没有引入相应的科学、量化的“文化”,这观点在理论上是说不通的。一方面是,中国也有CMM/CMMI做得好,而且实实在在享用CMM/CMMI带来的效益的成功企业。另一方面是前面已经说过的,本质上都关注人,并不存在根本冲突。
那为什么CMM/CMMI、ISO9000、PMBOK在中国多数要失败呢,或者说收不到别人已经收到的效益呢?简要地说,根本原因有三点,按影响程度由大到小,列于下:
l        软件产业的环境。根本的,是资源在软件业的分配的机制问题。
曾与成都市保密局一位负责人有过一次面谈,他的意思:你以为我们不想多进一些具有坚实计算机技术、安全技术的人才么?我们怎么能进那么多呢?一个是,编制,只能那么大。二一个是,你进这么多新人,原来老的,怎么办?
l        软件产业环境下,对软件业的不正确认识所造成的,导致恶性循环的氛围。
l        企业中CMM/CMMI推行人(主要的因素包括:老板的决心,具体推行人员的推行能力),本身在推行方法方面的现实的问题。
成都某著名通信企业,老板放言:“谁阻碍IPD,谁阻碍CMM,谁就下课。”决心可见一斑!但是,遗憾的很,该企业的IPD、CMM推行,并算不得成功,收效有而较微。CMM/CMMI的推行,是一件复杂的系统工程,需要科学的方法,而不是简单的行政命令,或者可鉴天地的决心。可鉴天地的决心以外,必须有科学的方法,才可能成功呀!
2. 软件,人的因素更重要:
从软件技术开始,其质量和产出就是人的创造性和智力的结晶。尽管很多人鼓吹“软件蓝领”、“软件工厂”的概念,但是至少在二十年内,还看不到曙光。凡是可以用蓝领进行工厂化实现的技术具有如下的特点:
机械性,可明确切割动作(如泰勒实验中描述的);
可替代性,入门容易,任何一个人的工作是可替代的,或者替代的成本是比较低的;
成本主要是材料,而不是人工;
标准化,生成工艺和成品是可以标准化的。
从上面可以看到,软件行业明显与此是不同的。软件从最开始的Coding、Debug阶段都引入工程的概念在生产效率上提高了很多。作为一个“本人经历过CMM2、CMM3、CMMI4和5,随着对CMM的理解的深入”的从业人员,认为“软件从最开始的Coding、Debug阶段”开始是不恰当的。但是目前不论是组件开发和面向对象还是代码生成都没有显著改变软件开发的质量和效率。我不否认软件工程或者传统行业的很多实践是可以引入到软件行业中的,但是我反对把软件生产当作传统行业生产的。至少在目前是做不到的,也许到了未来的人比现在聪明数倍、软件的标准和工具发展到想现在的扳手和车床一样。这似乎是个奢望。
大家知道,同一个学校出来的学软件的学生,其生产效率和开发质量相差几倍甚至十倍是非常正常的事情,即便是同一个人,在受到公司重视,心情好的时候比他即将离职,对公司不抱有希望的时候的生产效率差几倍也是再正常不过的事情了。
软件行业的人比其他行业的材料、工具和技术工人更复杂,其工作的动机更复杂、其社会和心理需求层次更高、人的个性差异性比较大。因此对于软件企业的人力资源的管理就更富有挑战性和以人为本。而CMM是过程模型,因此除了培训过程几乎是不关心人的。
认为“CMM是过程模型,因此除了培训过程,几乎是不关心人的”,这是对CMM的最大误解。我们认为,这样的CMM认识水平是有失偏颇和有待提高的。
这个问题展开来说很大,此处只简略地说说。
l        目标的层面
孔子说:“道不远人。”——这是提出了一个目标,即关注人。方法呢?
CMM/CMMI提出了产品研发过程应该关注哪些领域(CMM的KPA,CMMI的PA),这些领域要做到什么样子。——这是提出了目标。方法呢?
l        方法的层面
同一个目标,方法可能完全两样。曾子的方法是,内省。“吾日三省吾身”。《大学》也说:“自天子以至于庶人,壹是皆以修身为本。”这个方法基于这样的逻辑:一个人,内修,达成生活中完善的人格。自天子以至于庶人,内修,达到全社会的人的完善人格。有若的方法就不一样。他的方法是外在的:修礼。这个方法的逻辑:人是约束出来的,全社会的人都是约束出来的。制出外在的礼法,你不合礼法,不行。
那么,企业里,当前普遍的CMM/CMMI推行者们的推行方法是什么呢?这是作为具体推行者应当重中之重考虑的问题。也是我们对于他们的很忠切的一个建议!要重点考虑执行一个系统工程这个问题!
3. CMM更适合大型项目
这是不争的事实,因为当初CMM的起源就是美国国防部为了有效控制和管理其项目而委托SEI的研究成果。国防部的项目100人月的项目就算是小项目,大部分都是几百人月甚至上千人月的项目。这种情况下没有规范的过程是不可行的事情。回头看看中国国内的情况,100人月的项目绝对算是大项目了,超过500万合同额的软件项目很少,有些甲方为了将项目分给更多的关系企业,往往人为地分成不同的项目来分包给不同的开发商。这些小项目往往是3-6个月的工期,交付的压力很大,客户的不成熟又往往看眼前的进度,而不是日后的质量。这就导致了国内很多项目是摇摇晃晃上线,提心吊胆维护,最好软件改的差不多稳定了,钱也花的差不多了。看起来是花很少的钱开发完成了,但是花更多的钱来修补。其实如果前期就能够按部就班,按照客观规律来做事,Total Cost就会减少很多。
从客观上说,从实践分布的情况来说,是这样的。CMM/CMMI是更适合大项目、大组织的。如果你的项目,你的组织小到难以承受执行CMM/CMMI本身的开销,你当然不应选择CMM/CMMI。这是浅显的一个道理。
4. 分权与量化的尴尬
在中国的历史中,最高管理者往往利用制衡的手段来统治和管理国家的。但是大家注意的是制衡,而不是分权。5000年的历史形成的文化和价值取向,分权是不现实的。从台湾的民主分权政治中我们也会发现缘由,中国人的民主分权意味着低效和成为独裁的幌子。再看软件企业,实施CMM的单位大部分都是在部门级或者技术范围内,很难看到分权和监督的作用。
关于量化也是一样,我相信大多数中国人不是太相信数字的。因为中国人的头脑中都有自己的标准,而很少有人优先想到别人或者另外的标准。台湾曾仕强老师讲过一个例子,就是一家德国的机床厂家发现卖到中国的机床很容易坏,经常更换配件,对质量一贯比较严谨的德国人派人到中国考察原因。原来是说明书中说在机床底座固定螺丝在安装的时候必须要做到拧四圈后要放半圈。自以为聪明的中国人便按照自己的标准计算,拧四圈放半圈,那不就是拧三圈半吗?这样的量化出问题就不奇怪了。
还有就是国家权威部门的统计数字往往是相互矛盾,口径不一,让劳动人民看得一头雾水。
在中国要让数字说话,就很容易滋生造数字,大到国家政府统计部门,小到企业财务,再小就到每个人年龄、财产填报。只要是对自己有利,而别人又不容易发现,那就可以造假,因为造假成本低,打假成本高。
再有就是哪个老板相信别人的数字?
这种说法有欠严谨。在逻辑上说,不存在必然联系。
5. 是什么推动了CMM在中国的风行?
CMM其实在欧洲和美国知名度并不高,很多大的软件企业甚至都不知道这是个什么东西,但是在中国,随着各地政府的优惠,加上不成熟的客户的跟风。大部分的企业看中的是一纸证书和政府的买单。很多国内知名的软件企业拿到证书后就解散了CMM的SEPG小组。而且国内的通过率历来是100%的事情,大家相信这其中没有猫腻?不在少数的通过CMM3级甚至5级的软件企业,这一两年过去后反而关门了。因此说如果没有一个正确的态度和企图来过CMM,那么再好的模型可能也起不到它的效果。
这说法是比较近于事实的。也从某方面说明了:软件产业的环境。根本的,是资源在软件业的分配的机制问题。
http://bing-yi.spaces.live.com/