「做出来」意味着什么
文章摘要
Beej Jorgensen(著名的《Beej’s Guide to Network Programming》作者)写了一篇关于「制作」(making)本身的自省文章。他并不否认生成式 AI 有真实的好处,但他想诚实地表达一种深层的不适:他无法对 AI 生成的作品声称创作所有权。
他试图划一条线。对他来说算「做出来」的是:亲手写代码,即使规模很小;使用编译器、锤子这类工具——它们是自身努力的延伸,需要个人的技能和判断力。不算「做出来」的是:给 AI 写 prompt 让它生成东西,无论 prompt 写得多好;请承包商或其他人来执行自己的构想;指挥听命于自己的智能体去产出结果。核心区别在于你是在「创造」还是在「请求创造」。他说得很直接:「技巧在于有效地请别人做一件东西」——这更接近领导力或管理能力,而不是艺术创作。
他也坦承灰色地带的存在。用编译器和用 ChatGPT 确实不同,但两者都涉及把执行委托出去。他猜测区别可能与「感知到的能动性」有关:在语言中,人类看起来更像是独立的主体,而不是确定性的工具。文中他还进一步追问:我们把锤子当成自己的延伸,但不会把自己的直接下属当成延伸——那条线到底在哪里跨过去了?他认为部分原因是一对一的确定性:我拉动那根杆,挖掘机铲斗就挖起一吨土,中间没有额外的决策,而且完全可复现,所以我们甚至可以说「我挖了一吨土」。但如果中间站着一个掌握着专门知识的独立个体,情况就变了——命令机械师用 CNC 做零件的经理,不会因此成为机械师。而 LLM 开始让人感觉像那个中间的机械师。
他用自己的作品做对照:一个 177 行的西班牙语单词卡系统,全部手写,这是真实的自豪感来源;而他写 prompt 生成的科幻小说、图像和游戏代码,尽管完成了,却带不来任何成就感。文章最后他做了一个诚实但残酷的揭露:开篇那些「创意」例子全部是 AI 生成的,故意在读者心里制造认知失调。
底层主题是他的 Gen-X hacker 身份和哲学训练:他认为「制作的过程」对人的满足感是根本性的,仅仅完成并不能带来满足。AI 让你能交付,却削掉了让创造对他个人而言有意义的那部分手艺。
HN 评论精华
- layer8(最高赞):他给出了一个比作者更清晰的判据——区别在于「我能在多大程度上推理输入的变化如何影响输出的可观察行为」。当编译器产出的可执行文件表现不符合预期时,99.99% 的情况下这完全是我的责任,而且重要的是我本可以从源码预测到它;反过来,我也能通过推理源码来分析这种错误行为。而 vibe coding 出来的程序与它的 prompt 之间,完全不存在任何可比的这种关系。
- skydhash:这是「对过程的能动性」与「对结果的能动性」之别。编译器有清晰的责任边界:它会为我的程序生成正确的二进制,做不到就大声报错,但它不关心算法本身对不对——职责划分清楚,编译器把它的活做到完美,我努力做好我的。LLM 没有这样一条清晰的线:对于 prompt 里没有指定的一切,它都不够可靠。这也不同于和人协作——你跟专业画师说「画个蝙蝠侠」,你不需要去检查有没有少画脚趾、手臂数量对不对。
- dmrivers(反驳 layer8):那么一个 99.99% 可靠的 LLM 会让我们重新回到「是我做的」这个状态吗?他认为不会。「想想割草。假设我有一台全自动割草机器人,它自己完成一切。哪怕精度完美,也不是我割了草,是它割的。如果我全程坐在割草机上开,那就是我割的。哪怕我站在旁边用摇杆控制它,也还是我割的。所有权来自关于『在哪里割』的决策。」
- beej71(作者本人回复 CNC 那条线):他认为关键点是我们倾向于把锤子看成工具(自身的延伸),但不倾向于这样看待直接下属。中间那个机械师是一个持有「让事情跑起来的知识」的独立存在,而经理只给出很高层的指令、不指导怎么做,所以经理不是机械师。「LLM 现在开始有点像那个机械师了。它们不像挖掘机和编译器那样确定性,而且它们看起来像人,让事情更复杂。」
- bufbupa:不只是手艺和解题挑战的丧失,「是理解的丧失」。当你亲手做,你会对赋予它生命所需的一切细微之处产生更深的体会;当你把理解外包出去(给 agent、给承包商、随便谁),你失去的是对创造过程的细致理解。他给出一个更操作化的定义:「making」应理解为「对实现有足够的理解,以至于不依赖同一套工具你也能重现这个产出」。用这个标准去测作者自己的例子:找承包商装了前廊之后,你学到的东西够不够让你在没有承包商时重做一遍?如果不够,就不是你做的。
- skydhash(接上):除了理解,你还会失去品味和感知力。你依然能说某个东西好还是不好,但你说不出为什么。而感知力的丧失意味着你无法预判坏局面,因为你失去了对事物的觉察。「对你来说车是个开来开去的交通工具,对机械师来说它是个复杂得多的系统。出问题时你会缺少词汇去表达哪里不对,甚至一切正常时你也解释不了它是怎么工作的。」
- jddj:「我连最近让 AI 做过的东西的粗略细节都记不住。反过来,好几年前的十万行以上的代码库,我至今能在脑子里大致走一遍。」
- sevenseacat(接上):十年前和别人合作的项目,她能挑出哪部分是自己写的、哪部分是别人写的,能想起这块的坑、那块的挣扎,哪怕已经不记得具体动作了。「和 AI 两周前一起做的项目我做不到。全都糊成一团『有人写了个 prompt,代码出来了』。」
- planb(最有争议、引发 16 条回复):他不认同这种情绪。「哪怕我一行代码都没写,我依然可以为我用 LLM『做出来』的东西自豪。我不会四处炫耀自己是多好的程序员,因为我没编程;但写代码从来不是主要目标,它一直只是创造最终产品的手段。」他打比方:重新规划花园然后雇专业园艺公司施工,他依然可以在夕阳下的露台上端着冰啤酒为这个惬意环境自豪。他 vibe code 出的吉他谱编辑器有别的软件没有的功能,解决了他真实的问题;没有 AI 他绝不会做出来,因为工作、家庭和其他爱好(包括真正练吉他)之外他根本没时间。「你可以说我不该自豪,但别说我没有『做出来』它,因为如果我没创造它,它就根本不存在。」
- uncivilized(反驳):「在你的例子里你什么都没『做』。做出作品的是那些作品被用来训练 LLM 的人。做出草坪的是园艺工。我不明白怎么可能为什么都没做而自豪。」
- Zolomon:区别藏在词里——「making」和「producing」都导致某物被创造出来,但 making 更主动,producing 更偏监督。他做游戏开发时接触到 producer 这个角色后才真正体会到这一点。
- hbcdbff:「LLM 出现之后我对工作之外的副业项目彻底失去兴趣了。它已经无法给我任何东西。」这条引出了大量相反经验:
- corysama:完全相反。有工作有家庭,他很难有大块时间躲进洞里写代码,所以以前几乎不动手。现在他能在零碎的间隙里把想法落地。有些技术他根本不想了解内部(比如 web),只想要一个一次性工具,那就 vibe code 一个。
- joshstrange:他对副业的兴趣「爆炸式增长」。「重点从来不是手写每一行代码,而是解决问题、让生活变好。」他的 Home Assistant 自动化数量比以前多了一个量级——以前很少有需求值得他去忍受 YAML,现在十分钟就能把一个「蜡烛加热器定时关闭 + 推送询问是否延长」的完整方案跑起来,Claude 还主动追问要不要加上「离家自动关闭」和「检测到未设定时器时自动补上」。
- jvanderbot:他的副业发生了分化——为了学习或技术挑战而做的那些蒸发了、彻底没兴趣;而那些「我真的想拥有并使用它」的项目反而被推到了正中央,而且他很享受。
- guybedo:作为 SWE 他一直享受设计过程——好的架构、恰当的抽象、干净的代码。但那些他想了好几年、原本需要十人团队几个月的想法现在都做出来了。「代码不漂亮,过程也没有手写那么享受,但我做成了原本永远不可能做成的事。」他说自己现在感觉像个团队经理,偶尔介入推动架构改动或重写,因为架构不够好导致东西变脆。
- jvanderbot(另一条高赞提问):「用 CNC 的机械师还算机械师吗?他对金属、装配复杂度、公差的知识,就因为他不再亲手转旋钮换刀具而一笔勾销了?」下面 wpm 的回答很干脆:「算。CNC 不会自己动。但如果我跟 CNC 说『给我做个小部件』,我算机械师吗?」WillAdams 补充了行业内的区分:只按按钮、装卸料盘的岗位职称通常叫「机床操作员」,而「机械师」被期待理解进给和转速如何与刀路、材料、刀具互相作用。
- phaedrus:他想到健身圈那个经久不衰的说法——「类固醇只是个捷径」,只是让你更快到达自然也能到达的地方。但现实是类固醇能让一些人达到自然状态下无论多久都不可能达到的身体。「我觉得资深程序员用 LLM 和这个『只是更快』的说法有很多相似之处。我大概最终能自己写出我让 AI 写的大部分东西,而它在最好状态下产出的东西,你/我也无法证明我不会想到。但这真的成立吗?」
- sashank_1509:「我不喜欢看到 LLM 生成的 HN 投稿。HN 的乐趣在于看到人类的巧思付诸应用,其中大部分本来也不是成功的产品。就像我不看电脑下的国际象棋对局一样,我们应该有个简单的办法区分 AI 生成的软件和艺术,然后我可以愉快地避开它们。」
- saulpw:一条完全跑题但很受欢迎的评论——「我用 vi/vim 三十年了,居然不知道可以用 Ctrl+K 加 - 加 M 来插入长破折号。」