作者:Derek McBurney
这会是你公司的下一个高级程序员吗?图源:Emilipothèse
Anthropic 的 CEO 说,AI 在 3 到 6 个月内将写出 90% 的代码。他说出这种话是有很强的动机的------数字和时间线都这么惊人,这种说法很可能又是一个被炒作的噱头,在这个行业里这种现象太常见了。
但我们也知道,这个数字绝对不是零,而且已经不是零有一阵子了。谷歌说它有 25% 的代码是由 AI 写的。可以安全地说,这些数字,无论目前是多少,肯定还会继续上涨,因为 AI 的使用越来越普遍。
那如果 AI 写得越来越多,开发者是不是做得越来越少?
其实不是这么回事,有三个主要原因:
- AI 生成的代码量 ≠ 减少的开发者工作量
- AI 写了太多不必要的代码,膨胀了它的产出和被高估的价值
- 很多 AI 写的代码,原本就不是开发者要写的
我们逐条展开说说。
AI 生成的代码量 ≠ 减少的开发者工作量
有人可能会想,谷歌有 25% 的代码是 AI 写的,那是不是说 AI 构建了它 25% 的软件,开发者现在只负责 75%?
现实不是这样的。
我自己用 Github Copilot,有时候它能非常靠谱地补全我正打算写的那几行代码,我很开心,确实感觉效率提高了不少。从技术上讲,AI 写了我现在正在写的代码中一个相当大的比例。它要是被测出来写了我 50% 的代码我都不会惊讶,因为大多数是自动补全的。可我是一直在那边思考逻辑、逐行引导它的。
AI 与其说是在"写"代码,不如说是在"打字"。
当我让它帮我搞定一个棘手的问题,比如创建一个完整的类、一个页面路由、一个组件、中间件等等......这些大块功能,它的回应也确实有启发性,能帮我找到理想的解决方案。
像 Cursor 和 Windsurf 这样的编辑器,就是基于 VSCode 改出来的,围绕"提示优先写代码"的思路设计,写起功能来效率贼高。
它确实能生成不错的结果,但如果你不是在玩票,那些结果还是得经过彻底检查、多轮修改,甚至有时候得完全重写,才能真正跑通、并且整合进项目里。
所以即便最后这些代码由我这样有经验的专家(呃......是我)重构了一遍,从技术上说,AI 依然写了大部分。
AI 写了代码,我的努力仍然一丝不少。
AI 写了太多不必要的代码,膨胀了它的产出和被高估的价值
你要 AI 写代码,它就写。它会尽力实现你告诉它的任何目标。
所以你许愿的时候可得小心点。
我有一次在玩 Rive,想在网页上做一个 hover 状态的动画,就让 AI 来带我走流程。它写好了 HTML 页面,把我的导出动画文件嵌进去。然后我告诉它加上鼠标悬停的处理函数,来触发动画的 hover 状态,因为我以为那是必须的。它就加了那部分代码。
我在浏览器里跑了一下,hover 效果看起来有了,可我发现控制台里有报错。
其实 hover 的逻辑根本没生效,可 Rive 的 hover 效果还是跑出来了。怎么回事?
看起来像是问题很大,但一切运行正常,因为那段代码完全没用。
后来发现,Rive 的 hover 效果已经写在它动画的状态机里了。我是拿 AI 当拐杖用了,没去看文档(也再次证明这么做简直糟糕透了!),实际上根本不需要额外的 handler。
AI 并不会告诉你你错了。它根本不知道。它只是在努力写出你以为你想要的代码。而且,看起来还挺像那么回事儿的。
所以 AI 写的代码量一直在涨,而开发者并没少参与的另一个原因?------因为代码量本身变多了。
更多的代码被写出来了。很多根本就不该写的代码。
这不是我一个人的例子,而是宏观分析验证的普遍趋势。
GitClear 的代码分析发现,从 AI 输出里复制粘贴出来的重复代码越来越多。复制粘贴现在已经超过了"移动"。这意味着,代码没有被重构和复用,而是被重复。
这导致 AI 写的代码所占百分比更高了------对 Anthropic 来说这是个令人振奋的数据点------但这数字被人为放大了,是过度依赖 AI 输出的副作用,结果是代码越来越难维护,完全丢掉了"不要重复自己"(DRY)的原则。
很多 AI 写的代码,原本就不是开发者会写的
开发者都知道这个,但我来给其他人透露个小秘密:在生成式 AI 出现之前,开发者也不是完全"自己写"代码的。
我等你震惊完。
像 Stack Overflow 这种网站,让开发者能找到各路人提供的代码思路。Codepen 展示前端技术,还有完整代码。Shadertoy 则是 WebGL 里用的 shader 专场展示平台。还有像 Yeoman 这样的工具可以快速搭建项目,现在用 Vite 来生成模板也是一样的思路。当然,每一个 Web 框架,其实本质上也只是对 HTML、JavaScript 和 CSS 的抽象封装,目的是让开发者少写点样板代码,能更高效构建出强大的 Web 应用体验。
正如有些新手开发者盲目地用 AI 写的代码------完全信它不给它纠错------以前也有开发者直接把 Stack Overflow 上的代码复制粘贴下来,以为问题解决了,结果搞出一堆麻烦。
开发并不是看你从哪复制来的代码,而是你如何有思考地架构和组装这些代码,把它变成一个高效可运行的解决方案。一个优秀的开发者,大部分时间都花在后者上,所以不管这些代码是 AI 写的,还是从 Codepen 上借的,还是框架文档里的例子,开发者的参与都是必不可少的。
开发者是讲故事的人,代码只是他们使用的语言。
AI 只是众多工具中的一个,用来帮助开发者把故事搬上屏幕。
它的使用越来越多,是因为它够快,也够贴合需求(而 Stack Overflow 的使用率因此确实在下滑)。
但 AI 只是复述已有的方案,它不会自己创造新的东西,也缺乏人工的筛选判断。
像所有工具一样,开发者会权衡利弊,在合适的时候用它,目的是打造出真正优秀的成果。
从"AI 写代码越来越多"这个趋势中得出的最差劲的结论
现在全行业都承受着"要站在 AI 革命前沿"的巨大压力。
每家公司都想让人觉得他们能熟练掌握这项惊人的新技术,能从容应对别人都看不懂的快速变化。不管这些数据是真是假,有意义没意义,AI 写的代码百分比正在上升。
这会导致一些人因为想抢 AI 热点而做出错误决定,也会有一些人因为排斥 AI 而做出反向错误的判断。
别在你的组织里设定 AI 写代码的具体目标。
目标应该是"提高效率"。AI 只是你工具箱里可能帮你实现效率提升的一个工具而已。但我们已经知道,AI 写了多少代码,并不能衡量效率。
你能做的最糟的事,就是以为"AI 写更多代码"能帮公司省钱,减少对开发者的依赖。
正如我们看到的,如果没有仔细审查就依赖 AI 生成代码,只会导致 bloated(臃肿)的代码库,维护起来更痛苦,效率反而更低。
鼓励使用 AI,但别强制规定 AI 的"产出"。
如果开发团队选择在他们的工作流程中使用 AI,他们会找到最适合的使用方式,从而增强他们的能力。而如果你从上往下强制他们"用 AI 多产点代码",就等于无视了他们本身的能力和价值。
别以为你今天的重要技能,未来就还是一样重要。
AI 编程只会越来越普及,能带来价值,不然没人用。它降低了编程门槛,带来了全新的学习和实验方式。它就像"自动补全"的超级进化版,而有效地给它下指令,就是你解决复杂问题的另一个帮手。那些愿意随着这些工具进化自己技能的开发者,将获得最大收益。
举个例子------你靠多年经验能记住某种语言的语法,这能力可能在 Copilot 全自动补全的今天变得不那么有用了。但你如果能设计出生产级的架构,能发现性能和安全隐患,能和团队清晰沟通、协调工作,这些能力可能比以往任何时候都重要。
拥抱 AI 的长处,了解它的短板,然后顺势而变。
不管未来如何,如果你采取"极端立场"------不是觉得 AI 会替代开发者的价值,就是觉得 AI 是噱头没用------那你肯定错了。
就像大多数事情一样,真正的答案永远在中间。