代码现在很廉价,这将改变一切
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 翻译