当iPhone在2007年1月首次推出时,它席卷了世界。作为第一个成功地将移动电话、可以上网的计算机和21世纪的随身听压缩成可以轻松放入口袋的设备,其功能的广度是史无前例的,这是史无前例的,至少是成功地压缩了一部手机、一台可以上网的计算机和21世纪的随身听,可以很容易地放进口袋里。值得注意的是,这是在SDK之前,SDK使“有一个应用程序可以用来”的活动成为可能。顺便说一句,史蒂夫·乔布斯最初反对的SDK。
然而,较少被提及的是,苹果对这些令人眼花缭乱的功能如何协同工作以及如何协同工作给予了关注。事实上,当用户在听音乐的时候第一次接到电话是一种令人震惊的体验,至少它突显了当时人们对自己的电子产品的期望是多么的低。
这是一种现在被认为是理所当然的经历,但相对于当时的竞争,它是革命性的。音乐播放时会有电话打进来。作为回应,iPhone淡出音乐,同时淡入戒指。通话可以无缝接听,一旦通话结束,音乐就会淡出。很简单。很明显。
一方面,这个例子没有什么特别的惊天动地之处。或者更确切地说,不应该有这样的情况。但是,这些明确的证据表明,设计手机软件的团队实际上与为音乐播放器编写软件的同事进行了交谈,再加上数百个类似行为的例子,足以让iPhone几乎在一夜之间就将竞争激烈的老牌手机市场拱手让给苹果--至少在美国,这一领先地位没有被放弃。IPhone优雅的集成设计彻底彻底地颠覆了这一格局,以至于今天的商学院都在教授这一案例研究。
然而,这仍然是该行业尚未内部化和规模化应用的教训。
在iPhone问世时,开发人员正处于软件和硬件的黄金时代的早期。他们青睐的开放源码软件正逐渐被主流接受,而且其数量正在爆炸式增长。事实上,全新的软件类别是从头开始创建的,并由多个相互竞争的项目迅速填补,这些项目根据许可发布,这些项目的要求和义务各不相同,但几乎在所有情况下都得到了OSI的批准。
当时不那么明显,但同样重要的是我们今天所知的云市场的诞生。在史蒂夫·乔布斯(Steve Jobs)站在舞台上挥舞着光滑的小金属板和玻璃大约五个月前,一家主要以销售图书而闻名的在线零售商发布了业界首个云计算服务的非常粗略的测试版。当时没有人知道这一点,但这种简单的按需计算服务,以及它的直接前身简单可寻址存储,将预示着一种新计算模式的崛起,这种模式最终将同化企业技术行业的其余部分,并将其创造者定位为公认的市场领先者。
结果,开发人员从那时起就拥有了大量的工具和服务,每天都有更多的软件和服务面世。开发人员想要的几乎任何东西都可以获得,要么免费,要么只需支付大多数人都可以获得的金额,即使只是在试用的基础上也是如此。正如史蒂夫·乔布斯可能会告诉他们的那样,“你已经得到了你需要的一切。”
然而,有一个问题。在手机和音乐播放器团队由一个有权让它们很好地一起玩的一方控制的地方,现代开发基础设施就不是这样了。大多数工具链都是由不同供应商的产品和服务拼凑而成的,从测试、构建、集成和部署到生产,第一行代码都是从这里编写的。
市场实际上告诉开发人员和他们的雇主的是,市场可以提供一个系统,该系统将从代码在版本控制中的最早的青少年时期一直到其成年阶段的生产阶段。它告诉他们,该系统可以是健壮的、自动化的和日益智能化的。它还告诉他们,他们必须自己建造和维护它。
当然,没有中央供应商能够本能地满足所有最后的运营需求,这一点也就不足为奇了。在某种程度上,这是对微软遭到强烈反对的反应,因为微软试图做到这一点。通过试图拥有整个堆栈,就像他们在上个十年的早期拥有办公生产力和操作系统市场一样,微软向一代技术买家传授了本可以从Amdahl和IBM那里学到的教训。
当然,没有任何供应商能够或将有能力提供每一件必要的东西。即使是拥有最多样化的应用程序组合和史无前例的发布节奏的AWS,也不能满足每个开发人员的需求,也不能拥有每个相关的开发人员社区。在这一点上,应用程序开发过程太分散了;每个企业体系结构都是三层、每个数据库都是关系的、每个业务应用程序都用Java编写并部署到应用程序服务器的时代已经过去了。今天的基础设施的唯一最具决定性的特征是,没有单一的决定性特征,它对于故障来说是多种多样的。
碎片化使得供应商不可能在本地提供完全集成工具链所需的组件。然而,这并没有改变这样一个现实,即开发人员被迫从编写代码中借用时间,并将其重新定向到管理与高度复杂的、多因素的开发人员工具链相关的问题上,这些工具链通过管道胶带和捆绑线连接在一起。因此,这就是开发人员体验的差距。向开发人员提供他们可能需要的任何基础设施原语的同一个市场同时也告诉他们,将它们拼装在一起是开发人员的问题。
如果没有、也不可能有相当于苹果的企业供应商到来,以确保企业电话应用团队与企业音乐播放器团队合作得很好,那么可以预期会有什么进展呢?现在还为时过早,接下来的几个季度应该会提供线索,说明谁准确地识别了问题的深度,并采取了措施来解决它。同时,这里有五个形容词来描述下一代开发人员的体验。
全面性:当今最成功的平台的单一失败之一是他们将编写代码、然后构建和部署代码的过程视为近乎事后的想法。一旦应用程序到达平台,它就会得到很好的管理;然而,旅程可能会很艰难。然而,变化的早期迹象是显而易见的。例如,想一想GitHub的Actions产品在多大程度上将一座桥梁从一个孤岛延伸到了生产环境,中间有基本的CI/CD功能。这是供应商如何超越其最初的核心能力领域,横向扩展其功能基础以提供更全面、集成的开发体验的一个例子。从版本控制到监控,从数据库到构建系统,应用程序开发工作流程的每个部分都需要更好、更平滑地集成。