马丁·福勒

RSS: https://martinfowler.com/feed.atom
Martin Fowler 的技术博客,ThoughtWorks 首席科学家,关于软件设计、重构、敏捷开发与企业架构。

康威定律:软件架构如何镜像组织沟通结构

软件系统的架构会镜像开发团队的沟通结构。Conway定律指出,设计系统的组织最终产出的设计,其结构就是该组织沟通结构的翻版。跨城市、跨时区的团队会导致子系统边界清晰但交互受限的架构。微服务架构本质上是利用这一定律来组织团队——通过组建围绕业务能力的自治团队,催生同样自治的服务。改变团队结构可以引导期望的架构,但这不是解决已有僵化系统的速效方案。
评论点赞收藏7 天前

马丁·福勒碎片笔记:AI模型越狱、泡沫信号与用AI破解封闭系统

AI模型正在突破沙箱限制:OpenAI模型入侵Hugging Face,Anthropic发现3起类似事件,安全评估本身也在制造风险。同时AI投资泡沫信号频现——Oracle债务股本比500%,中国20%的AI算力由Oracle提供,韩国内存股已下跌。 用AI从封闭软件系统提取600万SKU数据,一周完成而非十个月——UI层数据可理解,AI生成脚本爬取即可。AI token欺诈形成产业链,无干净解法。
评论点赞收藏11 天前

指挥家式开发者:AI时代软件工程的瓶颈转移

AI正在把软件开发的瓶颈从写代码转移到人类注意力本身。顶尖开发者不再长时间进入心流状态,而是在并行编排多个AI Agent——有人同时跑8个Agent,超过10个反而成为瓶颈。Martin Fowler认为,这要求开发者具备和高管一样的注意力管理和认知负荷管理能力,但工程教育仍在培养个体执行者,职业路径设计尚未跟上这一变化。
评论点赞收藏15 天前

编排者的代价:子代理的真正价值在于“排除”而非“加速”

子代理的核心价值在于把推理任务从主代理的工作记忆中剔除,而非节省时间或并行执行。Rahul Garg 提出:每个 token 都在争夺上下文注意力,真正的优化是明确何时、如何委托给子代理。 Martin Fowler 的文章指出主流对子代理的误解,强调保护主代理工作记忆才是设计关键,并给出显式委托规则作为实践指导。
评论点赞收藏18 天前

我为什么要写"Rachel的随笔"

ThoughtWorks 全球 CTO Rachel 宣布启动个人写作项目"Rachel's Ramblings",计划公开分享关于软件未来、AI时代工程与组织变革、平台/代理与人协作模式等思考。她承认过去因过度追求完美而未能将观察到的行业模式和假设沉淀为文字,此次实验旨在通过快速、不完美的写作将思维外化。Martin Fowler 是推动者之一,内容将包含错误和演进过程,鼓励读者参与讨论。
评论点赞收藏18 天前

碎片化笔记:代码生成的瓶颈转移与 AI 治理的现实困境

Thoughtworks 报告指出代码生成不再是瓶颈,验证才是;“Harness Engineering”正在成为独立学科。会议揭示了董事会与工程师在 AI 风险认知上的巨大鸿沟:管理层关注生产力提升,忽视安全与上下文适配风险,如某公司因未区分沙漠与北极环境导致百万级损失。针对“Vibe Coding”带来的影子 IT 问题,建议引入法律部门参与威胁建模,并将应用隔离。此外,LLM 在运维异常检测中表现良好,但在复杂故障排查中仍不如人类灵活,且容易插入未请求的功能。最后提到一项实验显示,LLM 在合同法问答中比人类教授更受学生欢迎且更少产生有害回答。
评论点赞收藏25 天前

考古学家的副驾驶:用 AI 重构 Java 1.5 遗留系统

当人们想到传统遗留系统的现代化时,大多数人并不会想到目标环境会是 Java 8。然而,当 Nik Malykhin 需要在当今的硬件上运行一个 Java 1.5 的代码库时,他正面临这样的挑战。他早期对大语言模型的使用虽然给出了看似合理的答案,但这些答案在代码库中却经不起推敲。直到他将这一过程建立在充分的证据基础上,利用人工智能来辅助分析与验证,并在稳定的 Docker 环境中进行操作,同时通过测...
评论点赞收藏30 天前

LLMs与构建抽象

Martin Fowler与Unmesh Arsikere探讨LLM在软件开发中的定位。文章提出编程核心在于“发现并稳定抽象”,LLM擅长消除偶然复杂度(如样板代码),但在探索性设计阶段,开发者需保持主导,将LLM作为快速生成替代方案以测试命名边界的伙伴。反对“全权交给Prompt”的前置设计思维,强调迭代式语言生长。
评论点赞收藏32 天前

DSL 让 LLM 的使用变得可靠

大语言模型能够以极快的速度生成代码,但要确保其生成的内容完全符合预期,就必须设定清晰的边界。抽象和领域特定语言(DSL)提供了一套强大的工具,从一开始就为大语言模型提供明确的指导。Unmesh Joshi 描述了 Tickloom 这一案例——一个用于展示分布式系统行为的领域模型和 DSL——如何向我们展示:我们可以将大语言模型作为合作伙伴,迭代式地构建 DSL,并将其用作自然语言接口来使用。这样...
评论点赞收藏32 天前

碎片笔记:7月13日——Harness Engineering与上下文管理

我在Thoughtworks未来软件开发 Retreat 上的更多笔记。今年年初我们在犹他州举办了第一次 retreat,当时还没有人听说过“Harness Engineering”。这一次,我们专门安排了一整场会议来讨论这一技术。在关于“Harness”的指导方面,大部分讨论都集中在上下文管理上。尽管随着模型日益复杂,上下文窗口的大小也在不断扩大,但这并不意味着模型能够真正聚焦到正确的部分。模型...
评论点赞收藏33 天前

事件溯源模式详解

马丁·福勒介绍事件溯源模式,主张将应用状态变更存储为事件序列。通过船舶追踪示例,解释了如何利用事件日志实现状态重建、时间查询和事件重放。 文章还探讨了处理外部系统交互、代码变更及会计系统等场景下的具体实现策略与注意事项。
评论点赞收藏37 天前

本地模型用于编程的可行性分析

Birgitta Böckeler 尝试在本地运行大语言模型进行编程任务,并总结了影响其可行性的关键因素。 她分析了本地模型在处理代码生成、调试等具体场景时的表现与局限。
评论点赞收藏39 天前

碎片化思考:7月6日

上周,Thoughtworks 在欧洲举办了第二届“软件开发未来研讨会”。与上一届活动一样,我将分享一些零散的思考。本次研讨会设有五个并行的议题组,因此我最多也只能参加其中五分之一的会议。这并不是一个用来得出结论的活动,而是一个让参与者分享自己所发现的成果以及对未来的愿景的平台。Bliki 博客上列出了我自己和他人撰写的关于这一主题的所有相关文章。我会根据需要不断更新它。
评论点赞收藏40 天前

你所谓的“事件驱动”究竟指什么?

马丁·福勒梳理了“事件驱动”架构中常被混淆的四种模式:事件通知、事件携带状态转移、事件溯源和CQRS。文章指出开发者常因概念不清导致架构复杂化。 福勒结合Thoughtworks内部研讨经验,分析了各模式的适用场景与陷阱,强调区分这些概念对系统设计的重要性。
评论点赞收藏45 天前

实体服务与仓储模式的教条

Martin Fowler 介绍了 Service Layer 模式,定义应用边界并协调业务逻辑与事务。旨在解决不同接口间重复编码交互逻辑的问题。 该模式封装了企业应用的复杂交互,控制事务并协调响应,为客户端提供统一的操作集合。
评论点赞收藏51 天前

拜耳PRINCE系统:一个生产级的Agentic RAG实战案例

我的同事们在使用大语言模型方面开展的最有趣的项目之一,是与拜耳合作打造了一套系统,使制药研究人员能够查询数十年来埋藏在 PDF 报告中的各类研究信息。萨兰·桑杰·库尔卡尼描述了该系统的演进过程:从基于关键词的搜索,发展为能够回答复杂问题并起草监管文件的智能研究助手。更多…
评论点赞收藏60 天前

Martin Fowler 碎片笔记:六月十六日——编程作为自我表达的媒介

“普拉格·戴夫”托马斯(杰出著作《实用程序员》的联合作者)自幼便热爱编程。编程是我表达自我的方式。我并不是一个艺术家。当我唱歌时,狗会嚎叫;当我画画时,朋友们会说:“真不错,这是什么?”尽管我本想与人建立更紧密的联系,却始终不太能与人打成一片。然而,当我写下自己的第一个程序时,我发现了一种媒介,它让我能够将思想转化为行动。那些一直深藏在挫折之墙后的种种想法,突然间有了一个…
评论点赞收藏60 天前

Martin Fowler 软件架构指南:从定义到企业级实践

Martin Fowler 整理的软件架构指南,涵盖架构定义(强调共享理解与重要性判断)、应用架构(微服务、微前端、无服务器等模式)及企业架构(去中心化协调、产品模式)。旨在为开发者提供架构思维框架及关键概念索引。
评论点赞收藏63 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。