极客时间已完结课程限时免费阅读

01|围绕不可言说知识构造知识过程

01|围绕不可言说知识构造知识过程-徐昊 · AI时代的软件工程-极客时间
下载APP

01|围绕不可言说知识构造知识过程

讲述:徐昊

时长10:10大小9.28M

你好,我是徐昊,欢迎你和我一起学习 AI 时代的软件工程。
今天我们开始第一章的学习,掌握知识工程的整体框架。在开篇词我曾提到随着 LLM 的兴起,软件工程也会逐渐变成知识工程(Knowledge Engineering),即提取知识、组织知识为 LLM 易于理解的形式,再通过 LLM 将这些知识转化为可工作的软件。
不难发现,知识工程的关键是提升知识传递效率。为此我们需要先了解知识有哪些种类,以及知识是如何进行传递的。

不同种类的知识

实际上在我们的工作中存在两类知识:显式知识(explicit knowledge)、不可言说的知识(tacit knowledge)
所谓显式知识就是能够直接表达且在人群中分享的知识。比如,地球的周长、水的密度、三角形面积公式等等。不可言说的知识是指那些不易用言语表达或形式化的知识,它通常是个人经验、直觉或技能的一部分,与个人的认知和学习过程紧密相关。
不可言说的知识需要从经验中获取,很难通过语言或其他的形式传播。而显式知识则没有这个要求。《庄子》上有一则故事,非常形象地描绘了什么是不可言说的知识。
齐桓公在堂上读书,轮扁在堂下砍削车轮。他问齐桓公在读什么书。齐桓公说是圣人的书。轮扁说,那全是古人的糟粕!齐桓公就很不高兴,非要让他说出个道理。
 
轮扁说:我所从事的工作是砍削车轮。榫头做得过于宽缓,就会松动而不牢固,而做得太紧了,又会涩滞而难以使用。不宽不紧才可以。这个道理是我从工作中学会的,虽然能讲出来,但是没有办法教给徒弟或儿子。于是这么大岁数了我也只能自己削车轮。不可言传的道理跟随圣人一起死了,所以您读的书只能是古人的糟粕。
轮扁讲出的道理需要他的徒弟或儿子亲身在工作中学习,通过经验的增长,才能学会。英国哲学家吉尔伯特·赖尔(Glibert Ryle)将这两种知识分别称作 “know-what” 和 “know-how”。显式知识是关于事实或规律的 know-what,不可言说知识是特定场景下的 know-how。
这其中的差别有点像求解计算题还是应用题。计算题只要根据计算法则,完成演算即可。而应用题有个额外的难点——我们先要从文字描述的场景里提取隐含的数学关系,然后才能选择正确的公式或算法求解问题。提取隐含的数学关系这个过程,就是不可言说知识在发挥作用。
不可言说知识还被称作经验知识(Experiental Knowledge)或部落知识(Tribal Knowledge)。经验知识指不可言说知识是通过经验获得的知识。部落知识则是说不可言说知识口口相传,不落文字。
不可言说知识不同于隐式知识(Implicit Knowledge),虽然在很多场合中我们也会使用隐式知识指代不可言说知识,但是二者还是存在很大的差别。隐式知识只是一种尚未被记录下来的显式知识,是没有记录下来的事实。要将隐式知识转化为显式知识,唯一需要做的步骤就是记录它。
比如我们在某个地方发现一个水池,对于水池的深度没有任何记载。但是水池的水深并不是不可言说知识,而是隐式知识。我们只需要测量并记录就好,并不需要再获取额外的经验。

不可言说知识是更重要的知识

显式知识只是我们技能里很小的一部分,不可言说知识才是冰山下的主体。
在许多专业领域,如医学、工程、软件开发和艺术,高级技能往往是通过实践和模仿,而非仅通过书本学习获得。这些技能的核心是不可言说知识,它们对于专业实践至关重要。
以软件开发为例,虽然像数据结构这样的基础编程概念可以通过书本学习,但想要真正掌握和精通却需要在实际编码过程中不断练习和应用。开发者需要在不同的项目和问题中使用这些数据结构,通过实际解决问题来深化理解。在这个过程中,他们不仅在学习如何使用这些结构,还在学习何时使用它们,以及如何在不同的编程环境和需求下调整用法。这些都是不可言说知识。
还记得不可言说知识也叫部落知识吗?任何团队、组织的环境与文化中都充斥着不可言说的知识,它包括团队特定的工作方式、非正式的规则、经验教训以及对组织文化的深刻理解。这些知识对于有效的团队协作和组织融合非常重要。
例如,在一个软件开发团队中,不可言说的知识可能包括特定的编码实践、项目管理的非正式流程、代码审查的潜规则,甚至是如何有效地与特定同事沟通的技巧。这些知识通常不在任何手册中,但对于新成员快速融入团队、提高工作效率和质量至关重要。
不可言说知识使得团队成员能够在没有明确指导的情况下高效协作。它帮助员工理解“我们是如何做事的”,这不仅仅是关于工作流程,更关乎于团队的价值观、信仰和期望。这种知识的共享和传播,促进了团队成员之间的信任和理解,加强了团队凝聚力。
在处理客户关系和提供服务时,不可言说知识也发挥着至关重要的作用。例如,可能凭借直觉判断客户的情绪和需求;能够读懂非言语的暗示,如客户的肢体语言和语调,从而更有效地响应客户未明确表达的需求。这种判断和理解通常基于过去在类似情境中的经历,是通过长期的人际交往和实际经验积累形成的不可言说知识。
我们还可以举出很多很多的例子,我们会发现无论在哪个领域,不可言说的知识才是真正有用且重要的知识。但正如我们在轮扁的故事中看到的,不可言说知识的传递是非常困难的。不可言说知识无法被转化为显式知识,因而无法靠文档和记录传递。

不可言说知识的传递

当代知识管理理论认为,社会化活动(Socialization)是传递不可言说知识的不二法门。
不可言说知识通过共同活动进行交流,而不是书面或口头指令。比如在同一工作环境中,通过个体之间的互动完成不可言说知识的交换。学徒与导师一起工作,通过观察、模仿和实践来学习手工艺。在职培训也采用同样的原则。获取不可言说知识的关键是分享思维的过程,而不单单是消费最终的结果。
社会化活动最常见的形式是启动 - 反馈循环(kickoff-feedback cycle)。在启动阶段(Kick off) 时传递知识,在反馈(feedback)时检查知识是否被吸收并且转化成为实际的产出物。反馈中还要包含针对思维过程的反馈,或是知识消费者对思维过程的自省
以削车轮为例,如果反馈仅仅是停留在检查最终的成品是宽还是紧,那么学徒并不能真正学习到削车轮的关键。如果在轮扁询问学徒拿到材料和制式后的制作思路,并根据自己的经验提供反馈,那么借由思维过程的分享,最终应该还是能够教会学徒的。
另一种特殊的社会化活动是训练法。也就是将不可言说知识转化为教程、dojo、或者挑战练习等方式。通过一系列启动 - 反馈循环,持续且稳定地完成不可言说知识的传递。
我经常会用这样一个比喻,比如你看上了某个健身教练的肌肉,那么无论你想花多少钱,他都没办法把肌肉卖给你。他能带给你的是一套训练法。然而通过这套训练法,你增长的是自己的肌肉。对于不可言说的知识,很多时候我们能从别人那里获得的最好的东西,也就是一套训练法。而我们能给予别人最好的东西,也是提供对应的训练法
比如对于软件架构,一个最常见的错误是,架构师通常只会提供架构文档,以说明当前架构的现状,但很少为架构提供教程或使用手册。也就缺乏针对在不同场景下,如何应用架构中的概念解决问题的指引。缺乏训练法,架构中的不可言说知识就无法持续稳定地传播。这是很多架构腐化或是无法落地的根因

转化为知识过程

所谓知识过程,就是从知识管理的角度理解我们的工作,将我们的工作看作产生、传递、应用、消费知识的过程。由于不可言说知识的重要性,将任何工作转化为知识过程的关键,就是识别其中关键的不可言说知识,围绕不可言说知识的传递构造流程。
如上图所示是一个典型的迭代式软件开发流程。站在知识管理的角度,我们怎么看待这个流程呢?
首先,从软件交付的整体流程来看,不可言说知识是软件功能是否满足业务价值。为传递不可言说知识,对应的社会化活动是迭代计划(IPM)与迭代展示(Showcase)。即业务方根据迭代的进展,针对是否提供了足够的业务价值给予反馈。
其次,是在当前迭代中,不可言说知识是如何实现某个功能需求 ROI 最高。对应的社会化活动是启动(kickoff)与桌面检查(desk check)。业务分析师要根据代码的进展,提供反馈。
最后,在构造软件的时候,不可言说知识是在当前架构和最佳实践下要如何实现功能。对应的社会化活动是围绕任务列表的 Ping-Pong 结对编程。当然,如果不采取结对编程的话,也可以通过代码审查(code review)达到类似的效果。
这样我们就可以粗略地通过识别不可言说知识以及它们的传递,将软件开发看作一个知识过程了。

小结

今天我们介绍了显式知识、隐式知识和不可言说知识。显式知识是能够直接表达且在人群中分享的知识;隐式知识只是一种尚未被记录下来的显式知识,是没有记录下来的事实;不可言说知识,需要从经验中获取,很难通过语言或其他的形式传播。
这些知识中,不可言说知识最为重要。它的传递需要通过社会化活动来实现。最后我们介绍了如何将任何工作转化为知识过程,所谓知识过程就是把某种工作看作知识创造、传递和消费的过程,该过程中主要任务就是识别其中关键的不可言说知识。
那怎样围绕不可言说知识,让工作里的知识传递过程更高效呢?这就是我们下节课要讨论的内容。

思考题

请列举工作中的不可言说知识,以及它们是如何传递的?
获取不可言说知识的关键是分享思维的过程,希望你积极思考,在留言区分享你的想法。

本文深入探讨了在软件工程中不可言说知识的重要性以及其传递方式。不可言说知识是难以用语言或其他形式传播的个人经验和技能的一部分,对于专业实践至关重要。文章指出,不可言说知识的传递需要通过社会化活动来实现,如启动-反馈循环和训练法等方式。作者还强调了将工作转化为知识过程的重要性,即识别其中关键的不可言说知识,围绕不可言说知识的传递构造流程。最后,文章提出了思考题,鼓励读者积极思考工作中的不可言说知识以及它们是如何传递的。整体而言,本文深入浅出地阐述了不可言说知识在软件工程领域的重要性和传递方式,为读者提供了有益的思考和启发。

分享给需要的人,Ta购买本课程,你将得29
生成海报并分享
2024-03-11

赞 19

提建议

上一篇
开篇词|知识工程:AI时代的软件工程
下一篇
02|知识过程中的认知模式
unpreview
 写留言

全部留言(51)

  • 最新
  • 精选
  • aoe
    置顶
    2024-03-11 来自浙江
    工作场景:服务端提供一个「短信登录」的接口 显式知识:输入手机号码 -> 发送短信验证码 -> 输入短信验证码 -> 登录 不可言说知识: 1. 是否要支持国外手机号码?如果支持,支持哪些国家?怎么发送国外短信? 2. 手机号码输入框的格式校验是什么?如果格式不正确,怎么处理? 3. 短信验证码有效期是多久?如果超过有效期,怎么处理? 4. 短信验证码格式是什么?纯数字?4位、6位? 5. 发送短信需要按第三方要求填写短信模板,短信模板更新需要第三方审核通过后才能使用。 6. 短信发送频率限制是多久?如果超过频率限制,怎么处理? 传递方式: 1. 运营部门分确定只发送国内短信「1」 2. 用户、运营部门、测试部门发现问题后,通知开发部门解决方案「2、3、4、5」 3. 遭遇黑客攻击,一夜间短信服务花费了 3W+ 费用,随后短信服务因欠费无法使用。紧接着所有开发与测试都被电话唤醒,紧急排查 Bug。最后大家记住了这次教训「6」
    展开

    作者回复: 大部分是隐式知识

    共 3 条评论
    15
  • 明夷听雨
    2024-03-22 来自美国
    AI时代软件工程变成了知识工程这个提法真是精辟,照这么说,感觉领域驱动设计之类的技术可能还是会继续有用的?

    作者回复: 定义问题的技术 永远不会过时

    6
  • 木头人
    2024-03-11 来自浙江
    不可言说的知识想想看应该可以替换成:能力,不是知识本身。

    作者回复: 从消费来说是能力 从传递来看 是知识

    6
  • 临风
    2024-03-11 来自广东
    说实话,我也不知道隐形知识和不可言说知识的有没有理解对。按照老师的说法,隐形知识只要记录下来,就可以转换为显性知识,而不可言说的知识是一种经验和最佳实践,只能通过训练方法加以传递。 如果不可言说的知识和隐形知识最大的区别在于能否被记录,那么所有你能写下来的,都不是不可言说的知识,很有可能是是对复杂场景的简化甚至谬误,而产生的一种简化规则,就像编程规范,其中有一个是不要对方法参数在方法体内进行赋值,类似如下代码。 ``` int doSomething(String arg) { arg = "abc"; ... } ``` 其实我过去一直不理解为什么又这个规范,因为有的时候我们可能会对入参进行判空,判空后可能会赋一个默认值。这时这条规范就很麻烦,难道我又要重新定义一个变量吗?后来我才理解到,有些人会搞混形参和实参,分不清方法内赋值后,在调用时会有什么影响,索性就定这么一个规范。 但这就是合理的吗?文字是知识的尸体,知识的背后包含大量的上下文信息,一旦脱离这个背景条件,所谓的”显性知识“很有可能是谬误。
    展开

    作者回复: 不可言说也可以写下来 写下来没什么用而已

    5
  • 马若飞
    2024-03-13 来自北京
    看评论区发现,原来这是一门哲学课😄

    编辑回复: 第一章内容有难度,有不好理解的地方可以留言记录,有典型问题老师直播里会答疑解惑。

    4
  • 木头人
    2024-03-11 来自浙江
    突然想到之前听一个读书分享会上说 人在挑书,书也在挑人。一个人和一本书有缘。对那个人来说书就是一本好书。事实情况就是如此,人有所经历才突然看懂了书的某些话。也是不可言说的知识在起作用。

    编辑回复: 这么说的话这门课也挑中了你,期待你在后面留言区多分享哦~

    3
  • 起个名称吧
    2024-03-11 来自陕西
    不可言说知识从经验的角度,偏向实践行动 有一种纸上得来终觉浅,绝知此事要躬行的味道 他人获取这种知识,无非是作者分享这种经验(通过书,课程等)不同的方式。而我们通过训练不断深入这种经验。 另一种部落知识则有一种行业领域黑话的赶脚。 那从软件开发到交付来理解文中的不可言说知识, 我理解是每个人理解层次不同,传递这种知识,每个角色是否理解清楚功能的产出物,这里的不可言说是说每个角色理解的差异(经验),是这么回事吗

    作者回复: know how

    3
  • 范飞扬
    2024-03-26 来自浙江
    原文的三句话: 1、社会化活动是传递不可言说知识的不二法门。 2、社会化活动最常见的形式是启动 - 反馈循环。 3、在启动阶段时传递知识。 那么,“在启动阶段传递知识”,这传递的是啥知识? Case 1: 传递的是不可言说知识 如果是不可言说知识,那岂不是递归调用了? 为啥我说是递归? 根据 1 和 2,可以得出:传递不可言说知识 = 启动 + 反馈。 如果启动阶段传递的是不可言说知识,可以得出:传递不可言说知识 = 传递不可言说知识 + 反馈。 所以,递归了,矛盾了。(证明完毕?) Case 2: 传递的是显示知识 如果传递的是显示知识,感觉也不太说的通啊。因为如果传递的是显示知识(比如地球的周长),那就不需要针对思维过程的反馈,所以不需要启动 - 反馈循环,所以不是社会化活动,所以矛盾了。(证明完毕?) 。。。所以想请教一下老师和同学们,到底哪里不对呢?是原文不够准确?还是我的证明不对?还是其他的什么?
    展开

    作者回复: 因为无法直接传递 所以 才需要启动-反馈 真正的传递发生在 启动和反馈之间

    共 2 条评论
    1
  • 绝露
    2024-03-11 来自湖北
    如和调整女朋友的情绪,在处理这个问题时,别人可能能给你方法,但是真正做到对有些人还是挺难的。如果恰好有个高手在处理类似的问题,你在旁观,事后再请教一下,这样子是多少能学到一些的

    编辑回复: 哈哈哈,未曾想到里的例子~

    共 2 条评论
    1
  • 🐑
    2024-03-11 来自广东
    图片生成得好好啊

    编辑回复: 一个叫“锦书”的AI艺术字生成工具(可在线),有兴趣可以去试试~

    共 3 条评论
    1