【译】与 Martin Fowler 的深度对话:人工智能如何重塑软件工程
本篇文章来自于一个播客 The Pragmatic Engineer 访谈,接近两个小时的访谈。Martin Fowler不仅仅是一个技术专家,更是一位思想领袖。他更倾向于关注“如何提高开发团队的生产力”以及“如何构建长寿命的软件系统”,而不是仅仅追逐某个特定的编程语言或框架。他的个人网站martinfowler.com,是他分享技术见解的核心阵地。
作为敏捷宣言的共同作者,以及重构和软件架构领域的领军人物,Martin Fowler 对现代软件开发实践产生了深远的影响。本文提炼了他对行业最新也是他认为最重要的变革——人工智能崛起——的精辟分析。Fowler 评估了人工智能对软件行业的实践、原则和未来发展的影响,并以一句明确的宣言概括了其重要性:“我认为这是我职业生涯中最重要的变革。”
01
根本性转变:从决定论到非决定论
尽管软件行业经历了无数次技术变革,但Martin Fowler认为,当前由人工智能驱动的转型具有独特的根本性意义。他指出,对人工智能核心本质的战略性理解对于有效应对这些变革至关重要。Martin Fowler将此比作历史上从汇编语言到高级语言的转变,这一转变使开发人员摆脱了底层硬件细节的束缚,转向了更为抽象的思维方式。早期的这种转变使程序员无需关注单个芯片的指令集,从而能够专注于逻辑而非内存寄存器的机制。
然而,Martin Fowler敏锐地指出,大型语言模型(LLM)带来的最显著变化并非仅仅是抽象程度的提升。相反,他认为其核心颠覆在于从确定性环境向非确定性环境的转变。几十年来,软件工程一直建立在这样一个基本原则之上:对于相同的输入,程序总是会产生相同的输出。LLM 打破了这种确定性,要求开发人员采用全新的思维模式和更类似于其他学科的工程思维。
Martin Fowler以他妻子作为结构工程师的工作为例,解释说土木工程等领域都遵循“容差”原则。工程师们会刻意预留安全边际,以应对现实世界中的各种变化和不确定性。他认为,软件工程现在也必须采用类似的原则来管理非确定性带来的风险。他担心,如果没有这些“容差”,尤其是在安全等关键领域,我们将会看到严重的系统故障——这相当于软件领域的桥梁坍塌。这种高层次的概念转变对每位开发人员的日常工作流程都具有直接而实际的影响。
02
人工智能时代不断演进的工作流程和新应用
向非确定性范式的根本性转变正在创造全新的工作流程并释放新的能力。这种新现实并非一成不变;它呈现出一系列机遇,从成熟且高价值的应用到更具推测性、需要格外谨慎的用途。Martin Fowler的分析揭示了一幅既有立竿见影的成功,又有双刃剑效应,以及诸多尚未解决的重大问题的图景。
成功案例:了解遗留系统
LLM(生命周期管理)最强大且经过验证的应用之一是解读复杂的遗留系统。这一用例非常有效,以至于Martin Fowler在 Thoughtworks 的同事将其列入了“采用”技术雷达的最高推荐级别。该方法包括对遗留代码库进行深度语义分析,利用分析结果填充图数据库,然后以类似 RAG的方式查询该数据库。这使得开发人员能够提出复杂的问题,例如数据在程序中流动时会发生什么,并获得精确的答案。对于被庞大且文档不完善的系统所困扰的大型企业而言,这种方法具有颠覆性意义,它为理解和现代化关键基础设施提供了一条切实可行的途径。
双刃剑:快速探索与“Vibe coding”
Martin Fowler将“Vibe coding”定义为在不仔细审查输出结果的情况下生成代码的做法,本质上是将代码实现视为一个黑盒。他认为这种方法对于特定的、界限明确的使用场景(例如一次性探索、一次性工具和快速原型开发)具有明显的价值。
然而,Martin Fowler对长期项目中“Vibe coding”的主要批评在于它切断了“学习循环”。当开发者不参与人工智能生成的代码时,他们就无法理解代码的工作原理、如何修改以及如何演进它。生成的代码通常复杂且独具特色,难以进行渐进式修改。这使得开发者在需求变更时只有一条可行的道路:“推倒重来”。这种做法为了短期速度而牺牲了长期可维护性,这是绕过管理非确定性工具所需的人类理解能力所导致的直接后果。
未知领域:个人与团队协作
如何有效地利用 LLM 进行日常高质量软件开发仍然是一个有待解决的问题。目前的最佳实践建议将 LLM 视为“不太可靠的合作者”——虽然效率很高,但不可信赖。这就要求我们以非常小的、快速的方式进行开发,并且对生成的每一段代码都进行与初级开发人员提交的拉取请求相同的严格审查。
尽管个人正在建立高效的独立工作流程,但Martin Fowler强调,一个更大的挑战仍然悬而未决:如何将人工智能融入团队环境。软件开发本质上是一项协作活动,而业界仍处于探索阶段,尚未确定团队如何在不影响质量或一致性的前提下,共同利用这些强大的、非确定性的工具。人工智能生成代码的爆炸式增长直接引出了下一个关键挑战:如何维护代码的质量和结构完整性。
03
重构的永恒必要性
重构,即在不改变代码外部行为的前提下改进代码内部结构的学科,是Martin Fowler对该领域最重要的贡献之一。随着人工智能工具即将生成数量空前、质量堪忧的代码,他认为重构这门学科不仅没有过时,反而比以往任何时候都更加重要。
Martin Fowler重申了重构的精确定义:一系列微小的、不改变原有行为的改动,最终组合起来产生显著的性能提升。这与人们常常误用“重构”一词来指代任何大规模、无结构的代码更改形成了鲜明的对比。对于功能正确但结构糟糕的 AI 生成代码而言,这种严谨的、循序渐进的方法是将非确定性过程的输出转化为可维护且高质量状态的主要机制。
尽管代码语言模型(LLM)非常重要,但它们目前在有效执行重构方面仍面临挑战。Fowler 分享了一个关于 AI 编辑器 Cursor 的生动案例:一个简单的类重命名操作,Cursor 竟然耗时一个半小时,消耗了 10% 的月度代币配额。而传统的集成开发环境(IDE)早在几十年前就已掌握这项功能,并且可以瞬间完成。这一事件凸显了一个关键的局限性:虽然 LLM 擅长生成概率性文本,但它们缺乏对代码的确定性结构理解,而这对于安全、自动化的重构至关重要。在可预见的未来,人类开发者的精湛技艺仍然是 AI 原始生成能力的必要补充。这种以人为主导的学科与支撑它的框架之间的深度联系,是现代开发的核心所在。
04
人工智能加速世界中的敏捷原则
作为敏捷宣言的共同作者之一,Martin Fowler对敏捷宣言的核心原则在人工智能加速开发的时代依然适用性提出了独到的见解。二十多年过去了,他对敏捷运动的成功感到满意。虽然他认为目前的实践往往只是最初愿景的“苍白影子”,但关键的胜利在于,如今迭代开发已“安全”可行。
人工智能并不会否定这一核心理念;相反,它有望极大地增强这一理念。福勒认为,人工智能在敏捷开发环境中的主要优势在于提高开发周期的频率。最终目标并非仅仅是在迭代周期内塞入更多功能,而是要缩短驱动学习和适应的反馈循环。他建议,理想的目标是“用一半的时间完成一半的工作”,不断缩短从构思到代码运行的时间。
这项技术的潜力令人惊叹。Martin Fowler举例说,Anthropic 公司的一位开发人员利用人工智能工具,仅用两天时间就为一个用户界面功能构建并测试了 20 个不同的交互式原型。这大大缩短了探索和反馈周期,而这在几年前是难以想象的。通过大幅缩短反馈循环,人工智能可以增强敏捷开发的本质,使团队能够以前所未有的速度学习和调整。然而,这种流程速度的提升仍然依赖于推动它的工程师的基础知识和技能。
05
关于工艺、沟通和职业规划
除了具体的工具和流程之外,软件工程的持久成功还依赖于扎实的基础技能和对这门技艺的深刻理解。在技术飞速发展的时代,Martin Fowler的建议围绕着学习、协作和掌握核心能力这三个永恒的原则展开。
技术词汇的消亡与形成
Martin Fowler反思了为什么自 2010 年代以来,正式的设计模式不再流行。他提出了几个可能的原因:人们对过度使用设计模式的反感、AWS 等供应商提供的架构良好的云构建模块的兴起,以及创业文化的代际转变。
然而,他认为模式的根本目的——为有效沟通创建共享词汇——是无法回避的。即使是那些有意摒弃正式模式的团队,也难免会创造出自己的内部术语来描述反复出现的解决方案和架构概念。因此,对一种精确、共享的语言来讨论复杂技术理念的根本需求始终存在。
给现代工程师的建议
在人工智能可以瞬间生成答案的时代,辨别信息质量的能力至关重要。Martin Fowler提出了识别可信信息来源的明确标准:
* 寻找不确定之处。那些承认自身理解局限性并以细致入微的方式表达观点的专家,往往比那些提供绝对的、“万能”答案的专家更可靠。
* 优先考虑权衡利弊。最佳资料来源会阐明影响特定选择是否合适的因素和背景。
* 关注值得信赖的实践者。他个人关注像 Birgitta Böckeler 和 Simon Willison 这样的人的工作,他们会坦诚地分享自己的实践经验。
对于初级工程师,Martin Fowler的建议很直接:使用人工智能工具进行探索,但最重要的是找到一位经验丰富的人类导师。在与人工智能交互时,Martin Fowler建议保持怀疑的态度,不断地追问“为什么”并要求提供信息来源,以此来探究其推理过程。
更广阔的格局:一个处于变革中的行业
Martin Fowler最终强调,软件开发人员最关键、最持久的技能并非纯粹的技术技能。该职业的核心在于沟通与协作,尤其是与领域专家的沟通与协作,以便深入理解需要解决的问题。这种以人为本的视角为我们解读当前科技行业的现状提供了一个至关重要的切入点。
Martin Fowler观察到一种奇特的二元现象:一方面是软件行业的“萧条”,其表现为大规模裁员和客户支出减少;另一方面则是人工智能泡沫的膨胀。他认为,导致行业低迷的主要驱动因素并非人工智能,而是零利率时代结束后的宏观经济转型,这种转型抑制了企业投资。人工智能的繁荣是另一个独立且同时发生的现象,其长期影响仍然难以预测。虽然他相信人工智能具有真正的价值,但与区块链等以往的泡沫不同,该行业必须度过一段充满不确定性的时期。在这个不断变化的环境中,开发人员的核心技能——解决问题、协作以及对用户需求的深刻理解——仍将是最宝贵的资产。
释放生产力!DevOps 架构师 Agent:打造自动化、高可靠、可观测的未来 IT 架构
2025-12-17
AI 运维的六大致命陷阱:为什么你的 LLM 落地总在“画饼”?
2025-12-16
2025-12-15
2025-12-13
2025-12-11
【实践篇】我在某AI Native系统架构设计与实现上做了一点尝试:双路径架构
2025-12-12
颠覆传统,极致闭环:探索AI赋能下的“三人行”开发组织新模式。
2025-12-10
2025-12-08
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)