我那些怀疑人工智能的朋友都是疯子

A psychedelic landscape.
Image by 安妮-鲁伊

关于人工智能辅助编程的发自内心的挑衅。

技术主管强制要求采用 LLM。这是一个糟糕的策略。但我明白他们的想法。

我认识的一些最聪明的人骨子里都认为,人工智能是一种时尚,是下一轮 NFT 狂热的迭代。我一直不愿回击他们,因为他们比我聪明。但他们的论点并不严肃,值得正视。才华横溢的人在做法律硕士已经做得更好的工作,这是出于对法律硕士的不满。

今天,法律硕士方面的所有进展都可能停止,而法律硕士仍将是我职业生涯中发生的第二件最重要的事情。

重要说明:我仅讨论法律硕士对软件开发的影响。对于艺术、音乐和写作?我一无所知。我倾向于相信这些领域的怀疑论者。我只是不相信他们对我的怀疑。

真实身份我从 20 世纪 90 年代中期开始开发软件。一开始,我编写的是盒装、收缩包装的 C 代码。经历过不明智的 Alexandrescu C++ 阶段。使用过大量 Ruby 和 Python 工具。做过一些内核工作。大量的服务器端 C、Go 和 Rust。无论你如何定义 "严肃开发者",我都是合格的。即使只是在你们的一个低层。

电平设置

或者,上帝保佑,2 年前的 Copilot)。

首先,我们需要达成共识。如果你在 6 个月†前就尝试使用 LLM 编写代码,但却以失败告终,那么你所做的与大多数认真的 LLM 辅助编码员所做的不一样。

如今,使用 LLM 进行编码的人都会使用代理。代理可以自己在你的代码库中探查。他们直接编写文件。他们运行工具。他们编译代码、运行测试并迭代结果。他们还

  • 在其上下文窗口中调入本树或其他在线树中的任意代码、
  • 运行标准的 Unix 工具来浏览树并提取信息、
  • 与 Git 交互、
  • 运行现有的工具,如排序器、格式化器和模型检查器,以及
  • 通过 MCP 进行基本任意的工具调用(由您设置)。

真正用代码 "做事 "的代理中的代码本身并不是人工智能。这一点可以让你放心。它的系统代码简单得出奇,就像 Makefile 一样,与编程的基本原理相连接。你可以在一个周末写出一个有效的编码代理。它的优势更多在于你如何思考和构建构建、linting 和测试线束,而不是 o3 或 Sonnet 已经变得多么先进。

如果您在 ChatGPT 页面上提出申请,然后将生成的(破碎的)代码粘贴到编辑器中,那么您就没有像人工智能助推器那样做。难怪你们会互相顶嘴。

正面

four quadrants of tedium and importance

法律硕士可以编写你需要编写的所有繁琐代码中的一大部分。而大多数项目中的大部分代码都是乏味的。法律硕士可以大大减少你需要谷歌搜索的内容。他们会自己查资料。最重要的是,他们不会感到疲倦;他们对惰性具有免疫力。

想一想你想建造但没有建造的东西。你曾试图迈出第一步。如果你正处于一种新编程语言的萌芽阶段,你就会开始编写。但你没有,所以你把它搁置了,一天、一年,甚至整个职业生涯。

一想到新项目的记账、谷歌搜索和依赖性,我就觉得血压升高。法学硕士可以在指导下把这些事情都搞清楚。通常情况下,它能让你在几乎能正常工作的黄金时刻脱身,而开发意味着调整代码,并立即看到事情运转得更好。这种多巴胺刺激正是我编写代码的原因。

有一个缺点。有时需要做一些棘手的事但你又不想做。所以你会重构单元测试,用 "你在做真正的工作 "这个谎言来安慰自己。但一个 LLM 可以被告知去重构你所有的单元测试。代理可以在虚拟机中花上几个小时来处理你的测试,然后带着 PR 回来。如果你听了我的话,就会明白这一点。你会感觉更糟糕。你最终会做......真正的工作。

但你不知道代码是什么

你是一个充满活力的编码 Youtuber 吗?你看不懂代码吗?如果是的话:说得好。否则:你他妈有什么毛病?

你一直在为你的合并负责 main 。你五年前是这样。明天你也是,无论你是否使用法学硕士学位。

如果您使用 LLM 构建了人们需要依赖的东西,那么请阅读代码。事实上,你可能会做得更多。你要花上 5-10 分钟的时间,把它改回你自己的风格。LLM 有适应本地习惯用法的迹象,但我们还没到那一步。

人们抱怨 LLM 生成的代码是 "概率性的"。不,它不是。它是代码。它不是 Yacc 输出。它是可知的。LLM 可能是随机的。但 LLM 并不重要。重要的是你是否能理解结果,以及你的防护措施是否有效。

阅读别人的代码是工作的一部分。如果你无法新陈代谢法律硕士生成的枯燥重复的代码:那就是技能问题!你是如何处理人类开发人员在截止日期前提交的混乱代码的?

† (因为它的上下文窗口可以容纳 50-70kloc)

在过去的一个多月里,Gemini 2.5 一直是我的得力助手。我几乎不用编辑,它就能合并任何东西。我相信让 SOTA 模型一次性完成功能加合并是有技巧的!但我不在乎。我喜欢把代码搬来搬去,一边自嘲一边删除所有愚蠢的注释。反正我得逐行阅读代码。

而是幻觉

如果幻觉对你来说很重要,那么你的编程语言已经让你失望了。

代理会检查。他们编译并运行测试。如果他们的 LLM 发明了新的函数签名,代理就会看到错误。他们将错误反馈给 LLM,LLM 会说 "哦,对,这完全是我编造的",然后再试一次。

只有当你观察你的代理生成的思维日志链时,你才会注意到这种情况的发生。别看。这就是我喜欢 Zed 的代理模式的原因:它会请求你把选项卡移开,让它工作,并在工作完成后向你发送桌面通知。

我相信在某些环境中,幻觉仍然很重要。但当有人建议使用 LLM 时,开发人员首先提到的就是 "幻觉",尽管这(或多或少)是一个已经解决的问题。

但代码很糟糕,就像初级开发人员的代码一样

实习生的月薪是 20 美元吗?因为这就是 Cursor.ai 的成本。

作为一名资深开发人员,工作的一部分就是让那些能力较差的程序员(无论是肉体还是代数)提高工作效率。使用好代理既是一项技能,也是一项工程,包括提示、索引和(尤其是)工具。只有在你允许的情况下,LLM 才会产生低劣的代码。

同时:你应该再编写的所有 Bash 代码的 100%) †(同时:你应该再编写的所有 Bash 代码的 100%)。

也许目前的困惑在于谁在做什么工作。如今,法律硕士们做了大量的打字、Googling、测试用例†和编辑-编译-测试-调试的工作。但是,即使是世界上最 "克劳德中毒 "的严肃开发人员,也仍然拥有自己的策划、判断、指导和方向。

另外:让我们不要再自欺欺人了,我们的人类第一刀到底有多好。

但锈蚀严重

Brainfuck 也很难找到好的工具链。铝制护墙板行业的日子不好过。

他们肯定会这样做;Rust 社区非常重视工具化。

很多对法律硕士的怀疑可能并不是真的针对法律硕士。而是投射。人们说 "法学硕士不会编程",其实真正的意思是 "法学硕士不会写 Rust"。这很公平!但人们选择语言的部分原因是看 LLM 与语言的配合程度,所以 Rust 的人应该在这一点上下功夫 †。

我主要使用 Go 语言工作。我相信,Go 编程语言的设计者们并没有打算设计出业界最符合 LLM 语法的语言。但他们成功了,因为 Go 拥有足够的类型安全性、广泛的标准库以及崇尚(通常是重复的)习语的文化。LLM 在生成它时会大显身手。

我要说的就是这些:我写了一些 Rust。我很喜欢它。如果 LLM 和 Rust 不适合你,我很同情你。但如果这就是你的全部,那我们的争论就不一样了。

但工艺

您喜欢精致的日本木工吗?全手工工具和榫卯结构?我也喜欢自己的时间自己做。

与我的木工朋友们相比,我简直就是个小丑) † (与我的木工朋友们相比,我简直就是个小丑)。

我的地下室里有一个基本的木工房。我可以从制作一张桌子中获得很多满足感。如果那张桌子是工作台或烧烤桌,当然,我会去做。但如果我需要一张桌子?给人坐的?在我的办公室里?我就买张该死的桌子

专业软件开发人员的工作就是用代码为人们解决实际问题。在日常工作中,我们不是工匠。乔布斯错了:我们不需要在雕塑上雕刻看不见的脚。没有人会在意逻辑板的布线是否美观。如果我们构建的任何东西经久不衰,那也不会是因为代码库有多漂亮。

此外,实际情况并非如此。如果你花时间小心翼翼地用高尔夫球将功能分解成优美、流畅、最小化的功能表达,那么警钟就该敲响了。你在 "牦牛剃毛"。真正的工作已经耗尽了你的精力。你不是在建设:你是在自我安慰。

等等,这正是法学硕士的优势所在。法学硕士的优势就在于,他们能吃掉琐碎的事情,为你通往重要领域扫清道路,而在这些领域,你的判断力和价值观才是真正重要的。

但平庸

作为一名职业生涯中后期的编码员,我开始欣赏平庸。你应该很幸运,因为它几乎可以毫不费力地从水龙头中流出。

我们都会写一些平庸的代码。平庸的代码:往往很好。并非所有代码都同样重要。有些代码应该是平庸的。在随机单元测试中投入最大精力?你做错了。你的团队领导应该纠正你。

开发人员都喜欢对代码夸夸其谈。他们担心法学硕士会降低质量的 "上限"。也许吧。但他们也提高了 "底线"。

双子座的地板比我的高。我的代码看起来不错但没有那么彻底。LLM 的代码是重复的。但我的代码包括一些愚蠢的变形,因为我太聪明了,想把事情 DRY 起来。

而 LLM 并非在每个轴上都平庸无奇。他们几乎肯定比你拥有更多的算法技巧:弧度尝试、拓扑排序、图还原和 LDPC 码。人类将 rsync 浪漫化了(安德鲁-特里吉尔(Andrew Tridgell)曾写过一篇关于它的论文!)。对一个法学硕士来说,这可能并不比 SQL 连接有趣多少。

但我太自以为是了。没关系。如果我们只能从 LLM 中获得真正平庸的代码,那也是巨大的进步。人类要写的平庸代码少了很多。

但它永远不会成为 AGI

我才不管呢

聪明的从业者会被人工智能/VC 的炒作周期弄得焦头烂额。我不能责怪他们。但这不是争论。不管黄仁勋怎么说,事情要么成功,要么失败。

但他们会吃零食

开源也是如此。我们曾经花大价钱购买数据库。

我们这个领域的前提是把别人的工作自动化。经济学家说:"提高生产力"。你明白是什么意思吧?更少的人做同样的事情。最近和旅行社谈过吗?或者地板经纪人?还是唱片店的店员?或者暗房技术员?

一提到这个论点,倾向于自由主义的风险投资人就会高呼:点灯人、创造性破坏、新型工作。也许吧但我没有被催眠。我完全不知道,在法学硕士毕业后,我们是否会过得更好。事情可能会变得更糟。

法学硕士可能真的会取代许多软件开发人员。这可不是我们能骑的高头大马。在过去的三十年里,我们的工作和其他人一样,都在科技的火线上。我们不是东海岸的码头工人,我们无法靠一己之力阻止时代的进步。

但剽窃

人工智能对视觉艺术家的威胁是深远的,而且可能是不公平的,如果你不从事艺术工作,可能很难体会到这一点。

在我们的想象中,艺术家的工作时间都在挑战表达的极限。但一般的艺术家并不制作画廊作品。他们的作品都是根据简报制作的:为杂志封面、博物馆展示、动态图形和游戏资产制作合格的插图和构图。

法律硕士很容易--令人震惊地--通过行业质量标准。令人痛心的是,他们最擅长的事情之一就是制造人类创造性工作的勉强合格的赝品。我有家人从事视觉艺术。我不能和他们谈论法律硕士。我不怪他们。他们也许并没有错。

与此同时,软件开发人员发现代码片段似乎是从 Github 上的公共存储库中摘录下来的,于是大为光火。许可怎么办?如果你是律师,那我就不知道了。但如果你是软件开发者,你会怎么做?我请你把这种担忧塞进你的屁眼里。没有哪个行业比我们更蔑视知识产权了。

中位数开发者认为《星球大战》和 Daft Punk 是公共资源。开发者的伟大文化工程一直在反对任何可能给可盈利媒体共享网站带来不便的保护措施。当他们的政策失败时,他们就用强制手段来解决。他们建立全球规模的盗版网络,对任何试图维护电视节目新发布窗口的人嗤之以鼻。

如果你想看一个关于在 LibreWolf 上观看《荒野大镖客》有多难的 TED 演讲,那就把这些说出来吧。是的,我们知道了。你不相信 IPR。那就闭上你的鸟嘴收获旋风吧 Reap the whirlwind.

不管怎么说,这都是特殊恳求。法学硕士比你更懂代码。如果你不相信字体设计师可以对字母形式的终端和计数器提出道德诉求,那么你肯定不能对一棵红黑色的树产生占有欲。

正面案例再现

几天前开始写作时,我写了一个章节来 "平定 "LLM 辅助编程的艺术现状。蓝鱼鱼片的保质期要比 LLM 课程长。在你读这篇文章的时间里,一切都变了。

现在的孩子不仅使用代理,而且使用异步代理。他们一觉醒来,自由联想出 13 件不同的事情让他们的法律硕士去做,煮咖啡,填写 TPS 报告,开车去火星奶酪城堡,然后查看他们的通知。他们有 13 份公关报告要审核。有三份被扔掉,重新催促。其中 5 份得到了与初级开发人员相同的反馈。五条被合并。

"一位朋友告诉我:"我现在正在喝火箭燃料。"我团队里那些不接受人工智能的人呢?他们就像在原地踏步。"他不是在唬我。他不在 SFBA 工作。他没理由撒谎。

有很多事情我都不放心让法律硕士去做。在这里,没有法学硕士能接触到任何信息。但我曾作为第一响应者处理过一起事件,并提供了 4o 份(不是 o4-mini,是 4o 份)日志记录,而且在几秒钟内就发现了我们抱怨了几个月的主机上的 LVM 元数据损坏问题。我是不是比 LLM 代理更擅长查看 OpenSearch 日志和 Honeycomb 跟踪记录?不,不,我没有。

令我的许多朋友感到惊愕的是,我不是激进分子,也不是未来主义者。我是一个国家主义者。我相信复杂系统、制度和回归均值的偶然性。我写 Go 和 Python 代码。我不是一个酷爱喝酒的人。

但一些真实的事情正在发生。我最聪明的朋友都不相信也许我说服了你也许我说服不了你们。但我们不能再为错误的论点留有余地了。

但我已经听腻了

在此,我重新加入你们的行列。我读西蒙-威里森的文章,这就是我真正需要的。但是,HN 头版每天都有相当大的篇幅是关于法学硕士的:增量模型更新、初创公司用法学硕士做事情、法学硕士教程、反对法学硕士的文章。这很烦人!

但是,人工智能也是令人难以置信的--我慎用这个词--重要的。它受到的关注与 2008 年智能手机受到的关注一样多,而互联网受到的关注则要少得多。这似乎差不多。

我认为这一点在明年会变得更加清晰。那些关于 "随机鹦鹉 "和 "振动编码 "的酷小子傲慢无礼的态度,在与现实的更多接触中是无法生存的。我是在讽刺这些人,但我说的是真心话:他们比我聪明。一旦他们克服了这种自以为是,他们将使编码代理比现在更加有效。