软件工程师第一性原理思考 - AddyOsmani


第一性原理思维有助于解决复杂问题,因为它可以让您将问题分解为核心元素,然后从中系统地构建解决方案。与尝试使用先入为主的概念或根据您过去的经验对问题做出假设相比,这可能是一种更有效的方法。

它用于计算机科学、工程和物理学,但也可以从任何行业的第一性原理思维中吸取教训。在这篇文章中,我将解释什么是第一原则思维,为什么它很重要,以及如何在您自己的生活或业务中使用它。
在高层次上,应用第一性原理大致有四个步骤:

  1. 确定您要解决的问题
  2. 将其分解为基本部分
  3. 质疑并挑战你的假设
  4. 从头开始创建新的解决方案

第一性原则是什么意思?
第一原则是一个起点或假设,你用它来建立你的论点。第一原则思维指的是将一个问题分解成其基本部分,并按顺序解决每个部分,直到得出答案的过程。

第一原则思维与其他解决问题的技巧不同,因为它允许你专注于问题的最重要因素,而不会被无关的细节或二手信息所干扰。遵循这种方法,与直接跳过推理过程中的某些步骤相比,你能更快、更自信地达成解决方案。

第一原则思维是一种通过观察根本原因来分析复杂问题的方法。

第1步:确定你要解决的问题,并将其分解为基本部分
第一原则的思考从确定问题最重要的部分开始,然后将它们分解成其组成部分。

  • 识别你的问题中最重要的部分
  • 将每个部分分解成其组成部分,然后确定每个部分与整体的关系。
  • 重复这个过程,直到你把所有的东西都分解到你能做到的程度为止。

第二步:问为什么。
一旦你把问题分解成其组成部分,就该问为什么了。问五次 "为什么 "是一种有用的方法,可以从源头上找出某个问题或结果的根本原因。当你每次都问 "为什么?"并不断深入挖掘时,你最终可以找到任何问题或结果的核心--即使看起来有多个原因在起作用。为了说明这一点,让我们看一个例子。你可能觉得你的团队没有有效地工作,因为他们彼此之间没有很好地沟通。然而,在问了自己五次原因后(并发挥你的想象力),你可能会得出这样的结论。

  • 为什么?我们没有很好地沟通,因为我们没有对哪些信息需要在各部门之间共享建立明确的期望。
  • 为什么?因为公司还没有建立起严格的跨部门信息共享流程
  • 为什么?因为领导可能不知道员工在其部门团队内自由分享信息有多重要
  • 等等。

第三步:挑战你的假设
假设是你建立解决方案的基础。它们既可以是正确的,也可以是错误的,但它们总是基于你知道在这个时间点上是真实的事实。如果你的假设是正确的,那么它们应该引导你找到一个好的解决方案;如果它们是不正确的,那么它们可能会导致以后的问题。

假设可以分为三类:

  • 市场假设(关于市场本身)
  • 问题假设(关于问题本身)
  • 解决方案假设(关于你提出的解决方案及其组成部分)
  • 人员假设(关于参与实现成功的人员)。

第四步:通过关注你的目标,从头开始创建一个新的解决方案
下一步是专注于你的目标。第一步是确定问题,第二步是收集关于为解决问题需要做什么的信息。现在是你需要把你的注意力引向解决这个问题的最终结果的时候了。

在实践中,这意味着:

  • 不要被细节所干扰,除非它们与解决你的问题和实现你的目标有关。
  • 专注于实现这些目标,不要担心沿途可能发生的事情。

将第一性原则应用于软件项目
第一性原则的思维方式可以在几个方面帮助软件开发。这种方法可以带来好处的一些具体方式包括:。

  • 通过将问题分解为基本原则并确定关键要求和目标,它有助于澄清软件要解决的问题或挑战。
  • 通过使用确定的原则来指导技术、架构和设计模式的选择,它为做出明智的设计和开发决策提供了基础。
  • 通过使用这些原则来评估解决方案的稳健性和有效性,它有助于识别和解决对问题的理解中的差距或不一致之处。

这里有两个将第一原理思维应用于开发产品时可以提出的问题的例子。

设计一个商业应用
产品问题:

  • 用户为什么需要这个应用?为了快速找到并购买一件物品,因为他们需要它。
  • 为什么他们需要我们减少结账过程中的步骤?他们想节省时间。一键结账可能有帮助。
  • 他们为什么需要我们支持评论?这有助于建立对他们所购买的物品的信任,可以帮助他们更快地决定购买。

工程问题。:
  • 这些功能的最低要求是什么?一个搜索框和过滤结果的方法,以及产品页面、分类页面和结账的方法。
  • 我们可以使用哪些技术来建立这些功能?商务平台已经有一个用于搜索、过滤和显示结果的API。也许在此基础上用CSS+JS做一个基本的UI就足够了。
  • 我们的用户如何相互交流?他们可以留下产品评论,这对系统中的每个人都是可见的。我们可能需要支持创建/管理评论。

建立一个社交网络应用
问题:

  • 用户为什么需要这个应用?一个用户想找到其他有类似兴趣的人,然后与他们联系。他们可以搜索个人资料,阅读关于一个人的公共信息,并在他们的个人资料上留下评论。
  • 为什么用户需要相互交流?他们想发送信息或留下评论,这些信息在他们的个人资料页面上是可见的。
  • 我们的数据模型是什么?用户有档案,他们可以在他们的档案中添加照片。我们将如何在系统中表示用户?一个用户将有一个名字,一个电子邮件地址(我们可以用它来发送消息),以及其他一些基本信息,如年龄或性别。

用第一性原理思考的缺点
用第一原理思考的一些缺点是,它可能很难做到,尤其是当我们不习惯这样思考的时候。它还要求我们思想开放,愿意投入时间和精力从各个角度去理解问题,这样我们就不会错过任何重要的东西。

这很耗费时间--因为我们必须不断地将问题分解成越来越小的组成部分,直到我们达到它们的基本构成部分。

它可能很难知道何时停止--如果我们的目标是找到做某事(如制造汽车)的最有效方法,那么,如果有其他方法可以实现这一目标,需要更少的能源或更少的资源,这可能并不重要(也许其他制造商已经找到了如何更便宜地制造汽车,但他们只是不想让我们知道)。

你发现你的一个或多个信念是没有根据的。(假设前提是没有根据的)

结论
第一性原则思维是解决复杂问题的有力工具。这种方法可以帮助你思考问题的真正根源,避免落入通过类比思考的陷阱。
你可能会发现,其他方法,如苏格拉底方法,可以很好地补充第一原则的思考。通过从多个角度考虑问题,你可以获得对问题更全面的理解,并提出更有创意和有效的解决方案。

以下是你可以考虑提出的一些问题。

  • 我怎么知道这是真的?
  • 可能存在哪些其他观点?
  • 我怎样才能支持我的信念?
  • 为什么我一开始就相信这是真的?

通过问这些问题,你可以找到问题的根源,并确定有效和可持续的解决方案。