软件工程大师 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 生成大量低质量代码的有效手段。

相关推荐
不会打球的摄影师不是好程序员20 小时前
dify实战-个人知识库搭建
人工智能
xixixi7777721 小时前
对 两种不同AI范式——Transformer 和 LSTM 进行解剖和对比
人工智能·深度学习·大模型·lstm·transformer·智能·前沿
lfPCB21 小时前
聚焦机器人算力散热:PCB液冷集成的工程化现实阻碍
人工智能·机器人
阿祖zu21 小时前
2025 AI 总结:技术研发的技能升维与职业路径系统重构的思考
前端·后端·ai编程
sunxunyong21 小时前
CC-Ralph实测
人工智能·自然语言处理
IT_陈寒21 小时前
Vite 5分钟性能优化实战:从3秒到300ms的冷启动提速技巧(附可复用配置)
前端·人工智能·后端
十六年开源服务商21 小时前
WordPress集成GoogleAnalytics最佳实践指南
前端·人工智能·机器学习
市象21 小时前
石头把科技摔掉了
人工智能
子午21 小时前
【2026原创】水稻植物病害识别系统~Python+深度学习+人工智能+resnet50算法+TensorFlow+图像识别
人工智能·python·深度学习
AI即插即用21 小时前
超分辨率重建(论文精读) | CVPR 2025 LSRNA:利用隐空间超分与噪声对齐,打破扩散模型生成 4K 图像的效率瓶颈
图像处理·人工智能·深度学习·计算机视觉·视觉检测·超分辨率重建