Skip to content

永恒的钟摆(译)

Published: at 03:00 AM

原文信息

原文的翻译与发布经过了作者授权。以下是由 Claude 3 初步翻译并由我润色修改的译文。

永恒的钟摆

当你开始研究软件历史时,你会注意到一个常见模式:

  1. 人们有一个有缺陷的“东西”,称之为X。
  2. 为了摆脱X的缺陷,他们转向Y。Y也有缺陷,但以不同的方式。这些人比较了X和Y的缺陷,认为对于他们的用例来说,Y更合适。
  3. Y的使用开始流行。随着时间的推移,越来越少的人使用X,越来越多的人使用Y。
  4. 最终,大多数人只熟悉Y。他们不记得X,也不记得人们当初为什么选择Y。
  5. 人们使用Y。Y同样存在缺陷。
  6. 为了摆脱Y的缺陷,他们转向X’。X’也有缺陷,但以不同的方式…

我将其可视化为一个巨大的傅科摆,来回摆动。每次摆动不尽相同,而且通常X’要么是X的改进版,要么是X中不同部分的一种变体。更重要的是X和Y这两种范式的对立,因为采用一种就是拒绝另一种。一些例子:

流行语言从高性能转向“开发者幸福感”,然后又回到性能。云端与裸机。单体应用到微服务再到单体应用。Flux 和 WndProc。大多数钟摆只会影响几个社区,而且很多时候在逆转方向之前就不会完全摆动。就像大多数 SQL 与 NoSQL 的转换实际上并不是那么大,但它们仍然遵循相同的弧线1

为什么会发生这种情况?

有几个原因。第一次远离X通常来自于成本收益分析。他们了解X的利弊,对Y的利弊也有一些怀疑。就他们的用途而言,使用Y比使用X更有意义。但随着Y在主流中取代X,会发生两件事:

  1. 人们默认使用Y,即使在Y是最差选择的地方。这在新手中尤其常见,他们从未学习过X,只是在Y已成为一切的环境中长大。
  2. 人们在没有X的优点和Y的缺点的平衡力量时,会变得更加极端地使用Y,从而进入设计空间中“奇怪”2的地方。完全拒绝估计和规划。为了一行代码就导入整个包链。单页应用用于服务文本3

这就产生了两股反作用力:寻找Y的替代品的人和怀疑Y的极端形式的人。然后有一些事情可能会吸引人们回到X:

  1. 使用X的社区实际上从未消亡,它们只是变得默默无闻。它们继续探索设计空间并找到了更加令人满意的X’,这吸引了远离Y的人。人工智能热潮通常遵循这种模式,尽管它更像是一种繁荣至衰落的周期,而不是钟摆运动4
  2. X和Y的对比非常明显,任何远离Y的人都可以从第一性原理重新发现X的本质。第三方库就是一个显而易见的例子。
  3. 计算环境发生变化,使得X的优点变得更加重要。客户端与服务器之争正是如此:随着不同类型的计算设备的普及,要求也在改变。

最吸引我的是,这总是看起来像是“重新开始”。采用X’的人通常不了解X。对他们来说,他们正在第一次采用Y的替代品。历史和背景都被遗忘了5

(如果有什么的话,对于这一点来说,拥有历史视角似乎是一种负担。如果人们确实了解X,通常会用来攻击X’,因为我们曾经使用过X,却转而使用Y)

为什么这很重要?

首先,我认为基本上不可能阻止这种情况发生。即使我让前期设计成为主流,10-15年后人们也会再次拒绝它。所以这里有一种谦逊的因素,我知道这是无法避免的。这也意味着我拒绝的任何范式,拒绝并不一定是因为它们本质上很差,而是因为大众舆论正在远离它们。也许最终我会遇到这是正确选择的情况,或者偶然发现让我很满意的变体。

更实用地说,这是一种启发式研究方法。我们可以研究钟摆之前的摆动,通过将X’与被“遗忘”的X进行比较,从而获得更多关于我们将走向何方的洞见。如果我们只有Y,而且它在当前环境中并没有帮助我们,我们可以利用钟摆推断出X的存在,并开始将其作为一种替代方案进行研究。

不过,最重要的是,这是理解事物的一个有用视角。当我通过这种视角来观察时,我发现可以更好地理解软件历史和文化。

Footnotes

  1. 当然,我这里给出的大部分例子都有更加细微的差异,但我更感兴趣的是让更多人关注到整体的模式。

  2. 我没有一个更好的术语来描述这种现象。

  3. 译者注:这正是译者本人采用 Astro 这种静态页面生成器 (SSG) 而非使用其他单页面应用 (SPA) 框架搭建本博客的原因。

  4. 人工智能通常不会经历“人工智能”和“人工智能替代品”,而是“人工智能”和“无人工智能”。这更像是一个周期,而不是钟摆。

  5. 这种情况可能会因为我们这个行业年轻和年龄歧视的问题而加剧。那些经历过两次钟摆摆动的人被赶走了。