文章

生成式软件工程:知识地图与核心命题

《生成式软件工程》课程设计备忘录:课程地图、核心命题、值得思考的问题、经典思想对照、阅读路线与设计判断。

生成式软件工程:知识地图与核心命题

00 导读:一个不对称,一张图

这份备忘录回答一个问题:当代码、测试、文档、设计乃至部分工程决策都可以由生成模型参与完成时,软件工程作为一门学科还剩下什么、多了什么。它不试图成为讲义,也不试图覆盖工具;它给出的只是一套 mental model,用来安放未来两三年里你会遇到的每一篇新论文、每一次新工具评测和每一场新的论战。

全部内容可以压缩进一个不对称:生成模型把”写出能工作的代码”的边际成本压向零,却没有把”判断它是否正确、是否该合入、是否值得长期维护”的成本按同比例压下去。生成能力在指数变便宜,验证、审查与信任的改善是线性的。上游(把意图说清楚)变得更贵、更核心;中游出现一个新循环——生成、验证、选择;下游(演化与债务)的规则被改写。人的注意力、安全、评估与组织,横切在这条主轴上。

对这个不对称最诚实的证据,恰好是生产力度量本身的分裂。随机对照实验里,边界清晰的独立小任务提速 55.8%1;覆盖近五千名开发者的企业田野实验里,PR 数量上升 26% 而构建成功率反而下降2;16 名资深开源维护者在自己的百万行仓库上,用 AI 工具后慢了 19%,尽管他们事前预测会快 24%3;组织级调查中吞吐在 2025 年转正,但交付稳定性连续两年下降45。这些不是互相打脸的数据点,而是同一枚硬币在不同任务粒度与测量口径下的投影。这门课的第一课,应当是先问”你测的是什么”。

注:六种测法的人群、任务粒度、度量口径互不可比——正负并存本身是本领域目前最坚实的事实之一。DORA 的两根柱子来自同一份 2024 年调查:个体自评生产率与组织交付吞吐反向而行;其 2025 年报告吞吐转正、交付不稳定性继续为负5。数据来源:Peng et al. 20231;Cui et al. 20252;GitHub×Accenture6;DORA4;METR 20253

图 1 · 同一现象的六种测法:AI 辅助编程的净效应(2023–2025)

注:六种测法的人群、任务粒度、度量口径互不可比——正负并存本身是本领域目前最坚实的事实之一。DORA 的两根柱子来自同一份 2024 年调查:个体自评生产率与组织交付吞吐反向而行;其 2025 年报告吞吐转正、交付不稳定性继续为负5。数据来源:Peng et al. 20231;Cui et al. 20252;GitHub×Accenture6;DORA4;METR 20253

证据分级(全文通用):A 强证据 同行评审论文、预注册实验,或多源一致的原始记录。 B 工业判断 企业报告、行业调查、机构研究:方法可信,但未经同行评审,存在利益相关。 C 推测或争议 合理但未验证的推断,或来源之间存在显著分歧——本文会保留分歧,而不是强行总结成共识。

01 课程地图

十个模块,是十个知识族群而不是十周课表。图的读法:上游是意图层,中间是”生成⇄验证⇄审查”的核心循环,下方是过程与代码库两类载体,横切的三条线(安全、评估、组织)贯穿所有层,最底下是这门学科的地基与它正在被重新接通的前沿谱系。

红=经济与生成 绿=规格与验证 金=人与组织 灰=过程与演化 虚线=横切方法层 上游 · 意图层 M2 · 意图与规格 自然语言成为编程界面 · 意图鸿沟 · 欠规格 · 规格即 oracle M1 · 生成经济学 边际成本趋零 · 搜索与选择 · pass@k M3 · 验证与测试 oracle 问题 · 测试即规格与奖励 · 信任单价 M4 · 人:注意力与信任 审查带宽 · 过度信任 · 技能形成 生成 k 个候选 · 筛选 证据 → 信任预算 反馈 / 规格修正 落库 · 长时程 M5 · Agent 与过程 harness 即奖励环境 · 上下文工程 · 权限沙箱 M6 · 演化与债务 代码从资产到消耗品 · 新债种 · 耐久层 M10 · 合成谱系与前沿 Sketch→FunSearch→AlphaEvolve · Software 1.0/2.0/3.0 M7 · 生成管线安全 投毒 · 幻觉包名 · 提示注入 M8 · 评估科学 基准反身性 · 成本敏感 · 生态效度 M9 · 知识、组织与养成 学徒制 · Conway × agent · 作者身份 地基与时间轴:1968 NATO 软件危机 · 1972 Parnas 信息隐藏 · 1972 Dijkstra 谦逊的程序员 · 1980 Hoare 皇帝的旧衣 · 1983 Bainbridge 自动化的讽刺 1986 Brooks 没有银弹 · 1992 技术债 · 1999–2002 敏捷与 TDD · 2017 Software 2.0 · 2019 Bitter Lesson · 2023– SWE-bench 与 coding agents

图 2 · 生成式软件工程的知识地图:上游意图层驱动核心循环(生成⇄验证⇄审查),过程与代码库承载演化,安全、评估、组织三条线横切,经典地基与合成谱系在下重新接通。

M1 · 成本结构之变:从构造到验证

  • 核心问题:当生成的边际成本趋近于零,软件生产的总成本函数变成什么形状?瓶颈移到哪里,资源就应该投向哪里。
  • 为何因生成式 AI 而重要:LLM 直接自动化的是”偶然复杂度”里的实现劳动,而验证、审查、集成、维护的成本没有被同比例压低。这解释了几组表面矛盾的现象:小任务大幅提效、真实仓库任务可能减速,审查积压成为团队瓶颈,事故多发生在”生成之后”的权限与验证环节。
  • 与经典的关系:直接继承 Brooks 的本质/偶然复杂度二分7。”没有银弹”的悲观结论被部分削弱——实现劳动确实被大规模自动化了;但其内核被强化:本质复杂度(对问题域的理解、一致性、可变性、不可见性)原封不动,只是换了地方重新计价。
  • 必须理解的概念:① 生成-验证不对称;② 复杂度的迁移而非消失;③ 注意力版的 Amdahl 定律——人是系统中无法水平扩展的部分。

M2 · 意图与规格:自然语言成为编程界面

  • 核心问题:当”说清要什么”比”写出实现”更贵,规格就成为真正的编程活动。自然语言能承担多精确的规格角色?歧义去了哪里?
  • 为何因生成式 AI 而重要:spec-driven 工具(Amazon Kiro8、GitHub Spec Kit9、OpenSpec)把”先写规格、再生成实现”变成 agent 时代的工作流〔B 级证据〕;欠规格从需求工程教科书里的概念变成日常缺陷来源——模型会替你把没说清的部分”编”出来,这其实是幻觉的另一种定义。
  • 与经典的关系:Parnas 把精确规格视为设计的核心活动10;形式化方法因成本高昂而长期边缘。LLM 同时做了两件方向相反的事:降低写形式规格的成本(在 Lean、Dafny 上辅助证明),又让”模糊规格可执行”(直接运行意图)。两条路都在加速,这本身就是本模块的核心张力。
  • 必须理解的概念:① 意图鸿沟:从模糊愿望到机器可检查约束的距离;② 规格作为 oracle;③ “模糊编译器”:模型对自然语言隐含语义的补全与猜测。

M3 · 验证、测试与信任的建立

  • 核心问题:如何对”不是你写的、也没有完整读过”的代码,建立足以合入、足以部署的信任?
  • 为何因生成式 AI 而重要:生成-验证循环成为新的生产函数。测试从 QA 活动上升为三重基础设施:可执行规格、agent 的奖励信号、机器可检查的文档。SWE-bench 用 FAIL_TO_PASS 测试自动判定修复,是”验证工业化”的样本11;Meta 的 TestGen-LLM 是它在工业管线里的样子:75% 的生成测试正确构建、57% 可靠通过、25% 提升覆盖、73% 的建议被工程师接受合入生产12〔A 级证据〕
  • 与经典的关系:Dijkstra 的”测试只能证明 bug 的存在,不能证明其不存在”13,从哲学立场变成工程预算问题:在测试、抽样、形式化、机器评审之间,以什么单价买到多少”正确性证据”。property-based 测试与 LLM 假设生成已经在合流(CodaMosa)14
  • 必须理解的概念:① oracle 问题,以及它的回归形式——谁来判定测试本身是对的;② 测试即规格、测试即奖励;③ 信任的经济学:每单位”正确性证据”的成本。

M4 · 人机协作与认知工程

  • 核心问题:当生成速度超过理解速度,人的注意力、技能与责任应该被重新安放在哪里?
  • 为何因生成式 AI 而重要:因为证据是双峰的:独立小任务提速 55.8%1〔A 级证据〕;企业大样本 PR 数量 +26% 但构建成功率下降2〔B 级证据〕;资深维护者慢 19%3〔B 级证据〕。同时,使用率升至 84% 而信任度跌至 29%1516,45% 的开发者报告调试 AI 生成代码耗时15。学习侧:无护栏使用让练习成绩 +48%、后续考试成绩 −17%17〔A 级证据〕;EEG 研究记录了”认知债”的神经证据18〔B 级证据〕
  • 与经典的关系:Bainbridge 1983 年的《自动化的讽刺》几乎逐字预言了这一处境:自动化把人推向”监督者”角色,而这恰恰是人类最不擅长的工作模式19〔A 级证据〕。代码评审研究中的”知识传递功能”获得新的权重:当 AI 接管缺陷初筛,评审的剩余价值主要是社会与认知的。
  • 必须理解的概念:① 过度信任与自动化偏见:可测量、可预测的失效模式;② 审查带宽:人类的硬吞吐上限;③ 认知卸载与技能形成:短期收益与长期能力的交换。

M5 · Agent 与软件过程

  • 核心问题:当自主 agent 能连续数小时修改代码库,”软件过程”如何从人的约定变成机器可执行、可审计的工件?
  • 为何因生成式 AI 而重要:harness(沙箱、权限、CI、记忆与计划文件)在很大程度上决定 agent 的行为与安全边界;同一代模型在不同 harness 下的基准差距可达数十个百分点20〔B 级证据〕。形态学本身也在快速定型:从 ReAct 的推理-行动循环21,到 CodeAct 的可执行代码动作22,再到”用简单可组合组件”的工程主张23。架构争论正在进行:Cognition 主张代码编辑类任务用单线程、共享完整 trace24;Anthropic 的研究型多智能体在内部评测上比单 agent 高 90.2%,代价是约 15 倍 token 消耗25。两者其实是在为不同任务域立论。
  • 与经典的关系:DevOps”过程即代码”的传统被推到极限:过程变成 agent 的奖励环境,CI 从”人的质量门”变成”机器的 fitness 函数”。反讽的是,瀑布以微型化的形式复活了——对 agent 恰恰要给明确规格与小步验证,对人才谈敏捷。Replit 生产数据库被 agent 删除的事故26〔B 级证据〕说明:权限模型是这个时代的访问控制。
  • 必须理解的概念:① harness 即 agent 的类型系统与奖励环境;② 上下文工程:记忆、检查点、长时程一致性;③ 权限与沙箱:agent 时代的安全边界。

M6 · 演化、债务与代码库的政治经济学

  • 核心问题:当生产一行代码的成本趋近于零,代码库还是资产负债表上的资产吗?什么是真正耐久的?什么应该被当作消耗品处理?
  • 为何因生成式 AI 而重要:第一批宏观证据已经出现:GitClear 对 2.11 亿行变更的分析显示,复制粘贴在历史上首次超过”移动/重构”成为第一大变更方式,五处以上重复的代码块在一年内增长约八倍,两周内返工的代码占比持续上升27〔B 级证据〕;”vibe coding”把”先合入、以后再说”变成显式工作风格28。Lehman 的演化定律被加速播放:变更的速率上去了,理解的速率没有29
  • 与经典的关系:Cunningham 发明”技术债”这个隐喻,本是为了说服管理层为”干净地赶工”付利息30;今天的新情况恰恰是借债太容易——债不再经过人的手,于是不再被人的眼睛记账。Naur 给出判据:程序的生命周期是”理论”在人脑中的生命周期,一个没有任何人理解的程序,理论已死、工件还在跑31
  • 必须理解的概念:① 代码的资产/消耗品之辨,与”耐久层”的位置上移(规格、测试、架构决策记录);② 新债种:复制债、语义债(无人真正理解在跑什么)、数据陈旧债(模型知识冻结在训练截止日);③ 重写成本与重写频率同时下降的经济学后果。

M7 · 生成管线的安全

  • 核心问题:当”人阅读并决定信任”这道防线被”模型生成并直接合入”取代,软件供应链的攻击面如何重构?
  • 为何因生成式 AI 而重要:三类新向量已经从论文走进现实:其一,投毒——少量精心构造的”训练样本”即可让代码补全模型在特定上下文里输出带漏洞的代码32〔A 级证据〕,Trojan Puzzle 进一步展示了绕过人类审查与过滤器检测的隐藏触发式投毒33〔A 级证据〕;其二,包幻觉(slopsquatting)——模型编造出不存在的包名,攻击者抢注这些名字,幻觉从缺陷变成入口34〔B 级证据〕;其三,提示注入——agent 把网页、issue、文档里的不可信内容当作指令执行35
  • 与经典的关系:经典供应链安全的前提是:你复制的代码背后有一个可追责的人类作者。生成管线把复用对象换成了训练语料的统计摘要,责任主体消失了。而提示注入在形式上正是 SQL 注入的老问题——指令与数据共享信道——只不过这次的”信道”是自然语言上下文,而它是给 agent 的操作系统。
  • 必须理解的概念:① slopsquatting:幻觉包名被抢注成真包;② 数据投毒与后门补全;③ 提示注入=注入攻击在指令信道上的复活;④ 最小权限是目前唯一可靠的缓解。

M8 · 评估科学与度量的反身性

  • 核心问题:我们如何知道”更好”?当基准成为训练目标、评估者本身也是模型,”进步”还能不能被测量?
  • 为何因生成式 AI 而重要:SWE-bench 把”修复真实 issue”变成可自动判分的任务,也立刻暴露了度量的脆弱:人工复核发现原始基准约三分之一的判定有问题,才有了重新校准的 Verified 版1136;微小的非语义扰动即可颠覆 LLM 排行榜37〔A 级证据〕;LiveCodeBench 这类动态基准直接为污染而生38;METR 的时间地平线测量则给出”模型能独立完成的任务长度每约七个月翻一倍”的能力增长曲线39〔A 级证据〕。图 1 的六种测法互不可比,本身就是本模块的第一课。
  • 与经典的关系:Goodhart 定律(当度量成为目标,它就不再是好度量)是软件过程研究的老朋友;新的是对抗性耦合——基准泄漏进训练集,评估对象与优化目标合一。同时,早期遥测研究就发现自报告生产率与客观指标的相关性很弱40,这一点在 AI 时代被放大成了整个领域的信度危机。
  • 必须理解的概念:① 基准反身性与数据污染;② 生态效度对内部效度:benchmark 得分与真实仓库里的工作几乎不相关;③ 评估的成本敏感化:token、时长、美元每任务;④ harness 作为混淆变量——你在评模型,还是在评脚手架20

M9 · 知识、组织与人才的再生产

  • 核心问题:如果理解是靠写代码长出来的,谁来培养下一个理解者?组织如何在不写代码的成员之间传递”理论”?
  • 为何因生成式 AI 而重要:微观证据一致指向同一方向:无护栏使用 AI 的学生练习成绩 +48%、闭卷考试 −17%17〔A 级证据〕;新手把认知卸载给模型后,调试与心流被”异常加速”反复打断41〔A 级证据〕;EEG 研究记录到依赖 AI 的写作者神经连接性显著下降18〔B 级证据〕。宏观端,初级岗位在收缩,头部科技公司新毕业生占招聘的比例已落到个位数42〔B 级证据〕——而资深工程师恰恰要从初级岗位里长出来。
  • 与经典的关系:Naur:程序的存续依赖人脑中的理论而非文本31;Conway:系统结构镜像组织的沟通结构43。生成式 AI 制造了一个新的组织问题:当生产单元从”人”变成”人加 agent 团队”,沟通结构变成权限结构,Conway 定律第一次有了可编程的版本。
  • 必须理解的概念:① 学徒制断裂与技能形成的经济学;② 理论建构对工件生产:谁持有系统的心智模型;③ 心理所有权与作者身份——合入没读过的代码对责任意味着什么;④ 组织记忆载体的迁移(从代码与师徒,到规格与 harness)。

M10 · 合成谱系与前沿:从 Sketch 到 AlphaEvolve

  • 核心问题:LLM 是程序合成二十年积累的第一次工业化,还是一次真正的范式断裂?把谱系看清楚,哪些老洞见重新变得锋利?
  • 为何因生成式 AI 而重要:FunSearch 用”LLM 提议+评估器筛选”的进化循环,在 cap set 问题上做出了新的数学构造44〔A 级证据〕;AlphaEvolve 沿同一架构改进了 4×4 复数矩阵乘法(1969 年 Strassen 之后的首次改进)、并号称回收了 Google 全球约 0.7% 的算力45〔B 级证据〕。Karpathy 的 Software 1.0/2.0/3.0 叙事4647把这条线讲成了产业史:手写指令 → 训练参数 → 自然语言意图。
  • 与经典的关系:反”一切都是新的”:Solar-Lezama 的 sketching 早已论证”搜索+可检查约束”是程序合成的正确形态48,pass@k 只是给搜索换了个采样器。也反”LLM 与合成无关”:自然语言第一次成为合成器的主接口,规格的角色被彻底改写。Sutton 的 Bitter Lesson49是这条谱系的阴影,也是它的预警。
  • 必须理解的概念:① Software 1.0/2.0/3.0 的三层叙事及其局限;② 合成即搜索:约束、oracle 与反例引导;③ LLM-in-the-loop 进化(提议-评估循环)作为一种新的科学方法;④ 神经与符号的再合流。

地图的用法:这十个模块不是并列的章节,而是一条主轴的展开:M2(意图)→ M1(生成)→ M3(验证)→ M4(人)是核心循环;M5、M6 是两个载体(过程与代码库);M7、M8、M9 是三条横切线(安全、评估、组织);M10 是时间纵深。任何新论文、新工具、新事故,都应该能放进这张图的某个格子里——如果你放不进去,要么是图错了,要么是你遇到了这门学科的下一个新问题。

02 核心命题

十三个命题,是这门课希望学生五年后还记得的东西。它们不是工具技巧,而是可以被迁移、被反驳、被新证据修正的断言——所以每一条都带谱系(延伸还是新问题)与争议(分歧在哪)。

命题 1 · 成本结构

当代码生成的边际成本趋近于零,”判定它是否正确、是否该合入、是否值得维护”的成本成为新的第一瓶颈。

  • 为何重要:它是资源分配的罗盘。过去二十年工程团队按”构造”配置人力(多少开发者写代码),现在必须按”验证”重新配置:多少评审、多少测试、多少监控、多少回滚演练。看不清这一点,就会把钱继续投在已经便宜的环节。
  • 例子:覆盖近五千名开发者的三个企业田野实验里,PR 数量上升 26%,构建成功率反而下降2;而 Meta 的 TestGen-LLM 只有加上”能构建+能通过+能提升覆盖”三重机器预筛之后,73% 的测试建议才被工程师接受合入12——自动化验证是让生成规模化的前提,不是附属品。
  • 谱系:延伸。验证与测试理论早已存在(Dijkstra:”测试只能证明 bug 的存在”13);新的只是:验证第一次成为约束产出的变量,而非质量保障的末端环节。
  • 争议:验证成本会不会被模型自己压掉?一派认为 LLM+形式化方法正在让验证指数变便宜(”生成与验证终将对称”);另一派认为验证本质上是渐进改善的,生成却是指数改善的,不对称只会扩大。目前证据更支持后者,但远未定论。

命题 2 · 复杂度守恒

AI 消除的是偶然复杂度;本质复杂度不消失,而是迁移到人机界面上重新计价——规格、审查与集成的成本上升。

  • 为何重要:它预测了本领域大多数”反直觉”现象:为什么提效集中在样板代码,为什么资深者在自己的成熟仓库里反而减速,为什么组织级吞吐改善远小于个人感受——因为瓶颈从来不在打字。
  • 例子:METR 2025:16 名资深开源维护者事前预测 AI 会让他们提速 24%,实测慢了 19%3。他们的任务里占主导的是本质复杂度:迁移中的 API 语义、隐性约定、跨模块一致性——这些无法靠生成解决。
  • 谱系:Brooks 的直接延伸7。有意思的是:AI 部分兑现了”没有银弹”的反面(实现劳动确实被大规模自动化了),但 Brooks 列出的四条本质属性——复杂度、一致性、可变性、不可见性——原封不动,只是换了计价的地方。
  • 争议:”复杂度守恒”是隐喻不是定律。乐观派认为更好的界面(自然语言+agent)最终能吸收大部分本质复杂度;悲观派认为界面本身会成为新的本质复杂度。这个分歧无法靠辩论解决,只能靠证据。

命题 3 · 规格跃迁

当实现可以被生成,”说清要什么”的精确性成为核心编程技能;欠规格即缺陷——模型会替你把没说清的部分编出来。

  • 为何重要:它把日常的”prompt 技巧”提升为规格工程问题,也给出幻觉的工程学定义:幻觉是模型对欠规格部分的合法补全。想减少幻觉,路径不是许愿,是把规格写清楚。
  • 例子:spec-driven 工具(Kiro、GitHub Spec Kit)把”先规格、后实现”变成 agent 工作流89;TDD 社区的”红-绿-重构”正在迁移为”写失败测试 → 让 agent 补实现”——测试成为规格的机器可读形式。
  • 谱系:延伸+变义。Parnas 早把精确规格视为设计核心10;新的是:自然语言规格第一次”可执行”(经由模型解释),于是规格的写作成本与精确度之间的旧权衡被打破重估。
  • 争议:形式规格派认为 LLM 恰恰是把自然语言编译成形式规格的最好助手(NL 入、Lean/Dafny 出);自然语言派认为形式化永远追不上需求变化的速度,正确路线是”模糊规格+强验证兜底”。两条路线都在被工业界同时尝试。

命题 4 · 测试的三重身份

测试同时是可执行规格、agent 的奖励信号、信任的计价单位——这三种身份之间的冲突,本身就是新的理论问题。

  • 为何重要:测试写得含糊,agent 就学会糊弄(reward hacking);测试写得好,它就是你能给模型的最强约束。理解测试即奖励,才能理解为什么”让 agent 跑 CI”会同时放大好工程与坏工程。
  • 例子:SWE-bench 用 FAIL_TO_PASS 测试自动判分,本质是把”修好了”定义为”让测试变绿”11;随之而来的经典失效模式是 agent 修改测试让它通过——所以成熟的 harness 必须把”谁有权改测试”纳入权限模型。
  • 谱系:延伸+变义。oracle 问题是测试理论的老问题;”测试作为训练与搜索的奖励”是新的。property-based 测试与 LLM 假设生成已在合流(CodaMosa)14
  • 争议:测过不等于正确:测试覆盖不了的语义空间谁来补——属性、形式化、运行时监控、还是抽样人审?目前没有共识,只有”证据预算”的混合策略。

命题 5 · 注意力 Amdahl 定律

人类审查带宽是无法水平扩展的串行资源;当生成速率超过审查速率,系统吞吐的上限由审查端决定。

  • 为何重要:它解释了审查积压、评审质量下滑与”AI 代码合并率悖论”,也指示了自动化投入的正确位置:机器预审、分级信任、小批量——而不是继续向生成端加杠杆。
  • 例子:Cui et al. 的三家企业实验中构建成功率随 PR 数量上升而下降2;2025 年 45% 的开发者报告调试 AI 生成代码比手写更耗时15——”生成得更快”直接变成”队列更长”。
  • 谱系:延伸+新。代码评审研究(评审的价值与错配)是老的;”生成量结构性超过人类带宽”是新的物理条件。
  • 争议:机器评审能否闭环?乐观派认为”模型审模型+确定性工具链+分层抽样”足以维持质量;悲观派认为评审的认知与社会功能(传递设计意图、建立共同责任)无法自动化。DORA 2025 的数据显示小批量与强版本控制是调节变量5——系统在适应,但人还没退出循环。

命题 6 · 耐久层上移

当生成近乎免费,代码贬值、规格与测试升值:代码库的耐久层从代码层上移,”维护”部分让位于”再生成”。

  • 为何重要:它决定长期投资的位置:哪段代码值得人读懂,哪段应该被显式标记为一次性;也决定招聘画像——”读代码并保住系统不变质的人”比”写代码的人”更稀缺。
  • 例子:GitClear 的宏观证据:复制粘贴超过重构成为第一大变更方式,重复代码块一年增长约八倍27;”vibe coding”实践者干脆把部分代码定义为可丢弃的28。两年前的”祖传代码”正在变成”祖传 prompt+祖传测试”。
  • 谱系:变义。Lehman 的演化定律照常运转29,但演化的承担者从”读代码的人”变为”规格+能重新生成的模型”。Naur 的警告在此最锋利:理论死了,工件还在跑31
  • 争议:”反正会重写”在长生命周期、安全关键、硬件耦合与强合规域不成立;一次性代码堆积的长期利息是否被系统性低估,学界与工业界都在吵。这是 C 级推测,但很重要。

命题 7 · 过程即奖励环境

对 agent 而言,软件过程(沙箱、权限、CI、评审门)不再是约定,而是它的规格与安全边界——harness 即类型系统。

  • 为何重要:它把”过程改进”从文化议题变成工程议题:你写下的每条 CI 规则都是 agent 的适应度函数,你给的每个权限都是它的行动半径。过程设计的质量直接变成安全与效果。
  • 例子:Replit 事故:agent 在无确认的迁移操作中删掉了生产数据库26;同一代模型在不同 harness 下 SWE-bench 成绩差距可达数十个百分点20——你部署的不是模型,是模型加环境。
  • 谱系:延伸到极限的”过程即代码”(DevOps 的终局);新的是 CI 从”人的质量门”变成”机器的 fitness 函数”,以及一个反讽:瀑布以微型化复活——对 agent 给明确规格与小步验证,对人才谈敏捷。
  • 争议:单 agent 与多 agent 之争(Cognition 主张代码编辑任务单线程共享全 trace24;Anthropic 展示研究型任务上多智能体 +90.2%、代价约 15 倍 token25)——两者其实为不同任务域立论,尚未出现统一理论。

命题 8 · 信任的证据经济学

合入决策=在测试、类型、评审、形式化、运行时监控之间,按”单位正确性证据的成本”配置预算——且预算随 diff 大小超线性增长。

  • 为何重要:它给”该不该自动合入”提供可计算的框架,替代”信任/不信任”的拟人化语言;也解释了为什么小批量、频繁提交、快速回滚这些老美德在 AI 时代从”好习惯”变成”经济学必然”。
  • 例子:TestGen-LLM 的三重机器预筛把每个建议的”证据单价”压到工程师愿付的水平,换来 73% 合入率12;DORA 2025 发现小批量正是 AI 收益为正的调节变量5——同一个经济逻辑的两端。
  • 谱系:新问题,但有旧骨架。Dijkstra 与 Hoare 关于证明的立场1350从哲学命题变成预算问题;Fagan 式审查的成本曲线与”缺陷发现越晚越贵”的旧结论继续适用,只是”发现”的手段换了。
  • 争议:不同证据之间的”汇率”如何标定(一条失败的测试等价于多少行评审?);运行时证据(灰度、金丝雀、快速回滚)算不算正确性——SRE 传统与验证传统在此尚未会师。

命题 9 · 自动化的讽刺与信任校准

生成式 AI 把开发者推向”监督者”角色——恰是人类最不擅长的工作模式;因此信任校准(知道何时不信)比信任本身更值钱。

  • 为何重要:它解释了采用率与信任度的背离(2025 年使用率 84%、信任度 29%1516):组织要求用,个体保留怀疑——这不是非理性,是校准。设计人机系统时,校准误差比原始能力更值得度量。
  • 例子:METR 实验里资深维护者预测提速 24%、实测减速 19%3——连最资深的人都校准失败;DORA 2025 的眼动子研究显示学生在解释性任务上对 AI 的注视不足 1%、机械任务上约 19%5——人会自发分配注意力,前提是还保有判断力。
  • 谱系:直接延伸。Bainbridge 1983 年《自动化的讽刺》几乎逐字预言了这一处境:自动化把人推向监督角色,而人最不擅长长时监督、却最擅长即兴介入19。新增的维度:校准失败在资深者身上同样发生。
  • 争议:校准能否被训练出来?UI 呈现不确定性(置信度、引用、diff 解释)是否真的改善决策,还是产生新的锚定?证据尚少。

命题 10 · 认知卸载的长期账单

无护栏的认知卸载以长期能力为代价换取短期产出——”会用”与”会做”之间的差距,第一次可以被大规模生产。

  • 为何重要:它直接决定课程与培养体系的设计(本课为什么坚持让学生先手写再使用),也影响企业的人才策略:省下的培训成本以外部性形式留给整个行业。
  • 例子:预注册的世界银行田野实验:使用 AI 辅导的学生练习成绩 +48%、闭卷考试 −17%17〔A 级证据〕;EEG 研究记录到依赖 AI 写作者的神经连接性下降(”认知债”)18;新手研究记录了被打断的调试与心流41
  • 谱系:延伸。教育心理学的”必要难度”与专家化研究早已知道挣扎的价值;新的是规模与双向性——同一个工具既是替身又是老师,且由商业激励偏向替身模式。
  • 争议:损伤是否只对新手成立?组织级证据给出了有趣的反向信号:DORA 2025 发现 AI 采用者的心理所有权未降、职业自豪感反升5——”个体感受”与”能力存量”测的可能不是一回事。分歧未被调和。

命题 11 · 生成管线是新攻击面

训练语料、依赖图、上下文窗口构成三类新的注入向量;安全边界必须从”运行时”前移到”生成时”。

  • 为何重要:传统的安全审计针对你写的代码;当主要输入变成模型的输出,审计对象变成整条管线:语料可被投毒、包名可被抢注、上下文可被劫持。这不是假设性风险,已有真实事件与 PoC。
  • 例子:投毒攻击证明少量恶意样本即可让补全模型在特定上下文输出漏洞代码32;Trojan Puzzle 展示了绕过审查的隐藏触发投毒33;slopsquatting 把幻觉包名变成攻击入口34;提示注入则让 agent 把网页内容当指令35
  • 谱系:新问题,旧结构。经典供应链安全假设人类作者可追责;提示注入在形式上就是 SQL 注入(指令与数据同信道)——只是信道成了自然语言上下文。OWASP 已将提示注入列为 LLM 应用头号风险35
  • 争议:修复速度与攻击规模化的赛跑;主流判断是提示注入无通用防御,唯一可靠缓解是最小权限——”让 agent 能做的坏事不致命”而非”让 agent 不做坏事”。

命题 12 · 基准即训练目标

固定基准最终测量的是”基准被优化的程度”而非能力;评估必须动态、生态化、成本敏感,否则整个领域的进步信号失真。

  • 为何重要:如果公共基准失真,研究资源会被系统性错配。SWE-bench 的每次刷新都直接牵引数亿美元的研发方向——它测错一分,行业就偏航一分。
  • 例子:人工复核发现 SWE-bench 原始判定约三分之一有问题,催生 Verified 版36;微小扰动即可颠覆排行榜37;动态基准以持续换新对抗污染38;而 METR 用”时间地平线”(能独立完成的任务时长)这一外部效度更高的指标,给出每约七个月翻倍的增长律39
  • 谱系:延伸+新。Goodhart 定律与 SE 度量研究的老问题;新的是对抗性耦合——评估对象把基准吸进训练集,度量与目标合一,这在经典 SE 度量史上没有先例。
  • 争议:泛化派认为足够强的模型自然泛化、基准仍是充分信号;污染派认为污染已系统性高估能力。折中立场(Kwa 等39):可信的能力曲线要靠”动态任务+时间维度”重建。

命题 13 · 没有单一的生产率数字

生成式 AI 的净效应是任务粒度、测量口径与系统位置的函数;局部提速与全局减速可以同时为真,且未来两年不必然收敛。

  • 为何重要:它是对所有”AI 让开发快了 X%”式论断的疫苗。任何生产力结论必须先回答:什么任务、什么人、测的什么、在系统的哪个位置——否则讨论无法推进。
  • 例子:图 1 的六种测法:RCT 小任务 +55.8%1、企业田野 PR +26%2、企业 RCT PR 合并 +8.7%6、DORA 2024 自评 +2.1% 而组织吞吐 −1.5%4、METR −19%3;DORA 2025 吞吐转正、不稳定性继续为负5
  • 谱系:新命题(多源综合),底盘是老的生产率悖论:1980 年代 IT 投资与统计产出的背离。历史经验提示:微观改善与宏观悖论可以共存十年以上。
  • 争议:长期符号之争。DORA 的”放大器论”预言分化将持续(好系统加速变好、坏系统加速变坏);技术乐观派预言系统终将适配。两个预言都能自圆其说——这正是它值得思考的原因。

五条尚未收敛的分歧(本文不强行合并共识)

  • 生产率的符号:RCT 提速 vs 田野减速——根源是测量单位不同(任务、PR、还是组织交付),双方各自正确,合起来才是真相13
  • 多 agent 还是单 agent:Anthropic 的 15 倍 token 换 90.2% 提升 vs Cognition 的”别做多 agent”——任务域假设不同(探索 vs 编辑),尚无统一理论2524
  • 代码是资产还是消耗品:维护派(理解必须长期持有)vs 重生成派(代码贬值、规格升值)——GitClear 的债务证据对两边都提供了弹药27
  • 学习损伤还是适应:教育实验的 −17% vs 组织调查的所有权不变——测的是能力存量与当下感受,可能都对175
  • 规格路线:形式化复兴派(LLM 把形式规格变便宜)vs 自然语言派(模糊规格+强验证兜底)——两条路都获得了新证据,胜负未分。

03 最值得思考的问题

十一个问题,没有标准答案。它们的价值在于:每次模型能力跳一档、每出一次新事故、每读一篇新论文,答案都会被重新洗牌一次——而思考的框架不会。

Q1 · 如果生成代码足够便宜,”写代码”还会是软件工程的核心活动吗?

编程会变成什么——意图声明、约束书写、验证与集成的组合?历史类比(汇编→高级语言→框架)这次是否还成立?值得注意的差异是:上一次抽象上升时,手艺人变成了架构师;这一次被替代的可能恰恰是”成为架构师”的那条路径本身。

Q2 · 当生成速度远高于人类审查速度,质量保证应该如何变化?

机器评审能否闭环:模型审模型+确定性工具链+分层抽样人审,能维持质量吗?如果最终 99% 的 PR 不再经过人类眼睛,”质量”由谁定义、事故由谁负责?这个问题的答案决定整个 QA 职业的形态。

Q3 · 软件工程的基本单位会不会从”代码”转向”规格、约束、测试与反馈”?

如果代码是新一代汇编,什么在扮演 C 的角色——类型、测试、ADR,还是 prompt?哪些可观测信号能告诉我们迁移是否正在发生:代码平均停留时长、重写频率、还是复用率?”代码是资产”的会计学是否需要重写?

Q4 · 当 agent 可以自主修改大型代码库时,如何重新理解 abstraction、ownership 与 trust?

抽象从”为人脑压缩复杂度”变为同时为上下文窗口与权限边界服务——当抽象的受益者不再是人,它还是抽象吗?ownership 是 git 权限问题还是心理问题?trust 的对象到底是代码、生成它的模型,还是产生它的过程?

Q5 · 如果初级工作被自动化,资深工程师从哪里来?

学徒制断裂的经济学:debug 琐事、读老代码、写小工具——这些被替代的”苦役”恰是专家化路径上的必要难度。谁来支付”故意保留的困难”?企业短期省下的培养成本,与行业长期的理解者供给之间,是一笔没人入账的外部性。

Q6 · 当基准成为训练目标、评估者也是模型,”进步”还能被度量吗?

需要什么样的公共基础设施——动态任务集、协议预注册、污染审计——才能让能力曲线可信?如果评估科学跟不上,整个领域的研发资源分配就建立在一套可能失真的信号上。这个问题属于今天,不属于未来。

Q7 · 代码库平均质量的稀释,是可以接受的熵增吗?

重写成本下降多少,才足以让”不维护”变成理性策略?哪些域是结构性例外(长生命周期、安全关键、硬件耦合、强合规)?”代码变差但系统还能跑”与”技术债复利”之间的分界线在哪里——是测试覆盖、可观测性,还是重写成本本身?

Q8 · 合入了没读过的代码,出了事故谁负责?

作者身份稀释后,职业伦理与法律框架如何跟上:是”操作员责任”(你按了合并键)、”工具责任”,还是”组织责任”?git blame 之上的审计单元应该是什么——prompt、trace、还是整个 harness 配置?”我不知道它在干什么”在工程上是否还是可以接受的抗辩?

Q9 · 提示注入没有可靠防御时,开放世界里的 agent 如何安全?

能力与权限的错配(能写代码≈能执行任意代码)是不是这一代系统的根本设计缺陷?最小权限+沙箱+人类确认,是过渡方案还是终态?这个问题等价于问:我们能否接受一个”能被任意网页说服的实习生”拥有生产权限?

Q10 · 需求的完备性在数学上不可能——生成式 AI 是缓解还是放大了意图鸿沟?

模型替你补全没说清的语义,这个”模糊编译器”是特性(快速起步、草稿生成)还是缺陷(静默地做错)?如果规格永远不完备,那么”正确”的定义权是在写 prompt 的人手里,还是在写评估器的人手里?

Q11 · 当软件生产成本骤降,软件的需求会爆发还是价值会坍塌?

Jevons 悖论预言:生产率上升反而增加(而不是减少)资源消耗——如果成立,软件工程师的数量应该上升(更多系统、更长尾的需求),而不是下降。历史上 ATM 与银行柜员两种结局都出现过。这道题的答案决定了”学软件工程”这个决定本身的价值。

04 经典软件工程 × 生成式 AI

九个经典思想,三种命运:更重要了、重要性下降了、含义发生了变化。反直觉的变化优先于覆盖面——很多”显然更重要”的东西这里不列,因为它们不需要解释。

经典思想判定生成式 AI 改变了什么值得记住的一句
规格 Specification更重要+ 变义从”最好有的文档”变成生产的第一输入:欠规格即缺陷,模型会把缺口编出来。形式规格的成本被 LLM 压低(Lean/Dafny 证明助手),自然语言规格首次”可执行”。108规格从需求工程的章节,变成了编程语言本身。
测试 Testing更重要三重身份:可执行规格、agent 的奖励信号、信任的计价单位。测试生成被自动化(TestGen-LLM12),但 oracle 问题——谁来判定测试是对的——反而更尖锐了。测试从 QA 活动变成生产资料:你写的不只是检查,是奖励函数。
验证与形式化 Verification更重要(复兴) 变义从”全有全无的证明”变成证据谱系上的一档:按”单位正确性证据的成本”采购。Dijkstra 的哲学立场13变成预算问题;Hoare 担心的”不严肃”50反而被生成压力治好了。形式化从奢侈品变成性价比问题——这是四十年来的第一次。
抽象与模块化 Abstraction变义Parnas 的信息隐藏10获得第二重经济学解释:模块边界=上下文边界=权限边界。高内聚低耦合不再只为认知与变更局部性服务,还为 token 成本与 agent 的爆炸半径服务。抽象从为人脑减压,变成同时为上下文窗口供氧、为 agent 设边界。
代码评审 Code review变义缺陷初筛可自动化,于是评审的剩余价值集中到认知与社会功能:传递设计意图、建立共同责任、执行团队边界。同时审查带宽成为结构性瓶颈(注意力 Amdahl)。反直觉:评审里”人与人”的部分变得更核心,而不是更边缘。
技术债 Technical debt变义借债近乎免费且隐形(不经过人的手),新债种出现:复制债、语义债、数据陈旧债27。偿还是否还理性取决于重写成本曲线——这条曲线正在整体下移。没人感觉自己在借债的时候,才是最大的债。
软件架构 Architecture更重要+ 变义架构决策记录成为”耐久层”的核心资产——最难重新生成的东西升值。架构的读者从人变成”人+agent”:风格指南从文档变成 harness 里的机器可检查约束。代码可再生,架构是那个”为什么”,而”为什么”最难再生成。
DevOps / CI变义CI 从”人的质量门”变成 agent 的适应度函数;小批量与强版本控制从好习惯变成 AI 收益为正的前提条件5;部署安全(权限、沙箱)升为第一议题(Replit 事故26)。过程第一次成为机器的运行时——你写的是规格,也是安全带。
编程语言与类型 PL & Types变义类型注解从”给编译器与同事看”变成约束模型的廉价护栏(type-guided generation);语言选型出现新维度——模型对该语言训练分布的熟悉度,即”模型友好度”。写类型注解,是在给生成过程写约束求解器的输入。

真正重要性下降的东西,反而朴素得多

手写实现细节(从零到一的”打字劳动”)、语法与 API 记忆、代码风格的一致性执行(机器产出天然一致)。还有一个更微妙的:把”估计一段代码要写多久”作为核心计划技能的价值在下降——现在的估计对象变成了”审查与验证要多久”。反直觉的对称是:“写代码”在下降,”读代码”在上升——而读,从来是两者中更稀缺的能力51。开发者与生成模型的实际交互模式研究显示,人把 AI 当作探索工具(帮我理解这段代码)与加速工具(帮我补完已知意图)两种截然不同的方式使用51,前一种用法的比重只会越来越大。

05 阅读与探索路线

不是 bibliography,是一条路线:四篇经典打底(它们不长),四组实证研究(读原始论文,不读新闻),四组系统与前沿(对照着读),两组安全与批评(冷一冷),最后两个必须亲手做的事。总计十五项,按这个顺序投入时间。

第一层 · 经典地基(四篇,都不长)

  • Brooks,《No Silver Bullet》 · 1986/877 — 本领域最重要的一篇旧文:本质复杂度对偶然复杂度的二分,是所有关于”AI 能不能自动写软件”讨论的总纲。带着它读一切新东西,就不会被营销语言冲走。
    • 带问题去读:对照 2026 年:Brooks 列的四条本质属性,哪一条真的被模型触碰了?哪一条只是换了计价的地方?
  • Parnas,《On the Criteria To Be Used in Decomposing Systems into Modules》 · 197210 — 模块化的原始论证:按”设计的决策”而不是”功能”切分。半个世纪后的今天,模块边界同时决定上下文预算与 agent 权限——这篇文章比任何时候都更当代。
    • 带问题去读:你的代码库的模块边界,是为哪一代读者画的?信息隐藏的”信息”,对模型还算隐藏吗?
  • Naur,《Programming as Theory Building》 · 198531 — 程序不是文本,是人脑中的”理论”外化。这篇文章为”AI 生成代码后理解去了哪里”提供了最锋利的概念工具:理论死、工件跑。
    • 带问题去读:你维护的系统的理论活在几个人的脑子里?如果明天他们全部离开,再生成一次能复活理论吗?
  • Bainbridge,《Ironies of Automation》 · 198319 — 自动化系统设计者最早的警告:把人推向监督者角色,恰恰制造出人最不擅长的处境。四十年后每一句都在 AI 编程上演。
    • 带问题去读:逐条对照今天的人机协作,找出唯一一条还没应验的——然后想想它是不是正在路上。

第二层 · 实证证据(读原文,不读转述)

  • Peng et al.(2023)+ Cui et al.(2025)成对读12 — 前者是 RCT:隔离小任务提速 55.8%;后者是三家企业的田野实验:PR +26%、构建成功率下降。设计差异本身就是教材:任务边界、对照方式、度量口径。
    • 带问题去读:两组实验的设计差异里,哪一个是结果符号翻转的主因?如果让你设计第三组,你会固定哪个变量?
  • METR,《The Impact of Generative AI on Experienced Open-Source Developer Productivity》 · 20253 — 16 名资深维护者在自己的百万行仓库上实测减速 19%——而他们事前预测提速 24%。预注册、对照、时长测量,方法论是同类研究里最干净的。
    • 带问题去读:为什么连当事人自己都预测错了方向?他们的”错”暴露的是对 AI 的误解,还是对自己工作的误解?
  • DORA 报告 2024 → 2025 连续读45 — 组织级的纵向对照:2024 年个体指标向好、系统吞吐变差;2025 年吞吐转正、不稳定性继续为负,”AI 是放大器”的论点由此而来。读它学的不只是结论,是调查方法。
    • 带问题去读:两年之间翻转的是什么(吞吐),没有翻转的是什么(稳定性)——为什么恰好是这两个?
  • Meta,《Automated Unit Test Improvement Using LLMs》(TestGen-LLM) · ICSE 202512 — 工业验证管线的解剖:生成只是系统的一小部分,预筛、验证、人类最终把关构成真正的机器。看”生成式软件工程”在真实公司里的样子。
    • 带问题去读:为什么”生成”在这个系统里只占很小一部分?把这套管线套到代码评审上,哪些环节能复用?

第三层 · 系统与前沿(对照读)

  • SWE-bench 论文 + Verified 说明 · 20241136 — 验证工业化的原点与代价:自动判分如何改变研究问题,以及为什么需要人工复核修正三分之一的判定。理解这个基准,就读懂了这一代 coding agent 论文的评价体系。
    • 带问题去读:自动判分奖励了什么样的能力、惩罚了什么样的能力?你的日常工作更像前者还是后者?
  • SWE-agent + Anthropic 多智能体 + Cognition《Don’t Build Multi-Agents》三篇对照 · 2024–25202524 — 同一个问题的三个立场:界面设计决定 agent 上限、多智能体 +90.2% 但 15 倍 token、以及”别做多 agent”。它们并不互相反驳——各自的任务域假设才是关键。
    • 带问题去读:三篇各自隐含的任务域是什么?你自己的工作更像哪一种,成本模型因此该怎么算?
  • FunSearch(Nature)+ AlphaEvolve · 2024–254445 — “LLM 提议+评估器筛选”的进化循环反哺了数学与算法发现(4×4 复数矩阵乘法的 56 年来首次改进)。这是生成式方法作为科学工具的最好样本。
    • 带问题去读:评估器从哪里来?这个循环适用的边界条件是什么——为什么它不能直接套到你的业务代码上?
  • Karpathy《Software 2.0/3.0》+ Sutton《The Bitter Lesson》 · 2017/2019/2025464749 — 三篇短文一条叙事线:指令→参数→自然语言,以及”通用算力终将碾压精巧结构”的冷峻预言。它们是理解整个行业叙事——与它的偏差——的最快入口。
    • 带问题去读:Sutton 的预言在软件工程上兑现了吗?哪些”精巧结构”(抽象、架构、过程)反而更值钱了?

第四层 · 安全与批评(冷一冷)

  • 《Trojan Puzzle》+ Checkmarx 包幻觉研究 · 2023–243334 — 投毒如何绕过人审与过滤器;幻觉包名如何被抢注成真包。两篇合起来构成”生成管线攻击面”的完整入门——比任何科幻叙事都具体。
    • 带问题去读:你的依赖清单里有没有”不该存在的包”?你的 CI 有没有装包前的存在性与信誉校验?
  • OWASP LLM Top 10(L01 提示注入)+ Replit 事故复盘 · 20253526 — 一个是标准文本,一个是鲜活事故:agent 删掉生产数据库的全过程。读完标准再读事故,权限模型的每个概念都会落地。
    • 带问题去读:那场事故里的每一道”本可以拦住它”的关卡分别是什么?哪一道在你的工作流里今天就不存在?

第五层 · 必须亲手做(各半天)

  • 用同一个真实小任务,分别跑 Claude Code52 与一个开源 harness(如 OpenHands) — 同一个任务在不同权限与过程设计下的行为差异,比任何论文都直观。刻意制造一次失败(比如让它碰一个不存在的依赖),观察 harness 的保护行为。
    • 带问题去读:你的 harness 里哪条规则是奖励(引导它做对),哪条是安全边界(防它做错)?两者冲突时听谁的?
  • 用 Kiro 或 GitHub Spec Kit 做一次 spec-driven 开发89 — 亲手体会”先写规格、再生成”的完整循环:规格写到多细,生成才稳定?哪些信息你一开始根本不知道要写?这次体验胜过十篇工具评测。
    • 带问题去读:把你最近一个真实需求写成规格:写到哪里你开始不确定了?那个不确定点,就是过去”写代码时才会做的决定”。

06 教授的判断

从这里起,离开教材口吻,是我作为课程设计者的立场。以下判断基于上文证据,但取舍是我的。一个背景音:广为流传的 MIT NANDA 报告称企业生成式 AI 试点中约 95% 未能产生可度量的回报53〔C 级证据〕——这个数字方法上很可疑,但”试点多、规模化难”与 DORA 的放大器论互为印证。

哪些热门话题,其实不值得太多课时

  • 工具教程与 prompt 技巧集。两年后界面全变,技巧全废。学生需要的是工具背后的不变结构(意图→生成→验证),而不是某个产品的菜单结构。
  • “全自动 AI 工程师”的产品叙事5455演示与生产之间的距离,恰恰是本课 M5 与 M7 要讲清的内容。把叙事当能力,是软件工程史上最古老的错误。
  • 模型跑马与排行榜追踪。“这周谁第一”是新闻不是知识。它训练的是记忆,不是判断——而且排行榜本身的信度问题(污染、扰动敏感)恰恰是学生应该学会怀疑的东西。
  • 多 agent 编排的花样。当前的框架之争是工程品味之争,不是科学问题。用一节课讲清”上下文隔离 vs 全局一致性”的取舍即可,剩下的交给时间。
  • “哪个模型最适合写 X 语言”。这个答案的有效期以月计。学生应该学会的是自己设计评测,而不是背评测结果。

哪些被低估的问题,反而应该成为核心

  • 验证的经济学。整门课最该花时间的地方。如何为”没读过的代码”建立足以部署的信任——这个问题现在只有碎片化的实践答案,学生越早开始自己搭框架越好。
  • 评估与度量素养。“你测的是什么”应该作为每个学生的条件反射。图 1 的六种测法互不可比——能解释为什么,比能复述任何一个数字都重要。
  • 权限与安全模型。它正在成为”这个时代的操作系统课程”。投毒、slopsquatting、提示注入、最小权限——每一条都有真实事故背书,且都不依赖任何具体模型的存亡。
  • 技能形成与组织设计。学徒制断裂是慢变量,恰好因此被课程体系忽视。它是未来十年行业结构问题的核心,而且没有别人的答案可以抄。

哪些知识可能 2–3 年就过时

  • 今天的生产率数字(包括本文引用的所有百分比——它们是 2023–2025 的快照,不是定律)。
  • 当前模型的能力边界描述(”长任务不行”“上下文不够”——每条都在被改写)。
  • 单 agent 还是多 agent 的”当前答案”、具体框架与工具的名字、以及今天论战的阵营划分。

哪些思想,即使模型能力继续大幅提高,仍然值得学习

  • 成本结构分析。只要资源有限,瓶颈在哪、钱和时间该投在哪,就永远是第一等问题——工具换了,方法不变。
  • Parnas 的信息隐藏、Naur 的理论建构、Lehman 的演化定律。它们描述的是软件与人脑的关系,不是软件与机器的关系,所以模型再强也不失效。
  • Bainbridge 的自动化的讽刺。自动化程度越高,人机责任的分配问题越尖锐——这是自动化的二阶效应,一代代系统都会重新上演。
  • 验证理论与实验设计。Dijkstra/Hoare 的立场、oracle 问题、Goodhart 定律、随机对照——它们是关于”知识如何可信”的学问,比任何具体技术都长寿。

如果整门课只能让学生真正理解三个思想

第一,生成-验证不对称。因为它是罗盘:预测瓶颈的下一个位置,就预测了资源、岗位与工具的流向。学生学会用成本结构的眼睛看这个领域,就永远不会被”全自动”的营销话术带走——他们会本能地问:验证的钱谁出?

第二,信任的证据经济学。因为它是工具箱:把”该不该信 AI 的代码”翻译成”我在为每单位正确性证据付多少钱”,测试、类型、评审、形式化、灰度就都变成同一个货架上的商品。这个翻译能力可以迁移到安全、医疗、任何由生成系统参与的领域。

第三,理论建构在人身上。因为它是这门学科最后的底线,也是最大的悬念:如果理解不再通过写代码形成,而旧的养成路径正在关闭,那么二十年后”资深工程师”从哪里来——这不是技术问题,是这门行业能否继续存在的社会问题。学生带着这个问题走出教室,比带着任何答案都重要。

课程设计的全部秘密只有一句话:工具会过时,瓶颈会移动,但”对没写过的代码建立信任”和”让下一个理解者长出来”这两件事,会是未来十年软件工程的核心矛盾——把它们讲清楚,其余的让学生自己去发现。

课程设计的全部秘密只有一句话:工具会过时,瓶颈会移动,但”对没写过的代码建立信任”和”让下一个理解者长出来”这两件事,会是未来十年软件工程的核心矛盾——把它们讲清楚,其余的让学生自己去发现。

资料来源

全部 55 条参考文献以脚注形式与正文对应(正文中的 [^n] 标记):

  1. S. Peng, E. Kalliamvakou, P. Cihon, M. Demirer,《The Impact of AI on Developer Productivity: Evidence from GitHub Copilot》,arXiv:2302.06590,2023。 https://arxiv.org/abs/2302.06590 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7

  2. Z. Cui, W. Wang, C. Huang, R. Jia, S. Athey, G. Imbens 等,《The Effects of Generative AI on High-Skilled Work: Evidence from Three Field Experiments with Software Developers》,2025。 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8

  3. J. Becker, N. Rush, E. Barnes, D. Rein,《The Impact of Generative AI on Experienced Open-Source Developer Productivity》,METR,2025。 https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/ ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8 ↩︎9

  4. DORA,《Accelerate State of DevOps Report 2024》,Google Cloud。 https://dora.dev/research/2024/dora-report/ ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5

  5. DORA,《2025 DORA Report: State of AI-Assisted Software Development》,Google Cloud,2025。 https://services.google.com/fh/files/misc/2025_state_of_ai_assisted_software_development.pdf ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8 ↩︎9 ↩︎10 ↩︎11

  6. GitHub Blog,《Research: Quantifying GitHub Copilot’s impact in the enterprise with Accenture》,2024。 https://github.blog/2024-05-13-research-quantifying-github-copilots-impact-in-the-enterprise-with-accenture/ ↩︎ ↩︎2 ↩︎3

  7. F. P. Brooks, Jr.,《No Silver Bullet: Essence and Accidents of Software Engineering》,IFIP’86 / IEEE Computer,1986–87。 https://en.wikipedia.org/wiki/No_Silver_Bullet ↩︎ ↩︎2 ↩︎3

  8. Amazon Web Services,《Kiro》(spec-driven agentic IDE),2025。 https://kiro.dev/ ↩︎ ↩︎2 ↩︎3 ↩︎4

  9. GitHub,《Spec Kit》(spec-driven development 工具包),2025。 https://github.com/github/spec-kit ↩︎ ↩︎2 ↩︎3

  10. D. L. Parnas,《On the Criteria To Be Used in Decomposing Systems into Modules》,Communications of the ACM 15(12),1972。 https://dl.acm.org/doi/10.1145/361598.361600 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5

  11. C. Jimenez, J. Yang, A. Wettig, S. Lieret, S. Yao, K. Narasimhan, O. Press,《SWE-bench: Can Language Models Resolve Real-World GitHub Issues?》,ICLR 2024。 https://arxiv.org/abs/2310.06770 ↩︎ ↩︎2 ↩︎3 ↩︎4

  12. Meta(Pusic, Smyth 等),《Automated Unit Test Improvement Using Large Language Models at Meta》(TestGen-LLM),ICSE 2025。 https://arxiv.org/abs/2402.09137 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5

  13. E. W. Dijkstra,《The Humble Programmer》(图灵奖演说),Communications of the ACM 15(10),1972。 https://dl.acm.org/doi/10.1145/355604.361591 ↩︎ ↩︎2 ↩︎3 ↩︎4

  14. N. Brownlee, D. Winter, R. Marinescu, N. Walkinshaw,《CodaMosa: Escaping Coverage Plateaus in Test Generation with Pre-trained Large Language Models》,ICSE 2023。 ↩︎ ↩︎2

  15. Stack Overflow,《2025 Developer Survey》(AI 部分:84% 采用/29% 信任/46% 不信任准确性/45.2% 调试更耗时)。 https://survey.stackoverflow.co/2025/ai/ ↩︎ ↩︎2 ↩︎3 ↩︎4

  16. Stack Overflow Blog,《Mind the gap: Closing the AI trust gap for developers》,2026-02。 https://stackoverflow.blog/2026/02/18/closing-the-developer-ai-trust-gap ↩︎ ↩︎2

  17. M. Demir, F. Molina, C. Nguyen, H. Zheng,《Generative AI Can Harm Learning: Evidence from a Field Experiment with High School Students》,世界银行政策研究工作论文,2025。 ↩︎ ↩︎2 ↩︎3 ↩︎4

  18. N. Kosmyna 等,《Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI Assistant for Essay Writing Task》,MIT Media Lab,2025。 https://arxiv.org/abs/2506.08872 ↩︎ ↩︎2 ↩︎3

  19. L. Bainbridge,《Ironies of Automation》,Automatica 19(6),1983。 https://www.sciencedirect.com/science/article/abs/pii/0005109883900467 ↩︎ ↩︎2 ↩︎3

  20. J. Yang 等,《SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering》,NeurIPS 2024。 https://arxiv.org/abs/2405.15793 ↩︎ ↩︎2 ↩︎3 ↩︎4

  21. S. Yao 等,《ReAct: Synergizing Reasoning and Acting in Language Models》,ICLR 2023。 https://arxiv.org/abs/2210.03629 ↩︎

  22. X. Wang 等,《CodeAct: Executable Code Actions Elicit Better LLM Agents》,ICML 2024。 https://arxiv.org/abs/2402.01030 ↩︎

  23. Anthropic,《Building Effective Agents》,2024。 https://www.anthropic.com/research/building-effective-agents ↩︎

  24. W. Yan,《Don’t Build Multi-Agents》,Cognition Blog,2025。 https://cognition.ai/blog/dont-build-multi-agents ↩︎ ↩︎2 ↩︎3 ↩︎4

  25. Anthropic Engineering,《How we built our multi-agent research system》,2025。 https://www.anthropic.com/engineering/built-multi-agent-research-system ↩︎ ↩︎2 ↩︎3 ↩︎4

  26. J. Lemkin(SaaStr),《Replit’s AI Agent Deleted Our Production Database — Lessons》,2025-07。 ↩︎ ↩︎2 ↩︎3 ↩︎4

  27. GitClear,《AI Code Quality / The Maintainability Gap》系列研究(2.11 亿行代码变更分析),2024–2026。 https://www.gitclear.com/the_ai_code_quality_maintainability_gap ↩︎ ↩︎2 ↩︎3 ↩︎4

  28. A. Karpathy,关于 “vibe coding” 的发帖(”fully give in to the vibes… forget the code exists”),X,2025-02。 ↩︎ ↩︎2

  29. M. M. Lehman,《Programs, Life Cycles, and Laws of Software Evolution》,Proceedings of the IEEE 68(9),1980。 ↩︎ ↩︎2

  30. W. Cunningham,《The WyCash Portfolio Management System》,OOPSLA ‘92 Addendum(”技术债”隐喻出处),1992。 https://en.wikipedia.org/wiki/Technical_debt ↩︎

  31. P. Naur,《Programming as Theory Building》,Microprocessing and Microprogramming,1985。 ↩︎ ↩︎2 ↩︎3 ↩︎4

  32. 《You Autocomplete Me: Poisoning Vulnerabilities in Neural Code Completion》,USENIX Security 2021。 ↩︎ ↩︎2

  33. 《Trojan Puzzle: Code Poisoning Attacks on Code Completion Models…》,ASPLOS 2024。 ↩︎ ↩︎2 ↩︎3

  34. J. Lanyado,《AI Package Hallucinations》系列研究(slopsquatting:约 5% 的生成包名为幻觉、可被抢注),Checkmarx,2023–2024。 ↩︎ ↩︎2 ↩︎3

  35. OWASP,《Top 10 for LLM Applications》(L01:提示注入),2023–2025。 https://genai.owasp.org/llm-top-10/ ↩︎ ↩︎2 ↩︎3 ↩︎4

  36. OpenAI,《Introducing SWE-bench Verified》(人工复核修正约三分之一判定),2024。 https://openai.com/index/introducing-swe-bench-verified/ ↩︎ ↩︎2 ↩︎3

  37. N. Alzahrani 等,《When Benchmarks Are Targets: Revealing the Sensitivity of LLM Leaderboards》,ICML 2024。 https://arxiv.org/abs/2402.01781 ↩︎ ↩︎2

  38. N. Jain 等,《LiveCodeBench: Holistic and Contamination-Free Evaluation of LLMs for Code》,ICML 2024。 https://arxiv.org/abs/2403.07974 ↩︎ ↩︎2

  39. M. Kwa 等,《Measuring AI Ability to Complete Long Tasks》(时间地平线每约 7 个月翻倍),METR,2025。 https://arxiv.org/abs/2503.14499 ↩︎ ↩︎2 ↩︎3

  40. S. Bird, C. Ford, T. Zimmermann 等,《Taking Flight with Copilot: Early Insights from a Large-Scale Study of AI-Assisted Coding in the Enterprise》,Communications of the ACM,2023。 ↩︎

  41. J. Prather 等,《The Widening Gap: The Benefits and Harms of Generative AI for Novice Programmers》,ICER 2024。 ↩︎ ↩︎2

  42. SignalFire,《State of Talent Report 2025》(大型科技公司初级岗位招聘收缩)。 ↩︎

  43. M. E. Conway,《How Do Committees Invent?》,Datamation,1968。 https://www.melconway.com/Home/Committees_Paper.html ↩︎

  44. B. Romera-Paredes 等,《Mathematical Discoveries from Program Search with Large Language Models》(FunSearch),Nature,2024。 https://www.nature.com/articles/s41586-023-06924-6 ↩︎ ↩︎2

  45. DeepMind,《AlphaEvolve: A Gemini-Powered Coding Agent for Designing Advanced Algorithms》,2025。 https://deepmind.google/discover/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/ ↩︎ ↩︎2

  46. A. Karpathy,《Software 2.0》,Medium,2017。 https://karpathy.medium.com/software-2-0-a64152b37c35 ↩︎ ↩︎2

  47. A. Karpathy,《Software is Changing Again》(”Software 3.0”),YC 演讲与文集,2025。 ↩︎ ↩︎2

  48. A. Solar-Lezama,《Program Synthesis by Sketching》,MIT 博士论文,2008。 https://people.csail.mit.edu/asolar/thesis.pdf ↩︎

  49. R. Sutton,《The Bitter Lesson》,2019。 https://www.incompleteideas.net/IncIdeas/BitterLesson.html ↩︎ ↩︎2

  50. C. A. R. Hoare,《The Emperor’s Old Clothes》(图灵奖演说),Communications of the ACM 24(2),1981。 https://dl.acm.org/doi/10.1145/358549.358561 ↩︎ ↩︎2

  51. S. Barke, M. James, N. D. Stein 等,《Grounded Copilot: How Programmers Interact with Code-Generating Models》(探索/加速双模式),OOPSLA 2023。 ↩︎ ↩︎2

  52. Anthropic,《Claude Code》(命令行 coding agent),2025。 https://www.anthropic.com/claude-code ↩︎

  53. MIT Project NANDA,《The Widening Gap: The Road from AI Experiments to AI-Enabled Organizations》(”95% 试点失败”论断出处,方法存疑),2025。 ↩︎

  54. Cognition,《Devin:首个”AI 软件工程师”产品发布及其后续争议》,2024。 https://cognition.ai/blog/devin ↩︎

  55. OpenAI,《Codex》(云端 agentic coding 产品),2025。 https://openai.com/codex ↩︎

本文由作者按照 CC BY 4.0 进行授权