
01
2024年底,一位阿里P8技术专家在公开场合分享了自己的困惑。
"前段时间,我们团队接了一个需求。我让3个初级程序员写代码,写了整整一周。后来我试了试GPT-4,10分钟生成的代码,比他们写的还好。"
"我开始慌了。如果我这么多年的技术积累,最后连AI的十分之一都不如,我存在的价值是什么?"
这个问题,不止他在问。
很多程序员,都在问。
02
要回答这个问题,我们先要理解:
代码,到底是什么?
大多数人会说:代码,是实现功能的工具。
这个答案,对了一半。
更准确的说法是:
代码,是人类意图的"有损编码"。
什么意思?
想象一个建筑师。
他画了一张蓝图,上面写着:"客厅需要足够的自然光。"
然后建造者开始施工。
但在施工的过程中,建造者会发现:如果把窗户向南偏移15度,下午的阳光会洒满整个房间。这个细节,蓝图上没有。
是蓝图错了吗?
不是。
是蓝图不可能穷尽所有细节。
在执行的过程中,建造者会做无数个微小的决策。这些决策的累积,最终决定了建筑的品质。
代码,就是这个"施工过程"。
它不只是规范的翻译,它是规范的"实现"。
或者用音乐来比喻。
同一首钢琴曲,不同演奏家弹出来,味道完全不同。
乐谱上写着"强音"、"弱音",但"多强才算强"?每个演奏家的理解不同。
有些伟大的演绎,甚至是"错误"的——演奏家偶然弹错了一个音,发现效果更好,于是保留下来。
代码也是如此。
规范说明规定了"做什么",但代码在实现的过程中,会涌现出规范中没有的智慧。
但,这只是故事的一面。
03
代码的另一个本质是:
它是一个"高压缩比、高信息丢失"的编码方式。
什么意思?
举个例子。
当你在需求文档里写"用户希望快速找到商品"。
这个意图里包含了很多信息:
但当你把这段话翻译成代码:
function search(query) { ... }
"为什么要快"、"多快算快"、"用户场景是什么",这些信息,全部丢失了。
代码,就是那个"压缩包"。
所以OpenAI说:
代码,只占程序员价值的10%-20%。
剩下的80%-90%,在哪里?
在沟通、在理解、在定义。
04
变量出现了:AI。
过去,写代码很贵。
因为需要人工手写每一行。
但AI出现后,编码的边际成本,正在趋近于零。
你写再好的代码,AI几分钟能生成一万行。
但是,理解需求、构思方案、定义成功标准,这些AI做不到。
至少目前做不到。
价值的锚点,正在从"执行端"向"认知端"转移。
2024年,OpenAI做了一件"奇怪"的事。
他们开源了一份文档,叫《Model Spec》。
里面是什么?
不是代码。是Markdown。
比如其中一条:
"不要谄媚。即使用户喜欢被赞美,模型也应该坚持事实。"
就这么一句话。没有代码。没有算法。
但这句话,指导了整个GPT-4的行为。
你想想,如果要"编码"这个意图,需要多少行代码?
1000行?10000行?
但规范说明,只需要一句话。
OpenAI想明白了一件事:
比"写代码"更重要的,是"定义规则"。
更讽刺的是什么?
现在的程序员,每天都在用ChatGPT写代码。
他们说:"你看,我让AI生成代码,多高效。"
但你知道他们做了什么吗?
他们把提示词(prompt)写得清清楚楚,然后让AI生成代码。
最后,他们把代码存到GitHub,却把提示词删了。
这就像什么?
就像你写了一份精彩的演讲稿,然后把它扔了,只保留念出来的录音。
本末倒置。
05
说到这里,你可能会得出一个结论:
既然代码只是规范的投影,那我们只要把规范写好就行了,代码本身不重要。
这个结论,对吗?
不对。
因为规范和代码的关系,不是单向的"投影",而是**"双螺旋"**。
什么意思?
有时候,规范领舞——代码忠实地实现规范的意图。
有时候,代码领舞——代码在实现过程中涌现出新的可能性,反向修正规范。
Twitter的"转发"功能,最初不在产品规范里。
它是用户自发形成的使用习惯——他们用"RT:"来转发别人推文。
这个行为,甚至可能被视为"BUG"。
但Twitter观察到了,于是把"转发"正式做成产品功能。
这是"用户行为"反向修正"产品规范"的典型案例。
更夸张的例子:Slack。
原本是一家游戏公司的内部沟通工具。因为太好用,最后游戏停了,工具变成了公司核心产品。
这个"转型",在任何产品规范里都没有。
它是"用出来"的。
所以,代码不是规范的奴隶。
代码,是规范的"实验室"。
你在代码中实验、验证、发现,然后把结果反向固化到规范中。
06
理解了这些,程序员该怎么办?
我给你三个建议。
建议一:写规范,但保持开放。
从今天开始,每次接到需求,不要急着打开IDE。
先写一份"规范说明":
这份文档,就是你的"源代码"。
代码,只是从它"编译"出来的副产品。
但,记住:
规范不是"圣旨"。它是在代码的实验中,不断进化的。
保持开放。保持迭代。
建议二:从"编码者"变成"定义者"。
过去的程序员:
别人告诉他做什么 → 他写代码 → 交付
未来的程序员:
他和用户聊 → 理解用户真正想要什么 → 定义成功标准 → 让AI写代码 → 验证是否达标 → 根据反馈反向修正规范
前者是"手艺人",后者是"架构师"。
前者会被AI替代,后者会借AI放大自己的价值。
建议三:修炼两种能力。
第一,表达能力。
怎么修炼?
下次遇到问题,不要直接想"怎么解决"。
先问自己三个问题:
把这三个问题的答案写下来,就是一份"规范说明"。
第二,实验能力。
写代码的价值,不在于"编码"本身,而在于"验证"。
你在代码中实验你的假设,收集用户反馈,然后反向修正你的规范。
表达式 + 实验能力 = AI时代的核心竞争力。
07
有人说,AI会取代程序员。
我觉得不会。
但它会取代"只懂写代码"的程序员。
未来的程序员,一半是工程师,一半是哲学家。
因为,定义问题的人,永远比解决问题的人更稀缺。
在AI时代,代码会越来越便宜。
但"理解世界"的能力,会越来越贵。
祝你,从编码者,变成定义者。
— 完 —
💬 可引用金句
- "价值的锚点,正在从'执行端'向'认知端'转移。"
本文根据OpenAI对齐研究团队Sean Grove的演讲《The New Code》整理改编