一场关于“代码难不难”的争吵,本质上是在争论程序员的命还值不值钱。
AI写代码能力飙升,引发一场持续论战:有人说代码从来不是难点,有人说这是侮辱。本文从定义分歧、身份焦虑、AI冲击三个层面,拆解争论的真正根源——当技术实现被自动化,程序员的核心价值到底还剩什么。
一句话引爆的战争,背后藏着什么
2026年8月,一篇博客文章在程序员圈子里炸了锅。标题很冲:“Code was never the hard part” is an insult to all programmers。作者Senko Rašić用一连串反问怼回去:如果写代码简单,那为什么程序员高薪、为什么面试考算法、为什么软件全是bug?
评论区瞬间撕裂成两派。一派拍手叫好:“终于有人替我们说话了!”另一派冷笑着回:“你根本没理解那句话的意思。”
有个网友说得好:“编码(coding)和编程(programming)是两码事。把想法敲进编辑器是编码,但想清楚那个想法是什么、怎么设计架构、怎么跟人协作——那才是编程。前者确实不难,后者一直很难。”
另一个网友更直白:“我在大厂干了十年,80%的时间在沟通、对齐、写文档,剩下10%写代码,还有10%修bug。代码真不是最难的部分。”
两边都觉得对方在侮辱自己。一边觉得被说“你的手艺不值钱”是侮辱。另一边觉得被说“你们整天就只会敲键盘”也是侮辱。
但这场争吵真的只是定义问题吗?如果只是定义不同,那为什么火药味这么重?
“代码”这个词,到底指什么
先别急着站队,把“代码”这个词拆开看。
在有些人嘴里,“代码”指的是敲击键盘、输入语法、调用API、让程序跑起来的那套动作。这确实有大量重复、有模板、有工具辅助。从这个角度看,说“不难”不算太离谱。
但在另一些人嘴里,“代码”指的是整个构造过程——从抽象设计到具体实现,从性能优化到异常处理,从可读性到可维护性。这个过程涉及大量决策、权衡、对系统深度的理解。这怎么可能简单?
一个网友评论特别到位:“说代码简单的,你试试写一个能跑十年、经手几十个开发人员、需求改了无数版、还能保持稳定的系统。”那叫简单?
问题在于,当AI能自动生成大量代码后,第一层定义下的“代码”确实在被自动化。于是,那些曾经靠“会写代码”吃饭的人,突然发现自己的技能在贬值。为了保住价值感,他们必须强调“代码”其实是第二层定义——也就是整个编程的复杂性。
而另一拨人,恰好想借助AI来贬低程序员的价值,好压低成本或者推动变革。于是他们刻意把“代码”限定在第一层定义上,然后说“看吧,这不难”。
这不是定义之争,这是利益之争。
如果代码简单,那程序员是冤大头吗
听好了,如果写代码真那么简单,为什么过去十几年程序员工资高得离谱?不是光靠风口吹起来的。在AI还没火之前,各大公司抢人抢到脑壳疼,动不动就给刚毕业的大学生开出普通行业熬十年都拿不到的年薪。这不扯吗?如果这活儿谁都能干,资本家又不是慈善家,凭什么白白撒钱。
再看加班文化。程序员加班加到进医院的故事一搜一大把,猝死新闻也不是没有。如果代码只是敲敲键盘的事儿,至于熬到凌晨三点还在跟一个分号较劲吗?大家都疯了吗?不会吧。更夸张的是那些面试题,动不动就手写红黑树、翻转二叉树、实现一个线程安全的生产者消费者模式。拜托,大部分工作根本用不上这些,但公司偏偏用这种题卡人。如果代码真的不难,为什么还要搞这种变态筛选机制。
还有那些书。厚得能砸死人的《计算机程序设计艺术》,谁家夏天拿它当消遣读物?《代码大全》《重构》这些书加起来能堆满一个书架。如果写代码是件简单事,出版社靠什么赚钱?市面上那么多培训班、四年制本科计算机专业,难道都在做慈善教人敲键盘?逻辑完全讲不通。真正的原因只有一个:写代码一点都不简单,它需要极高的抽象思维和逻辑推演能力。
你说需求难?那产品经理怎么看起来那么不靠谱
另一派人跳出来说,啊,代码是简单,难的是搞清楚到底要做什么。行,如果搞需求真的那么难,为什么那么多产品经理看起来啥也不懂?他们不是应该掌握核心科技、被公司供起来吗?现实是产品经理经常被开发吐槽需求来回改、说不清楚、拍脑袋定方案。如果需求分析是世界上最高难度的工作,那这帮人不是应该拿得比程序员还多?
真要是需求难,市场调研专家、用户体验研究员、客户成功团队应该站上鄙视链顶端才对,可现实里这些岗位经常被当作支持角色,工资也远不如核心开发。如果客户需求是最高级的问题,为什么销售随便拍胸脯承诺新功能来签单,结果把开发气得想骂人?销售确实找到了所谓“真实需求”,但程序员最恨的就是这种空头支票。因为实现起来可能要重构整个系统,要加班一个月,要面对一堆屎山代码。
如果需求真的最难,为什么大家不直接做十个版本扔出去看哪个赚钱?因为没那个钱也没那个时间。更重要的是,就算做出来十个版本,用户自己可能也说不清哪个更好。他们只会说“不对,不是这个”,但永远不说“我要那个”。这其实暴露了一个真相:代码和需求根本拆不开。你不在写的过程中去验证,永远不知道需求到底成不成立。
没有“中间程序员”——这是一场分裂战争
那些整天说“代码简单”的人,到底是谁?去看看开发者社区里真正的讨论就明白了。总有人说“大部分工作是跟各方沟通、理解客户需求、搞清楚优先级”。但这种人你真让他去跟客户开会,他又嫌烦。他想要的是“直接告诉我干啥,别两天改一次”。听到没?这就是典型口嫌体正直。
还有一波人高喊“我不写代码,我解决客户问题”。转头就开始长篇大论讨论单子、内存安全、DRY原则这些纯技术话题。他们对客户的理解就是个拍脑袋造出来的“用户画像”,连“affordance”是啥都搞不清楚,还以为是你爸妈周末给的那点零花钱。这种割裂感太真实了。嘴上说的是一套,身体很诚实地还是钻进了技术细节里。
另一波人说“软件开发就是构建理论”,程序其实是数学证明,每一次提交都应该讲一个故事。解决客户问题?通过FTP上传一个PHP文件那是原罪。你看,这些人把编程抬高到哲学层面,对“接地气”的需求嗤之以鼻。整个行业就像分裂了。有人只想当纯技术工匠,有人被迫当客服,还有人假装自己是个商业顾问。其实大家心里都清楚,硬说代码简单只是为了给自己找台阶下,或者给AI贴金。
到底啥重要——两边都别装了
认真讲,跟用户聊天、理解他们的真实体验、设身处地帮他们解决问题、让所有利益相关方达成共识,这些东西当然重要。不然你做出来的东西谁用?但另一方面,写出好代码本身就是一门手艺。要技巧、要耐心、要细节控、要经验、要智慧。这种能力在未来也不会贬值。
问题来了:为什么非得二选一?为什么不能两个都要?既深度理解要做的系统,又深度理解为什么要做它。这难道不是最理想的状态吗?但现实很骨感,能把这两件事同时做好的团队,屈指可数。大部分公司要么偏向技术驱动,造了一堆没人用的炫酷工具;要么纯业务驱动,代码烂成一锅粥,改一个按钮要花三天。
那些到处嚷嚷“代码简单”或者反过来“代码是艺术,AI无法替代”的人,都是在自欺欺人。这两种极端论调都是把头埋进沙子里。嘴上说着不慌,身体很诚实地在焦虑。这就是典型的认知失调。承认吧,大家怕的不是代码被AI取代,怕的是自己作为程序员的身份认同彻底崩塌。以前靠手艺吃饭,现在手艺可能不值钱了,那自己是谁?
什么变了——技术的车轱辘碾过你的工具箱
程序员这个职业,从诞生那天起就在颠覆自己的行业。现在谁还用打孔卡编程?没几个人需要写汇编或者COBOL了。当年在C和C++里跟内存Bug斗智斗勇几十年,熬出来的经验和伤疤,到了Rust、Go、Python和JavaScript时代,基本等于白费。
想想那些老古董工具。valgrind当年多神,现在多少人压根没听过。mysql_real_escape_string这个函数,PHP4时代的噩梦,现在已经彻底进棺材了。这些技术消失得比想象中快得多。甚至还有更老的,dBase、Clipper、HyperCard、Access这些玩意儿,现在只能在某些小店、咖啡馆的角落里,一台发黄的电脑上苟延残喘,跑着某个定制业务系统。问就是备份?什么备份?
这说明啥?说明技术的更新迭代从不等人。你以为自己练就了一身铜墙铁壁的本事,过几年可能全成了屠龙之技。所以那些说“代码简单”的人,如果只是嘴硬,那他们很快连嘴硬的本钱都没了。因为工具在变,语言在变,框架在变,唯一不变的是你得持续学新东西。以前学的是指针和内存管理,现在学的是怎么给AI写提示词和审核它生成的垃圾代码。
什么没变——人性的黑洞永远在
不管技术怎么变,软件只会越来越复杂。这个趋势谁都拦不住。代码量在膨胀,依赖关系在膨胀,系统复杂度在指数级上升。软件永远需要维护,比特腐烂是逃不掉的物理规律,熵增也是。硬件和软件都在往前跑,抽象层堆得越来越高,像一栋永远在加盖的摩天大楼。
用户永远想要更多功能,同时准备花更少的钱。他们永远说不清楚自己到底要什么,更糟糕的是,他们根本不知道自己想要什么。掏钱的客户和实际用的用户,这两拨人的需求永远是错位的。公司的商业目标和用户的真实需求之间,永远有扯不完的皮。
还有一点,江湖骗子永远不会消失。每个时代都有所谓“技术新贵”,VR、区块链、元宇宙,现在轮到AI。但真正改变世界的技术少之又少,大部分都是昙花一现的泡沫。记住这一点,能帮你省下很多跟风踩坑的钱。不变的是人性的弱点:贪婪、懒惰、恐惧错过。这些才是行业最底层的驱动力。代码只是表象,人心才是深渊。
怎么活下去——别当提线木偶
接受变化发生。对新东西保持好奇,同时保持怀疑。这两者不冲突。你可以一边玩最新的AI编程工具,一边在心里给它打问号。要分清楚哪些是纯吹牛逼,哪些是真管用。退一步看过去一年或者五年,技术、经济、社会这三个维度的变化速度到底有多快,心里要有数。
你的角色和职责一定会变。别死守着一亩三分地。花点时间去了解跟你相邻的领域。如果你是资深开发,别只会在技术深度里找安全感。去学点用户体验,去做点客户访谈,去研究你所在行业的商业策略。这会让你更好地理解,把软件送到用户手里需要多少幕后工作。哪怕你永远不用亲自干那些活。
如果你是新手或者刚入行,反过来,多下功夫理解软件到底是怎么工作的。理解指针、递归、内存层次结构,哪怕你是个前端JavaScript开发者,这些知识照样能帮你写出更高效的代码。理解网络协议和HTTP工作原理,哪怕你只是在写WordPress插件。去刷LeetCode,去学算法和数据结构,哪怕你觉得工作中用不上。别害怕问“为什么”和“到底怎么实现的”。
最后一句关键的话:千万别把自己的理解力、判断力、同理心和审美外包给AI。代码可以是AI写的,但责任永远是你的。别当甩手掌柜,更别当一个只会传话的肉盾。在AI时代,人能提供的最大价值不是打字速度,而是决策质量。如果连思考都省了,那就真的被淘汰了。
总结一下:代码从来不是简单的,需求也从来不是容易的,真正难的是在混沌中找到平衡。行业变天的时候,活下来的不是最强壮的人,而是最能适应变化的人。所以别纠结代码难不难了,先问问自己能不能接受明天的工作跟今天完全不同。如果答案是能,那恭喜你,还有饭吃。
论的表面是定义分歧,实质是职业身份焦虑,根源是AI对技术劳动的商品化。但焦虑解决不了问题,重新定位自己才是出路。别让一句口号定义你的价值,也别把时间浪费在说服对方上。