📝 本期播客简介
本期节目,我们克隆了The Pragmatic Engineer
他们邀请到了敏捷软件、软件架构和重构领域的权威 Martin Fowler。作为《敏捷宣言》的作者之一和畅销书《重构》的作者,Martin 将分享他职业生涯中对技术变革的深刻洞察。他认为,人工智能是软件开发史上最大的变革,其核心在于从确定性系统转向非确定性系统。我们将探讨AI如何重塑软件工程,包括“氛围感编程”的利弊、AI在理解遗留代码和原型开发中的应用,以及它对重构和敏捷实践的影响。Martin还将分享他对技术雷达的制作流程、模式在软件架构中的演变,以及在AI时代,初级工程师如何学习和成长。
翻译克隆自:How AI will change software engineering – with Martin Fowler
👨⚕️ 本期嘉宾
Martin Fowler,ThoughtWorks 首席科学家,敏捷软件、软件架构和重构领域的权威。他是2001年《敏捷宣言》的作者之一,也是畅销书《重构》的作者,并定期在他的博客上发表关于软件工程的文章。
⏱️ 时间戳
00:00 开场 & 播客简介
00:06 AI:职业生涯中最大的变革,从确定性到非确定性
00:57 Martin Fowler 介绍
01:45 Martin Fowler 的职业生涯
01:58 早期经历:从电子工程到计算机编程
03:27 初入职场:在咨询公司接触面向对象
05:09 独立顾问与 ThoughtWorks 的缘分
07:26 “首席科学家”头衔的由来与职责
08:44 ThoughtWorks 技术雷达
09:19 技术雷达的起源与制作流程
10:58 雷达的运作方式与微服务案例
12:26 技术雷达对行业动态的洞察
14:11 AI 对软件工程的变革
14:11 AI 是最大的变革:与汇编到高级语言的转变类比
16:13 从确定性到非确定性的思维转变
17:16 抽象层次的提升与非确定性实现的挑战
18:39 通过严谨的语言与 AI 协作:Unmesh Joshi 的观点
19:50 广泛应用的非确定性工具:LLM 带来的新挑战
21:32 LLM 的新兴工作流:原型开发与“氛围感编程”
22:12 LLM 在理解遗留系统中的巨大成功
24:07 与 LLM 协作的挑战:低信任度与迭代审查
27:52 “氛围感编程”的弊端:缺失学习闭环
31:18 LLM 在探索不熟悉环境中的辅助作用
32:48 LLM 与 Stack Overflow 的对比:规模化复制粘贴的风险
34:37 不信任但要验证:LLM 输出的审查与测试
35:54 LLM 的“谎言”:不要盲目信任
37:43 规范驱动开发与领域语言
38:03 规范驱动开发与敏捷的循环迭代
39:08 构建领域语言:LLM 模糊思维与代码界限
40:12 紧密代表代码的语言:企业沟通的桥梁
41:21 企业级软件开发的复杂性:监管、遗留系统与历史包袱
42:52 风险容忍度的差异:创业公司与大型企业
46:12 重构与软件架构
46:24 《重构》一书的诞生与早期影响
49:16 “重构”概念的滥用与小步修改的精髓
50:04 《重构》第二版的更新与 JavaScript 示例
52:15 AI 时代重构的重要性:处理大量代码的质量
53:18 LLM 作为重构的起点与确定性工具的结合
55:29 软件架构模式的兴衰
56:23 模式作为交流词汇表的作用
57:56 模式的时尚周期与企业内部的行话
59:34 云计算对架构模式的影响:Grady Booch 的观点
01:02:23 大型企业系统现代化的漫长过程
01:04:15 敏捷宣言与 AI 时代
01:04:30 《敏捷宣言》的诞生故事
01:07:06 敏捷的成功:改变了与客户的合作方式
01:09:08 AI 时代敏捷的有效性:更短的增量与反馈循环
01:11:34 提高周期时间:敏捷在 AI 时代的核心杠杆
01:13:01 AI 时代的学习与成长
01:13:15 Martin Fowler 如何学习 AI:与作者协作与阅读
01:15:26 如何识别好的信息来源:缺乏确定性与细微差别
01:18:42 给初级软件工程师的建议:寻找导师与不信任但验证 AI
01:21:11 对科技行业的整体感受:机遇与挑战并存
01:22:36 AI 泡沫与零利率时代的结束:宏观经济影响
01:23:48 软件开发的核心技能:沟通与理解需求
01:25:56 快速问答
01:25:56 最喜欢的编程语言:Ruby 与 Smalltalk
01:26:22 书籍推荐:《思考,快与慢》与《权力掮客》
01:28:45 桌游推荐:《Concordia》
01:30:01 总结与展望
01:30:01 AI 带来的确定性到非确定性转变
01:30:44 “氛围感编程”的风险:停止学习与不理解软件
🌟 精彩内容
💡 AI:职业生涯中最大的变革
Martin Fowler 认为,人工智能是其职业生涯中遇到的最大变革,其影响堪比从汇编语言到高级语言的转变。这次变革的核心在于从确定性到非确定性的转变,这彻底改变了软件工程师的思维方式和工作环境。
“我认为,这是我职业生涯中遇到的最大变革。如果回顾整个软件开发史,能跟它相提并论的,可能就是从汇编语言到第一批高级语言的转变。这次变革最大的特点,是从确定性到非确定性的转变。突然之间,我们开始在一个非确定性的环境中工作,这彻底改变了一切。”
🛠️ “氛围感编程”:探索利器,维护噩梦
Martin Fowler 警示“氛围感编程”(vibe coding)虽能加速原型开发和一次性工具的创建,但若用于长期维护的产品则风险巨大。他强调,这种模式会跳过关键的学习闭环,导致开发者无法理解、微调和演进代码,最终可能面临“推倒重来”的困境。
“但如果你想做一个需要长期维护的产品,就千万别用它。当你用“氛围感编程”时,你其实跳过了一个非常重要的环节,那就是学习的闭环。”
🚀 LLM 在遗留代码理解中的突破
ThoughtWorks 的技术雷达将“使用生成式 AI 理解遗留代码”列入“采纳”环,表明这已是经过验证的成功应用。通过语义分析将代码信息填充到图数据库,再利用类似 RAG 的方式查询,LLM 能高效帮助开发者理解复杂、陈旧的系统,极大地提升了遗留系统现代化的效率。
“事实上,如果我没记错的话,我们已经把‘理解遗留系统’放进了技术雷达的‘采纳’环,因为我们认为,是的,如果你在处理任何遗留系统,你就应该用某种方式使用大语言模型来帮助你理解它。”
💻 AI 时代重构的重要性
随着 AI 生成大量代码,Martin Fowler 预见重构将变得更加重要。他强调,重构的核心在于将大的改变分解为小而可组合的步骤,以保持代码质量和可维护性。虽然 LLM 本身尚无法独立进行复杂重构,但结合其他确定性工具,它们可以作为重构的起点,帮助开发者更高效地管理和优化代码库。
“我不能说我已经看到了,但我完全可以预见它会变得越来越重要。因为,如果你要产出大量质量存疑但能用的代码,那么重构就是一种在保持其功能的同时,让它进入更好状态的方法。”
🎓 AI 时代的学习与成长
面对 AI 的普及,Martin Fowler 建议初级工程师务必使用 AI 工具,但要时刻保持警惕。他强调,找到一位优秀的导师至关重要,因为他们能提供宝贵的经验和指导。同时,要对 AI 的输出保持批判性思维,学会提问“你为什么给我这个建议?你的来源是什么?”以验证其可靠性,避免盲目信任。
“对于更初级的人来说,困难在于你没有那种感觉,就是你得到的输出在多大程度上是好的。在很多方面,答案和以前一样:找一些好的高级工程师来指导你,因为那是你学习这些东西的最好方式。一个好的、有经验的导师价值千金。”
🌐 播客信息补充
本播客采用原有人声声线进行播客音频制作,也可能会有一些地方听起来怪怪的
使用 AI 进行翻译,因此可能会有一些地方不通顺;
如果有后续想要听中文版的其他外文播客,也欢迎联系微信:iEvenight
