AI 如何改变软件工程:Martin Fowler 视角 + 实战洞见
AI 如何改变软件工程:Martin Fowler 视角 + 实战洞见
AI(尤其是 LLM)是软件工程自高级语言(从汇编到 C/Fortran)以来最大的转变。它引入了非确定性(Non-deterministic)编程,改变了从编码、理解遗留代码、重构到整体开发流程的方式。Martin Fowler(《Refactoring》作者、Thoughtworks 首席科学家)在 2025 年多次深度讨论这些话题,强调:AI 不会消灭软件工程,而是放大既有实践,并要求工程师更注重架构、测试和重构。
1. 核心转变:从确定性 → 非确定性编程
- 传统软件工程:代码是确定性的,输入相同 → 输出相同。可预测、可精确控制。
- AI 辅助工程:LLM 输出有概率性(hallucination、上下文漂移)。即使相同 prompt,也可能不同结果。
- 影响:工程师角色从“写代码”转向监督、验证、编排(Orchestration)。Fowler 比喻:把 LLM 当作“一个非常高产但不可靠的合作者”,每次输出都像审查一个可疑的 PR。
氛围编程 / Vibe Coding(氛围/感觉编程):
- 完全不看代码,只通过 prompt 描述“感觉”(vibe),让 AI 生成原型或探索性应用。
- 适用场景:快速原型、一次性工具、内部小工具(低风险)。
- 局限:生产系统危险。Fowler 认为它适合探索,但核心业务必须结合确定性技术。
2. AI 在遗留代码(Legacy Code)中的革命性作用
AI 极大降低了理解和改造老旧系统的门槛:
- 快速总结:AI 可阅读数十万行代码,解释业务逻辑、找出死代码、依赖关系。
- 生成文档与测试:自动生成测试用例、架构图,帮助团队接手遗留系统。
- 辅助重构:建议 Extract Method、引入设计模式,但不能完全自动化(可能引入隐蔽 bug)。
最佳实践(Fowler & 社区共识):
- 先写/生成测试锁定行为。
- 小步重构 + 人工 Review。
- 用 AI 理解上下文,再用 IDE 确定性重构工具执行。
3. 重构的重要性比以往更强
Fowler 反复强调:AI 生成大量“能用但质量可疑”的代码,重构成为必备技能。
- AI 加速产生代码 → 技术债积累更快。
- 重构仍是保持可维护性、可理解性的核心。
- 结合 AI + IDE(Rename、Extract Method 等)效率更高。
- 未来:AI 可建议大规模重构,但人类负责验证架构一致性。
与设计模式结合:AI 擅长识别代码坏味道并建议应用 Factory、Strategy、Decorator 等模式,但需要工程师确保符合领域模型。
4. 对敏捷开发的影响
AI 强化了敏捷的核心(迭代、反馈、响应变化):
- 更快迭代:原型更快,Sprint 内可交付更多价值。
- 持续重构:每个迭代预留时间清理 AI 生成的代码。
- TDD 进化:TDD 成为“最强 prompt 工程”——先写测试,再让 AI 实现。
- 演进式架构(Evolutionary Architecture):用 Fitness Functions + AI 持续验证架构规则。
- 团队实践:Pair Programming 可能演变为 Human-AI 协作,Retrospective 需讨论 AI 使用规范。
零利率时代(ZIRP)结束的影响:
- 2022 年后高利率环境下,VC 资金收紧,AI 成为少数热点(吸引大量投资)。
- 软件团队压力增大:更注重效率、盈利能力和可持续维护,而非盲目扩张。
- 这让重构、干净架构、AI 辅助提效变得更加关键——低质量代码的维护成本在紧缩环境下无法承受。
5. 软件架构与 AI 的新挑战与机遇
- 模块化更重要:良好模块化减少 LLM 上下文负担,提高 AI 修改准确率。
- Clean/Hexagonal/DDD 架构:AI 更容易在边界清晰的系统中工作。
- 新兴模式:Agentic 开发(多代理协作)、监督式工程(Human in the loop)。
- Fowler 建议:保持架构决策记录(ADR),用 AI 辅助审查,但人类保留最终判断。
6. 总体收益、风险与未来
收益:
- 生产力提升(尤其是 boilerplate、遗留理解、测试)。
- 降低入门门槛,资深工程师专注高价值工作(架构、业务对齐)。
- 更快响应需求,符合敏捷精神。
风险:
- 代码质量下降、维护性变差(如果过度依赖 vibe coding)。
- 训练数据污染(大量低质 AI 代码进入未来模型)。
- 过度乐观导致跳过 Review 和测试。
Fowler 的平衡观点:AI 是强大工具,但软件工程的核心原则(可理解性、可持续性、测试)依然不变,甚至更重要。结合确定性工具(IDE 重构、类型系统、自动化测试)才是制胜之道。
给你落地建议(结合你之前问的重构、敏捷、架构):
- 日常流程:Prompt → AI 生成 → 测试锁定 → IDE 重构 → Review。
- 遗留系统:先用 AI 生成架构地图和测试,再分模块重构。
- 团队:制定 AI 使用规范(什么场景用 vibe coding,什么必须人工)。
- 学习:阅读 Fowler 最新文章(如 martinfowler.com 的 Generative AI 系列)和 Pragmatic Engineer 访谈。
如果你想深入某个部分(如具体重构案例、Clean Architecture + AI 模板、DDD 在 AI 时代的应用、或某个遗留代码片段的 AI 分析),直接贴代码或指定方向,我可以给你针对性方案。
AI 正在重塑软件工程,但人 + 原则依然是核心。保持重构习惯、拥抱敏捷,你就能在变革中领先。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)