这两天读了 Twillo 创始人 Jeff Lawson 的新书《开发者思维》(Ask Your Developer),对他的书中前半部分的主要观点,“企业应该自己构建软件”,颇有同感。
Jeff 认为,所有的企业都会成为软件企业,像软件一样,不断地从市场获取反馈、迭代升级,并把这些知识内化到企业流程中。因此,所有企业,都应该为自己的核心业务自建软件。
自建软件,意味着,不购买标准化软件或者不使用 SaaS,也不把软件开发工作外包出去。
“构建还是购买”(to build or to buy),这是个问题。
Jeff 认为,在数字时代,客户要跟企业的软件直接打交道,企业使用什么软件会影响客户体验,因此,软件就成为企业竞争力的一部分。标准化的软件无法提供额外的竞争力。
使用现成的软件,就意味着要改变企业原有的工作流程去适应它。这不仅可能降低企业的效率,更糟糕的是,当企业的核心业务依赖于标准化软件时,它就失去了持续优化业务模式的敏捷性。
为核心业务构建软件,是企业对自身进行建模的过程。在这个过程中,企业可以提炼出业务规则、业务中的公理,也可以审视和修正原来低效率和不协调的步骤,用软件的思维、数字的方式重塑它们。软件的迭代,反过来也能推动企业的迭代。
最直接的理由,就是慢。因为每一次迭代,都要准备好一大撂详细的功能需求,才能立项,报价,签约,然后才正式开始开发。周期过长。
但如果问 Jeff ,他的主要理由却不是这个。
Jeff 在这本书阐述了一个核心理念,那就是要把客户和业务上的问题分享给开发者,让开发者参与到分析过程中,才能设计出更高效、更合理的解决方案。
如果你的核心软件全由外包团队开发,你自己的团队不知道系统的内部逻辑和运作方式,不了解技术的可能性,那么,当需要开发功能来应对新业务、解决新问题时,你的团队就可能难以提出合理的技术需求,难以选择恰当的解决方案。而外包团队往往会偏向于采用更复杂的实现方案,因为他们通常是按工作量收费的。
一直以来 ,自建业务软件,对于大部分企业(特别是中小微企业)来说,都不是个选项。因为要克服的障碍是全方位的。
首先,企业不一定有合适的人才,来设计和开发高质量的软件。
其次,当企业在决定为某类软件投入资金时,通常已经到了急需解决问题、痛点明显的时候了。自己从零开始规划和开发软件,在时间上来不及。
另外,自建软件的费用也的确是远高于购买标准化软件或者使用 SaaS 。
Jeff 在书中回顾软件行业的发展历程,把它分成三个阶段。
第一个阶段是软件套装销售的时代。像 SAP,Oracle 这样的公司,把 ERP 装在光盘里,以永久授权的方式出售给客户。
第二个阶段就是以 Salesforce 的崛起为标志的 SaaS 时代。云计算成为基础设施,软件通过多租户模式服务于不同企业,企业通过订阅付费的方式来使用软件。
第三个阶段,则是数字供应链时代。许多企业专注于解决特定领域的技术难题,并将解决方案包装成 API,以服务的形式提供给外部。企业可以购买和使用这些 API,把它们组装起来,构建出自己独特的核心业务软件。这些形形色色的 API,就构成了企业的数字供应链。
Jeff 从 API 的购买和使用者的视角,提出了数字供应链的概念。而从 API 提供者的视角看,这就是我们熟知的 API 经济。
在数字供应链时代,编写软件变得越来越容易,变成了组合各种积木块的过程。如何组织和整合这些积木块,如何开发面向客户的软件,就是企业在迭代自身业务时,需要持续回答的问题,也可能是企业创造附加值的关键所在。