一次失败的经历
在亚洲四小龙经济全盛时期,笔者在某公司亚太区总部负责该区的软件开发。为了应付业务迅速增长所带来的需求,公司在各地都需要进行一些大型项目,包括主机的转换与安装、应用系统开发等项目。总公司要求我们把部分开发工作外包,这样一来可以降低开发成本,同时也为了能在这一段时间内保证有足够人力来完成项目。最后,我们决定利用公司本身的资源在区内各计算机中心内进行软件核心功能模块的开发,周边功能模块则实行外包。
我们选择了菲律宾和泰国这两地的软件企业来协助开发部分应用软件,因为这两个地区有大批新兴的软件企业,所需的开发费用只是项目基线的四分之一而已。首先,我们对两地一些有规模的软件企业进行严格审核,包括对这些企业的技术人员数量、技术水平、财务状况、可靠性等各方面进行深入的评估,然后在每地选择一家从事外包。我们制定了有关程序的规格说明,然后把这些说明交给对方进行编程和模块测试。
当接到第一批交回的程序时,我们从测试报告中已经发现结果跟我们的期待有很多不同之处。我们在进行测试过程中发现有些程序不能跟核心模块连接,更有些程序不能在主机上运行。我们除了对交回程序的质量感觉失望之外,更知道这会全面影响整个项目的进度。
建立良好合作模式
外包开发的软件不能达到企业的质量要求,我们往往会在第一时间把罪过推给外包商。但实际经验告诉我们,很多失败的原因是企业本身没有提供一套完整的软件系统规格说明、没有跟进开发的进度、没有定期与外包商沟通与协调、没有在开始时建立好质量指标和测试流程或者没有做出适当的技术和开发环境的评估。但最重要的一点,是没有在决定软件外包时处理好双方合作模式与关系的建立.
千万不要认为软件外包可以减少企业的管理时间。相反,外包项目有时需要双倍的管理时间。在我们决定外包软件开发的时候,我们首要决定是整个应用系统的开发由外包商承包,还是只有部分应用模块的程序交由外包商编写。前者需要管理整个外包项目的生命周期,跟企业内部软件开发的管理没有差异,只是开发的地点、环境和资源比较陌生而已;后者则需要了解企业本身是否能提供优质的规格说明、是否能够提供外包商所需的质量标准和测试数据、外包商是否有类似企业本身的开发平台和环境,以及外包商的技术资源水平是否与企业内部开发时所需的技术指数相符。明确自身所需和服务要求,是决定外包项目的先决条件。
选择适合的外包商,并不能单以服务价格来做最终决定。优质的服务需要付出较高的代价。企业应根据自身对软件质量的要求来决定服务的代价。按照国际企业的衡量指标,外包投入比本身开发的净投资(以各技术员工的基本薪资为标准,并不包括企业对员工所提供的福利、假期和奖励计划等开支)多付15%~20%。也就是说,如果企业本身开发需要30万元的话,那么合理的外包服务价格大概是34万元到36万元。
既然外包不能立竿见影地带来经济利益,为什么还要外包呢?最主要的原因是企业在项目完成后不需要继续照顾这批开发人员,不需要为这些开发人员提供福利条件。外包费用是一次性的营运开支,不像雇员薪资这样成为企业的长期营运成本。假如企业有些一次性的大型项目需要马上启动,但缺乏足够的资源,或者企业本身没有相应的技术人员来执行的时候,外包不失为一个可行的解决办法。