随笔·阅读约 1 分钟·
“代码从来不是最难的部分”,这句话为什么惹恼了程序员

“代码从来不是最难的部分”,这句话为什么惹恼了程序员

AI 时代流行一种说法:“LLM 写代码很行,但软件从来不是难在写代码。”资深开发者 Senko Rašić 逐条拆穿这个观点:如果写代码真的容易,为什么行业里充满加班、压力和 bug?

原文来源:Senko Rašić — “LLM 擅长写代码,但软件从来不是难在写代码”是对所有程序员的一种冒犯,作者用一连串反诘拆解了这个流行说法。

AI 浪潮卷到软件开发行业,有一种说法越来越流行:"LLM 确实很会写代码,但软件从来不是难在写代码""写代码很容易,难的是搞清楚要写什么"。说这话的人往往带着一种洞悉行业的优越感,仿佛程序员们多年来的挣扎只是个误会。

Senko Rašić,一位经历过 PHP4 时代、用过 mysql_real_escape_string()、靠 valgrind 排查内存错误的老程序员,在这篇文章里火力全开地回应了这句话。他的结论很直接:这是对所有程序员的冒犯。

如果写代码真的容易……

他用的论证方式很朴素:一连串反问。

如果写代码容易,为什么程序员多年以来供不应求、拿着高薪(哪怕在零利率时代之前)?为什么在 AI 还没批量产出 5000 行 PR 的年代,行业里就有那么多压力、过度工作和 burnout?如果写代码容易,为什么公司要找"10x 忍者"程序员、用 leetcode 面试筛人——如果这活儿真的简单,应届生随便写写不就行了?

如果写代码容易,为什么会有《Clean Code》《程序员修炼之道》这种大部头?为什么《计算机程序设计艺术》不是一本轻松读物?为什么有 bootcamp、有整个大学学位专门教这个?

如果写代码容易,Carmack 只是运气好吗?为什么我们觉得 Fabrice Bellard 是天才?

如果写代码容易,为什么人们会为别人抄袭自己的代码而愤怒?他们为什么表现得像把汗水、灵魂和大把时间投入了一件微不足道的事情?

如果写代码容易,为什么这么多程序员现在感到自己的身份和职业意义正在被剥夺?

如果写代码容易,为什么软件还是这么 buggy?

—— 广告 ——

如果"决定做什么"才是难点……

顺着对方的逻辑再往下推,更尴尬的问题出现了。

如果决定做什么才是难点,为什么那么多产品经理看起来稀里糊涂?为什么没有 10 步流程的面试来筛产品经理?为什么他们工资不比开发者高?

如果决定做什么才是难点,为什么市场研究员、可用性专家、客户成功人员没有被当作软件公司的明星?如果说"理解客户"更难,为什么业务分析师被当成文书员?

如果实现容易、发现需求更难,那程序员为什么会对销售为了成交向客户承诺新功能而恼火?销售明明发现了真正的需求、找到了愿意付钱的人!

如果写代码容易,为什么没有人干脆做十个变体看看哪个能成?

这一连串反诘的潜台词是:"难"和"重要"不是一回事,而这句话恰恰把程序员多年积累的专业技能说成了一文不值。 说"代码不是难点"的人,往往也不是那个写了多年代码的人。

"没有中位数程序员"

另一个流行话术是:"软件开发的大部分工作是和干系人沟通、理解客户需求、明确优先级。"作者直言:他职业生涯里见过很多程序员,几乎没有几个人想和干系人沟通,更别说客户了(自由职业者和创始人例外)。所谓"明确优先级",翻译过来就是"告诉我做什么,别两天变一次"。

有些程序员确实会说"我不写代码,我解决客户的问题"——但转身就开始讨论 monad、内存安全和 DRY 原则,他们对客户的理解来自一个虚构的"用户画像",甚至以为"affordance"(可供性)是父母周末给的零花钱。

作者承认确实有人既深爱代码工艺、又能共情客户——但他打趣说,这种人可能需要去看看"人格分裂"专科。

什么才重要

他不是要否定沟通和需求理解的重要性。恰恰相反:和用户交谈、理解他们的体验、共情、解决客户问题、让所有干系人达成一致,对软件项目的成功至关重要。 同时,写出好代码也是一门需要技巧、耐心、细致、经验和智慧的工艺,而且这门工艺在未来依然有用。

为什么非要二选一?两个都要——深入理解要构建的系统,同时深入理解为什么要构建它。

他反对的只是两种极端:"代码很容易"和"代码是艺术,是机器无法自动化的创造性人类表达"。在他看来,这两种说法都是把头埋进沙子里,都是 cope——自我安慰。而你需要的是 thrive,不是 cope。

什么不变,什么在变

他给出了自己的判断框架。

不变的:软件会越来越复杂;软件永远需要维护,比特腐烂是事实,熵增也是;技术始终在前进,抽象的高楼越盖越高;用户总是想要更多、准备花更少,而且说不清自己想要什么;客户(付钱的人)和用户(使用的人)之间的断层永远存在;卖蛇油的销售永远不会缺。

在变的:程序员一直在颠覆自己的行业——没人再用打孔卡,很少人写汇编或 COBOL,那些和 C/C++ 内存 bug 搏斗几十年的经验,在 Rust、Go、Python、JavaScript 时代派不上用场了。他自己怀念 valgrind 和 PHP4 时代的转义函数,但那些东西这辈子都不会再用了。

怎么活下去:适应,而非自我安慰

对资深开发者,他的建议不是继续加深技术,而是去学用户体验、客户访谈、商业策略——去理解软件是怎么到达用户手里的。

对新手和初级开发者,方向相反:加深对软件原理的理解。指针、递归、内存层级,即使是 JavaScript 开发者也会受益;网络协议和 HTTP 的工作原理,即使你在写 WordPress 插件也有用。做 leetcode、学算法和数据结构,即使现在用不上。别害怕问"为什么"和"到底怎么工作的"。

他列了一份很扎实的书单:SICP、Cracking the Coding Interview、《人月神话》、《Working Backwards》、《Team Topologies》、7 Powers、《新机器的灵魂》、《Obviously Awesome》、《设计心理学》、《Don't Make Me Think》、《Continuous Discovery Habits》、《The Mom Test》。

最后一句

文章的收尾是一句值得所有开发者记住的话:无论你是谁,不要把理解力、判断力、共情力和品味外包给 AI。 不要放弃你的责任,不要做"肉代理"(meat proxy)——一个只是替 AI 的行为背书的躯壳。

这篇文章在 HN 上获得了 145 分讨论。它触动了很多程序员的共鸣点:AI 时代到来后,行业里弥漫着一种"你们的手艺本来就没什么价值"的论调,而这篇反驳不是情绪化的宣泄,而是用逻辑链条指出:贬低代码写作,等于贬低这个职业存在的全部理由。你可以拥抱 AI,但没必要通过否定自己的过去来拥抱它。

分享到
微博Twitter

© 2026 四月

原文链接:https://www.aprilzz.com/ramble/code-was-never-the-hard-part