随着大型语言模型(LLM)越来越多地用于代码生成,团队如何理解和维护系统变得至关重要。一个健康的系统需要从三个层面来考量:技术债(代码的可维护性)、认知债(团队对系统的共享理解)和意图债(项目目标与文档的清晰度)。过度依赖人工智能可能导致“认知投降”,即不加批判地接受AI生成的结果。因此,未来的工作重点将从“编写代码”转向“验证正确性”,这意味着团队需要重组,更加重视定义质量标准和设计验证系统,而人类程序员在构建清晰解决方案和领域语言方面的作用依然不可或缺。
系统健康的三层债务
为了更好地理解和管理大型系统,特别是那些由AI辅助生成的系统,可以从以下三个相互关联的“债务”层面进行分析:
- 技术债 (Technical Debt): 存在于代码中。当开发过程中的实现决策损害了未来的可更改性时,技术债就会累积。它直接限制了系统未来的演变方式。
- 认知债 (Cognitive Debt): 存在于团队成员中。当团队对系统的共同理解的侵蚀速度超过其补充速度时,认知债就会累积。它限制了团队对系统变更进行有效推理的能力。
- 意图债 (Intent Debt): 存在于文档和产出物中。当指导系统的目标和约束没有被妥善记录或维护时,意图债就会累积。它限制了系统能否持续反映其初衷,也限制了人类和AI代理有效迭代系统的能力。
人工智能与认知投降
诺贝尔奖得主丹尼尔·卡尼曼在其著作《思考,快与慢》中提出了人类认知的双系统模型:系统1(直觉)和系统2(审慎思考)。我们倾向于依赖节能的系统1,但这有时会让我们陷入麻烦。现在,有研究者将AI视为认知过程中的“系统3”。
引入系统3的一个后果是“认知投降”现象的出现。
认知投降 (Cognitive Surrender) 的特点是,不加批判地依赖外部生成的人工推理,从而绕过了系统2的审慎思考。这与“认知卸载”不同,后者是在深思熟虑过程中有策略地委托认知任务。
简单来说,认知投降是一种被动的、不加鉴别的信任,而认知卸载是一种主动的、有策略的认知分工。
从“编写”到“验证”的转变
如果AI编程代理让编写代码变得几乎没有成本,那么什么会成为昂贵的事情?答案是验证。
判断代码是否“正确”是一项极其复杂的任务,充满了具体的场景和权衡。这正是AI代理无法为你完成的工作。
对于雅加达和胡志明市的交通状况,一个“ETA(预计到达时间)算法”的“正确”意味着什么?当你试图同时平衡司机收入公平性、客户等待时间和车队利用率时,一个“成功”的司机分配方案是怎样的?这些都不是边缘案例,它们就是工作的全部。
这一现实带来的重大后果是,组织结构需要围绕验证而非编写代码进行重组。
如果AI代理负责执行,那么人类的工作就变成了设计验证系统、定义质量标准,以及处理AI无法解决的模糊情况。团队的日常工作将从问“我们交付了什么?”变为“我们验证了什么?”。团队构成也将从十名工程师构建功能,变为三名工程师和七名负责定义验收标准、设计测试工具和监控结果的人员。这种转变推崇的是判断行为,而非构建行为。
代码的未来:人机协作
关于代码的未来,一些人认为需要为LLM构建全新的语言,另一些人则认为现有的强类型语言(如TypeScript)更适合与LLM协作。
无论技术如何发展,人类在编程中的核心作用似乎依然稳固。编程不仅仅是敲代码,更重要的是塑造解决方案。
编程不是简单地输入计算机能理解和执行的语法,它是在塑造一个解决方案。我们把问题切分成小块,将相关的数据和行为绑定在一起,并且——最关键的是——选择能够揭示意图的命名。好的命名可以穿透复杂性,将代码变成每个人都能理解的蓝图。