鲍勃·马丁(Uncle Bob)在2026年4月一段社交媒体视频中宣布传统编程“结束了”。他认为开发者不再逐行写代码,转而用自然语言描述需求并依靠AI生成。社区对此分裂为两派:一派认为这只是工具升级,程序员会像过去从汇编到高级语言一样自然过渡;另一派相信鲍勃说中了大趋势,但强调开发者必须保留代码审查和架构能力。这场争论的核心矛盾在于:AI生成代码的速度已经远超人类,但代码质量和可维护性依然需要人来把控。
演讲内容速览:鲍勃大叔到底说了什么
鲍勃·马丁这段视频拍摄于2026年4月中旬。视频里他穿着深色西装,坐在一张简单的灰色背景前,语调平静但带着某种笃定。他说话的方式确实像很多评论提到的马克·哈米尔配音反派时的腔调,每句话结尾都会微微上扬,给人一种不容置疑的压迫感。
鲍勃的核心论点是:传统意义上的编程已经结束了。他说的不是软件行业会消失,而是逐行手写代码这种工作方式会彻底退出历史舞台。在他看来,开发者不再需要记忆语法、调试循环或者纠结设计模式。未来的程序员只需要清晰地描述自己想要什么,AI会生成所有代码。
他说这段话时用了很多短句和重复。他不断强调“结束了”这三个字,就像在念咒语。他认为当前这一代开发者可能是最后一批手写代码的人。他提到自己写了几十年代码,见证过从汇编到C、从C到Java、从Java到Python的每次转变,但这一次完全不同。以前每次转变只是换个工具,核心技能还是写代码。现在AI连“写”这个过程都包办了。
鲍勃在视频结尾提出了一个解决方案。他说开发者应该把精力转向写测试和写需求文档。如果你能写出一份足够精确的测试用例,AI就能自动生成通过测试的代码。如果你能写出清晰的自然语言需求文档,AI就能直接产出符合规范的软件。他称这种工作方式为“测试驱动开发的终极形态”。
核心观点摘要
这场关于“Uncle Bob说编程完了”的讨论,本质是一次技术代际冲突:一边是对AI写代码能力的夸大幻想,一边是工程现实对“可维护性、确定性、长期成本”的反复打脸。结论很简单——代码生成变便宜了,但软件工程反而更贵了;写代码的人不会减少,反而要求更高了。
代码生成变廉价但问题没有消失反而被放大
现在的开发现场已经发生结构性变化,最直观的一点是“写代码”这件事的边际成本迅速下降。
评论区有人直接说,大量代码已经变成样板代码,真正的价值转移到“如何表达需求”和“如何验证结果”上。这个判断对了一半,因为代码生成变快确实像当年从汇编语言跳到高级语言。你不再需要手写底层细节,但你承担的系统复杂度却指数级上升。过去你写100行代码,现在AI帮你生成1000行,但这1000行如果结构混乱、边界不清,你未来每改一行就可能炸掉三个地方。
AI并没有消除问题,它只是把问题推迟到了后期维护阶段。有人提到AI写的代码能跑起来但非常脆弱,这句话点出了核心矛盾。能跑不代表能维护,能维护不代表能扩展,AI当前最擅长的是局部最优解,而软件工程最怕的就是局部最优。局部最优意味着每段代码单独看都很聪明,拼在一起就成了灾难。你让AI生成一个排序函数,它给你一个快速排序;你让AI生成一个用户登录模块,它给你一个完整的OAuth流程。但当你把这两个功能放在同一个系统里,它们可能会因为全局状态冲突而互相踩踏,而AI根本不会提前告诉你这些。
更麻烦的是,代码量爆炸式增长后,团队内部的沟通成本也开始飙升。以前一个人写1000行代码,另一个人能轻松看懂并修改。现在AI帮你生成10000行代码,里面充斥着各种微妙的重复逻辑、隐含依赖和冗余判断。你想改一个简单功能,结果发现AI在三个不同地方用三种不同方式实现了同一个业务规则。你改了一处,另外两处还在跑旧逻辑,系统行为变得不可预测。这就是代码生成变廉价带来的真实代价:廉价生成,昂贵维护。
非确定性成为核心风险工程体系被重新挑战
讨论中最有价值的一条批评是大型语言模型不是确定性系统,这一点很多人下意识忽略,因为他们被“看起来很聪明”的输出迷惑了。传统开发工具比如代码生成器、脚手架、编译器,本质上是确定性输入输出映射,你给同样输入永远得到同样结果。而大型语言模型是概率系统,同一个提示词在不同时间可能输出不同代码,这直接挑战了软件工程的基本假设:可重复性。你昨天让AI生成一个日期处理函数,它给你用了某个第三方库;今天再问同样问题,它可能改用内置函数。两段代码都能跑,但行为细节完全不同,你依赖的那个库版本可能已经不存在了。
这带来的问题非常现实,有人提到担忧几个月后模型理解代码的方式变了,修改就可能破坏整个系统。这不是杞人忧天,而是已经发生的真实案例。模型升级、上下文窗口变化、提示词细微差异,都会让同一段逻辑走向不同实现。你在一月份用GPT-4生成了一段支付校验代码,三月份模型更新后你让AI修改另一段无关功能,它“好心”帮你把支付校验也重构了,而且没有告诉你。结果你的支付系统在没有任何人主动修改的情况下突然开始拒绝合法交易,你花了两天时间排查才发现是模型的行为变化导致的。
所以问题不在于AI能不能写代码,而在于你是否能控制它的行为边界。没有约束的生成本质就是在生产不稳定系统。想象一下,你雇了一个程序员,他每天醒来后思维方式都会随机变化,昨天喜欢用继承,今天喜欢用组合,明天可能突然爱上全局变量。你会让他负责核心系统吗?肯定不会。但现在很多人正在用大型语言模型做这件事,而且没有加任何护栏。这就像让一个天才但精神不稳定的司机开校车,他确实能开得很快,但你永远不知道他什么时候会突然决定走一条新路。
编程没有消失只是语言从代码变成自然语言
有一条评论说得非常直白:编程只是换了一种语言,现在叫英语。这句话表面上很乐观,但如果你仔细想会发现它其实更苛刻。过去编程语言是强约束系统,你写错语法直接报错,编译器会指着你的鼻子说“这里少了个分号”。现在自然语言是弱约束系统,你表达模糊,系统照样给你一个“看起来合理”的答案。你说“写一个快速排序”,AI默认给你一个递归版本,但你忘了说你的数据量有十万条,递归深度会直接爆栈。这种“模糊正确”反而更危险,因为错误藏得更深,不会在生成时暴露,只会在生产环境半夜三点炸给你看。
这意味着开发者的核心能力发生迁移,从“写代码”转向“定义问题”。你需要更清晰地描述边界、异常、约束、性能要求,否则AI默认帮你补全的是一个平均水平的解决方案。而平均水平在工程里通常等于灾难。举个例子,你对AI说“写一个函数从数据库读取用户信息”,它大概率给你写一个简单的SELECT查询,没有连接池、没有超时控制、没有重试逻辑、没有缓存策略。在开发环境里这条查询跑得飞快,到了生产环境并发一千个请求,数据库连接直接耗尽,整个系统挂掉。你没有写错任何代码,你只是没有说清楚“在高并发下也要稳定运行”这个前提。
自然语言编程还有一个更隐蔽的坑:沟通成本的转移。以前你和同事讨论需求,大家用代码和文档沟通,虽然慢但精确。现在你用自然语言跟AI对话,看起来很快,但每次对话都是一个新的上下文。你今天对AI说“实现用户认证功能”,它给你生成了一套代码。下周你对同一个AI说“增加双因素认证”,它可能忘记之前的架构选择,用完全不同的方式实现新功能。两套代码放在一起就像把乐高积木和拼图混在一起,根本拼不成一个整体。你花了大量时间在“让AI理解已有代码”这件事上,这本质上就是新形式的编程,只是工具变了。
好代码依然稀缺AI不会自动产生工程质量
很多人误以为AI可以直接产出高质量代码,这其实是一个巨大的误解。评论区有人说得很实在:AI像一群廉价开发者,你让它写它就写,但质量取决于你怎么管。这句话非常接近现实,AI不会自发遵循架构原则,也不会主动优化可维护性。它只是在已有数据分布中找“最可能的写法”,如果训练数据里充满糟糕代码,那它输出的平均质量也不会高。你在GitHub上看到的大部分开源代码本来就质量参差不齐,AI把这些代码的平均值当成“正确答案”,结果可想而知。
软件的长期成本不在开发阶段而在维护阶段,有人提到五年周期内大部分成本来自维护。这一点在AI时代只会更严重,因为代码量暴涨但质量不稳定。你今天用AI省下的时间,可能在未来用十倍时间偿还。我见过一个真实案例,一个团队让AI生成了一整套订单管理系统,只用了两周。上线后前三个月跑得不错,第四个月需求变化,需要修改核心流程。他们发现AI生成的代码里充斥着硬编码的ID、隐式的状态转换和大量重复逻辑。改一个字段需要在十几个文件里找引用,每次修改都像拆炸弹。最终他们花了一个半月重构,比从头写还慢。
换句话说,AI生成的代码就像速冻食品,加热就能吃,但你想在里面加点新配料就难了。你自己做的饭可能第一次花了两小时,但后面每次热一下就能吃,想加个鸡蛋也方便。工程上的好代码就是这种“可修改”的代码,而不是“能跑”的代码。AI目前完全不懂什么叫可修改性,它只懂语法正确和功能正确。架构上的“可扩展性”和“可维护性”需要全局视角,需要理解业务未来可能怎么变化,需要权衡各种设计方案的长期成本。这些东西AI学不会,因为训练数据里根本没有“十年后的维护成本”这个标签。
测试评审与架构能力变成真正门槛
讨论里还有一个被忽视但极其重要的点:测试并不能替代代码质量。有开发者明确指出,测试可以发现问题但无法预防糟糕结构。这直接反驳了一些“只要写测试就够了”的极端观点。测试验证的是行为而不是结构,一个设计糟糕的系统可以轻松通过所有测试,但在扩展时彻底崩溃。想象一下,你测试了一辆车在直道上能跑,在弯道上也能跑,但这不代表它的发动机舱布线合理。等你要加一个涡轮增压器时,发现所有线路缠在一起,你只能拆掉半个引擎才能接触到螺丝。代码也是同理,糟糕的结构不会让测试失败,但会让每次修改都变成一场噩梦。
真正稀缺的能力没有变:架构设计、边界划分、抽象能力。这些能力在AI时代反而更重要,因为你需要不断“纠正”AI,而不是简单使用它。AI可以帮你写出一个数据访问层,但它不知道你的业务未来会从单租户变成多租户。AI可以帮你写一个日志模块,但它不知道你们的合规要求规定某些敏感信息绝对不能落盘。这些工程决策需要人来做,而且需要人在AI生成代码之前就做好。你不能等AI生成了十万行代码再来说“哎呀这个架构不对”,那时候改架构的成本已经高到无法承受。
可以这么理解:AI降低了入门门槛但提高了上限门槛。以前你想写一个网站,需要懂HTML、CSS、JavaScript、后端语言、数据库,门槛很高。现在你对AI说“给我一个博客系统”,十分钟就有了,入门门槛几乎为零。但你想让这个博客系统支持百万用户、秒级响应、99.99%可用性,难度比以前更高了。因为以前你从头写的时候会自然考虑这些,现在AI给你的初始版本完全没考虑这些,你需要在它生成的混乱结构上强行叠加这些能力。这就像你从一块空地开始盖房子,和你在一个已经盖歪了的房子上加盖三层,显然后者更难。
就业不会消失但分层会极端加剧
关于AI是否会减少程序员的讨论,本质是一个历史重复问题。有人用汽车替代马匹的例子类比,这个类比成立但很多人理解错了重点。技术进步确实会淘汰某些岗位,但同时会创造更多复杂岗位。问题在于这些新岗位对能力要求更高。不会使用新工具的人会被淘汰,会用的人反而更有价值。马车夫当年确实失业了,但汽车修理工、加油站服务员、交通规划师这些新职业出现了,而且收入和社会地位普遍更高。编程行业也类似,只会复制粘贴代码的人会被淘汰,但能设计系统、能理解业务、能管理AI的人会变得极其抢手。
在AI编程时代,简单增删改查开发的价值大幅下降,而系统设计、复杂问题解决、跨领域整合能力的价值大幅上升。这意味着行业不会减少人,而是重新分层。底层做重复劳动的人确实会减少,但顶层做复杂决策的人需求反而增加。因为AI让每个公司都能“生产”出大量代码,但这些代码需要有人评审、有人测试、有人整合、有人维护。你可以把AI想象成一个能无限生产半成品的工厂,但半成品变成成品需要大量熟练工人。这些工人的数量不会减少,只会增加,因为半成品的产量太大了。
一句话总结:低端岗位被压缩,高端能力被放大。这不是程序员失业的时代,这是平庸程序员失业、优秀程序员变得更贵的时代。你看那些抱怨AI抢饭碗的人,他们通常在做AI已经能做得不错的事情,比如写简单的业务逻辑、写单元测试、写配置文件。而那些在讨论“如何用AI做以前做不到的事情”的人,他们正忙得不可开交,根本没时间抱怨。现实很残酷但也很公平:AI不会替代你,但会用AI的人会。
热潮背后是典型泡沫心理
评论中有人直接说这是泡沫顶点,这个判断虽然有情绪但不完全错。当前很多人把“能跑起来”当成“工程完成”,这是典型的认知偏差。就像早期互联网一样,任何人都能做网站,但能做可持续产品的人极少。AI现在处于类似阶段,生产力爆发但质量控制体系还没跟上。你能在十分钟内让AI生成一个看起来像模像样的应用,但这个应用的数据结构可能是错的,安全漏洞可能遍地都是,性能可能一塌糊涂。你只是在浏览器里点了几下觉得“哇能跑”,这离真正可以交付的产品差了一个银河系。
更现实一点说,现在很多所谓“一个人两个月做出一年项目”的案例,本质是原型级成功而不是生产级成功。真正进入生产环境,复杂度会瞬间翻倍。你的原型只在你的电脑上跑,生产环境要应对各种网络延迟、数据库锁竞争、缓存穿透、并发冲突。你的原型只服务你自己,生产环境要服务成千上万个行为不可预测的真实用户。你的原型数据量只有几十条,生产环境可能有几亿条。这些问题的复杂度不是线性的,而是指数级的。AI目前对这类问题的处理能力基本为零,它甚至意识不到这些问题的存在。
如果你把原型能力当成工程能力,那迟早会被现实教育。现在市场上充斥着各种“我用AI一周做了以前半年才能做完的项目”的故事,但很少有人讲这些项目后来怎么样了。我可以告诉你后来怎么样了:大部分烂尾了,因为当项目稍微复杂一点,AI生成的代码就变成了不可维护的意大利面。剩下的那些项目,团队花了比从头写更多的时间来修复AI留下的各种坑。这就像你请了一群装修工,他们一天就帮你把墙刷好了,但你发现他们把油漆刷到了窗户上、地板上、甚至天花板上。你花了两周时间清理这些烂摊子,最后你后悔为什么当初不自己刷。
结论
所谓“编程完了”,结束的只是那种靠手写样板代码堆功能的时代。编程没有消失,它只是从“执行”转向“控制”。未来的开发者更像导演,而不是工人。你不再逐行写代码,但你要决定结构、审查质量、控制方向。AI是工具,但工具越强,使用者的责任越大。如果你想在这个时代站稳,有三个核心能力必须强化:表达清晰问题的能力、评估代码质量的能力、构建长期可维护系统的能力,缺一不可。
总结
AI让写代码变快,但让写好代码更难,工程能力成为核心壁垒。