昨天周日,逛了园子里几个园友的博客,看到有些园友对软件外包的抱怨(估计是项目失败了),在这里想对软件外包及其项目管理写点什么,如果对大家有帮助那就最好了。
软件外包是一种商业行为,不管是公司或者个人或者其它机构。有些人是因为朋友让帮忙做的项目,这个也属于软件外包,虽然它可能不存在相关的文档手续等契约,但是它是会产生相关费用的。对于软件外包来说存在两个对象,一个是软件外包的发起者,另一个是软件外包的实现者。发起者对项目的需求,期限,费用等进行组织,实现者对项目的人力,实现,进度,维护等进行控制。双方通过合同,协议等契约,确定项目的目标和范围限制。
下面我说说软件外包相关的一些问题。
一、外包项目与一般项目的区别。
外包项目与一般项目的共同点在于都需要一系列的手续、契约和项目管理等。外包项目的需求相对更加固定,且在项目上线后,其维护期限比较短,二次开发的可能性比一般项目小。这就是说,实现者在把项目移交给发起者之后,更多的是由发起者进行后续维护及二次开发。相对来说,外包项目的需求相对比较固定,即需求在项目初期的功能需求说明书中就已经确定了,这个与一般的项目有一定的区别。
二、下面说说软件外包的起点,即为什么要进行软件外包,外包的优点在哪里。
1、 外包发起者人力资源不足的情况下,对发起者现有项目资源的有效利用。
2、 在第1项的基础上直接或间接的实现项目费用的压缩和减少。
3、 外包发起者技术能力不足的情况下,借助实现者的技术资源来实现项目。
4、 外包发起者需要组织项目文档、新技术等资源的情况下,从实现者处获取相关的资源。
5、 外包发起者如做为项目中介结构,则建立外包原始发起者和实现者之间的项目关系,从而获取中介费用。(类似人力猎头,这里是项目猎头)
6、 外包发起者需要与特定实现者间建立互利共赢的关系,可以通过外包的方式来间接实现。
7、 其它优点。(请大家补充)
8、 其劣势就不描述了。。。
三、软件外包失败的要点。
这个貌似没什么特别的,应该是缺乏有效的沟通。这里必须强调有效沟通的重要性。其实无论哪种项目,都需要有效沟通,不过外包的项目在一定范围能具有特殊性。对项目来说,需求往往是比较头痛的事情,这个在于需求的不确定性。需求贯穿项目的始终,实现者在给发起者进行项目演示的时候,需要对该需求进行确认,以保证项目的质量和进度的控制,这里就是有效沟通的好处了。
四、软件外包项目的管理和控制
1、 项目发起者。
1.1 需求的确认和验证。在项目生命期中必须根据进度对需求进行确认。项目的成果是给你用的,做出来的东西不符合或达不到要求那有什么意义。
1.2 项目费用的统计。这个需要与实现者进行沟通协商,确定最终费用,如有变化的地方,比如设备价格等,这个要提前确认。
1.3 项目完成后的维护和二次开发。后期可以在交接后由双方共同维护一段时间,待发起者能够自行维护为止。如果自行二次开发,这个是必须的前提。
2、 项目实现者。
2.1对项目的契约文档化。主要是合同、协议的问题,这个少以口头契约的方式进行,也可以通过第3方托管进行协调,但尽量避免。
2.2 对项目进度进行有效沟通和控制。项目进度,必须定时与发起者进行沟通,对项目实现过程中遇到的需求,技术,实现方面的问题,传达给发起者,共同进行讨论确定。
2.3 项目后期维护。这个在文档中需进行描述确认。
总的来说,就是通过文档化和有效沟通的方式来进行控制。
软件外包这个模式非常普遍,这里面包含着人文交流和技术交流等内容。如何通过外包的方式来缩减成本,提交技术能力,促进双方的互利共赢,是我们需要深入考虑的问题。这里我就不废话了,祝愿大家的外包项目都顺利。