AI能否取代程序员?当AI说它能取代程序员时,产品经理笑了;)

文章目录

每当科技界掀起一阵“AI 取代程序员”的讨论热潮,总会有人跳出来高谈阔论。有人说程序员即将失业,有人说代码时代终将落幕。但在经历了无数个被产品经理“轻松改需求”的深夜后,作为一名经验丰富的自由职业程序员,我不得不说:这些论调,恐怕和产品经理的“简单需求”一样天真。

让我们坐上人体工学椅,翘起二郎腿,来聊聊为什么现阶段的 AI,还远远不能取代那些每天在需求与技术的夹缝中求生存的程序员们。这个故事,要从纳瓦尔的一条推特说起……

从纳瓦尔推文说起

纳瓦尔推文

今天看到纳瓦尔发了一条推特,没错,就是《纳瓦尔宝典》的那个纳瓦尔。他说:"AI won’t replace programmers, but rather make it easier for programmers to replace everyone else."(AI 不会取代程序员,反而会让程序员更容易取代其他人)

有个看起来很懂的人评论道:"AI can write programs per CEO Jensen Huang"(AI 可以写程序,正如英伟达的 CEO 黄仁勋所说)

纳瓦尔淡定回怼:"Calculators can do math per CEO of Texas Instruments"(计算器可以做数学题,正如德州仪器的 CEO 所说)

为什么说 AI 现阶段无法替代程序员?

说实话,现阶段张口就说 AI 替代程序员的,十个有九个是不懂软件开发的。剩下那一个?八成在卖课,如果真正了解这一领域的人我认为是不会说出这种话的。

如何判断程序员的技术水平

我认为目前的 AI 不能替代职场专业程序员,至少现阶段做不到。以后可能会实现,但那时候大部分职业都被替代了。

一个服务端程序员的看法

作为一名不熟悉前端开发的服务端程序员,也称为后端程序员,我通常使用 AI 帮我写一些不是很复杂的前端代码,AI 帮我完成了前端程序员的任务。在不熟悉前端领域时,我可能认为它可以替代前端开发,因为我让它做的都是比较简单的任务。但我深知它无法帮我完成我的全部代码,因为我知道我的业务逻辑之复杂,历史问题和各种背景下也会有很多特殊逻辑,人与人之间口口相传有时候都是很难讲明白搞清楚的,更何况当前的 AI 写出来的代码还是有很大概率是有问题不能直接运行的。

究竟是为什么呢🧐

虽然 AI 能帮我完成前端代码开发,但无法完成一些比较复杂的实现,面对这种情况,我更希望有一个活人专业前端来帮我完成这样的任务。如果现在就能被 AI 完美替代,我想那一定和我一样,业务格局和专业能力都还没打开。很多时候,往往不是 AI 做不出我要的效果,而是我无法像专业前端开发者一样告诉 AI 应该怎么做,给出了代码效果不对或无法运行时,我无法很好的指导 AI 进行修改,专业的人加上 AI 做专业的事,才能事半功倍。

软件开发不只是写代码

软件开发不仅仅是写几行代码完成几个功能而已,软件开发是一项工程,涉及很多环节,尤其是部门与部门之间的沟通,产品经理对需求的反复修改也会让代码变得复杂。

软件代码是需要维护的,当实现的需求越来越多,系统越来越复杂,让 AI 做出一个完全可运营的线上系统是很难的,对一个复杂系统的维护是难以替代的部分(除非有 general AI)。

真正做软件开发的人都知道真正的编程工作除了写代码,仍然需要:

  • 理解问题的本质
  • 设计系统架构
  • 确保代码的可靠性和可维护性
  • 在各种权衡中做出明智决策

这些核心能力,我认为依然离不开人类的判断。更重要的是,当系统出了 P0 级别事故时,AI 是不能背锅的,能背的只有活人程序员,可以先杀几个程序员祭天,不然你还想今年给 AI 一个不合格的低绩效考核? :)

表示无压力

程序员日常修炼手册

说到真正的编程工作,那简直就是一出好戏:

首先,“理解问题的本质”——听起来简单对吧?

产品经理的“这个需求很简单,怎么实现我不管。哪种语言你随便,不服可以找老板。横批:明天上线!” VS 程序员的“你确定你知道自己在说什么吗,小可爱……”。经典对话:“就是加个小按钮”——“哦,要加监控吗?要不要做 AB 测试?数据怎么埋点?异常怎么处理?”

接下来,“设计系统架构”——这基本上就是在演《建筑师》:今天的代码得建得像金字塔一样坚固不倒,结果第二天产品经理来了个需求大反转,瞬间变成了推倒重建。“什么?整个流程要反过来走?”

有个小改动

“确保代码的可靠性和可维护性”——这真的是笑话中的笑话。每个程序员都坚信自己写的代码清晰明了,注释详细……直到三个月后自己再看自己的代码时:“这是哪个天才(SB)写的?完全看不懂!哦……是我自己”,程序员最头疼的是阅读别人的代码,而且我们往往连三个月前写的代码自己都看不懂,更别说维护代码时,代码不是自己写的而是 AI 写的。

程序员头疼的4种原因

面对产品经理的需求反复横跳、部门之间的扯皮拉锯妥协、代码交接的断代,让 AI 来写代码,怕是也只能堆出屎山代码,以后的人来看更不可能看懂。

这是一个Feature

最后是“做出明智决策”——比如在产品经理说“下周就要上线,老板说的!”和技术负责人说“至少要一个月”之间做出一个大家都能接受的决策。通常的结果是:改需求砍一半,时间延一半,大家都不开心,但至少还能一起吃个饭。

有理有据

张口就说 AI 取代程序员的人,像极了日常工作中那位“这个需求很简单”的产品经理 :)

很多人把写出代码认为就是软件开发,实际上软件开发是一个系统工程,涉及需求分析、概要设计-详细设计-数据库设计、编码、集成、各种测试、交付、运维,以及各种评审,和项目管理等,哦对了,还有各种会议,需求评审会议、技术评审会议、测试用例评审会议、早会、周会等等各种开不完的会,编码通常会占到 65.43%的工作量。

AI 的现实局限性

再说说 AI 的真实处境,现阶段的 AI 擅长写个 Demo,比如你让他给你做个抖音它都可以做出来,但要让 AI 完全取代程序员做出一个可以正式运营的抖音,目前几乎是不可能的,要取代程序员,先的把业务链条上的其他人取代掉才行。

上下文窗口的限制

受限于 AI 的上下文窗口长度,AI 还不具备大项目的代码开发和管理能力。当前 AI 都有上下文窗口长度限制,也就是说每次和 AI 的交互,内容不能太长,也不能生成太长的代码,这就意味着你无法把整个代码库都扔给 AI,只能是每次选取一部分代码,加上提示词一起交给 AI 生成,所以在让 AI 生成代码时,仍然要程序员去把复杂的需求拆分成简单的模块,仍然需要手动去选取最相关的代码供 AI 参考。

Cursor IDE:写代码有手就行

原型与商业产品的鸿沟

首先现在的成功案例,都是偏向原型性质的、简单的产品,离真正的复杂商用产品还是有一段距离。原型产品的特点就是不需要考虑后期维护,不需要考虑各种使用场景,满足特定场景的演示、验证需求即可。这种程度给独立开发者初期玩玩还行,但在公司里写代码的程序员们日常实施的项目,需要在保障各种不同使用场景下的稳定运行,以及对复杂庞大的代码库长期维护。

对“AI 替代论”的暴击

正如一位网友所言,如果程序员能够被 AI 替代直至完全消亡,那么中间一定会有一个阶段是你妈和 AI 可以一起坐你工位上替你上班。如果 AI 真的哪一天把程序员替代了,那么不用担心,这个社会上 90%以上的工作也都被替代了,大家集体躺平了,共同富裕了。

当你用 AI 替代掉了“初级程序员”,你以为你就成为了中级高级程序员?别高兴太早,你只是变成了新一代的“操作 AI 的基础工人”。就像当前的程序员,看似有技术含量,其实同样是写字楼里的流水线工人罢了。

AI 时代程序员的生存之道

当初计算器出现时并未消灭数学家,自动化制图工具并未淘汰建筑师,类似的,AI 编程助手更多的是将程序员从冗余的重复性劳动中解放出来,让他们有更多精力去处理复杂问题和创新工作。每一场技术革命初期都伴随着“岗位替代”的焦虑,从工业革命到互联网时代。但历史证明,技术创新带来的新岗位总是超过被替代的旧岗位。

就像前端时间播出的电视剧《我是刑警》,当初的指纹都是人工对比,你相信这是什么样的难度,在我看来在当时绝对的无法替代,还有 DNA 刑侦技术对传统刑侦技术的冲击。当新技术新设备出现时,技术刑警和一线刑警们被替代了吗?如果有被替代,那一定是替代了那些没有拥抱新技术新设备,不会使用它们的人。

不断学习新技术本来就是一个合格程序员的该具备的能力,拥抱 AI,学习 AI,使用 AI,绝不会被替代。一个真正的程序员不是代码的搬运工,而是在各种奇葩需求和不可能三角中寻找平衡的“杂技演员”。这种能力,也不是简单地“Ctrl+C, Ctrl+V”就能掌握的。

码首是粘

如果真的有程序员被 AI 替代了,我想可能的原因之一是 AI 不需要纠结用什么 IDE、不用折腾终端模拟器快捷键要怎么绑定、字体配色怎么好看、代码如何补全、究竟 PHP 是不是世界上最好的语言或者到底是要用 VIM 编辑器还是用 Emacs……233

写在最后

只要有软件存在,软件工程师就不会消亡。将来基于 AI 的软件开发,重心会移到需求分析,可能会占到 90%的工作量。现阶段说 AI 能替代程序员还为时尚早,但是善于使用 AI 的程序员一定能大幅提升效率,甚至于不懂写程序的人借助 AI 的帮助作出原型类产品也是完全有可能的。

所以别看 AI 现在能写代码了,但它还不能体会到和产品经理激情互怼的快感,也无法经历部门间甩锅发言前字斟句酌的严谨态度,更感受不到在代码审查会上被挑战时的心跳加速。这些“核心能力”,与其说是技术问题,不如说是一门修身养性的功夫。至于张口就“AI 可以替代程序员”的人,建议修炼一下程序员的“修身养性”课程。

说真的,如果 AI 真的能处理好这些"人性化"的挑战,那它就不是在取代程序员了,而是在拯救程序员的心脏和血压,以及那所剩无几的头发!

最后,如果你觉得写代码累,考虑下当产品经理?等等,好像 AI 更擅长做产品经理……(特别声明:本人与产品经理们往日无冤、近日无仇,文章涉及产品经理的描述纯属文章效果需要。)


也可以看看