软件工程师的技能培养需要放慢节奏。工具和 AI 可以加速工作成果的交付,但它们未必能支持技能的培养。Chelsea Troy在Craft大会上的演讲“AI时代的程序员进阶”(Leveling up as a Programmer in the Age of AI)中提到了这一点。工程师必须理解系统是如何运作的,才能真正学到东西。资深开发者可以通过运用学习技巧来指导初级开发者。
软件工程包含两种模式:“摸索规律”(figuring stuff out)和“执行任务”(doing stuff)。当我们想要执行任务时,通常会加快速度,但 Troy 认为,想要摸索规律,就必须慢下来。如果执行任务依赖于前期的摸索,那么我们试图加快速度反而会让自己陷入停滞:我们必须先“降挡”(慢下来),才能继续前进。
那些能促进学习的活动,在设计上往往是低效的。它们需要高度的注意力和投入,而且往往是在我们感到自己不擅长的事情上“雪上加霜”。Troy 解释道:
我们必须直面那些让我们感到挫败的事物,并且去努力克服它。正是这种不适感(困惑与沮丧)才是我们构建认知能力所必需的。
把工具当作加速产出(outcome)的催化剂,通常并不利于技能的培养。Troy 表示,即使有 AI 可用,我们依然需要理解我们试图修改的系统是如何运作的。
神经科学中有一个概念叫“间隔重复”(spaced repetition)。Troy 认为,技能培养如果归结到最核心的本质,就需要高度集中的注意力,并穿插高质量的睡眠。她建议,可以通过将学习过程分散到几次高质量的睡眠周期中,来帮助初级同事加深记忆。
如果我们先尝试猜测答案,就能更好地内化信息;只有当大脑已经处于思考状态时,学习才会真正发生。Troy 解释了这种“结果预测”概念是如何运作的:
当你学习某事物的运作原理时,可以在每一步都停下来问自己:“根据我目前已知的信息,我认为下一步应该是什么?为什么?”,做出了预测之后,继续学习,去看看真正的答案是什么。通过停下来问自己这个问题,你可以极大地提高内化答案的概率。
Troy 还提到了“格式多样化”(format diversification)的概念:当人们以多种不同的格式接触同一信息时,学习效果要优于反复以同一种格式接收信息:
人们之所以认为自己是“动觉型学习者”(kinesthetic learners),是因为他们先阅读、聆听或观看了相关内容,然后才去尝试并弄坏它。真正让知识扎根的,是他们第二次(有时是第三次)接触该信息的方式。”
生成式 AI 改变了软件工程技能培养的现状。但是,Troy 指出,人类解决问题的生物学和心理学机制并没有发生如此迅速的改变。她总结道:“为了有效地使用工具,了解工具是如何运作的固然有帮助,但更关键的是要了解我们自己是如何运作的。我们必须持续训练自己,并用符合我们学习方式的方法和策略来指导初级同事。”
InfoQ 在演讲结束后对Chelsea Troy进行了采访。
InfoQ:在 AI 赋能的世界中,作为软件开发者,学习面临哪些认知障碍?
Chelsea Troy:学习的认知障碍在很大程度上是保持不变的,因为我们的认知结构和潜力并没有发生根本性的改变。但是,对工作节奏不断加快的预期,使得这些障碍的风险变得更高。
通常,学习一门学科意味着必须慢下来并沉浸其中。当这在职场中变得不再可行时,开发者就会被迫走捷径,并且再也不会回过头来达成学习目标。这是一个系统性的障碍,管理者有责任通过“向上管理”来设立护栏加以防范。
InfoQ:我们如何帮助初级开发者进行学习?
Troy:我们今天经常面临的一个问题是,学习者容易将“完成工作”与“达成学习目标”混为一谈。
当我在 25 名学生的课堂上授课时,我要求他们为一个简单的算术语言编写编译器,这并不是因为我个人需要 25 份编译器。事实上,这些学生编写出的编译器对我没有任何实际用途。我布置这项作业,是因为设计编译器的过程能让他们获得第一手的经验,从而更好地理解我们在整个学期中讨论的设计问题。当然,Claude 可以写出这个编译器,但这完全偏离了重点,因为重点从来都不是编译器本身。编译器只是一个用来学习如何思考更困难问题的“玩具问题”(toy problem)。
无论是学术环境还是职场环境中的学习者,如果在进行学习的过程中,能反思自己作为从业者希望做出怎样的改变,将会大有裨益。这种改变——而不是练习成果的质量——才是关键绩效指标(KPI)。当人们刚进入这个行业时,他们可能需要资深开发者的指导,以确定某项练习应该旨在改变他们的哪种思维方式。为了成功提供这种指导,资深开发者必须具备密切关注初级开发者实际工作的能力(不是基于他们对初级开发者的刻板印象,而是基于该开发者真实的工作表现),并在指导中针对这些实际表现做出回应。
查看英文原文: How to Develop Software Engineering Skills in the Age of AI
本文由 AI图鉴自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。
The skills development of software engineers needs to slow down. Tools and AIs can accelerate the delivery of work results, but they do not necessarily support skills development. Chelsea Troy referred to this in her speech “Leaving up as a Programr in the Age of AI” at Craft. Engineers must understand how the system works to learn something. Senior developers can guide primary developers by applying learning techniques.
The software project consists of two modules: “Figuring stuff out” and “doing stuff”. When we want to carry out our mission, we usually speed up, but Troy believes that if we want to find a pattern, we have to slow down. If the task is to be carried out on the basis of an earlier search, then we will try to accelerate the pace and bring ourselves to a standstill: we must “stop” (slow down) before moving forward.
Activities that promote learning are often designed to be inefficient. They require a high degree of attention and commitment, and often “additional” to what we feel we are not good at. Troy explains:
We must confront those things that we feel frustrated with and try to overcome. It is this feeling of discomfort (disorder and frustration) that is necessary to build our cognitive capacity.
The use of tools as catalysts for accelerating output (outcome) is often not conducive to skills development. Troy says that even if an AI is available, we still need to understand how the system we're trying to modify works.
There is a concept in neuroscience called "spaced repetition". Troy believes that skills development, if it comes to the very essence of the core, requires a high degree of concentration and high-quality sleep. She suggested that junior colleagues could be helped to deepen their memory by spreading the learning process over several high-quality sleep cycles.
If we try to guess the answers, we can better internalize the information; learning will happen when the brain is already in a state of thinking. Troy explains how this concept of “result prediction” works:
When you learn how something works, you can stop at every step and ask yourself, "What do I think next step should be? Why? By stopping to ask yourself that question, you can significantly increase the probability of internalizing the answer.
Troy also referred to the concept of “format diversification”: when people are exposed to the same information in many different formats, learning is better than receiving information repeatedly in the same format:
People think they are “kinesthetic learners” because they read, listen or watch the content before they try and break it. It is the second (sometimes the third) time they have access to the information that really takes root.”
Generating AI changed the status of software engineering skills development. However, Troy points out that the biological and psychological mechanisms of human problems have not changed so quickly. She concluded: “In order to use tools effectively, it is useful to know how they work, but it is more crucial to know how we do it ourselves. We must continue to train ourselves and guide junior colleagues with methods and strategies consistent with our learning style.”
After the presentation, InfoQ interviewed Chelsea Troy.
InfoQ: What are the cognitive barriers to learning as software developers in an AI-enabled world?
Chelsea Troy: The cognitive barriers to learning remain largely unchanged, as our cognitive structure and potential have not fundamentally changed. However, expectations of an accelerated pace of work have increased the risk of these obstacles.
Generally, learning a subject means having to slow down and insinuate. When the field becomes unworkable, developers are forced to take shortcuts and never return to learning goals. This is a systemic obstacle, and managers have a responsibility to guard against it through “upward management”.
InfoQ: How can we help primary developers learn?
Troy: One of the problems that we often face today is that it is easy for learners to mix “work done” with “achieve learning goals”.
When I lectured in the classroom of 25 students, I asked them to write a compiler for a simple terminologies, not because I needed 25 compilers personally. In fact, the compilers produced by these students have no practical use for me. I set up this exercise because the process of designing the compiler gives them first-hand experience and thus a better understanding of the design issues that we discuss throughout the semester. Of course, Claude can write this compiler, but it's completely out of focus, because it's never the compiler itself. The compiler is just a “toy problem” to learn how to think about more difficult issues.
It would be useful for learners in both academic and professional settings to reflect on what changes they wish to make as practitioners in the course of their studies. This change — rather than practice the quality of results — is the key performance indicator (KPI). When people first enter the industry, they may need guidance from senior developers to determine what kind of thinking an exercise should aim to change. In order to provide such guidance successfully, senior developers must have the capacity to follow closely the actual work of primary developers (not on the basis of their stereotyped image of the primary developers, but on the basis of their real performance) and to respond to these actual performances in the guidance.
How to develop Software Engineering Skills in the Age of AI
Auto-fetched and translated by AI Atlas. All rights belong to the original author.