注:本文的项目外包主要指项目的发包方进行项目外包的一些注意事项。
去年第一次接触项目外包,今年外包出去的这些项目都基本完成了,因此总结一下。本文对于有从事软件外包项目管理经验或者对外包很熟悉的人来说可能是蜻蜓点水、班门弄斧,本文也并不指对日、对欧美的软件外包,主要是我所在的团队的一次对外发包的一些总结,希望对有些朋友能够有用。下面我分几个方面谈谈我自己的一些看法,欢迎指正:
第一、外包过程中的一些主要活动
1. 为什么要外包。外包主要目的是转移组织风险,使得自身组织专注于提高自己核心的竞争力。因此,在选择是否外包时,应该以是否有利于组织本身作为主要的参考条件。当初我们外包出去的几个项目,都与主营业务有关联但不是特别重要,不过他们都有利于提升我们主营产品的特色,由于项目工期和项目的性质的原因,我们自身都没有足够的项目经验进行实施,虽然这两个项目都只是对现在的产品锦上添花而已,但是能做出来还是不错的,不过换个角度来说,即使不成器,也不会对我们当前的主营方向造成很大影响,衡量之后的总体评估结果是利大于弊。
2. 确定外包供应商。这个对于第一次尝试外包的企业来说,也是一个头疼的问题。尤其对于小企业来说,大的外包公司我们出不起价,小的外包团队或者个人有点信不过。以我们企业为例,最后还是确定尽量找有水平的个人或者小团队。在选择外包供应商上,我主要通过了如下几个途径寻找外包商:
1、确定选择标准。我当时主要从如下几个标准进行选择,具体包括:技术、人品、地域、是否有独立团队、日常沟通、技术特点、项目开发经验。根据上述标准,我当时做了如下工作:1)在一些发布任务的网站上发布任务,如国内的一些有名气的任务网站;2)通过自己平时对技术圈子的熟悉与了解,搜索一些靠谱的人,并分类,然后确定一些潜在人选。3)通过在技术圈子发消息,看是否有推介的人选。最后,在上述三种方式的综合下,我联系上了一些靠谱的人和团队,并最终确定了最终承包对象。
2、确定合作协议。找到了人,接下来就是确定项目范围的问题,但在这之前,一般需要签订一个合作的协议,签订合作协议是对双方的职责、权力等的一个约束性文档,就像合同一样。因此首先需要面对面沟通,并双方确定一些硬性约束条件,这个过程一般是公平公正原则,但是大多数时候是强势者占据有利条件。在签订协议时一般需要确定如下内容:1)项目范围与要求;2)项目工期;3)项目试运行、验收的时间与标准;4)项目团队5)付款方式;6)质保约定;7)责任与义务;8)仲裁方式等。这里有一项值得单独提出来,就是项目团队,这个我在上面单独用粗体提出来,那是因为很容易忽略这项。在这项最好能够约定这个项目外包方应该投入的人力构成比例与人数,这样可以前期就将这个作为外包合同的一部分进行风险管理。项目范围这里仅仅是一个大概的、宏观性的需求描述,在签订合作协议后,应该再确定详细的需求说明书。
3. 确定项目管理内容。一旦确定合作协议后,一般而言应该马上一起商量制定项目管理的一些约定,这个事情宜早不宜迟,对后期的项目执行大有裨益。这里一般需要确定的内容有:
项目组织:双方的项目经理、项目团队构成;
项目汇报:汇报内容(进度、质量、成本、人力、变更等)、汇报方式(对于项目中的各种建议、问题应该如何汇报)、汇报周期(较为正式的沟通频率,一般在一些里程碑时启用)。
4. 确定要外包的详细需求。需求文档描述了要外包的项目应该做的各种事项,包括项目的功能需求与各种非功能性需求。一般而言,这个工作是发包方提供,外包方参与,共同确定项目的内容。这个过程非常重要,有利于双方就要完成的具体目标和内容达成一致,如果这个过程过于草率,后面出问题的几率非常大。但是,由于发包方正是因为对需要外包的项目的不了解才外包的,因此很多时候这个地方很容易出问题,因此这里需要发包方与外包方派出比较有经验的需求分析师获取良好的需求。
5. 项目执行与控制。这个阶段就需要按照之前的项目约定、管理方式、项目需求进行执行、确认、审核等。这个阶段需要注意定时沟通、定期检查里程碑等,在出现问题后,一起想办法解决。
6. 项目试运行与验收。与一般的软件项目管理过程类似,不再细说。
第二、关于软件外包活动的总结。针对上述的一些总结的主要活动,我认为他们的重要性定性总结如下:
项目外包我认为相对更重要的是确定外包供应商与确定项目的需求,其他活动作为一个工程项目活动而言,与普通的软件项目管理一样,都是很重要的,而且我认为对于管理而言,风险无处不在,项目发包方或者承包方的项目管理人员应该时刻保持警惕,处理各种潜在或者已经出现的风险与问题,并确保项目成功。