质量管理-我眼中的CMMI(一)-产业链CMMI这东东从美国国防部流出来形成商业化到中国已经好多年了,国人提到这个词第一反应基本包括如下:活动很复杂、文档很多、形式化。虽然俺国现在每年通过CMMI认证的企业数量基本都是排名第一和第二,但是,95%的企业基本都是为了拿证书和政府补贴(希望此句不要被和谐,呵呵),能真正领悟其精髓并使用同时获得收益的公司几乎是凤毛麟角。我接触这个东东基本上也有5-6年了,不敢说完全领悟了(毕竟还不是HLA),也还算是有些感悟。本人从程序员做到项目经理然后转到过程改进,工程的背景让我对CMMI有了些许综合的认识。同时,在工作中也有很多志同道合的朋友一起切磋和指导,让我也受益非浅。因此,也想把自己对CMMI的认识抛个砖,有兴趣的朋友欢迎讨论。从本质来看,CMMI这东东前身是CMM,基本也是美国国防部为了控制软件的品质而制定的一套软件研发体系。后来一看这东东还行,而且美国很多商用软件都外包给印度和中国等发展中国家在完成,正好可以把这套东东商业化来制约接包方。再往深入分析一下,美国通过自己在软件研发领域的经验和优势,积累了一些称为最佳实践的东东,整合后形成了一个最佳实践集合,包装后的名字就叫CMMI。你想做美国的软件外包业务,那么你就要按这个集合做,否则根本没资格玩游戏。这样一来,你就要派人去学习这套规则,企业就要去通过资格认证。借郎教授的分析思路,这就是美国人的高明之处,他通过自己的优势占领了这个行业产业链的最上游。它制定游戏规则,给游戏定价,你想玩游戏的企业就都要交门票。他还可以不停的改版和升级来让你不停的交钱。从2级到5级基本上要花费4年以上的时间和100万RMB以上的费用。企业从软件外包中赚到的利润一部分要来支付这些费用,其实相当与二次剥削。这就是美国人常说的知识经济,他们把知识进行积累和整合,然后通过商业运作来占领知识领域的制高点。同时,他通过不停的软件外包业务让这些发展中国家适应他提出的游戏规则,适应后慢慢的就变成全球的规则了,这个市场就培育出来了,收益是无法估量的。在整个软件外包产业链当中,我们大部分的企业做的基本就是制造这件事,这跟我们的传统制造业的局面是差不多的。在经济好的时候不会有问题,经济形式一旦不好了,那么他可以迅速的把这些外包的项目转为内包,维持国内的经济稳定,我们的制造能力就过剩了,整个软件外包产业都会收到很大影响。今天先写到这里,后面再写写为什么在中国CMMI水土不服以及怎么本地化相关的文章。质量管理-我眼中的CMMI(二)-水土不服接着上篇继续谈谈CMMI为何到中国就水土不服了。首先,在美国或者欧洲国家,CMMI并不是什么很先进的武器,毕竟计算机这东东都是他们搞出来的,软件方面他们自然也是大佬。由于欧美国家很早就重视高科技和知识经济,所以储备了很多这方面的优秀人才,并且建立了一套趋于完善的人才培养机制。像生命周期啊、编码规范啊、基本设计模式啊这些东东在美国大学毕业生来看都是已经具备的能力而且形成了习惯。而且,欧美人的规范化意识比较强。所以,像CMMI这种我们看起来很死板的东西,他们基本上认为是应该这么做的。从某个方面来看,我们的计算机专业的大学教育并没有找到自己的定位,导致大学毕业生出来基本就没法进入社会工作,哪怕最基本的编码规范都没有良好的习惯。这会增加企业很大的培训负担,很多小企业没法承受,所以CMMI的规范化实施起来就比较艰难了。其次,CMMI认证并不是类似与ISO这样的标准,它只是一个SEI推荐的软件开发最佳实践集合,认证也都是非官方的,证书也都是主人评估师个人签署的,与SEI这个组织并没有太大的联系。所以在欧美国家,希望获得CMMI认证证书的企业基本都是希望做好做规范的企业;而且,一般拿到某个级别证书的企业基本上都能够符合该级别的要求。毕竟,认证是需要费用和无形投入的,所以企业会根据自己的实力尽心尽力的做好。到了我们国家,地方职能部门为了数字化的政绩,拿出补贴让企业去参加CMMI认证,补贴的费用远远超过了认证所需的费用。职能部门的初衷是好的,希望扶植中小企业做好,但是执行的结果却是通过认证的中小企业成堆成堆,真正知道和理解CMMI的却没几个。有的企业甚至就3个人也拿到了CMMI3级的证书。这些企业最终的目的就是拿到补贴。再次,类似于中国制造,我们的软件行业也还在制造这个层级,所以我们的领导绝大多数都是技术人员出身,对管理和团队化制造的能力还有待提高。这种现象最终导致公司高层自身对CMMI不理解,当然也不会重视。基本上就是拿到补贴后立刻束之高阁,理由是我们还不适应这个体系。毕竟我国的绝大部分软件企业都在还在生存线左右,还不是这个领域的高端生物,生存是第一目标,良好的发展是在生存有保障以后才去考虑的事情。我们的国外客户以最低成本和最短时间的方式尽量压榨我们,我们的国内客户以最大个人回报和无限修改来考验我们,我们在维持生计的同时没有太多的时间和人员来思考生存后该如何快速长壮。更次,刚开始,咨询和认证基本都是国外的老师来指导,现在国内的主任评估师(LA)也逐渐多了起来。但是与国外的主任评估师最大的区别是,他们的工程经验非常非常的少,对于软件工程和管理基本停留在理论层面,有的LA基本就是英语专业的,基本没有工程经验。这些LA基本就是靠着对CMMI模型的字面理解来忽悠中小型企业,所谓的咨询就是给企业一堆的文档和模版,让他们填完后拿到证书,并没有真正的为企业培养核心的过程改进人员,也没有为企业找到如何做得更好更省的方法。我曾“有幸”与一位每年评估超过15家企业,SEI排名在前20位的LA相处,请他来为我们指导。在2天的行程中,除了阔若悬河的侃了5小时大山外,基本没有任何实质性的交流,每当我们涉及到模型到现实场景的映射问题时,总是被一堆的理由搪塞住。后期与同行交流才发现,这为LA英文很好,没做过任何的软件项目,凭着英文优势理解模型的字面意思拿到LA资格,接着就忽悠还没入门的小企业。有此LA在市场横行,我们的软件过程改进人才的中坚力量想壮大都是件很难的事情,甚至比通过CMMI高阶还难。这个切面今天先分析到这里,下次以实际企业案例来说明。质量管理-我眼中的CMMI(三)-实施困境收藏今天接着从企业自身的角色来看看CMMI实施的困境。上一篇里提到了,软件企业的高层管理人员一般都是技术出身,大家都是从单兵作战的思维模式下成长起来的,个人英雄主义的影子随时可见,对技术的崇拜也到了狂热的地步,毕竟只有技术才能解决客户问题,所以软件公司对技术人才是非常重视的。在软件行业普片有个怪圈,那就是:“能力”好的写程序、次之做测试、再次之做QA。因为绝大部分的企业认为QA是成本消耗单位,开发和测试是盈利单位,所以把最优资源放到了盈利单位。反观欧美企业,有很多QA都是有着非常深厚的具备开发和测试背景的人才,工作经验都超过10年。为什么我们认为是成本单位的地方,人家把优秀人才放进去呢?难道不需要成本控制吗?答案显然是非也。欧美企业认为QA是内在价值的盈利单位,开发是外在价值的盈利单位。外在价值的获取是一次性的,是相加的关系;内在价值的获取是持续性的,是相乘的关系。所以欧美企业是从战略的角度来规划如何获取公司的内在价值,通过资深QA人员的持续改进活动,来不断的为公司提供量级关系的内在价值,同时将内在价值转移到外在价值上,使外在价值得到更大的利润率;同时,从额外获得的外在价值中拿出一部分做为战略投资进一步开发内在价值。依次循环,使得内在价值和外在价值同步增长,企业就会获得快速增长。能够让这套价值转换机制良性运转的基础就是规范,欧美人称为Rule。欧美小公司一旦确定要进一步发展的时候,他们就会制定3-5年的中期规划和每年的短期规划,在规划中是一定会涉及到规范的制定的。一旦规范建立起来并得以实施,整个体系就会朝着良性方向循环。而我们现在热炒的CMMI就是规范中的一部分。很多人认为欧美人办事死板,程序化很严重。这在有时候的确影响某些个人效率,但是在整体上确实十分有效的。保证了过程的稳定性,只有在稳定的过程上进行量化的分析,才能更有效的找到可以改进的地方,一旦改进生效后,累加效应将会是非常明显的。回到国内的软件公司,BOSS更多的在关注业务,总监更多的关注技术,整理管理和规范化基本都是空白。大家都是在做自己感兴趣和熟悉的事情,对于公司长期发展和核心团队的建设却是很少真正的下决心去投入精力实施。现在国内绝大部分软件公司的QA要么就是身兼数职,要么就是做做文档化的工作,基本上都是刚毕业的学生来做,当然她们的要求和呼声基本都是优先级最低的。但是,建立和保证CMMI体系在公司内正常运作这件事却又是QA在完成。这就会导致,在CMMI准备阶段QA的请求都会被压制,一旦快到要评估了,就开始集中准备资料,通过认证后又恢复到原始状态。除了拿到政府补贴外,并没有通过CMMI的引入建立起可供公司持续发展的机制。今天先说到这里,后面会继续谈谈CMMI与QA价值相关问题。质量管理-我眼中的CMMI(四)-QA的重要性收藏接着上一篇来谈谈QA在企业引入CMMI时的重要性。CMMI里QA的全称是PPQA(ProcessandProductQualityAssurance)。顾名思义,就是过程和品质保证;CMMI体系的主要目标就是质量保证。那这么看来,QA人员因该就是CMMI体系在企业实施的重中之重的角色了。但是,正如之前提到的,很多企业都觉得QA没什么价值,同时,QA也觉得没发展的空间。也有一些企业为了弥补这个不足,建立了例如过程改进部、生产力促进部之类的部门,安排一些经验很丰富的人员做EPGLeader,希望通过这个部门来总体指导工作。正如打仗一样,纵然有高明的战略决策,但缺乏战斗执行力时,往往还是很难取得战争的胜利。我认为企业真正想到导入CMMI到自身的质量管理体系中,QA是非常之关键的角色。首先,从QA负责人的选择来看。QAManager(orLeader)是一个绝对关键的角色,担任这个角色的人员除了要熟悉CMMI体系外,还必须要熟悉其它的知识领域,例如:软件工程、项目管理知识体系、质量管理知识体系;同时,还需要参与过最少2-3中型以上项目的实际开发或者测试的工作并担任过组长或项目经理的职位。在欧美企业,QAManager这个职位的要求基本上是:具备10年以上工作经验、有3年以上开发经验、5年以上项目管理经验、5年以上质量管理经验、熟悉PMBOK、熟悉ISO9001、熟悉CMMI、具备优秀的沟通和管理能力。这个岗位的人选在工作3-5年后,一般都会提升为PMO或者COO的候选人。国内软件企业QAManager大部分或者绝大部分都是从测试人员里挑选一个出来担任,或者,直接就由测试经理来兼任,人员知识结构很难达到承上启下的作用。欧美企业这么制定这个岗位一定是有原因的。QA的上游组织就是过程改进或者PMO等部门的领导,这些部门制定组织的年度改进计划并监控计划的达成。真正实施计划的往往就是QA人员,而需要将公司高层的意图分解为可实施的行动的就是QAManager。如果这个人员没有完整的知识背景和工作经验,那么他就不可能真正理解改进目标,也很难制定出行之有效的计划。其实,每个改进项都可以看作一个项目,让没有任何项目管理背景的人来领导实施改进,成功的几率几乎是零。实际情况上,一个100人规模的企业,同时展开的改进项目绝对不止一个,这就更要求需要有扎实的理论和实际项目管理经验的人选来领导实施的了。虽然我们是在基于CMMI在做持续改进,但是,改进的实施却不仅仅只涉及CMMI,应该是包含软件工程、软件技术、项目管理、质量管理等知识领域的改进。这种要求是隐性的,却又是实实在在的。正因为如此,QAManager就需要具备这些知识领域和实践经验,否则很难领导改进的顺利实施。还是打个战争的比喻,集团军的总参谋部(等同于过程改进组织)看到一个良好的山地战+攻坚战的战机,制定了一套战略规划,他们在选人的时候一定会同时考虑有这些战斗经验的军长来执行。否则就算他们的战略再怎么高明,没有军长来根据实际战斗情况制定合理的战斗部署,同样也是很难打胜仗的。其次,从QA成