为什么软件工程师应该学习哲学?


来自哈佛商业评论Marco Argenti文章:

我最近告诉我的大学生女儿:如果你想从事工程职业,除了传统的工程课程外,你还应该专注于学习哲学。为什么?因为它会改进你的代码。

从工程师的角度来看,这似乎有违直觉,但围绕要解决的问题建立清晰的心智模型,并在开始研究如何解决之前了解原因的能力,是一项越来越重要的技能,尤其是在人工智能时代。

编码是人工智能最擅长的事情之一。通常,人工智能能写出比人类更高质量的代码,而且其能力正在迅速提高。要知道,计算机语言使用的词汇量要比人类语言有限得多。由于人工智能模型的复杂性会随着代表人工智能所能理解的语言的符号宇宙的增加而呈二次曲线增加,因此更小的词汇量意味着更快、更好的结果。

不过,这里也有一些问题:人工智能创建的代码在语法和语义上可能是正确的,但在功能上并不正确。换句话说,它可以工作得很好,但做不到你想要它做的。模型的输出对提示语的编写方式非常敏感。如果在提示上失误,你的人工智能生成的代码往好了说是可信的,往坏了说就是不正确和危险的。

在被称为 "提示工程 "的新兴学科中(现阶段与其说是一门科学,不如说是一门艺术),用户要学习如何手工制作简洁、富有表现力并能有效地让人工智能按照他们的意愿行事的提示。

目前存在着各种技术,例如 "少量提示",即在提示中预设一些例子,引导人工智能走向正确的道路,有时还可以问答。
例如,在使用 "少量提示 "进行情感分析时:

  • 用户可以输入 "分析收益电话会议中的句子情感 "这样的提示,
  • 然后输入“前景改善:正面”或“需求放缓:负面”等具体示例,

这样才能以帮助人工智能理解模式和上下文,从而根据示例生成准确的情感分析。

我在几十年的工程团队管理中学到的最重要的技能之一就是提出正确的问题。这一点与人工智能并无二致:大型语言模型(LLM)的输出质量对提示的质量非常敏感:

  • 模棱两可或格式不规范的问题会让人工智能试图猜测你真正想问的问题,
  • 这反过来又会增加得到不准确甚至完全是编造的答案的概率(这种现象通常被称为 "幻觉")。  

正因为如此,一个人要想最大限度地利用人工智能:
  • 首先必须掌握推理、逻辑和第一性原理 思维
  • 这些都是通过哲学训练培养出来的基础技能。

"你会编码吗?"这个问题将变成 "你能通过提出正确的问题从人工智能中获得最佳编码吗?"

程序员与AI关系
将视角拉远一点,人工智能的性能取决于用户所表达的心理模型的质量,这表明作者与读者之间的关系,以及我们与知识之间的关系发生了根本性的转变。

  • 在某种程度上,这与印刷术的发明有异曲同工之妙,印刷术通过大量生产书籍以及创建图书馆和大学实现了信息民主化。在印刷术出现之前,如果你想学习数学知识,你很可能必须亲自去找数学家,或者查阅手抄本,而且很可能是花大价钱购买的。
  • 印刷书籍使这一障碍大大降低,而互联网则使这一障碍几乎为零。
  • 然而,作者与读者之间的知识鸿沟仍然存在。你可以获得世界上任何纸张或书籍,但如果你不能理解它们,它们就没有什么用处。

使用人工智能后,这种关系发生了变化,作者的概念也发生了变化。LLM大模型 会根据读者的知识水平和理解能力调整内容,并根据读者的提示进行调整。

读者的提示是触发人工智能生成内容的种子,人工智能会借鉴训练数据中的作品,专门为该用户创建新的文本:从某种意义上说,读者既是消费者,也是作者。

以数学为例,如果你想了解微积分中极限的概念,你可以找到一本针对高中生或大学生的教科书,或者尝试在互联网上找到与你当前理解水平相匹配的资料。而人工智能模型则可以根据你的理解水平和学习风格提供个性化的自适应教学。也许在未来,每个人都能享受到学习的黄金标准--个性化辅导。

以批判精神对待AI
生成式人工智能改变了我们与知识之间的关系,它不仅能提供获取知识的途径,还能以量身定制的方式解释知识,从而使障碍变得更加平坦。它在你的知识水平和攻克特定课题所需的知识水平之间创造了一个缓坡。  

然而,获取量身定制的知识的能力,更重要的是获取准确知识的能力,始于用户,也终于用户。随着知识越来越容易获取,推理变得越来越重要。

不过,这些哲学思考技能的使用并不会在你得到你认为想要的结果后就结束--工作还没有完成。正如我们所知,人工智能也会犯错,而且它们特别擅长让错误的输出结果看似合理,这就使得辨别真相的能力成为另一项极其重要的技能。为了以负责任的方式与技术打交道,从而获得我们想要的适当而准确的信息,我们必须在整个过程中以哲学思维、健康的怀疑精神和常识为主导

曾几何时,为了创建一个计算机程序,我必须亲自动手拨动开关或在纸卡上打孔。这种创建过程与计算机拥有多少比特内存或寄存器的复杂性完全无关。随着数十亿个晶体管和数万亿个存储单元的出现,我们的软件创造过程必须提升到越来越高的水平,创造出能够抽象出底层硬件复杂性的计算机语言,让开发人员几乎完全专注于算法的质量而不是1和0。

如今,我们的计算机(即人工智能)已经不需要在我们所说的语言和它们所能理解的语言之间进行这种中间层次的翻译了。我们可以把罗塞塔石碑放在一边,直接对计算机说英语。它们可能会像用 Python 和它们说话一样听得懂。这立刻带来了两个选择:我们可以偷懒,或者提升我们的思想。

当语言不再是障碍时,我们可以充分运用人类语言的表达能力,向人工智能传达更高级的概念和逻辑,以最简洁有效的方式捕捉我们的请求,这种方式是陈述式的(侧重于我们想要得到的结果),而不是命令式的(侧重于如何达到目标的步骤)。

  • 命令式:左转,然后直走,然后再左转,然后(1000 次)。
  • 陈述句:带我回家。

我曾在社交媒体上看到有人仅用几句巧妙的提示语就创造出了整个游戏,而在不久前,这需要花费数月的时间来开发。

总结
这又回到了我的原点:拥有围绕问题的清晰心智模型,能够将问题分解为可操作的步骤,完美的第一原理思维,有时准备好(并能够)与固执的人工智能辩论--这些都是未来成为一名优秀工程师的技能,而且可能同样适用于许多工作类别。

我们不想失去在必要时打开引擎盖,修复人工智能可能遗漏的问题的能力,也不想失去(重要的是)审核人工智能所创造的东西的能力。这对人类来说将是一个真正的问题,我们不可能让这种情况发生--至少我们还必须构建人工智能。然而,这只能实现部分目标。将代码创建的机制自动化,并专注于我们的批判性思维能力,才能让我们创造出更多、更快、对世界产生更大影响的东西。帮助人工智能让我们更像人类,而不是电脑。