开发者自述:停用AI编码一个月后的反思与教训
没有AI的一个月
一位资深开发者分享其从依赖AI编码到决定停用一个月的经历。起初他享受AI带来的速度提升,但随后陷入“Tokenmaxxing”(多任务并行)的陷阱,导致上下文切换频繁、精力耗尽。他发现AI生成的代码往往需要大量人工审查和修正,实际交付效率并未如预期倍增,反而因过度依赖而丧失对代码的控制权和理解力,甚至产生羞耻感。最终他意识到自己数月未亲手写码,决定回归传统开发方式以重拾掌控感。
几个月前,我决定不再欢迎 AI 参与我正在构建和维护的一个 FOSS 项目——LibreWeddingPlanner。并不是说它收到了很多 AI 贡献——实际上我收到的所有贡献都是翻译和功能请求——但我想避免未来的麻烦,并对 AI 持反对立场。
然而,尽管我没有在 FOSS 贡献中使用 AI,我在工作中却一直在用它。在我的工作场所,以及我许多开发者朋友的工作场所,使用 AI 来工作非常、非常普遍。带着几分羞愧,让我讲讲这段经历,以及它是如何让我变得更笨、更懒、成为一个更差的开发者的。
甜蜜的开端
一位朋友告诉我:嘿,你应该试试,你会感觉自己无比强大。一旦开始用,你就停不下来。那些过去要花你几天的任务,你几个小时就能完成。不,我们不是在说可卡因,尽管在某种程度上我认为使用 AI 是一种瘾。我开始在 vscode 中启用增强的自动补全(还是它自动启用的?),接着就是下载和使用其他代码生成模型。小时候,我记得父母说要小心学校门口给你糖果的坏人,那些不是糖果,是毒品。二十多岁时,我会开玩笑说是啊,就像他们现在免费送毒品了,嗯?好吧,到了三十多岁,我觉得他们可能真的会送。
一旦你开始使用 AI 编码代理,事情很快就会失控。起初,你让 AI 为你实现一个函数,或者为某段代码写测试。如果你长期是个 TDD 信徒,你会倾向于先让它为你写测试,这样你之后可以写代码。只不过你不再写代码了,你只是让 AI 去做,而 TDD 的一半目的(不让测试因你的实现方式而产生偏差)就没了。但你觉得自己进展太快,于是开始不在乎了。
有一天,我看到代理在为我提交的 commit 联署签名,我赶紧跑去关闭那个设置。就像,我想假装代码是我自己写的。天哪。
失去控制
如果事情到此为止还不算太糟,但大多数人的大脑不是这样运作的。如果你喜欢某样东西,而且能得到双倍,你就会要。我开始把工单的整个 Jira 描述粘贴进去,让 AI 为我实现。耶!!太强大了!!在一个对我来说相对陌生的代码库上工作,我开始失去对哪些更改真正需要完成任务的掌控。我想如果 AI——它读过项目中每一行代码——说这是需要的,那就这样吧。控制是一种幻觉。和我讨论过这件事的其他人都同意,他们并不 100% 知道自己推送到生产环境的代码到底在做什么。我打赌我们连 20% 都不知道。真他妈的吓人。
但这也没停下来。当我有一个小任务时,我把它交给 AI,大约 30 分钟后我就有了一个 PR。那 30 分钟里我在做什么?转移注意力。很快我意识到,我可以让不止一个,而是多个代理同时在多个 git worktree 中处理不同任务。全力开火!Tokenmaxxing!我通过 ACLI(命令行界面)把代理连接到 Jira,然后直接让它们“在一个单独的 worktree 中处理这个 jira 工单”。它就会开始工作。我感到狂喜。
当任务不那么小的时候,你会以为是我自己在做,对吧?才不是。我当然会让 AI 把它拆解成更小的任务,然后逐个处理。AI 随后会给我一个极具说服力的 PR,里面一堆我根本看不太懂的改动。我到底要怎么去请求对这些改动做代码审查?我的同事会怎么说?当他们(更有经验,尤其是对这个代码库更熟悉的人)问我为什么这样做或那样做时,我要怎么回答?我要怎么承认这全是 AI 干的,而我不过是个放 AI 的牧羊人?所以我强迫自己去理解代码。不是我想理解这个代码库的架构,我只是想避免那种不知道自己他妈在干什么的羞辱。
到了某个时候,我同时开着太多 AI agent,上下文的切换对我来说太吃力了。有些任务我本来 20 分钟就能轻松搞定,结果 AI agent 花了 5 分钟,而我却要花 2 天来审查。因为还有太多别的事。也许 AI 和计算机擅长上下文切换,但我不行。我精疲力竭。因为如果只是批准写得完美的 PR,那还好。但每个 PR 我都得看代码、看测试、看风格,给反馈,切换到别的事,再切回来,推送,看看有没有 PR 评论,CI 过没过,等一等,现在 linter 又报错了。你花 2 天交付的东西,本来专注做的话可能真的只要 1 小时。以我的个人经验,AI 带来的性能倍增只是一种幻觉。但挫败感和疲惫感的倍增却是板上钉钉的。
我觉得我交给 AI 的任务里,没有一个是能原样合并的。当然,提交信息和 PR 描述不是我写的(这都什么年代了,2024 吗??),是 AI 替我写的,它还确保 PR 里有一段 7 段的描述,解释它做了什么。我不再看那些描述了,就像,我告诉它要做什么,我就假设它照做了。描述是给别人看的。因为总得有个描述,对吧?AI 在听起来专业这方面他妈的太擅长了,于是你就放松了,任由它去。并不是我真的觉得代码好,而是时间一长你就被说服了,你变懒了,你变得自满了。你不再质疑,开始接受一些你以前绝不会接受的代码,只因为你说不出它哪里不好。你已经失去了控制。大多数 AI 开发者会否认这一点,但内心深处,他们知道这是真的。只是不想面对罢了。
几个月过去了,有一天我意识到自己已经好几个月没亲手写过一行代码了。我甚至都没自己提交过。无数次我在 AI agent 的聊天框里打下“commit and push”。搞。什么。鬼。如果这都不算懒,我不知道什么算。AI 也没能解决我交给它的所有任务。连一半都不到。一次又一次,我得像个保姆一样守着 AI agent 说“现在,套用这个模式”或者“在测试规格里,把测试准备单独放到一个 before 块里,断言放到另一个块里”。就像我在带一个初级工程师。别误会,我喜欢带人,我带了好多年,我觉得这对导师和学员都有好处。但我他妈不会去当一台机器的保姆,抱歉。
很多时候,我会发现 AI 写的代码质量明显下降。倒不是说它一开始有多出色,但我会有种感觉:“哥们,你以前干过这个,为什么现在又做不到了?”于是我不得不再次提示它,重新解释该怎么做。或者把它链接到一个包含我偏好的文件。好吧,我现在明白你的意思了,抱歉造成了困惑。让我重新为你做一遍。然后它又会搞出一团糟,完全不是我要求的东西。这开始让我想起 Google 降低搜索结果质量的策略,迫使用户多次搜索,从而看到多几倍的广告。如果这招对 Google 管用,为什么对 AI 就不管用呢?尤其是在 AI 公司正经历的这段财务不确定时期,你真觉得他们不会这么做吗?得了吧。他们不仅会这么做,还会做得更多。
还有些时候,我会看到某个 agent 卡了 30 分钟都没给我答案。怎么办?你觉得我会自己接手把任务做了吗?绝对不会。我拿起口头鞭子,用专横的语气要求它交出我真正要的代码!那个 AI agent 连连道歉,20 秒内就给出了它 30 分钟都没给出的东西。我看了看 token 开销,它白白花掉了 30 美元的 token。如果账单是我付的,我会气炸的。
重新掌控
一个月前,在一次对我的 PR 的代码审查中,一位同事说了类似这样的话:“你写的这个测试实际上并没有测试你在应用代码中改动的场景。”我复查了一下,他说得对。但是……它太有说服力了……我感到羞愧。因为对我这样一个用了 10 多年 TDD 的开发者来说,在这么基础的事情上栽跟头,多少有点丢人。我意识到自己已经失去了掌控,而且情况不会自己变好。我觉得光是更努力、对 AI 更挑剔、要求你花钱买来的质量,是没用的!因为不管你怎么努力,AI 最终都会说服你,让你再次变得自满。
所以我决定不再使用 AI。哪怕这会让我丢掉工作。
当你接手一个 AI 写的草稿 PR,不得不自己动手时,你会意识到自己根本不了解它在做什么。你开始质疑这个那个是否必要,最终把一切推翻重来。我感觉自己生疏了,好像很久没亲手写代码了。幸运的是,我在自己的副项目里断断续续一直在编程,所以虽然吃力明显,但还不算太糟。
我回到了 TDD,回到了只改动 5 个文件的 PR,回到了直奔主题的两行 PR 描述。我回到了理解自己在做什么的状态,回到了能自信部署的状态,回到了能从容应对详细代码审查的状态,因为我知道这些改动在做什么,我能为每一行代码给出理由。我回到了享受人类代码审查的状态(不是 AI 审查,我依然讨厌那些。更讨厌那些把 AI 审查粘贴过来假装是自己写的人类),回到了从中学习的状态。我开始询问架构决策,问为什么事情是现在这个样子。我本可以问 AI,但我更愿意问我的同事。
我重新找回了编程的乐趣。而且我没有回头。我不会假装代码行数或 PR 数量是有效的衡量标准,尤其是当 AI 可以为了在每个指标上取胜而任意冗长时。但我可以说,我每天都在推送重大变更,让 PR 被合并,并且在一天结束时把工作完成。正因如此,我不害怕被解雇。此外,我还保持着自己的大脑功能完好。
一条建议
对毒品说不。这算是个比喻,但也不完全是。第一步是意识到我们你有多么依赖 AI。一项你无法控制的技术,而且它让你的雇主(如果不是你)花费一大笔钱。你会说但我的经理期望我有高绩效,我现在怎么会表现不佳呢?我无法替你说话,但这事没发生在我身上。我不认为相比两个月前我表现不佳。如果说有什么变化,那就是我现在更清楚自己在做什么,更有能力在发生事故时做出响应(因为嘿,搞砸的代码是我写的),而且我(字面意义上的我)在代码库上工作得越多,我就成为越好的开发者。这才是你的经理应该期望你做到的。
而且当 AI 预算削减开始时,你会为他们省下一些钱——因为削减会发生的,如果还没有发生的话。
如果你像我一样是一名开发者,正是你作为开发者的经验让你得到了那份工作。如果你已经在市场上摸爬滚打了几年,你就知道你的水平取决于你职业生涯中不得不面对的问题有多难。如果你关掉大脑,放松地照看 AI,你不会变得更好。你在失去价值,因为你能交付的东西,你作为一名工程师(而不是 AI 牧羊人)的实际价值,会随着你的大脑变得自满并把控制权交给 AI 而下降。
醒来吧。勇敢一点。重新夺回控制权。
来源:Hacker News:AI 热帖 · blog.bustikiller.com