您的位置:正保会计网校 301 Moved Permanently

301 Moved Permanently


nginx
 > 正文

探索外包项目开发的管理

2008-08-14 20:37 来源:

  项目外包有很多优点,但最主要的一点也许并不是为了降低开发成本,而是为了解决企业内部人力资源的限制,使得企业不用招聘新员工就可以上马大型项目。本文作者在项目管理方面有十多年的实践经验,他将为我们举例说明曾经面临的困境,接着条分缕析找到原因并指出解决方法。

  一次失败的经历

  在亚洲四小龙经济全盛时期,笔者在某公司亚太区总部负责该区的软件开发。为了应付业务迅速增长所带来的需求,公司在各地都需要进行一些大型项目,包括主机的转换与安装、应用系统开发等项目。总公司要求我们把部分开发工作外包,这样一来可以降低开发成本,同时也为了能在这一段时间内保证有足够人力来完成项目。最后,我们决定利用公司本身的资源在区内各计算机中心内进行软件核心功能模块的开发,周边功能模块则实行外包。

  我们选择了菲律宾和泰国这两地的软件企业来协助开发部分应用软件,因为这两个地区有大批新兴的软件企业,所需的开发费用只是项目基线的四分之一而已。首先,我们对两地一些有规模的软件企业进行严格审核,包括对这些企业的技术人员数量、技术水平、财务状况、可靠性等各方面进行深入的评估,然后在每地选择一家从事外包。我们制定了有关程序的规格说明,然后把这些说明交给对方进行编程和模块测试。

  当接到第一批交回的程序时,我们从测试报告中已经发现结果跟我们的期待有很多不同之处。我们在进行测试过程中发现有些程序不能跟核心模块连接,更有些程序不能在主机上运行。我们除了对交回程序的质量感觉失望之外,更知道这会全面影响整个项目的进度。

  建立良好合作模式

  外包开发的软件不能达到企业的质量要求,我们往往会在第一时间把罪过推给外包商。但实际经验告诉我们,很多失败的原因是企业本身没有提供一套完整的软件系统规格说明、没有跟进开发的进度、没有定期与外包商沟通与协调、没有在开始时建立好质量指标和测试流程或者没有做出适当的技术和开发环境的评估。但最重要的一点,是没有在决定软件外包时处理好双方合作模式与关系的建立

  千万不要认为软件外包可以减少企业的管理时间。相反,外包项目有时需要双倍的管理时间。在我们决定外包软件开发的时候,我们首要决定是整个应用系统的开发由外包商承包,还是只有部分应用模块的程序交由外包商编写。前者需要管理整个外包项目的生命周期,跟企业内部软件开发的管理没有差异,只是开发的地点、环境和资源比较陌生而已;后者则需要了解企业本身是否能提供优质的规格说明、是否能够提供外包商所需的质量标准和测试数据、外包商是否有类似企业本身的开发平台和环境,以及外包商的技术资源水平是否与企业内部开发时所需的技术指数相符。明确自身所需和服务要求,是决定外包项目的先决条件。

  选择适合的外包商,并不能单以服务价格来做最终决定。优质的服务需要付出较高的代价。企业应根据自身对软件质量的要求来决定服务的代价。按照国际企业的衡量指标,外包投入比本身开发的净投资(以各技术员工的基本薪资为标准,并不包括企业对员工所提供的福利、假期和奖励计划等开支)多付15%~20%。也就是说,如果企业本身开发需要30万元的话,那么合理的外包服务价格大概是34万元到36万元。

  既然外包不能立竿见影地带来经济利益,为什么还要外包呢?最主要的原因是企业在项目完成后不需要继续照顾这批开发人员,不需要为这些开发人员提供福利条件。外包费用是一次性的营运开支,不像雇员薪资这样成为企业的长期营运成本。假如企业有些一次性的大型项目需要马上启动,但缺乏足够的资源,或者企业本身没有相应的技术人员来执行的时候,外包不失为一个可行的解决办法。

  如何进行外包项目的管理

  一些项目经理往往认为外包开发项目与企业内部开发项目的管理没有多大分别,唯一不同是外包项目需要更多时间去沟通、协调、跟进和监控。总体来说,这种想法是对的,但事实上外包项目的管理比企业内部开发项目的管理更复杂,担负更大的风险,需要更紧密的进度和质量监控。(相关文章:如何控制信息技术外包的风险?)

  保障沟通

  内部开发项目所需人力资源大致分为两组:一是技术人员,另一组是配合技术人员的业务人员(他们是所建信息系统的潜在用户)。外包项目除了需要部分技术人员和用户群体参与外,更增加了一组外包商的资源。有些外包商更会指派一名联络人员负责联系与协调,而他们的技术人员只在后方负责项目的开发。这种运作模式要尽量避免,因为外包商指派负责联系的人员往往是业务人员的背景,对技术的细节不能全面把握,把有关信息传达到技术人员的时候便会有所差异。所以我们的首要任务是让外包商明白负责项目联系的人员必须是开发小组的主管。这名开发小组主管是直接参与开发项目的主要人员,如此才能够有效地进行沟通和监控。

  做好计划

  项目经理首先需要做出一个详细的、完整的项目计划,并在计划中详细地列清楚每一件工作需要哪方面的哪些人力来共同执行。在计划中的每一个进度都需要进行确认才能继续。例如外包商在完成系统分析后,需要把分析的结果让客户理解,好让企业能够确认外包商对整个系统的理解和分析与企业本身对项目的需求和分析达成一致,这样才能让外包商进行其后的模块设计。不然设计出来的模块组合便有可能与企业的需求不太一样,存在质量和最后上的差异。这些差异也将会引发企业将来在系统维护、更新、增加功能模块、升级、集成等各方面的严重问题。

  避免延误

  要避免项目发生延误,计划中要预留足够的时间来进行上述确认工作。由于双方工作地点的缘故,原本只需一天的确认会议便可能耗费两天或三天的时间来完成。议程中所达到的共识也可能需要时间来让外包商做出适当的修改才能让企业正式确认。也只能在正式确认后才能够进一步继续接下来的工作。如果没有预留足够的时间用于协商,当一个项目经过七八个确认会议之后,也许已经延误了一个月的时间。