Unmesh JoshiUnmesh is a Distinguished Engineer at Thoughtworks · 2026-01-21

LLM时代编程的What与How循环

摘要

三位对话者深入探讨了编程的本质,指出软件开发的核心挑战不是将需求线性转换为代码,而是构建能够适应变化的系统。文章强调了What与How的深度交织关系,揭示了认知负载管理、领域建模、场景驱动开发和TDD在构建可演进系统中的关键作用,并讨论了LLM时代如何保持这种编程实践的核心价值。

内容框架与概述

文章首先挑战了编程即需求到代码的线性转换这一常见误解,指出真正的挑战在于构建能够持续演进的系统。Martin提出了管理认知负载的两个关键要素:模块化的系统结构以及代码与现实领域的镜像对应关系。Rebecca补充说,这需要在多个抽象层级上理解领域,并通过迭代找到合适的抽象层次。

Unmesh进一步阐述了编程的核心是将真实领域映射到计算模型,这是一个持续的反馈循环而非单向转换。三位对话者一致认为,What和How并非分离的两个世界,而是在系统、类、函数等各个层面都相互交织。Rebecca强调,How的关键在于选择合适的计算模型来表示现实领域,这一选择往往决定了解决方案的结构。

文章还讨论了如何在What和How之间切换:从What到How时,机制的实现会自然显现;从How到What时,实现过程会揭示系统的真实本质。Martin提出,解决这个循环依赖的最佳方式是从具体场景出发,用它们驱动抽象的形成。Unmesh指出,TDD正是将What与How的反馈循环操作化的设计策略,通过先写测试锁定What,然后迭代How,再通过重构优化结构。

最后,Unmesh反思了LLM时代的编程实践。他发现LLM生成的代码往往缺乏稳定的抽象词汇库,倾向于过于程序化或过度复杂。他主张将LLM作为What与How循环中的翻译层,用它快速生成初版,但仍依赖人工编写和重构来塑造结构。毕竟,我们保留的代码应该是我们能够解释、测试和有信心修改的代码。

核心概念及解读

What与How循环:编程不是将需求单向转换为代码,而是持续在意图和实现之间迭代,两者相互揭示系统本质。

认知负载管理:通过模块化结构和领域镜像降低理解成本,使开发者只需关注相关部分即可做出有效修改。

场景驱动开发:从具体使用场景和测试用例出发,用它们驱动抽象设计,避免陷入抽象需求与实现机制的循环依赖。

TDD作为设计策略:测试先行锁定了接口定义,实现迭代填充细节,重构阶段让How反哺What,形成完整的设计反馈循环。


原文信息

字段内容
原文Conversation:LLMs and the what/how loop
作者Unmesh JoshiUnmesh is a Distinguished Engineer at Thoughtworks
发表日期2026-01-21

此摘要卡片由 AI 自动生成