我读过不少同行软件工程师对 AI 辅助编程的激烈抨击。我理解!LLM 确实有很多理由值得大量批评!

HN Vibe Coding Practices 2026-08-14T07:26:36.283539

但有时候,我觉得我们仿佛生活在完全不同的世界里。

在这篇文章里,我想回应 Senko Rašić 的帖子,标题是《“编码从来不是最难的部分”是对所有程序员的侮辱》(存档版)。我承认,这个标题相当抓人眼球,光是看到标题,我就产生了强烈的情绪反应。

在回应帖子内容之前,我想先说明一点:我完全不认同 Senko 的标题。我认为“编码从来不是最难的部分”这个说法,不仅是对软件工程的一封情书,更是在承认软件工程涵盖的远不止代码。这里有架构、工程、客户研究、UX、UI、人体工效学,而最重要的,是人。软件工程就是为真实的人解决真实的问题(好吧,有时也为其他动物!)。每一行代码的背后,都有一份餐厅订单、一位旅行者、一笔退税、一盏路灯、一次亚马逊配送、一条 GPS 路线、一首歌。在科技行业,我们解决的是技术问题。而有时候,我们确实用代码来解决它们,这当然没错。代码的重要之处不在于它看起来如何或运行起来如何,而在于它解决了什么问题。

让我失望的是,到了 2026 年,我们仍然没能就这样一个事实达成共识:一件事能否编译、能否运行,是次要的;它实际解决了什么问题,才是主要的。我感觉有些软件工程师开始学编程时,也许以为代码是一种艺术形式,以为自己可以通过 Python、C 或 Haskell 表达自我?

当然,代码是可以成为艺术的。它不总是艺术,但在像 Switch Angel 这样我深深尊敬和钦佩的艺术家手中,它就有成为艺术的潜力:

Watch on YouTube

把这些说清楚,我们正式开始。

真正的回应

如果说写代码很容易,那为什么程序员多年来一直供不应求,并且要求高薪(甚至在零利率政策(ZIRP)之前)?

你把“敲代码”和“编程”混为一谈了。我觉得用语得精确一点。敲代码不过是坐在键盘前把代码打出来而已。你也能用 HTML、XML 或 JSON 来“敲代码”,但那都不是编程语言。编程包含逻辑、系统设计、API 契约等等,这才是你拿钱的原因。你不是因为敲键盘而获得报酬,而是因为把客户需求或用户故事转成代码才获得报酬。实际上,我更愿意说:你拿钱是为了解决客户需求或用户故事,而你碰巧是程序员,所以用编程语言来解决。我更喜欢“软件工程师”这个叫法,这样“写代码的人”和“软件工程师”的区别就更清楚了。

为什么早在 AI 开始生成 5000 行的 PR(拉取请求)之前,这一行就已经充满了压力、加班和过劳?

怎么说呢,压力在生活里到处都是。随便问一个快餐店员工、亚马逊送货司机、DoorDash 骑手、飞行员、护士或律师,看他们上班有没有压力。所以行业里有压力,并不能说明软件工程本身有多难。

那为什么公司还要找“10 倍效率、忍者级、摇滚明星”式的程序员,还拿 LeetCode 题来面试?如果编代码真这么容易,随便一个刚毕业的 junior 不也能写出来吗?

可实际上,他们确实招刚毕业的 junior!整个行业里有一种模式:与其花 15 万欧元雇一位高级软件工程师,不如在生活成本低的国家招应届毕业生,用一个西方程序员的价钱包下五到十个人。这种做法涉及到的伦理问题,我以后再谈。事实是,这些外包人员的代码质量通常不怎么样,可靠性也一般,但对那些快速扩张的创业公司来说却刚刚好——因为他们需要向投资人演示一个能交互的产品原型你把「写代码」和「编程」混为一谈了。我觉得用词得精准点。写代码(Coding)只是在键盘上敲出计算机代码而已。你也能“写”HTML、XML、JSON!但这些都不是编程语言。编程包含逻辑、系统设计、API 契约,还有更多东西。这才是你拿钱办事的部分。没人付钱让你在键盘上敲字:付钱是为了让你把客户需求或用户故事(Story)转化成计算机代码。其实我更愿意说,你拿钱是为了解决客户的需求或用户故事,只不过如果你是个程序员,你恰好通过编程语言来解决而已。我更偏好「软件工程师」这个叫法,这样「写代码的」和「软件工程师」之间的区别就更清楚了。

如果写代码这么容易,为什么还会有《代码整洁之道》和《程序员修炼之道》这种厚得像门挡的书?

优秀的软件工程书籍。虽然人们对这类书偶尔会有负面评价,但我认为任何有自尊的软件工程师至少应该读一遍。你不必遵循书中的每一条建议,但两本书都能拓宽你的视野。

那为什么还有训练营,甚至整个大学的学位课程专门教这个?

世上并没有“编码”学位。你学的是软件工程、计算机工程,或者计算机科学。虽然这些学位里“计算机代码”课程占比很高,但也涉及不少电气工程、物理、数学和逻辑的内容。你看,这不只是编码,而是工程(或科学)。

如果编码很简单,那卡马克是不是只是刚好在对的时间出现在了对的地方?

是的!但卡马克同时也是一位技艺精湛的软件工程师,尤其在 3D 渲染方面造诣深厚。我不会称卡马克为“码农”。他天生对数字、数学和系统有敏锐的直觉。

如果编码很简单,为什么人们会对 AI(或任何人)复制自己的代码感到愤怒?

我不知道人们为什么愤怒。也许关乎自尊心吧。我所有的代码都是开源的。请偷走吧。我求你们了。这让我很开心。试试我的代码,用一百万种方式把它弄坏,改进它,不想回馈就算了!如果你能给我看看你用这些代码做出了什么,我会非常高兴。尽情发挥吧!我是认真的,偷走我的代码。

我的仓库在这里:https://gitlab.com/ulveon

如果编码很简单,为什么现在很多人觉得自己的身份认同和职业意义正在被剥夺?

毫无疑问,这绝对是自尊心在作祟。事实上,自尊心就是敌人,不过我跑题了。

如果编码很简单,那为什么软件有这么多的 Bug?

抱歉,但这种说法非常荒诞。写出能编译、能运行的代码并不难,编译器有时甚至会直接告诉你哪里出错、怎么修。但你可能也知道,代码能编译运行不等于它能正常工作,不等于它按你想要的方式解决了该解决的问题,也不等于它架构合理、可扩展、可维护、可读。更不等于设计得当,或开发时没受时间压力。有时候必须砍需求、走捷径,因为延迟发布软件可能让对手抢占先机。而另一些时候,是因为规划不足、团队间沟通不畅等等。

如果说决定做什么才是最难的部分,那为什么那么多产品经理看起来毫无头绪?

能坐上那些位子的人,通常都是在这家公司或另一家公司一步步爬上来的。而管理层级的晋升,靠的是另一套技能。

那为什么对他们没有严格的十轮面试?

这要看公司。

那为什么他们的工资不比开发人员高?

还是看情况。像 Google 这样的公司有 Staff 软件工程师(Staff SWE)职位,比高级软件工程师(Senior SWE)还高一级。如果产品经理的级别低于 Staff 软件工程师或首席工程师(Principal Engineer),那首席工程师的薪资自然会高于产品经理。

如果说决定做什么最难,那市场研究员、可用性专家,甚至客户成功团队,为什么在软件公司里不被当作明星?

说实话,我不太明白这个问题想问什么。大型科技公司确实在研究上投入巨额资金,包括用户体验(UX)、市场契合度和无障碍性。但是!优秀的 UX 研究员不一定能写出合适的代码。

如果实现很容易、找到需求更难,那为什么销售为了成交向客户承诺新功能时,程序员会不高兴?

销售靠向客户承诺某个功能才拿下订单,不代表:

  1. 客户真的需要并想要那个功能。

销售人员承诺的功能能在合理时间内实现。

软件开发团队没有其他更紧急的优先级需要处理。

销售人员和软件工程团队事先就这个功能达成了共识。

当然,这实际上是把软件工程师架在火上烤。如果功能实现得不好,销售人员可以把责任推给开发人员。

既然写代码很容易,那为什么不干脆做出十个变体,看看哪个能成?

我的意思是,现在有人就是这么用 AI 干的。我听说有人靠这个赚了不少钱。你想试试吗?眼红吗?我自认没法同时兼顾十个不同的项目,但你想试的话,请便。

我确实相信,和用户沟通、理解他们的体验、共情他们的处境、解决客户的问题,以及让所有利益相关方达成一致,对软件项目的成功至关重要。

我也相信,写出好代码是一门手艺,需要技巧、耐心、注重细节、经验和智慧,而且在未来依然重要。

我觉得问题在于,你是否认为仅凭代码本身就能成功。没有规划、没有设计、没有其他任何东西,就坐下来开始写。估计没人觉得这是做软件的正确方式。因为它绝对不是。

大声宣称“代码很简单”,或者反过来宣称“代码是艺术,是无法自动化的人类创造性表达”,其实都是在把头埋进沙子里。

这是在自我安慰。而你需要的不是自我安慰,是做出成绩。

或者,自我安慰也可能表现为:硬说写代码是一项只有极少数人掌握的高深黑魔法,而 AI 正在亵渎它?

查看原文