软件开发外包管理方法概述
在信息化整个生命周期中,企业都越来越依赖于外部供应商,从需求分析到系统选型,再到项目实施乃至最后的运行维护,IT供应商始终与企业如影随形。尤其在核心竞争力理论的指导下,“把包括IT在内的不能直接创造价值的部分外包出去”成为了很多企业的选择,外部供应商逐步成了企业IT管理的延续。但是,在企业获得便利的同时也不得不面对供应商选择、评估、管理带来的难题。
在众多的IT外包中,软件开发外包是企业信息化建设过程中接触最多、应用最广的一类外包,在信息系统的建设中发生的问题往往也是最让企业头痛的,某企业的CIO就曾这样抱怨:我们与软件外包商合作的过程就像“过山车”,在一开始接触时,很多软件企业满口答应我们的任何需求,一旦签了协议,很多问题就出来了,今天这个做不了,明天又要延期,费尽周折拿出个东西来却不是我们真正想要的。 几个回合下来,双方从信任变成反目成仇,甚至对簿公堂。那如何才能选择一家好的软件外包商,又如何有效管理双方之间的关系呢?最近和北达软信息技术有限公司咨询顾问王波先生的一席谈让我对这个问题有了更多的感悟。
选择外包商的四个标准
俗语“万事开头难”,一个好的开始就等于成功了一半。要做软件外包工作,面临的第一个难题就是外包商的选择。有专家论断,80%的IT项目失败的祸根在于招标与选型没有做好,其重要性可见一斑。
对于外包商的选择,王波先生认为,和实物产品的设计、生产不同,软件开发项目的外包管理有以下两个显着的特点:1)软件开发外包管理的采购对象不是物品,而是人力资源,或者说采购的是一些拥有技术能力的人的脑力劳动成果;2)软件开发外包管理是以管理替代技术,管理的结果就是项目的成果,而不像传统的项目是通过采购->加工的过程得到项目的成果。
因此,王波先生建议,作为企业的信息化负责人,在选择外包商时必须结合软件开发项目的上述特点,并着重从以下几个角度入手进行选择:
1)公司是否有成熟规范的软件开发项目管理规范。首先看开发企业都通过了哪些质量认证(例如:CMMI,ISO9000等),另外还要看企业目前正在开发的项目是否严格执行了这些规范,要避开那些花钱买证的企业。
2)公司在行业内的成功案例。目前已经有很多外包企业经受住了市场的考验,在众多企业中脱颖而出,在选择时尽可能多关注他们。
3)公司需要提供核心开发团队的成员简历。需要看这个团队的开发经验怎么样,否则可能开发企业的名气很大,但对于要外包的项目来说,开发企业很可能配备不了足够的人力资源。
4)合理的报价方案。能够提供成熟的开发团队、规范的开发流程就意味着项目开发的成本肯定要高于那些仅靠几个高手坐镇的开发团队,项目外包只选择正确的公司而不能选择那些所谓便宜的公司,否则项目失败的机率会增加很多,而如果项目失败的话,对公司而言就损失了很多的机会成本。
外包商管理的“一个中心两个基本点”
选择一个优秀的外包商并不意味着可以高枕无忧了,实际上这只能算是万里长征走完第一步,接下来还面临着如何管理外包商的难题,这比如何选更让人伤脑筋。王波先生认为,要和外包商和谐共处,必需坚持“一个中心两个基本点”。
1、企业自身的制度建设是外包商管理的中心
“要做好外包的管理,先要完善自己的管理制度,这是外包管理的核心。”王波先生这一观点多少带有“欲先取、必先予”的哲学味道,很精辟的说出了企业自身制度建设的重要性。
对于我们的信息化建设来说,制度是决定成败的重要因素之一。目前,不少单位有与其国际竞争对手一样的系统、软件,甚至技术和设备强于对方,所以单从技术的成熟性和先进性而言,我们整体应用水平不低,但是为什么就没有对方做得好呢?其实原因很简单,我们大部分企业还没有建立起相应的制度和机制,更多的还是靠“人治”来维持,典型的就是总强调“一把手工程”,一把手重视了就能做好,不重视就难尽如人意,这都是制度缺失的表现。
在软件外包管理方面制度建设同样重要。王波认为,企业的开发项目外包管理有必要建立一套适合自己的规范化开发外包管理制度,从而保证企业在信息化建设过程中项目的质量不会因为人员变动而大起大落,这不仅是外包管理成功的保障,也是信息化建设长治久安的根基。
具体来说,在软件开发外包领域,管理规范的建设方法可以以CMMI3的各个过程域(项目计划、需求管理、变更及配置管理、项目跟踪与控制、质量管理等)为参考,来完善流程、制度,只有自己先规范起来才能知道如何要求别人。
2、软件外包管理的“两个基本点”
王波认为,在外包管理中是重要坚持“两个基本点”,即甲方自己主导需求、加强流程的管控,只有做到这两点,外包才有可能成功。
第一个基本点:甲方要始终主导业务需求
对于企业的信息化建设,软件开发的最终结果就是要把企业的业务用软件的形式进行固化,因此软件开发的内容源头是企业的业务需求,企业一定要清楚到底要把哪些业务的哪些内容计算机化。很多企业想当然的认为,既然我把项目包给了专业的软件开发商,我的业务就应该由他们来帮我分析,其实这样做有很大的风险。因为开发人员对企业的业务特点并不熟悉,很难对业务需求是否合理、某种业务的处理流程是否是最优的进行判断,最熟悉业务的还是企业自己。
很多软件开发项目失败的原因就是需求变更,但是从严格意义上来说产生需求变更的根本原因是因为需求大部分都是由不懂业务的开发人员整理的,业务人员并没有真正参与进来。为了避免这种风险,王波先生认为在需求分析阶段可以利用WEB技术,先把业务需求的功能模型部分做成一个静态的HTML模型,尽快拿出一个系统的原型交给企业的业务人员评审,让他们来判断这些功能是否合适,从而避免最终开发出来的产品与用户的想法差距很大。
第二个基本点:要加强项目过程的管控
软件开发属于智力创造活动的一种,对这种类型的活动需要用过程来控制活动的质量。王波先生有一个形象的比喻:拿一个鞭子一抖,在抖的过程中总的方向是没有错的,但每一节的方向和最终的方向都是不一致的。项目管理用流程控制也是这个道理,可能每个阶段都会有些误差,但只要你用流程来控制了,最终的效果和你最终的方向就不会有太大的误差。
用流程控制项目的质量也符合这个原理,软件开发过程是由一系列小的过程组成(需求分析、设计、编码、测试、上线等),在开发过程中的每个阶段都需要设置一些检测的质量标准,可能每个阶段都会有些误差,但如果每个阶段的质量都达到了项目要求的标准的话,项目的最终质量离目标就不会有太大的误差。