为什么软件开发很难外包
“ 很多公司和团队选择把整个软件项目或项目中某些模块或过程(比如测试)整体外包给另一家公司或团队。本文将和你一起来探讨为什么公司或团队有外包的冲动,为什么项目外包问题多和我对外包的建议。”
01
—
为什么有外包的冲动
公司或团队选择把项目外包,无非就是想省钱、省事和转移风险。
省钱
一个软件项目需要各种专业角色,包括项目经理、技术主管、架构设计师、需求分析师、程序员、测试员、环境工程师等。具备这些专业技能的人才除了在市场上比一般人才的工资要高以外,培养这些人才的能力,都需要高昂的人力成本。
理论上,外包公司已经具备这样的人才。通过项目整体外包,作为甲方只需要关注项目的整体预算。乙方公司招聘、培育人才的成本会被平摊到各个外包项目中。
省事
还是和人有关。自己维持一个项目团队,涉及到招聘、培训、管理、团建、激励、绩效等多种人事管理开销。而作为甲方,短期而言,真正想要的是项目的产出——软件系统,而非一个专业团队。
项目管理和项目交付过程也是超级麻烦事,外包可以只关注结果,不需要管过程。
风险转移
项目交付存在巨大的不确定性,过程中充满风险。项目外包,也可以把项目交付出现问题的责任转移给外包公司。
这些因素都充满诱惑力。
但事情真的有那么美好吗?
乙方在估算时加入大量的缓冲时间,导致合同金额过高;
乙方在合同金额内无法完成约定交付,要么甲方追加投入,要么中止合作,得到一个烂摊子。
-
固定金额——双方根据项目估算约定一个金额。甲方不管乙方交付项目的实际成本,只支付合同约定的金额。这种模式 ,相当于乙方承担项目交付的所有风险。
-
时间与材料(Time & Material,T&M)——甲方按照乙方投入人员的工作时间支付费用,不管乙方是否交付预期的成果。这种模式,相当于甲方承担项目交付的所有风险。