Martin Fowler

Fragments: July 21

8.5内容质量

TL;DR · AI 摘要

代码验证成为软件开发瓶颈,LLM应用需警惕安全风险,遗留系统现代化是短期价值重点。

核心要点

  • 代码生成瓶颈已转移至验证环节,需投入更多资源进行验证工程。
  • LLM在北极环境应用导致1000亿美元损失,凸显上下文适配风险。
  • 遗留系统现代化能提供明确的短期业务价值,应优先投入。

结构提纲

按章节快速跳转。

  1. Thoughtworks报告揭示代码验证成为新瓶颈,遗留系统现代化是短期价值重点。

  2. ·LLM应用风险

    企业高层关注LLM效率提升但忽视安全风险,北极滤清器案例导致百亿美元损失。

  3. Vibe coding引发影子IT危机,需通过隔离基础设施和威胁建模控制风险。

  4. Harness engineering作为独立学科出现,需建立快速反馈传感器机制。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 软件开发未来趋势
    • 核心挑战
      • 验证工程崛起
      • LLM安全风险
    • 解决方案
      • Harness工程学科
      • 公民开发者管控
    • 价值重点
      • 遗留系统现代化

金句 / Highlights

值得收藏与分享的关键句。

#软件开发#LLM#遗留系统#代码验证#公民开发者
打开原文

碎片:7月21日

Martin Fowler:2026年7月21日

通过这篇博文,我将总结我在第二届软件开发未来峰会的笔记。但在开始之前,我需要指出Thoughtworks关于此次峰会的完整报告现已发布。报告中列出了五个主要发现:

代码生成不再是瓶颈——验证才是。"Harness工程"正在成为一门独立且可被掌控的学科。组织正面临真正的学徒制危机。高管与工程师之间的期望差距比任何技术限制都更具风险。遗留系统现代化是目前最清晰且最具说服力的短期价值来源。

一种可能的应对方法是让法务部门参与进来。他们看到LLMs表现不佳,并能认识到其中的风险。

我与会的人,无论是退修会内外的人,都认识到我们正处于某种形式的泡沫中。这类技术进步几乎总是伴随着经济泡沫,未来我们回顾这段历史时,都会摇头感叹当时泡沫的虚高。但尽管很容易看出存在泡沫,却很难判断泡沫能持续多久,以及泡沫破裂后会诞生什么。毕竟,早在1995年,人们就已清楚地认识到互联网泡沫的存在。我们乐于指出那些失败的公司(如Webvan、pets.com),但也必须承认那些幸存下来的公司(如亚马逊)。

退修会的大多数人年龄足够大,亲身经历过互联网泡沫及其破裂。但其中一位白发苍苍的参会者指出了一项有趣的差异。过去我们对未来的兴奋源于看到大量新事物的诞生,而这次则很少出现这种景象。大多数人对AI泡沫所催生的事物持谨慎态度。这可能部分源于互联网泡沫破灭后的真实情况。社交媒体无处不在,但我们是否真的认为它显著改善了我们的生活(尤其是当我们如此频繁地使用它时)?

我们经常听到关于智能代理编程能实现惊人的生产效率,但有谁注意到用它构建了大量优秀的应用?或者我们是否注意到谷歌或微软等大型AI推动者在常见应用中取得了显著改进?

这可能是董事会与工程师之间分歧的另一个因素。目前推动AI采用的主要动力是削减成本,而董事会通常对成本削减最为兴奋。随着对token成本的担忧日益增加,这种热情可能会有所降温。

人们发现LLMs在运营中很有帮助:通过可观测性工具的良好事件流,代理能更快发现异常。公民开发者应用的一个问题是,他们通常不会要求良好的可观测性,因为公民开发者不会想到要提出这种需求。代理分析事件流的能力也引发了治理问题,因为这些事件流通常包含大量敏感信息。

这强化了我在犹他州听到的观点:越来越多的人同意LLMs对运维人员的价值,帮助他们理解代码的作用。将代码与事件追踪进行交叉比对,能帮助他们协助人类找出问题发生时的情况。对于重复发生的事件,代理特别有用,因为它们可以从不同案例中汇总大量信息并呈现给人类团队。

让代理自动修复问题将我们带入下一个能力层级和关注点。当代理进行修复时,必须仔细记录所有操作。我们还需要确保向开发团队提供反馈,以便他们学习。代理本身不会学习,它们能做的最佳事情是更新上下文。

有一种感觉是,许多人高估了代理处理事件的能力。这类人认为事件解决是一个简单、线性过程。但事实很少如此,通常需要大量意外情况和适应性调整。人类擅长处理这些情况,但LLMs并不擅长。

一个由代理开发的代码的潜在问题是他们习惯于插入从未被要求的功能。一个团队花费了三天时间试图弄清楚这样一个未被请求的功能,试图找出是谁要求的,以及是否有人希望保留它。

 ❄                ❄                ❄                ❄                ❄

一组法律教授进行了一项有趣的实验,以评估大语言模型(LLM)在回答学生问题时的表现。他们创建了40个合同法问题,并要求教授们以及几个LLM提供答案。为了评估LLM的回答,他们向教授展示了答案对——一个是人类的回答,一个是LLM的回答——并询问他们更倾向于向学生提供哪种回答。

教授们对LLM的回答评分远高于同行(平均胜率=75.33%),模型的表现与最佳讲师相当。LLM的回答也很少被标记为有害(3.53%,而教授的回答为12.06%)。

这让我想起了我在最近一篇片段中提到的交互性专业知识和贡献性专业知识之间的区别。

几天前,Unmesh Joshi 在这里发表了一篇文章,讲述了他使用领域特定语言(DSL)来提高LLM使用可靠性的经验。对此的回应中,有人提到了Spender Nelson的一篇文章,其中描述了类似的体验。

这样的DSL对LLM来说有很多优势。你可以使它们非常高效地使用token,并强制实施严格的安全边界。你可以将高级LLM意图转化为大量确定性的代码,在(自定义)编译器级别上确保良好的行为和防护措施。而大型语言模型在学习和使用DSL方面表现非常出色。这或许并不令人意外;毕竟它们本身就是语言模型。通常只需少量文档即可让它们启动并运行,合理的错误信息甚至在它们出错时也能帮助它们进行纠正。

他描述了他们使用中的一些例子:一种考虑安全和授权问题的数据湖查询语言,以及一种简单的表达式语言,用于更轻松地创建安全的SQL WHERE子句。

使用DSL,尤其是外部DSL,最大的障碍之一是构建解析器和工具。LLM使这一过程变得容易得多。话虽如此,我的感觉是,真正重要的其实是支撑DSL的语义模型,而DSL只是该模型的一个投影。LLM可能会帮助我们以有趣的方式探索该模型的其他投影方式。

最近几周,我越来越频繁地注意到LLM语言的气味。这不仅仅是常见的迹象,而是一种弥漫在文字中的LLM氛围感。我注意到,读到几段后,这种感觉会引发强烈的反感,以至于我只想直接丢弃整篇文章。对于其中一些文章,我不得不捏着鼻子通读全文,但这种过程伴随着智力上的恶心感,反而模糊了内容本身,甚至增加了我想要逃避到社交媒体这种糟糕的分心行为的欲望。

我开始思考——这仅仅是我的个人反应吗?还是其他人也会因为LLM语言而产生类似的反应,从而丢弃任何触发他们LLM警报的文字?

一个表明这并非我一人所感的迹象是Jason Koebler几个月前的一篇文章,我在那时曾提到过,他在文中观察到AI如何正在破坏他的思维:

/think

人们常常误以为虚假的事物是真实的,真实的事物却是虚假的。关于“AI精神病”——这一被用来描述那些沉迷于AI而失去自我的人、缺乏科学依据的模糊诊断,已有大量讨论。但很少有人提及他人使用AI对我们的认知负荷产生的影响,以及在AI渗透一切的互联网和世界中,我们必须应对这种潜移默化影响所带来的挑战。我们的大脑每天要完成难以计数的计算:这是AI吗?我是否在意它是否是AI?为什么这听起来、看起来或读起来如此奇怪?这个人真的就是这么写的吗?这还是一个人吗?

不久前,我认为对于那些不像我一样执着于写作的人,使用AI来润色他们的文字是合理的。但现在,我反而鼓励作家们拒绝使用AI。如今,那种无处不在的大型语言模型(LLM)语气如此常见,我的感觉是,它甚至会在读者有机会理解内容之前,就让文章本身显得不值一读。我认为仅仅让LLM撰写初稿再进行修改是不够的。我不确定作家们是否能在文字中彻底消除LLM的痕迹。我甚至担心让LLM提出改进建议,因为我认为人们太容易接受LLM的建议,从而触发读者对LLM的“抗体反应”。

当然,和大多数问题一样,这同样也是一次机遇。那些能够展现独特人性声音的人将获得更多关注和可信度。但问题依然存在:我们该如何指导人们在写作中释放出真实的个性?学术和商业写作往往抑制了生动的表达,而LLM是优秀的放大器,它们会放大这种抑制。对于以英语为第二语言的人(甚至包括我许多同事的第三或第四语言),这更是巨大的挑战。对我来说,太容易忽视那些我从未真正面对过的困难。

我能给出的最直接建议是:几年前我学到的一个方法,去年也分享过——说出你的写作

一旦你有了一个初步的草稿,就大声读出来。通过这样做,你会发现一些听起来不自然的部分,并需要进行修改。

我过去一直建议人们这样做,以帮助他们摆脱生硬的写作,尤其是当他们长时间接触学术或商业写作时。但现在,我认为“说出你的写作”比以往任何时候都更加重要,这是为了对抗AI潜移默化的影响。对大多数人来说,他们的口语表达更接近真实的自我,因此通过口头表达来写作,是抵抗那些试图抹去作者个性力量的最佳方式。