ARTICLE · 1007041
AI 时代的软件工程:机遇与危机 —— 讨论笔记
讨论日期:2026-09-03主题:AI 能力与个人能力的落差 / 焦油坑与项目死水 / 人月神话 / 本质复杂度与偶然复杂度 / 行业机遇与危机
0. 缘起:原始困惑
当前 AI 能力带来的个人能力的落后:随着项目扩大,AI 已无法有效处理,连问题都说不清楚。全靠别人的经验处理已知问题,而具体的问题又是未知的问题。
这样写 demo 可以看看效果,但面对多人、面对项目级,缺乏软件工程,会逐步"改了就更错",AI 处理不过来,项目进入死水——颇有点焦油坑的感觉。
当前开发本来能力就不够,依赖 IDE ctrl+C/V 为主;更加依赖 AI 以后,连逻辑都想不清楚了。
随之而来的三个行业观察:
以前写不来自动化框架的人,现在有 AI 代写代码了——框架其实还是写不好; 成熟的 DevOps 平台,AI 写了能用,但并不好用(产品毕竟是定制化的); 大多数工程师缺乏对软件工程的尊重,没有能力用好 AI。
核心参照(人月神话):软件工程的难度不在 code,而在把人类的逻辑转化为机器的逻辑。
一、核心机制:为什么恰好是现在崩溃
1. 编译器曾经是人类逻辑的第一道强制校对
把话说清楚,过去是被逼出来的:模糊的想法落到代码里,编译器报错、运行崩溃,逻辑不通立刻有反馈。写代码这个动作本身就是"人类逻辑 → 机器逻辑"的强制形式化过程——转译的辛苦,掩盖了思维的懒惰。
AI 移除了这道强制校对。它会把你说不清的地方替你猜着补全,产出依然能跑。于是"说不清问题"不再产生即时痛苦信号——失语变得无痛,于是越来越失语。
推论:依赖越深、退化越快。"连逻辑都想不清楚"不是 AI 太强的副作用,而是 AI 取消语言→机器的反馈回路后,思维失去校准器的必然结果。
2. 生成能力与维护能力是两种相反的能力
Demo 是单点:无历史、无交互、无熵;项目是网络:有历史、有依赖、熵持续增加。 AI 擅长生成(对已知世界模式的压缩与重组);项目级工作 90% 是维护(对抗熵增)。 生成只需统计平均;维护需要因果模型——每行代码为什么存在。 当人从未建立过因果模型(代码不是他写的,甚至不是他想的),每次"修复"都是局部猜测,错误相互叠加——这就是"改了就更错"的精确机制。
推论:项目进入死水,不是代码变坏了,是系统中不再有任何一个头脑持有它的完整模型。
3. 焦油坑没有消失,只是被铺了一层壳
焦油坑(人月神话):程序 × 系统 × 产品 × 工具化,四维相乘,复杂度指数上升。AI 生成的永远是第一象限的"程序",行业要交付的是第四象限的"程序系统产品"。 软件复杂度分两种:本质复杂度(概念结构本身,无法去除)与偶然复杂度(语法、转译、平台胶水,可以去除)。 AI 把偶然复杂度清零——"人类逻辑转译为机器逻辑"成本归零。 - 剩下的全部是本质复杂度,而本质复杂度无法外包,因为它的原料是人的意图本身。
推论:人月神话的判断在 AI 时代不是过时,而是第一次以最纯粹的形式暴露:以前还能用"转译的苦劳"掩盖"思维的空洞",现在遮羞布没了。
二、危机清单
- 认知外包导致判断力萎缩。与飞行员依赖自动驾驶同理:覆盖的场景越多,手动能力退化越彻底,而事故恰好发生在自动驾驶没见过的那 0.1% 场景里。AI 的"语料场景"永远滞后于现实——项目里的未知问题正是它没见过的 0.1%,此时需要判断力,而判断力已被外包掉了。
- 概念完整性的死亡。人月神话最强调的概念:系统必须出自单一设计理念。AI 输出是语料的统计平均,多轮对话还会漂移——它是概念完整性的反面
。多人 + AI 更是众包式平庸:每个模块都合理,合起来是一个没有灵魂的系统。 - 结构性错配。项目复杂度的增长是超线性的(交互 ~n²),AI 能把握的上下文是线性的。所以"项目扩大后 AI 处理不了"不是暂时工程问题,是结构性的——除非根本改变软件形态(切碎、强契约化),这堵墙会一直存在。
- 行业信号失灵。代码量激增、演示惊艳、交付稀烂。市场还停留在用 demo 与代码量评估产出,而企业真正购买的是"长期演化的能力"。劣币驱逐良币的窗口期已到:copy-paste 工程师在 AI 包装下与真工程师看起来一样——直到第 18 个月。
- 定制产品的最后 20% 不在任何语料里。"能用但不好用"是必然:通用 AI 轻松覆盖那 80% 的通用部分——而那 80% 恰恰是产品不值钱的部分。产品价值全在最后 20% 的定制里,定制原料是客户上下文,只存在于组织内部、存在于人与系统的长期交互中。
AI 无法替你积累这种上下文,只能消费你已经积累的。
三、机遇清单
- 稀缺性转移:从"写出机器逻辑"到"澄清人类逻辑"。能把问题说清楚的人,第一次成为行业里最高杠杆的角色。需求分析、领域建模、规格化表达——这些曾被工程师鄙视的"软技能",现在是唯一无法外包的硬技能。人月神话中 architect(概念架构师)的角色不是消失,而是第一次比实现者重要。
- 小团队吃掉大项目。人月悖论的核心:加人让项目更慢,因为沟通成本超线性增长。AI 压缩了沟通需求——一个人可以写完以前需要五个人协调的代码量。前提:这一个人具备工程判断。
焦油坑的解法第一次从"组织管理"回到"个人认知"。 - 验证成为第一工程学科。生成变便宜,验证变稀缺。"改了就更错"的唯一解药是测试网络:每次修改都有安全网,错误立刻显形而非潜伏累积。测试、评审、可观测性、契约——AI 时代,工程纪律就是人机接口
。 - 行业被迫回到本质。框架化、平台化、云计算——过去二十年行业都在处理偶然复杂度,并靠这种熟练度赚钱。AI 抹平了这层,所有人回到同一起点:本质复杂度。1975 年的书在今天重新成为最 relevant 的书,这件事本身就是最强的信号。
- 对个人:补课的机会窗口。以前的短板(说不清问题、不建模型、不写测试)被转译的苦劳掩盖,现在赤裸了——但也正因为赤裸,第一次有了清晰的训练清单。AI 不是让你不写代码,是让你把写代码的时间换成练三种功夫:定义问题、建立模型、验证结果
。
四、结论
AI 没有改变软件的本质难度,只是把表象难度清零,逼所有人直面本质。行业转型:从"翻译行业"变为"定义与判断行业"。机遇属于开始训练人类逻辑的人;危机属于以为机器逻辑免费了、人类逻辑也可以免费的人。
软件工程的核心从来不是流程文档,而是三条纪律:
- 单一心智模型(概念完整性)——系统必须有人"想得全";
- 可验证性(测试网络)——每次修改都有安全网;
- 小步反馈(不依赖一次性大生成)——保持错误可见、可回退。
这三条恰好也是"让 AI 不出错地干活"的全部前提。谁先想通"AI 时代反而要更严格地遵守软件工程",谁就站在机遇一侧。
五、个人训练清单:对抗三种退化
训练对象不是"用 AI 的技巧",而是三块肌肉:定义问题(防失语)、建立模型(防失忆)、验证纪律(防失明)。设计原则:小步、刻意、留痕。每条都是"15 分钟内能完成"的最小动作,靠日 / 周 / 月节奏累积,而不是一次性大工程。
5.1 定义问题:把话说到 AI 和同事都听得懂
- 四段式开工令(每日)。每次让 AI 干活前,先自己写四行:目标(做什么)/ 输入(有什么)/ 约束(不能碰什么)/ 验收(怎么算完成)。写完再动手。三周后回看:AI 对话的返工轮次是否下降。
- 一句话复述(每日)。接到任务或读完需求,用一句话写下来。写不出 = 还没懂,先别开工。
- 三个桶分类(每日)。把当前问题分成:已知(有经验 / 文档 / 他人案例)/ 部分已知 / 未知(无参照)。AI 只处理已知与部分已知;未知问题先写"最小实验"问题单,用实验代替猜测。
- 验收标准先行(每周)。挑一件本周要做的事,先写"完成的证据"——一组可执行的检查点,再动手。
- 记录"说不清时刻"(每周)。哪次沟通 / 需求让你卡壳?卡在哪一句?积累 8 个案例后找自己的失语模式:缺术语?缺场景?缺边界?
预警信号:无法一句话说清"现在在做什么、为什么做";对话轮次越来越多 AI 才"听懂";demo 验收时才暴露理解不一致。
5.2 建立模型:脑子里装得下整个系统
- 解释优先于生成(每日)。新接手的、新生成的代码,先让 AI"讲给我听"——这段解决什么问题、为什么这么写、哪部分最脆弱;然后用自己的话复述。能复述,代码才允许进入自己的地盘。
- 手写最难处(每日原则)。每个模块中你理解最深、最关键的部分自己写,外围交给 AI。拥有感 = 模型不外包
。 - 一张现状图(每周)。每接触一个模块画一张图(结构 / 时序,mermaid 或纸笔)。画不出来的地方,就是模型缺口。
- 影响面自问(每周,每次改动前)。先回答:它现在怎么工作?改了会影响谁?不回答不动手。
- 让 AI 评审你的代码(每周)。主动把代码交给 AI review,问"哪里会坏、哪里别人看不懂"。它的盲区是面镜子:AI 看不懂的地方,往往是你模型没表达清楚的地方。
预警信号:修改前说不清影响面;AI 改坏后自己无法定位、只能继续让 AI 猜;模块依赖关系靠问 AI,而不是自己心里有数。
5.3 验证纪律:给每次修改装上安全网
- 先测试后实现(每日)。让 AI 写实现前,先有自己写(或自己审查过)的测试 / 验收脚本。没有安全网的"修",就是新的"错"。
- 生成必运行(每日)。AI 产出必须立刻跑、立刻看输出、立刻记录。拒绝"看起来对"的代码进库。
- 修复必须带复现(每周)。每条 bug 修复,先有一个能复现失败的测试 / 脚本,再动手修。这是对抗"改了就更错"最有效的一招。
- 边界与错误路径巡检(每周)。每周挑一次 AI 生成,专门查:空值、超限、异常、并发、权限——这些是统计平均最容易漏的地方。
- 补冒烟(项目关键节点)。demo 转正的第一天,先补最小冒烟用例,再谈新功能。
预警信号:改动后不敢立即运行;解决问题靠"重新生成"而不是"修复";测试数量不随功能增长。
5.4 训练节奏表
5.5 三个自检问题(任何时刻适用)
我能一句话说清现在要解决的问题吗?→ 定义 我能画出这次改动的影响范围吗?→ 模型 改完我能立刻证明它对吗?→ 验证
三者皆否 = 停手,先别让 AI 开工。
关联
[[代码整洁]] —— 代码整洁、抽象与 AI 协作(人类认知的抽象 vs AI 统计性的抽象) 人月神话(The Mythical Man-Month):焦油坑 / 人月悖论 / 概念完整性 / 本质与偶然复杂度