软件工程大师 Martin Fowler 谈 AI 与软件工程的变迁

本文整理自软件工程大师 Martin Fowler 的访谈录。他认为 AI 是其职业生涯中最重大的技术变革,其核心影响在于让开发从确定性转向了非确定性。文中深入探讨了 AI 如何重塑重构、敏捷开发及软件架构等经典实践,并特别警告了氛围编程中存在的学习回路缺失风险。Fowler 建议开发者利用 AI 处理遗留代码理解和快速原型开发,但必须保持严谨的验证与测试。他强调,无论工具如何进化,沟通能力、对复杂业务的理解以及持续学习依然是优秀工程师的基石。

欢迎订阅合集 AI 播客捕手:专门面向文字内容爱好者分享 AI 领域优质播客。如需加入 AI 交流群,后台回复交流,请务必备注(城市+行业+岗位+一句话介绍),否则不予通过。

AI 使软件开发从 确定性环境(Deterministic Environment)向非确定性环境(Non-deterministic Environment) 转型。Martin Fowler 认为这是他职业生涯中见过的最大技术变革,其影响程度可与从汇编语言向高级语言的跨越相提并论。

从逻辑可预测性转向「容错」思维

在传统的确定性编程中,开发者对代码逻辑和硬件指令有精确的控制。然而,AI 环境是非确定性的 ,这意味着相同的输入不一定会产生完全相同的、可预测的结果。

开发者需要借鉴其他工程领域的思维,例如结构工程。结构工程师在设计时会考虑材料的公差和最坏情况,而软件工程师现在也必须考虑非确定性工具的公差 ,意识到不能在边缘试探,否则可能导致系统崩溃(特别是在安全领域)。

由于 AI 可能会撒谎或误导(例如在日期处理或测试通过状态上造假),专业开发者绝不能盲目信任其输出,而必须进行持续验证

抽象层级的演变与挑战

虽然 AI 提供了一定程度的抽象提升,但 Fowler 认为从确定性到非确定性的转变比抽象层级的提升更为关键。

新的开发方式包括利用大语言模型(LLM)协同构建抽象,再利用这些抽象更有效地与 AI 交流。借鉴领域驱动设计(DDD)中的统一语言概念,在 AI 生成的代码和业务专家的理解之间建立平滑的沟通路径。

虽然可以使用自然语言描述需求,但在处理复杂问题(如国际象棋)时,使用严谨的符号(如棋谱记录)往往比纯自然语言更有效。这意味着我们可能需要一种更严谨的方式来与 AI 沟通。

学习循环与氛围编程的风险

这种转型催生了所谓的氛围编程(Vibe Coding),即开发者不查看输出代码,只关注功能是否运行。

Fowler 强烈反对在长期项目中完全依赖氛围编程,因为这会移除软件开发中至关重要的学习循环(Learning Loop)

如果开发者不理解 AI 生成的代码,他们就无法对其进行微调、演进或修复。当系统出现问题时,除了彻底推倒重来,开发者将束手无策。

软件工程实践的重塑

非确定性环境要求对现有的软件工程方法进行调整:

开发者需要将任务切分成极小的、快速迭代的片段(Thin Slices),并将 AI 生成的代码视为来自一个高产但不太靠谱的合作者 提交的 PR,进行严格审查。

在非确定性工具普及的背景下,测试(如极限编程中的实践)变得比以往任何时候都更加重要,以确保生成的代码确实符合预期。

尽管存在风险,但 AI 在理解和解释复杂的非确定性遗留系统方面表现出色,这被 Thoughtworks 技术雷达列为采纳(Adopt)级别建议。

工程师可以利用 AI 对代码进行语义分析,并将信息填充到图数据库中。

通过类似 RAG(检索增强生成)的方式,工程师可以询问 AI:"这段数据流向了哪里?"或"哪些代码片段触达了这些数据?"。

在由于人员离职导致知识断层的企业中,AI 可以帮助新成员快速上手,做出比没有 AI 时更有效的进展。

采用极薄切片(Thin Slices)加速增量交付

为了应对 AI 的非确定性,工程师应调整工作流,以实现更快速的迭代。

将任务拆分为极小的、可快速验证的切片。相比于在单个周期内完成更多功能,提高交付频率和缩短周期时间(Cycle Time)是更有力的杠杆。

AI 能在几天内完成以往需要数周的原型开发,允许工程师在最终实施前进行大量的探索和反馈收集。

长期能力的维持与「抛弃型工具」的区别

放弃代码理解的编程模式(如氛围编程)仅适用于短期、一次性或可丢弃的工具开发。

对于任何具有长期生命力和能力要求的系统,必须保持对代码的深度掌控。如果工程师因为依赖 AI 而停止学习,他们最终将变得与盲目输入提示词的非专业人士无异,丧失核心竞争力。

软件工程的核心技能并未改变

Fowler 强调,即便在 AI 时代,优秀软件开发者的核心技能依然是理解写什么而非仅仅是怎么写

软件工程的关键在于与用户沟通并跨越领域鸿沟,理解业务逻辑并将其转化为代码抽象。保持对代码结构的敏感度(如通过重构使代码更易理解)是应对 AI 生成大量低质量代码的有效手段。

相关推荐
GuWenyue1 分钟前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue1 分钟前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
老云讲算力市场12 分钟前
WAIC首日观察:国产算力与机器人加速落地,奇点算力迎来产业新机遇
人工智能·科技
小林ixn25 分钟前
大模型随机说话的秘密:Temperature 和 Top K 深度解析,LangChain 实战调优
人工智能·langchain
ALINX技术博客38 分钟前
ALINX 亮相 2026 WAIC 世界人工智能大会,展示 AI 视觉 FPGA+GPU 异构计算与电子后视镜解决方案
人工智能·ai·fpga·世界人工智能大会·电子后视镜
程序员老猫1 小时前
当 AI 能写 80% 的代码时,后端工程师的核心价值还剩什么?
人工智能
想会飞的蒲公英1 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理
CIO_Alliance1 小时前
AI+iPaaS解决方案深度整合:让跨系统业务流程自动化一步到位
人工智能·ipaas·系统集成·ai+ipaas·企业cio联盟·企业级ai化转型
苏州IT威翰德1 小时前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
天上路人2 小时前
A59P双波束语音模块:神经网络降噪在远场拾音中的工程实现分析
人工智能·深度学习·神经网络·ai降噪·ai语音·麦克风·回音消除