「写代码从来不是难的那部分」是对所有程序员的侮辱

查看原文 HN 讨论

文章摘要

Senko Rašić 这篇文章直接冲着一句近来到处流传的话去:「LLM 也许很会写代码,但写代码从来就不是难的那部分」「编码很容易,难的是搞清楚要写什么」。他的态度很明确——这是对全世界程序员的一记侮辱。

文章的主体结构是连珠炮式的反问。如果写代码很容易:为什么程序员多年来供不应求、拿着高薪(早在零利率时代之前就是如此)?为什么在 AI 开始吐 5000 行 PR 之前,这行就已经充满压力、超时工作和倦怠?为什么公司要找「10x 忍者摇滚明星程序员」,还要拿 leetcode 面他们——既然这么容易,刚毕业的初级工程师随手也能搞定才对?为什么会有《Clean Code》《程序员修炼之道》这种大部头?《计算机程序设计艺术》是消夏读物吗?SICP 是茶几摆件吗?为什么要有训练营甚至整个大学专业?如果写代码很容易,Carmack 只是运气好站对了位置?为什么我们认为 Fabrice Bellard 是天才?如果写代码很容易,为什么大家会因为 AI(或任何人)抄自己的代码而愤怒?为什么他们的反应像是往一件如此微不足道的东西里倾注了汗水、灵魂和大量时间?如果写代码很容易,为什么现在这么多人感到自己的身份认同和职业价值正在被剥夺?如果写代码很容易,为什么软件这么该死地充满 bug?

如果决定做什么才是难的那部分:为什么那么多产品经理看起来一无所知?为什么没有针对他们的严苛十轮面试?为什么他们拿得没有开发多?为什么市场研究员、可用性专家、乃至客户成功不被当成软件公司里的摇滚明星?如果「理解客户」更难,为什么业务分析师被当成打杂的?如果实现容易而找需求更难,为什么销售为了成单向客户承诺一个新功能时程序员会炸毛——他们明明找到了真实的、有人愿意付钱的需求啊!

「没有中位数程序员」这一节,他反驳另一句陈词滥调——「软件开发的大部分工作是跟利益相关方沟通、理解客户需求、厘清优先级」。他说自己见过的程序员里,很少有人想跟利益相关方说话,更别说客户(自由职业者和创始人除外);而所谓「厘清优先级」在实践中就是「你直接告诉我干什么,别每两天变一次」。有些开发者会说「我不写代码,我解决客户的问题」,但转头就开始高谈 monad、内存安全和 DRY 原则,而他们对客户的全部理解就是一个编造出来的「用户画像」。另一些人则说「软件开发是理论构建」、程序其实是数学证明、每个 commit 都应该讲一个故事、用 FTP 传一个 PHP 文件去解决客户问题是弥天大罪。(作者后来加了个后记,承认这一节里「同时深爱手艺和共情客户的人可能需要看看人格分裂」那句玩笑开过头了。)

那什么才重要?作者的答案是「为什么不能两者都要」。跟用户交谈、理解他们的体验、共情、解决客户问题、让所有人对齐,这些对项目成功至关重要;同时,写出好代码是一门需要技巧、耐心、细致、经验和智慧的手艺,未来依然有价值。他认为无论是大声宣称「代码很容易」,还是站在对立面说「代码是艺术、是无法自动化的人类创造性表达」,都是把头埋进沙子——都是自我安慰(cope),而你要的不是自我安慰,是活得好。

他随后区分了什么不变、什么在变。不变的:软件只会更复杂;软件永远需要维护,bit-rot 和熵都是事实;抽象的高塔越垒越高;用户永远想要更多、付得更少,永远不知道怎么表达需求,甚至不知道自己到底想要什么;付钱的客户和真正使用的用户之间的断层依旧;卖蛇油的人永远不缺。在变的:程序员一直在颠覆自己这个行业——没人用打孔卡了,很少有人需要写汇编或 COBOL 了;那些在 C/C++ 里跟内存 bug 搏斗留下的伤疤,在 Rust、Go、Python、JavaScript 的时代一文不值。他自嘲还记得 valgrind 和 PHP4 时代的 mysql_real_escape_string(),这些东西他这辈子不会再用到了。

怎么才能活得好?接受变化发生;对新事物既保持好奇也保持批判;意识到炒作很多,学会分辨热空气和真正有用的东西,并且警惕不断移动的球门柱——退后一步,看看过去一年或五年,评估技术、经济、社会变化的真实速度。角色和职责都在变,愿意投入时间理解相邻的领域。如果你是资深开发,别只满足于把专长挖得更深,去学用户体验、客户访谈、所在行业的商业策略。如果你刚入行,就往深里理解软件是怎么工作的——指针、递归、内存层级,即使你写 JavaScript 也有用;网络协议和 HTTP 的原理,即使你写 WordPress 插件也有用;即使不需要也去刷 leetcode、学算法和数据结构;不要害怕追问「为什么」和「究竟怎么做到的」。文末列了一串书单,从 SICP、《人月神话》到《设计心理学》《Don’t Make Me Think》《The Mom Test》。

最后一句是全文的落点:无论你是谁,别把你的理解力、判断力、共情和品味外包给 AI。别放弃你的责任。别当人肉代理。

HN 评论精华

这条帖子拿到 940 分、588 条评论。讨论迅速分裂成三派:认为「写代码确实是难的部分」的、认为「作者混淆了 coding 和 programming」的,以及跳出来讲「薪水高低跟难度无关」的。