为什么软件外包开发不再可行

jopen 9年前

Yegor Bugayenko 是一名软件开发人员,同时也是软件外包公司 Teame.io 的创始人和 CTO。从自己将近 10 年的软件外包公司工作经验中,他得出结论:现如今,软件外包开发已经行不通了,软件外包的结果只有灾难

他查阅多篇文章,寻找软件外包失败的原因。他认为,下面所有的原因都不得要领:

  • 最便宜的提供商:有人认为,软件外包是为了降低成本,所以最终会选择最便宜的提供商。但 Yegor 认为,增加开支并不能解决该问题。而且,这个原因也不限于软件外包。在任何商业交易中,“你输我赢”只会通向失败。
  • 文化不匹配:有人认为,外包公司同客户之间的文化差异是导致成本超支、计划延期和代码质量低下的原因。但 teamed.io 的团队来自超过 15 个国家,他们在工作中从没有因为文化问题而纠缠不清。
  • 缺少面对面交流:有人认为,外包公司同客户身处异地,缺少面对面交流,容易产生误解。但 Yegor 认为,不见面也可以清晰的表达和交流观点。
  • 没有成功指标:没有清晰定义成功指标,这是外包公司同客户关系破裂的原因。Yegor 认同这一说法,对于外包公司和客户,成功有不同的意义。
  • 糟糕的规范:有人认为,大部分项目都无法定义良好的规范,而这是导致外包项目失败的原因。Yegor 认同这一说法。不过,他认为这与外包公司无关。无法明确定义技术需求是架构师本身的缺陷,可以通过学习、培训和阅读来解决。
  • 人才流失:离岸开发人员缺少对项目的忠诚度,他们中最优秀的可能随时退出。而 Yegor 认为,这与开发人员的所在地没有关系,应该采用更有效的激励手段。

对于上述原因,Yegor 认为,它们仅仅能够说明外包项目的结果,但并没有触及真正的问题。在他看来,真正的原因是外包公司的 CEO 只关心一个问题,就是下个月的雇员工资,因为公司 90% 的支出都是程序员的工资。所 以,对他们而言,付钱的客户就是好客户,他们并不关心客户项目是否成功、成本是否优化等。而从前,软件外包之所以可行,是因为外包公司的人力成本非常低, 他们通过向异国客户出售程序员的时间可以获得巨大的利润。但现在,由于程序员对工资及福利的要求增加,利润空间遭到了严重压缩,保持源源不断的现金流成了 外包公司的唯一动机,他们不怕项目时间长,不怕代码质量低(可以赚取运维费用)、也不怕电话、开会和其它浪费时间的活动,所以软件外包已经不再可行。

对于这一话题,Hacker News 网友的讨论异常激烈。网友 makecheck 认为,软件外包从来就不可行,因为软件外包存在下面两个方面的问题:

一个是软件外包中有一个想法,就是程序员在某种程度上非常容易替换,认为只需要找到一个开发人员就可以,而几乎没有考虑,如果选择的团队压根不了解他们要做的工作,那会有什么影响……另一个问题是文化上根本性的误解。

网友 chris_wot 持类似的观点,他认为:

大多数非技术出身的项目经理都不明白:IT 人员并非即插即用的模块组件……总是要有一个提前期——根据项目的复杂度不同,有时需要数月——在真正富有成效的工作之前,新雇员需要熟悉和理解系统及业务需求。

网友 JoeAltmaier 也认为软件外包不可行,他指出:

20 年来,我从来没有从软件外包项目中看到回报……(软件外包项目)的管理成本高于收益:语言障碍、时区、文化、网络接入……

网友 MortenK 也认为软件外包项目的管理成本更高,其在项目管理上的时间投入是本地项目的2-3 倍。不过,对于文化差异的问题,他认为可选择文化相容度高的外包地。

网友 timtas 赞同 Yegor 探讨这一问题的方式,但认为他并没有提供一种可用的方法:

如果严格按照他的观点行事,那你永远都不要用金钱换取服务了。

同时,他认为,名声很重要:

名声好的外包公司不会纯粹将客户视为摇钱树。虽然他们在利用率问题上面临着同等或更大的压力,但他们仍然会高质量地完成工作。

网友 d4nt 经营着一家软件外包公司,他认同 Yegor 及其他网友提到的许多问题。但他认为:

你永远不应该为了省钱而外包……外包的主要原因应该是购买专业知识。许多公司真不知道如何编写软件需求文档,或者什么是非功能性需求,或者如何设计用户界面……

网友 cookiecaper 认为外包也是有好处的:

其中一个主要的好处就是,外部承包商通常不会受到公司内部政治的影响。也就是说,他们更可能给出直接诚实的反馈,而不必过多顾及其他人的情绪。在大多数组织中,这都是非常有价值的。

此处仅列出了网友的部分观点,感兴趣的读者可以进一步阅读

来自: InfoQ