天天看点

软件工程师的第一性原理

作者:石榴互联网创业记

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

它用于计算机科学、工程和物理学,但也可以从任何行业的第一性原理思维中吸取教训。在这篇文章中,我将解释什么是第一性原理思维、为什么它很重要以及如何在你自己的生活或工作中使用它。

在高层次上,应用第一性原理大致有四个步骤:

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

“第一性原理”是什么意思?

第一性原理是你用来构建论点的起点或假设。第一性原理思维是指将问题分解为基本部分并按顺序解决每个部分直至得出答案的过程。

第一性原理思维不同于其他解决问题的技巧,因为它可以让您专注于问题的最重要元素,而不会被无关的细节或二手信息分散注意力。通过遵循这种方法,与直接跳过推理过程的某些步骤相比,您将能够更快、更自信地找到解决方案。

第一性原理思维是一种通过寻找根本原因来分析复杂问题的方法。

第一性原理思想的历史

第一性原理的概念在哲学和科学中有着悠久的历史。它可以追溯到古希腊哲学家亚里士多德,他认为所有的知识和理解都必须源自第一性原理。亚里士多德在他的著作中强调了从不言而喻的真理或公理出发,并使用逻辑推理来演绎更复杂的想法的重要性。

第一性原理的概念继续对现代科学和哲学思想的发展产生影响。17、18世纪的笛卡尔、康德等哲学家也强调从第一性原理出发,用理性来演绎知识和理解的重要性。

20 世纪,物理学家理查德·费曼 (Richard Feynman) 推广了费曼技术的使用,该技术涉及将概念或问题分解为其基本原理,以便更好地理解和解决它。

第 1 步:确定您想要解决的问题并将其分解为几个基本部分

第一性原理思维首先确定问题最重要的部分,然后将它们分解为各个组成部分。

  • 确定问题最重要的部分
  • 将每个部分分解为其组成部分,然后确定每个部分与整体的关系
  • 重复这个过程,直到你尽可能地分解所有东西

第二步:问为什么。

一旦您将问题分解为各个组成部分,就该问为什么了。问五次原因是通过追根溯源查明给定问题或结果的根本原因的有效方法。当你问“为什么?”时 每次只要不断地深入挖掘,你最终就能找到任何问题或结果的核心——即使看起来有多种原因在起作用。

软件工程师的第一性原理

为了说明其工作原理,让我们看一个示例:您可能会觉得您的团队工作效率不高,因为他们彼此之间沟通不畅。然而,在问自己为什么五次之后(并发挥你的想象力),你可能会想出这样的结果:

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

第三步:挑战你的假设

假设是构建解决方案的基础。它们可能是对的,也可能是错的,但它们总是基于您此时已知的事实。如果你的假设是正确的,那么它们应该会引导你找到一个好的解决方案;如果它们不正确,那么它们可能会在以后引起问题。

假设可以分为三组:

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

第四步:专注于您的目标,从头开始创建新的解决方案

下一步是专注于你的目标。第一步是识别问题,第二步是收集有关解决问题所需采取的措施的信息。现在是你需要将注意力集中在解决问题的最终结果上的时候了。

实际上这意味着:

  • 不要被细节分散注意力,除非它们与解决您的问题和实现您的目标有关
  • 专注于实现这些目标,不要担心沿途会发生什么

将第一性原理应用于软件项目

第一性原理思维可以通过多种方式帮助软件开发。这种方法可以带来好处的一些具体方式包括:

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

以下是将第一性原理思维应用于开发产品时可能提出的问题的两个示例:

设计商业应用程序

产品问题:

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

工程问题:

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

构建社交网络应用程序:问题

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

以第一性原理思考的缺点

以第一性原理思考的一些缺点是它可能很难做到,特别是如果我们不习惯这样思考的话。它还要求我们思想开放,愿意投入时间和精力从各个角度理解问题,这样我们就不会错过任何重要的事情。

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

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

您发现您的一个或多个信念没有充分根据。

也就是说,这些并不是停止应用第一性原理思维的理由。它们只是意味着我们在应用它时必须小心,并确保我们不要让自己被自己的想法或假设冲昏头脑。

结论

第一性原理思维是解决复杂问题的有力工具。这种方法可以帮助你思考问题的真正根源,避免陷入类比思维的陷阱。

软件工程师的第一性原理

您可能会发现其他方法,例如苏格拉底方法,可以很好地补充第一性原理的思考。通过从多个角度考虑问题,你可以更全面地了解问题,并提出更有创意、更有效的解决方案。

以下是您可能会考虑提出的一些问题:

  • 我怎么知道这是真的?
  • 可能存在哪些替代观点?
  • 我怎样才能支持我的信念?
  • 为什么我首先相信这是真的?

通过提出这些问题,您可以找到问题的根源,并找到有效且可持续的解决方案。

继续阅读