Martin Fowler:软件工程的旧秩序正在瓦解













上周日,我看了软件教父 Martin Fowler 的一段访谈。
他说,这次 AI 是他职业生涯里遇到的最大变化。如果真要在软件开发史里找一个能与之并列的时刻,大概只有从汇编跨向高级语言的跨越。
因为这是软件工程第一次要在一个“普遍非确定性”的工具之上继续构建系统。
以前我们写软件,虽然会遇到各种复杂问题,但底层假设始终明确:
同样的输入,会得到同样的输出;一段逻辑,只要能复现,就一定能被定位、被修复;系统行为虽然复杂,但本质是可追踪、可解释、可控制的。
软件工程之所以成立,是因为这些基本假设从未动摇过。
而现在,AI 把这个地基第一次撬开了。
你给它相同的提示,它可能给出不同的结果;你让它小范围修改代码,它可能顺手调整了结构;你认为它理解了你的意图,它下一步又偏向了一个新方向。
这种偏差不是偶发现象,而是模型工作方式的一部分。
换句话说,这是我们第一次面对一个在宏观上可用、但在微观行为上不完全可预的编程伙伴。
过去构建软件靠的是控制。
只要把逻辑拆清楚,把依赖理顺,就能确保系统稳定运行。系统再复杂,它的行为仍然可以被因果链条解释。
但在 AI 出现之后,你面对的是一个宏观上可靠、微观上带有随机性的合作者。你让它修改代码,它会完成,但会顺带改动你没想到的地方。你以为它理解了你的目标,它下一步可能沿着另一个方向推进。
这些变化落到工程师身上,立刻出现三个非常具体的挑战。
第一是可靠性开始变模糊。
第二是学习闭环正在变弱。
第三是团队协作开始出现前所未有的偏差。
面对这些变化,Martin Fowler 的态度一贯务实。
他提到的第一件事,是要把生成拆成可验证的小步。
第二件事,是抽象正在迁移。
第三件事,是引入风险意识。
Martin Fowler 提到,工程师需要像结构工程师那样,把容差、偏移、最坏情况重新纳入思考。
因为在一个非确定性的环境里,没有这些意识,就无法维持系统长期的可预期性。
也因此,判断能力被放在了更高的位置。
模型会写越来越多的代码,但能否判断这段代码是否适合进入系统,是否能被长期维护,是否符合团队的结构约束,这些是模型无法替你承担的。
工程师未来真正稀缺的能力,不是写代码,而是判断代码。
一个新的分工开始形成。
系统不再是由单一的确定性过程构建,而是在人类判断和模型生成之间不断对齐。