内包的意义

许多公司并不将软件开发视为其核心业务,因此倾向于外包。外包是指一家公司雇佣另一家公司或自由职业者来执行某个特定职能。外包通常并不是一个坏主意:你让一家专注于某一领域的公司为你完成工作,这样你就可以将人力和投资集中在核心产品上。专门化的公司通常能够以更低的成本和更高的质量完成工作——而自己培养这些技能通常需要大量的时间和资金。

然而,现在软件已经成为几乎所有产品的关键差异化因素。不仅是数字客户体验,智能制造和供应链管理也能为你带来竞争优势。定制软件正成为你核心业务的一部分。因此,许多公司已经制定了软件开发的内包战略——即在公司内部招聘并雇佣软件开发人员和DevOps工程师。

问题是,软件开发人员和DevOps工程师的市场竞争非常激烈(所谓的人才争夺战)。这往往导致一个分散的局面,其中合作伙伴负责核心产品的开发,而开发人员则负责维护工具链。

一个好的内包策略是问自己,软件是否对你的业务至关重要——即它是否能为你带来竞争优势:

  • 核心软件 应该由内部开发人员开发。如果你无法招聘到足够的技术人员,可以通过外包合作的方式,借助你信任的合作伙伴的工程师来增强团队。但目标应始终是最终用你自己的工程师来替代这些外部开发人员。

  • 附加软件 可以外包。最好是可以使用已经存在的产品。如果没有这样的产品,你可以让合作伙伴来开发它。此时,开源就发挥了作用:你可以利用现有的开源解决方案,或者让你的合作伙伴在开源环境中开发解决方案。这可以减少你成为唯一客户的风险,并防止解决方案变得过时。由于该软件只是附加于你的业务,所以你并不在乎其他公司是否也使用它。相反,软件被更多公司使用,软件变得过时的风险反而更小。如果软件是在开源环境中开发的,质量也是可以依赖的。

支付其他公司或个人为你开发特定的开源软件,或为现有的开源解决方案添加功能并不常见。但随着越来越多的公司拥有内包战略,以及人才争夺战的持续加剧,这种做法在未来几年将显著增加。