2026-08-08AI 观察Senko Rašić

“代码从来不是最难的部分”是对所有程序员的侮辱

软件开发这个职业正处在剧变之中。没人知道 AI 革命最终会如何收场,但显然,工作和生活的许多方面都会被改变——包括编程。

目录共 8 节
  1. 如果写代码很容易……
  2. 如果弄清楚该构建什么才是难点……
  3. 不存在“中位数程序员”
  4. 什么才是重要的?
  5. 什么不会改变?
  6. 什么会改变?
  7. 我们怎样才能发展得更好?
  8. 还有一件事

原文来源blog.senko.net

软件开发这个职业正处在剧变之中。没人知道 AI 革命最终会如何收场,但显然,工作和生活的许多方面都会被改变——包括编程。

最近,我经常听到一些说法,归根结底无非是:“LLM 也许很擅长写代码,但软件开发中真正困难的从来不是代码”,以及“写代码很容易,难的是弄清楚该写什么”。

我认为,这是对全世界所有程序员的莫大侮辱。

如果写代码很容易……

如果写代码很容易,为什么多年以来程序员一直供不应求,而且能够要求很高的薪水——甚至在零利率政策(ZIRP)出现之前也是如此?为什么早在 AI 开始批量产出 5000 行的 PR 之前,这一行就已经有那么大的压力、那么多过度工作和职业倦怠?为什么公司要寻找所谓的 10 倍忍者摇滚明星程序员,还要让他们接受 LeetCode 面试——既然这么容易,刚毕业的初级程序员随便做点东西出来不就行了吗?

如果写代码很容易,为什么会有 《代码整洁之道》《程序员修炼之道》这种厚得能拿来挡门的书?《计算机程序设计艺术》是适合夏天轻松读完的书吗?SICP 是一本摆在茶几上供人翻看的画册吗?为什么我们还会有编程训练营,甚至有整个大学学位都专门研究这件事?

如果写代码很容易,Carmack 只是碰巧在正确的时间出现在正确的地方吗?为什么我们会把 Fabrice Bellard 视为天才?

如果写代码很容易,为什么人们会对 AI——或者任何其他人——复制自己的代码感到愤怒?为什么他们表现得像是为某件如此微不足道的事情投入了汗水、灵魂和大量时间?

如果写代码很容易,为什么现在有那么多人觉得自己的身份认同和职业意义正在被剥夺?

如果写代码很容易,为什么软件里有这么多该死的 bug?

如果弄清楚该构建什么才是难点……

如果决定要构建什么才是难点,为什么那么多产品经理看起来毫无头绪?为什么他们不需要经历严格的十轮面试?为什么他们拿的薪水没有开发者高?

如果决定要构建什么才是难点,为什么市场研究员、可用性专家——见鬼,甚至客户成功人员——没有被软件公司当成摇滚明星?如果“理解客户”更难,为什么业务分析师反而会被轻视为只会动笔写写画画的人?

如果实现很容易,而发现需求更难,为什么销售人员为了签下订单而向客户承诺一个新功能时,程序员还会生气?他们已经找到一个真正的需求了,而且是有人愿意付钱的需求!

如果写代码很容易,为什么大家不直接做出同一件东西的十个版本,再看看哪个能成?

不存在“中位数程序员”

另一种陈词滥调是:“软件开发中的大部分工作,是与利益相关者沟通、理解客户需求,以及明确优先级。”

在我的职业生涯中,我遇到过很多程序员,其中极少有人愿意和利益相关者沟通,更别说直接与客户沟通了——自由职业者和创业者除外,尤其是软件开发公司的创业者。而所谓“明确优先级”,归根结底就是:“直接告诉我该做什么,而且别每两天就换一次方向。”

有些软件开发者确实会说:“我不是在写代码,我是在解决客户的问题。”但转过头来,他们又开始高谈单子、内存安全和 DRY 原则;他们对客户的理解来自一个虚构的“用户画像”,还把“affordance(可供性)”当成父母周末给你出门玩的钱。

还有些人会说:“软件开发是在建立理论。”程序实际上是证明——也就是数学意义上的证明。每一次提交都应该讲述一个故事。至于用 FTP 上传一个 PHP 文件来解决客户的问题,那简直是不可饶恕的大罪。

我并不是说,不存在那种既深切在意软件开发技艺、又真正对客户抱有同理心的开发者。不过,我确实觉得他们也许应该找专业人士咨询一下人格分裂的问题。

什么是重要的?

我确实相信,与用户交谈、理解他们的体验、对他们抱有同理心、解决客户的问题,并让所有利益相关者形成共识,对软件项目的成功至关重要。

我也相信,创造优秀的代码是一门需要技巧、耐心、对细节的关注、经验和智慧的手艺,而且在未来的时代里,它仍然会有价值。

为什么不能两者兼得?

只要我们有能力做到,我认为就应该同时追求两者:既深入理解我们正在构建的系统,也深入理解我们为什么要构建它。

大声宣称“代码很容易”,或者走到另一个极端,宣称“代码是艺术,是无法被自动化的人类创造性表达”,都不过是在把头埋进沙子里。

这只是自我安慰。你不该满足于自我安慰,你应该设法发展得更好。

这么说,并不是要你“跳上 LLM 的潮流列车”,也不是要你“成为一支 AI 智能体舰队的管理者”。我同样不是在说:“AI 生成的代码是偷来的、粗制滥造的垃圾,必须拼死抵抗;反正这个泡沫很快就会破裂。”

但是,你必须认识到,我们正处在一场波及整个行业的地壳变动之中。我们需要弄清楚该如何适应,也需要理解哪些事情很可能会改变,哪些事情永远不会改变。

什么不会改变?

软件会变得更加复杂。软件永远需要维护:位腐化是生活中的事实,熵也是。无论结果是好是坏,技术——包括硬件和软件——都会继续向前发展。抽象之塔——也许该叫抽象摩天大楼?——会越建越高。

用户永远会想要更多,同时只愿意花更少的钱。他们仍然不知道该如何表达自己的需要和愿望。更糟的是,他们仍然不会确切知道自己想要什么。客户——真正为软件付钱的人——与用户——实际使用软件的人——之间的脱节依然会存在,企业需求与客户需求之间的张力也同样如此。

还有一点:卖蛇油的骗子永远不会短缺。今日当红的技术来来去去——我还在等新一轮 VR 复兴呢!

什么会改变?

从一开始,程序员就在做颠覆自己这个行业的生意。现在已经没人再用穿孔卡了。还需要用汇编语言或 COBOL 写代码的人也少之又少。过去几十年里,人们与 C 或 C++ 的内存 bug 苦战,并留下足以证明这一切的伤疤;到了 Rust、Go、Python 和 JavaScript 的时代,那些经验已经毫无价值。

我的年纪已经大到足以体会 valgrind 的价值,也还记得 PHP4 时代的 mysql_real_escape_string()——这些东西我这辈子再也用不上了。而那甚至都不算多久以前!我刚好错过了 dBase、Clipper、HyperCard 和 Access 的时代,但现在偶尔还能在商店、咖啡馆,或者某台落满灰尘、曾经是米白色如今已经变成金棕色的中塔式电脑上,看到这些技术仍在运转,愉快地支撑着某套定制业务系统——备份?什么备份?

我们怎样才能发展得更好?

接受变化必然会发生。面对新事物,保持同等程度的好奇与审慎。

要明白这里面有大量炒作,并努力分辨哪些只是空话,哪些真正有效——以及能有效到什么程度。还要留意不断移动的目标线:退后一步,回看过去一年或五年,评估变化的速度——无论是技术、经济还是社会层面的变化。

你的角色和职责一定会发生变化。你要愿意投入时间和精力,更深入地理解与你相邻的领域或岗位。

如果你是一名高级开发者,不要只是从不断加深自己的专业能力中寻求安慰。去了解用户体验、客户访谈,或者你所在领域中企业的商业战略。无论你将来是否真的需要亲自承担那些工作,这都会帮助你更充分地理解:为了把一款软件真正交到用户手中,人们究竟完成了多少工作。

如果你刚刚入行,或者还处在初级阶段,请投入精力加深自己对软件运行原理的理解。即使你是一名 JavaScript 开发者,理解指针、递归或内存层级也会对你有帮助。即使你在开发 WordPress 插件,理解网络协议和 HTTP 的工作方式也会很有用。即使工作中不需要,也去刷 LeetCode,学习算法和数据结构。不要害怕追问为什么具体是怎么做到的

下面是一些也许能带来启发的书和其他资源:

还有一件事

无论你是谁,都不要把自己的理解、判断、同理心和品味外包给 AI。不要放弃自己的责任,也不要成为一个肉身代理

发布自
blog.senko.net
发布日期
2026-08-08
标签
AI编程观察