362 of 584

代码现在很廉价,这将改变一切

Code Is Cheap Now, And That Changes Everything

原文链接

当代码生成成本被AI逼近于零,软件开发的基础逻辑正经历深远重构。本文从Kent Beck“90%技能贬值与10%技能暴涨”的洞见切入,以150美元完成35万美元项目的真实案例,揭示代码廉价化已成当下现实。作者指出,过去基于“写代码昂贵”的估算、排期等传统惯例正在失效,取而代之的是潜在软件需求的爆发。然而,代码廉价绝不意味着质量贬值。AI犹如一把“钉枪”,谷歌DORA报告印证了一个悖论:缺乏人类验证的AI辅助反而会拖慢交付。本文沉稳地提示,在智能体时代,开发者的核心价值不再是语法细节,而是对产品愿景的把控与对代码质量的审慎验证。


Kent Beck,这位赋予我们极限编程(Extreme Programming)并普及了测试驱动开发(Test-Driven Development)的人,在2023年4月发了一条推文,本该成为每一位在世开发者的警钟:

我90%的技能刚刚归零美元。我10%的技能刚刚涨了1000倍。

两年后,在2025年11月的一期播客节目中,他详细阐述了这10%到底是什么样子:“拥有愿景,能够朝着该愿景设定里程碑,跟踪一项设计以在向前推进时维持或控制复杂度。与知道在Rust中把&符、星号和括号放在哪里相比,这些现在是具有巨大杠杆效应的技能。”

如果你一直关注,你已经知道这90%是什么了。而如果你没有,那么,这篇文章就是为你写的。

价值35万美元的周末项目

Postlight前首席执行官、科技行业最敏锐的观察者之一Paul Ford,描述了Anthropic在2025年11月向Pro计划订阅者赠送1000美元免费Claude Code额度时发生的事情。自称“相当高效的码农和糟糕的业余爱好者”的Ford,着手每天烧掉100美元,用在他文件夹里躺了十年的副项目上。

Ford能给出具体的真实数字,因为他曾做过多年的专业软件成本估算师。他确切地知道构建这些东西要花多少钱。Claude Code本身会估算项目成本,而用Ford的话来说,那些估算“准得离谱——对2022年而言。”但在2025年,人们只需输入“把这些全做完;听起来很划算”,它就会在十五分钟内完成,可能只需花50美分。

在那个周末,他将他的旧博客从他在1999年首次创建的一种自定义的、“极其晦涩、令人不安的数据格式”迁移到了一个整洁的新内容管理系统(CMS)中。他用一个新的TypeScript前端和后端构建了一个时间线可视化项目。他创建了一个OwnCast的功能克隆版。总花费:大约150美元。

Ford对这次体验的描述值得细细品味:“在Claude Code中编程就像玩电子宠物(Tamagotchi),如果一个电子宠物是一个四十人的工程和产品团队,并且它不是产生小小的数字便便,而是能部署带有类型安全API接口和React前端的数据库支持的网络应用的话。”

按2021年的市价计算,光是数据集转换就将是35万美元:一名产品经理、一名设计师、两名工程师(其中一名资深),四到六个月的设计、编码和测试,外加维护。Ford本人,在周末和晚上,用剩下的促销额度的代价就做到了。

这不是关于未来的假设性思想实验。这是现在,一个人做着过去需要一个小团队和半年时间才能完成的工作。

塑造一切的约束

代码一直很昂贵。几百行干净、经过测试的代码需要大多数开发者一整天的时间。这不是一个小细节,它是塑造了我们行业中几乎每一个习惯和制度的核心约束。

为什么我们要估算用户故事(stories)?因为开发者的时间很昂贵,必须有人为之做预算。为什么我们要在待办列表(backlogs)中排列功能的优先级?因为我们无法构建所有东西,我们需要选择哪些值得花这个成本。为什么我们要苦苦纠结于是重构这个模块还是编写那个调试接口?因为花在一件事上的时间就是没有花在另一件事上的时间。

规划。估算。功能优先级排列。代码审查。架构审查。冲刺(Sprint)规划。所有这些都是基于“编写代码是昂贵部分”这一假设的下游产物。

编程智能体(Coding agents)刚刚把那部分成本打到了地板上。

在他2025年9月的文章《编程通缩》(Programming Deflation)中,Beck探讨了当代码生产成本持续下降时会发生什么。他的结论不是我们会需要更少的程序员,而是更便宜的代码解锁了潜在需求。有数以百万计的问题没人费心去解决,因为软件解决方案的成本超过了其价值。当代码成本暴跌时,那些问题就变得值得解决了。世界上的软件总量会上升,而不是下降。

Datasette的创建者、撰写AI辅助开发文章的最有思想的实践者之一Simon Willison,在他的智能体工程模式(Agentic Engineering Patterns)指南中很好地捕捉到了这一转变。他的启发式方法极其简单:每当你的直觉说“别建那个,不值得花时间”时,无论如何都在一个异步智能体(agent)会话中发一个提示(prompt)。最坏的情况是你十分钟后去查看,发现它不值得花那些令牌(tokens)。

这种启发式方法只有在代码廉价的世界里才说得通。六个月前,这会是荒谬的。

“好代码”依然需要什么代价

在有人指责我暗示质量无关紧要之前:它很重要。事实上,比以往任何时候都重要。

Willison将“好代码”定义为:能运行的代码,我们知道它能运行的代码,解决了正确问题的代码,优雅地处理错误的代码,简单且极简的代码,受测试保护的代码,有适当文档的代码,容许未来更改的代码,并且满足相关的“-ilities”:可访问性(accessibility)、可测试性(testability)、可靠性(reliability)、安全性(security)、可维护性(maintainability)、可观测性(observability)、可扩展性(scalability)、可用性(usability)。

智能体(Agent)工具可以帮助处理列表中的大部分内容。但在确保生成的代码确实是好代码方面,开发者身上依然背负着沉重的负担。大语言模型(LLMs)的随机性(stochastic nature)意味着你不能仅仅信任输出。“随机”这个词在这里很重要:它意味着相同的输入每次都可能产生不同的输出。通过的测试并不意味着它是一个好测试。能编译的代码并不意味着它是正确的。

矛盾的是,与其他领域相比,这正是使得LLMs在编程方面如此强大的原因。我们有编译器:要么编译通过,要么不通过。我们有测试套件(test suites):要么测试通过,要么不通过。我们有类型系统、代码检查工具(linters)、静态分析。软件为我们提供了大多数其他领域所缺乏的验证工具。

但验证需要知道“正确”是什么样子。而这正是那上涨了1000倍的10%所在的地方。

谷歌2024年的DORA报告从另一个方向证实了这个悖论:75%的开发者报告说使用AI工具感觉更高效,但AI采用率每增加25%,交付速度就会下降1.5%,系统稳定性下降7.2%。同时,39%的受访者报告说对AI生成的代码几乎没有或完全没有信任。这些工具让我们感觉更快了。数据表明我们并没有,除非我们改变工作方式。更多内容将在后续章节中展开。

钉枪类比

AI是一把钉枪。在缺乏技能的人手中,它是危险的。在专业人士手中,它极大地加快了他们的速度。而最终,所有人在乎的只是那个位置有一颗钉子。

你可能会觉得这是一种简化。我会说它比你想象的要准确得多。

用户不关心你的SonarQube统计数据。他们不关心你使用的是函数式还是面向对象风格,架构是六边形还是分层,你选择的是Rust还是TypeScript。他们关心的是应用能按其宣称的那样运行,速度足够快,不会丢失他们的数据,并且在需要时可用。

当然,这里存在巨大的风险。如果你不验证进度,如果你只是让智能体生成代码而不理解它在产生什么,你最终可能会得到一团在其自身重量下沉没的垃圾(slop)。我们都读过那些恐怖故事。这就是为什么这不仅仅是关于工具。这是关于系统。

系统才是资产

看看那些因为有效而存活了很长时间的系统。留存下来的不是实现细节。留存下来的是被充分理解的行为以及对什么绝不能出错的清晰认知。

一个更具体的例子:考虑一个C2C销售市场。系统是什么?它不是语言,不是微服务(microservices),也不是部署拓扑(topology)。系统是服务级别协议(SLA):延迟、可用性。系统是数据:审计跟踪(audit trails)、账户、交易记录。系统是契约(contracts):输入什么,输出什么。系统是不变量(invariants):每个用户每件商品只能出价一次,每个用户最多在售N件商品。

如果你把所有这些都详细定义了,你可以一次又一次地重建这个系统。不同的工具,不同的架构,不同的团队,不同的智能体。而用户不会察觉。

我已经能听到反驳的声音了:瀑布模型(waterfall)向我们表明,我们显然会遗漏不变量和细节,业务在演进,我们需要不断更新这些系统定义。我不是在提倡只做一次,而且做得完美无缺。那从未奏效过,也永远不会。

但我提倡将系统定义作为首要的工程活动。如果你的代码符合契约,通过了测试,满足了服务级别协议,它是否是你自己会写的代码,这还重要吗?

这自然地过渡到了可观测性。越来越多地,我们正迈向在生产环境中调试的系统。一个具有稳定契约、强力评估、持续监控和清晰回滚路径的系统,可以安全地容忍许多更改,以更少的人工监督,在更大的规模上运行。那就是新时代的挑战。

当然,在一个各公司25年来一直试图“保持敏捷”却失败了(或者采用了SAFe(规模化敏捷框架))的行业中,这意味着在不久的将来会有很多痛苦。

思维转变

要用好 AI 智能体(AI agents),所需的技能组合结果证明是产品经理和开发团队经理的混合体。你需要知道构建什么,为什么重要,“完成”是什么样子,以及如何验证结果。你需要明确结果,而非实现。声明式开发——“这是我想要的,去想怎么做”——每次都能击败命令式微观管理。

试图微观管理智能体输出的开发者将会举步维艰。学会明确、验证和迭代的开发者将会蓬勃发展。提升了1000倍的这10%是判断、明确和验证。降为零的90%是打字。

Ford 完美捕捉了这一时刻的情感复杂性:“所有我爱的人都讨厌这东西,而所有我讨厌的人都热爱它。”这种社交摩擦是真实存在的。采用 AI 工具的开发者经常面临来自其专业社区内部的阻力。这在本质上是一场经济转变的事物上,增加了一个心理维度。

但这其实并不关乎对 AI 的热情或对 AI 的怀疑。它关乎的是工业化。它在每一个行业都一再发生,模式总是相同的:实现工业化的人会在竞争中胜过没有实现工业化的人。你可以从 Etsy 买手工陶器,也可以从商店买大批量生产的陶器。每种方案看重的东西不同。但如果你经营的是一门依赖陶器的生意,你最好了解其中的经济学。

即使在炒作周期结束之后——它一定会结束的——开源本地大语言模型(LLM)仍将存在。任何一台像样的开发者工作站都已经能运行它们,并取得不错的结果。成本曲线只会朝一个方向走。

还有一个值得提及的数字。截至2026年初,约4%的 GitHub commits 仅由 Claude Code 编写。这不是预测。这是当前状态。这个百分比只会增长。

停止为代码生产做优化。开始为系统定义做优化。

那就是现在价值所在之处。

术语表

原文 中文
AI agents AI 智能体
Ford Ford
Kent Beck Kent Beck
LLM 大语言模型
Paul Ford Paul Ford
Simon Willison Simon Willison

此文章由 AI 翻译