短短数月,AI让程序员告别写代码的旧时代
在AI的深度辅助下,程序员的核心工作正从“写代码”转变为“写提示词”来引导AI。代码本身正在从最终产物,降级为我们与AI协作的“中间产物”。这篇文章推演了这带来的连锁反应:比如,未来真正的“源码”可能是我们与AI的对话记录,Code Review会变成Prompt Review,而招聘面试考核的将不再是算法能力,而是定义问题和提问的质量。总的来说,它讨论的不是一个新工具,而是软件开发范式的一次根本
这个月,我的个人账单上,最扎眼的一项开销,不是服务器,不是带宽,而是大模型的Token费用。这在半年前,简直无法想象。我这个写了二十几年代码、对每一行实现都带着点洁癖的“老”程序员,如今却像个挥霍无度的富二代,疯狂地“烧”着Token。
烧在哪了?
你可能不信,我甚至会让AI帮我做一些简单的文本替换。
就在上周,我要把一个旧项目里几百个文件中的某个常量名 MAX_CONNECTIONS
改成 MAX_POOL_SIZE
。搁在以前,我的手指会像上了发条一样,在键盘上敲下 grep
、sed
或者 awk
,一套行云流水的组合拳,几秒钟搞定,顺便还能在心里小小得意一下自己宝刀未老。
但那天晚上,我盯着屏幕,犹豫了三秒,然后在代码文件的注释里,敲下了这样一行字:
// replace all 'MAX_CONNECTIONS' with 'MAX_POOL_SIZE' in this project
然后,我靠在椅子上,喝了口茶,等着AI助手把修改建议一条条列出来,我需要做的,只是逐一确认。整个过程,我像一个监工,而不是一个干活的。那一刻,一种混合着罪恶感和巨大快感的奇特情绪,击中了我。
我“堕落”了。我不再是那个追求极致效率、以玩转命令行和正则表达式为荣的黑客了。我变成了一个……嗯,一个“包-工-头”?一个只会提需求的“产品经理”?
这几个月,这种“堕落”愈演愈烈。我的代码编辑器里,// TODO:
后面跟的不再是留给自己的任务,而是直接给AI的指令。从“帮我用Rust重构这个Python函数”到“为这个组件生成一套完整的单元测试”,再到“分析一下这段k8s的yaml配置,有没有潜在的性能瓶颈”。
我敲下的,真正属于编程语言语法的代码,越来越少。而那些用自然语言写下的、给AI的提示词,却越来越多。
我们曾经引以为傲的“手艺”,正在以一种意想不到的方式生锈。
记得大概10年前,正是从jQuery的刀耕火种时代,向React/Vue这些现代框架迁移的时期。当时最大的思想转变是什么?是告别直接操作DOM,转向数据驱动视图。我们把过程控制,交给了框架。这在当时,已经是思维上的一次巨大解放。
而现在,AI带来的变革,比那次要深刻一百倍。我们正在从“声明状态”,跃迁到“描述意图”。
一个让人沉默的真相是:代码,正在从我们工作的“最终产物”,变成我们与AI协作的“中间产物”。
就像编译过程中的汇编语言,它依然重要,但大多数时候,我们并不需要直接关心它。
这个想法像一颗投入平静湖面的石子,激起的涟漪让我不寒而栗。因为如果这是真的,那么我们赖以为生的整个工作流,都会被彻底颠覆。
第一个涟漪:git commit
的意义是什么?
我们每天都在用Git。git commit -m "feat: add user login module"
。这条命令的背后,是我们对几十行、甚至几百行代码的智力创造负全部责任。
但现在,当我完成一个功能后,回顾我的工作,真正的“智力创造”是什么?是那几百行AI生成的代码吗?不,是我和AI之间那段长长的、反复拉扯的对话。是我一开始那个模糊的想法,如何一步步被我用语言精确化、具象化,如何补充上下文,如何纠正AI的愚蠢错误,如何引导它走向我想要的结果。
这段对话记录,才是真正的“源码”。
那么,我们是不是需要一个新的版本控制工具?一个“Git for Prompts”?git diff
对比的不再是两段代码的差异,而是两次对话的差异——你调整了哪个提示词,增加了哪个上下文,从而导致了最终代码的改变?
我甚至觉得,未来最重要的文件,可能不是 main.js
或 app.java
,而是一个叫 prompt.log
的文件,它记录了从一个模糊意图到一个可用产品的全部“心路历程”。
第二个涟漪:Code Review 正在变成 Prompt Review。
这个想法更让我后背发凉。想象一个场景:一个初级程序员提交了一个Pull Request。作为资深程序员的我,去Review他的工作。
在过去,我关注的是:代码风格、设计模式、算法效率、有没有潜在的bug。
但在AI协作的模式下,我可能首先要看的是他的 prompt.log
。我会问:
- “你最初的提示词是什么?为什么AI给了你一个如此复杂的实现?是不是你的问题定义得不够清晰?”
- “AI给出了三个方案,你为什么选择了第二个?你评估过它们的优劣吗?”
- “我看到AI犯了一个很明显的错误,你直接接受了它的代码,然后自己手动修改。你为什么不尝试修正你的提示词,让AI自己给出正确的代码?这样下次它就不会再犯同样的错误。”
Code Review的核心,从对“结果”的审查,变成了对“过程”和“思路”的拷问。 程序员的责任,不再是写出完美的代码,而是提出完美的问题,并对AI的输出进行有效的甄别和迭代。
那个经典的程序员借口“在我电脑上是好的啊”,在未来会不会变成:“AI就是这么给我的”?这句看似甩锅的话,背后却隐藏着一个致命的责任黑洞。
第三个涟漪:面试官还会让我们手写红黑树吗?
如果写代码本身不再是核心技能,那我们怎么招聘程序员?
我们还会花一个小时,看一个候选人在白板上磕磕巴巴地写一个他可能一辈子都不会在实际工作中用到的算法吗?那种为了面试刷了几百道LeetCode的“屠龙之技”,会不会一夜之间变得毫无意义?
未来的技术面试,会不会是这样:
面试官:“我们有一个需求,要做一个在线协同文档,需要支持多人实时编辑和评论功能。现在,请你打开这个AI助手,用半个小时的时间,通过和它对话,构建一个最简可行性原型(MVP)。我们会观察你如何拆解问题、如何描述需求、如何提供上下文、如何甄别和修正AI的输出。我们评估的,是你提问和引导的能力。”
我们不再招聘一个“知道答案”的人,而是在寻找一个“擅长寻找答案”的人。 考核的不再是知识的储备量,而是思想的锐度。
这对于整个教育体系、培训行业,都是一次地动山摇般的冲击。我们教给学生的,还应该是具体的语言语法和框架API吗?还是应该教他们逻辑学、批判性思维和……如何与一个“万能而又愚蠢”的神灵沟通?
我甚至能想到,测试工程师的工作也会随之改变。他们拿到的,可能不仅仅是产品需求文档,还有那份 prompt.log
。他们可以基于开发者的意图和与AI的完整对话,来生成更精准、更刁钻的测试用例,去攻击那些在“对话”中可能被忽略的逻辑盲区。
我偶尔会怀念起那个在深夜里,为了解决一个内存泄漏问题,翻遍内核文档,最终用一行精巧的代码搞定一切后,长舒一口气的自己。那种完全掌控一切的感觉,就像在90年代,终于拨通了56k的“猫”,听到那一声熟悉的握手音,整个世界为你打开。那是一种原始而纯粹的快乐。
现在,这种快乐变得有些不同。它不再是征服机器的快乐,而是引导一个强大但混沌的“它”,共同创造出某种东西的快乐。有点像导演,而不是演员。
当编程语言的大厦在AI的翻译下轰然倒塌,我们真正的护城河,究竟还剩下什么?
如果说代码是我们思想的实现,那么当实现过程被AI大幅度接管后,我们思想的价值,又该如何被衡量?
当一个程序员的价值,不再由他写的代码行数或掌握的语言数量决定,而是由他“提问的质量”决定时,我们又该如何学习和成长?
我关掉代码编辑器,看着账单上那个不断增长的Token数字,它像一个时代的度量衡,冰冷又精确地告诉我:有些东西,真的不一样了。
而我们,正身处这场巨变的中心,连一声再见都来不及说。
更多推荐
所有评论(0)