南阳网络公司说明一下为什么软件开发很难外包。很多公司和团队选择把整个软件项目或项目中某些模块或过程(比如测试)整体外包给另一家公司或团队。本文将和你一起来探讨为什么公司或团队有外包的冲动,为什么项目外包问题多和我对外包的建议。
为什么有外包的冲动,一个软件项目需要各种专业角色,包括项目经理、技术主管、架构设计师、需求分析师、程序员、测试员、环境工程师等。具备这些专业技能的人才除了在市场上比一般人才的工资要高以外,培养这些人才的能力,都需要高昂的人力成本。理论上,外包公司已经具备这样的人才。通过项目整体外包,作为甲方只需要关注项目的整体预算。乙方公司招聘、培育人才的成本会被平摊到各个外包项目中。
还是和人有关。自己维持一个项目团队,涉及到招聘、培训、管理、团建、激励、绩效等多种 人事管理开销。而作为甲方,短期而言,真正想要的是项目的产出——软件系统,而非一个专业团队。项目管理和项目交付过程也是超级麻烦事,外包可以只关注结果,不需要管过程。
项目交付存在巨大的不确定性,过程中充满风险。项目外包,也可以把项目交付出现问题的责任转移给外包公司。这些因素都充满诱惑力。
为什么软件开发问题多,从我的标题,大家已经可以知道我的结论,就是我不建议软件开发通过外包的形式来完成。我们知道,现代社会是一个陌生人协作的社会。一个组织、一家公司、一个团队的能力和精力都是有限的。把非核心能力的业务外包给其他组织、公司、团队是再正常不过的事情,我并非反对一切外包行为。我想说的是,有些东西可以外包,有些则不能。要看某项事物是否适合外包。为什么软件开发就不太适合外包呢?
一谈到软件项目,大家一定会想到超支、延期、加班等等。所有这些,都和一个重要因素有关,就是边界不清晰。光是在需求这个源头,就经常出现需求不清晰、需求泛滥等问题。这些情况,就算是我们自己开发,和用户坐在一起都会经常遇到和难以解决。我们怎么能指望离岸的外包团队能更好地解决这些问题呢?
另外一个最核心的问题是,有人总结得很好,从农业时代、工业时代过渡到知识时代,最大的变化就是我们的工作对象从物品变成了事情。物品的边界是清晰的,所需要的工作时间是有限的。所以在工厂,可以通过计件来量度一个工人的产出和效率。
而事情的边界是可以无限扩充的,可以膨胀成任何规模的工作。也很难量度一个知识工作者的产出。
几乎所有的知识工作,都有这样的特性。软件项目也是其中的典型例子。一个看似简单的需求,一旦挖掘到细节,就可以无限泛滥。我想这是所有软件人的痛。
还有一个问题是,软件项目的估算永远不准确,根源也和上面提到的边界问题有关。软件项目每次都在实现不同的目标、完成不同的东西,每次都是陌生的,充满“意外”,所以无法准确估算所需要的时间。但作为甲方,我们需要乙方提供估算,以便确定外包合同的金额和交付日期。己所不欲勿施于人,如果估算这件事情我们都觉得头疼,怎么能指望乙方估得准。
以上有南阳网络公司搜集,感谢您的观看。