让软件开发变得乏味以实现商业价值

软件开发的“无聊化”与复杂性管理

Corstian Boerman 在 NDC Oslo 2023 的演讲中提出,由于人类认知能力的有限性,软件开发应变得“无聊”。他强调,应将基础设施从日常开发过程中剥离,专注于以可预测和可重复的方式交付业务价值。

认知能力与复杂系统的关系

Boerman 指出,人类的记忆是有限且易出错的,这限制了我们理解复杂系统的能力。这种限制带来了两个重要影响:

  1. 培训成本高昂:开发者需要花费大量时间和精力来记忆系统细节,这不仅体现在初期培训中,也体现在开发过程中,导致开发速度降低。
  2. 复杂性边界:非理性复杂系统比自然复杂系统更快达到认知边界,因此,Boerman 认为应从自然系统中汲取灵感来设计我们的系统。

Boerman 区分了自然复杂系统和人造复杂系统。自然现象可以通过物理方程解释,而人造系统则必须考虑上下文,这种上下文可能是非理性的,且无法像自然系统那样被普遍化。

无聊软件与激动人心的软件

Boerman 提出了“无聊软件”和“激动人心的软件”的区分:

  • 无聊软件:指那些被无数次构建的软件,如后端系统和前端系统。这类软件的核心是交付业务价值,并且其交付过程应是可预测和可重复的。
  • 激动人心的软件:指需要创造力构建的软件,如定制算法、自动化系统、AI 集成等。

Boerman 认为,软件开发的“无聊化”意味着将基础设施从开发过程中剥离,使其不再成为负担。尽管基础设施占据了大部分开发时间,但它实际交付的业务价值最少,真正的业务价值体现在数据及其操作上。

复杂性与认知能力的关系

在 InfoQ 的采访中,Boerman 进一步解释了认知能力与复杂性的关系:

  • 认知能力的组成:包括思维、经验和感官,三者共同作用使我们理解周围的环境。
  • 复杂性与认知的关系:复杂性是环境的特征,而认知是我们与环境互动的方式。认知能力使我们能够理解和创造复杂系统。

Boerman 强调,认知能力的非凡表现与缺陷可能在同一人中共存,这与感官、经验或思维有关。

如何处理无聊与激动人心的软件

Boerman 建议,无聊系统通常遵循相同的范式:拥有数据并对其执行操作。在这些系统中,大部分时间花在基础设施的搭建上,如数据库查询、日志记录、系统集成等。

与此相对,激动人心的软件同样重要,它们为无聊软件提供支持。无聊软件包含公司最重要的业务流程,而激动人心的外部软件则丰富了这些流程。通过将两者结合,可以实现手动劳动的自动化,或从自动化中手动接管,从而为系统的演进提供灵活性。

总结

Boerman 的核心观点是,软件开发的“无聊化”有助于降低复杂性带来的认知负担,使开发者能够更专注于交付业务价值。通过将基础设施从日常开发中剥离,并结合无聊软件与激动人心的软件,可以在保持系统稳定性的同时,实现灵活性和创新。

阅读 23
0 条评论