技能培养与工具使用
软件工程师的技能培养需要放慢节奏。尽管工具和 AI 可以加速工作成果的交付,但它们未必能支持技能的培养。Chelsea Troy 在 Craft 大会上的演讲“AI时代的程序员进阶”(Leveling up as a Programmer in the Age of AI)中提到了这一点。工程师必须理解系统是如何运作的,才能真正学到东西。资深开发者可以通过运用学习技巧来指导初级开发者。
两种模式:摸索规律与执行任务
软件工程包含两种模式:“摸索规律”(figuring stuff out)和“执行任务”(doing stuff)。当我们想要执行任务时,通常会加快速度,但 Troy 认为,想要摸索规律,就必须慢下来。如果执行任务依赖于前期的摸索,那么我们试图加快速度反而会让自己陷入停滞:我们必须先“降挡”(慢下来),才能继续前进。
低效的学习活动
那些能促进学习的活动,在设计上往往是低效的。它们需要高度的注意力和投入,而且往往是在我们感到自己不擅长的事情上“雪上加霜”。Troy 解释道:
我们必须直面那些让我们感到挫败的事物,并且去努力克服它。正是这种不适感(困惑与沮丧)才是我们构建认知能力所必需的。
工具与技能培养
把工具当作加速产出(outcome)的催化剂,通常并不利于技能的培养。即使有 AI 可用,我们依然需要理解我们试图修改的系统是如何运作的。
间隔重复与高质量睡眠
神经科学中有一个概念叫“间隔重复”(spaced repetition)。Troy 认为,技能培养如果归结到最核心的本质,就需要高度集中的注意力,并穿插高质量的睡眠。她建议,可以通过将学习过程分散到几次高质量的睡眠周期中,来帮助初级同事加深记忆。
结果预测与内化信息
如果我们先尝试猜测答案,就能更好地内化信息;只有当大脑已经处于思考状态时,学习才会真正发生。Troy 解释了这种“结果预测”概念是如何运作的:
当你学习某事物的运作原理时,可以在每一步都停下来问自己:“根据我目前已知的信息,我认为下一步应该是什么?为什么?”,做出了预测之后,继续学习,去看看真正的答案是什么。通过停下来问自己这个问题,你可以极大地提高内化答案的概率。
格式多样化
Troy 还提到了“格式多样化”(format diversification)的概念:当人们以多种不同的格式接触同一信息时,学习效果要优于反复以同一种格式接收信息:
人们之所以认为自己是“动觉型学习者”(kinesthetic learners),是因为他们先阅读、聆听或观看了相关内容,然后才去尝试并弄坏它。真正让知识扎根的,是他们第二次(有时是第三次)接触该信息的方式。
生成式 AI 与技能培养
生成式 AI 改变了软件工程技能培养的现状。但是,Troy 指出,人类解决问题的生物学和心理学机制并没有发生如此迅速的改变。她总结道:“为了有效地使用工具,了解工具是如何运作的固然有帮助,但更关键的是要了解我们自己是如何运作的。我们必须持续训练自己,并用符合我们学习方式的方法和策略来指导初级同事。”
采访 Chelsea Troy
InfoQ 在演讲结束后对 Chelsea Troy 进行了采访。
学习的认知障碍
Chelsea Troy:学习的认知障碍在很大程度上是保持不变的,因为我们的认知结构和潜力并没有发生根本性的改变。但是,对工作节奏不断加快的预期,使得这些障碍的风险变得更高。
通常,学习一门学科意味着必须慢下来并沉浸其中。当这在职场中变得不再可行时,开发者就会被迫走捷径,并且再也不会回过头来达成学习目标。这是一个系统性的障碍,管理者有责任通过“向上管理”来设立护栏加以防范。
帮助初级开发者学习
Troy:我们今天经常面临的一个问题是,学习者容易将“完成工作”与“达成学习目标”混为一谈。
当我在 25 名学生的课堂上授课时,我要求他们为一个简单的算术语言编写编译器,这并不是因为我个人需要 25 份编译器。事实上,这些学生编写出的编译器对我没有任何实际用途。我布置这项作业,是因为设计编译器的过程能让他们获得第一手的经验,从而更好地理解我们在整个学期中讨论的设计问题。当然,Claude 可以写出这个编译器,但这完全偏离了重点,因为重点从来都不是编译器本身。编译器只是一个用来学习如何思考更困难问题的“玩具问题”(toy problem)。
无论是学术环境还是职场环境中的学习者,如果在进行学习的过程中,能反思自己作为从业者希望做出怎样的改变,将会大有裨益。这种改变——而不是练习成果的质量——才是关键绩效指标(KPI)。当人们刚进入这个行业时,他们可能需要资深开发者的指导,以确定某项练习应该旨在改变他们的哪种思维方式。为了成功提供这种指导,资深开发者必须具备密切关注初级开发者实际工作的能力(不是基于他们对初级开发者的刻板印象,而是基于该开发者真实的工作表现),并在指导中针对这些实际表现做出回应。