最近一段时间的工作,我几乎所有的代码,都是 AI 写的,我不再需要自己动手写代码,哪怕只是一两行代码的变动。
我只需要告诉 AI,我需要改哪里,期望的效果是什么,AI 完成的效果就很好,而且 AI 的效率很高,也不怕累,AI 技术的发展,真正实现了解放我们双手的愿景。
这不由得引起一个思考,AI 会取代程序员吗?王垠的课程,能够帮助程序员抵抗这种来自 AI 的冲击吗?
如果你用过 AI 写代码,就会明白目前的 AI,还不可能真的取代程序员,因为很多事情做不了,很多事情会做错,需要人为判断。
但即使是在短短半年前,把项目完全托管给 AI 来开发,都是不敢想的事情。半年前,我在工作中还是手动复制 AI 写的代码的模式,因为不敢让 AI 直接动项目。但是现在,AI 的 Agent 模式已经真的可以投入使用。我印象里 AI 的 Agent 模式也就今年才出现。
而且比起两年前,现在 AI 的发展速度更是非常可怕。两年前还是 GPT-3.5 的时代,不能识别图片,文本处理也存在很多幻觉。经过两年时间的发展,现在 GPT-5 的能力已经非常厉害。
所以 AI 的水平很高,虽然现在还没有特别高,但是真正让人害怕的,是 AI 的进化速度。
我自己的主观感受上,还是 GPT-5 模型最靠谱。
因为我有正事要干,没有那么多时间去试错,Claude Sonnet 4 给人的感觉就是手过于勤快,方案还没定,代码写出一堆,删都删不过来。他自己给出 A、B、C 三种方案,结果在描述方案的过程中,就把三种方案的代码全写了。相比之下,GTP-5 就好一点,会先问你用哪种方案,然后再动手。Gemini 2.5 Pro 没太用过。
我用的编辑器是 VS Code,装了 GitHub Copolit 和 ChatGPT Codex 两个插件,这两个插件都选择 GPT-5 模型。Codex 用来执行复杂任务,Copolit 做轻量级的改动。
所以我对于 AI 编程的感受主要来源于这样的使用环境。如果你用了其他的模型,或者其他的编辑器、工具,可能会跟我的感受有出入。
回到正题,我们的话题是,王垠的课,能不能抵抗这种来自 AI 的冲击?
首先是 AI 到底冲击了哪些程序员。最大的冲击是对于 3 年以下工作经验、对业务场景和技术选型都没有判断力、工作内容以领导安排为主、自己动手实现代码为结果的程序员群体。
AI 最擅长的,就是在业务场景清晰、工作目标清晰的情况下,完成代码。所以以前在公司里的小组长,有花费口舌跟新人讲清楚需求的功夫,完全可以跟 AI 描述清楚需求、AI 就把活干了。而且 AI 态度比人好、动手能力比人强、写起代码来比专家都专业。
目前的 AI 还不能取代的是在复杂业务场景下、需要对技术选型、技术方案做决策的程序员。不过这些程序员本身已经不太是基础的技术岗位,通常已经不怎么写代码。
所以进一步明确,我们在讨论的话题是,对于需要动手写代码的程序员来说,王垠的课,能不能提高这一类程序员的竞争力,抵抗至少是延缓 AI 的冲击,比其他程序员晚一步被淘汰?
我按照之前一天一道题目的计划,第三轮做练习题,最近刚做完链表相关的部分。
(题外话,想想在面试过程中,凡是让你现场写代码、做题的公司、面试官,是不是都挺扯的。不信你随便拿一道王垠出的练习题,给那些人做,你看他们能不能做出来。所以建议大家,凡是面试流程中需要做题的公司,无论面试是否通过,一律马上拒绝。)
我在 4 年前就自己写过 链表反转 之类,但是用了非常笨拙的写法,一个节点的上一个节点指向哪里、下一个节点指向哪里什么的,来对链表进行各种操作。
王垠课程里的链表,利用纯函数式的写法,以及递归的思想,代码非常简洁优雅,完全不需要考虑上一个节点、下一个节点这种东西。即使已经是第三次面对这个题目,因为已经忘了之前是怎么做的,我也很犹豫,链表反转是能用一两行代码实现的吗?终于在第三次做出题目后,才明白真的可以简单到这种程度。
所以我想说的是,王垠的课程,思想大于形式,真正能教会你的,不只有表面的知识那么简单。
同样的链表反转,初级程序员写出来是一个样,高级程序员写出来是另一个样,真的会不一样。也许表面上代码都能运行,都能达到目的。但是当面对更复杂的系统设计问题,是不是也应该尽可能做到简洁、优雅、清晰、可靠?
当你见识过最清晰的反转链表应该怎么实现,你就知道,噢,链表反转有着各种各样的写法,复杂的写法往往存在这样那样的问题,事实上问题的解法可以更优雅。
当你面对一些复杂的功能需要实现,你可能会用同样的思路去思考,是不是有更加简洁优雅的方式,来干这个事?
你只有见识过更好的东西,才能明白,什么东西更好。
AI 可以帮你干活,但是不可能代替你水平高。
当你没有见过更好的东西,你可能不知道什么是好的,想象不出什么是好的。然后你去告诉 AI,你帮我写一段很好的代码出来,AI 写了三个版本,你都不满意,最后 AI 问你,什么是 “很好的代码”?你自己也不知道。
就像我在《一个集成 Geth 和 CometBFT 的兼容层》中提到的观点,AI 可以替你干活,但是 AI 不可能代替你懂。
你可能想问,AI 帮我把活干了就行,我为什么非要懂?我不在乎代码的好坏,事实上也没人在乎,老板不在乎,客户也不在乎。只有一些自以为是高人一等但是没有实权的老员工、小组长在乎。
这其实正是我想说的,王垠的课,不局限于代码,而在于思想。
说实话,王垠课程中对于代码形式上的规则,几句话就可以说清楚。而且大部分王垠在之前的文章《编程的智慧》中都写过。(我发现现在文章被删掉了,看起来王垠删掉了很多有价值的文章)。
真正重要的不是明面上的规则,而在于课程是如何对知识化繁为简的,为什么这样是好的,那样是坏的。
同样的思想,可以迁移到其他问题上,什么是好的,什么是坏的。
你可以不在乎代码,但是始终要面对数据结构、算法、系统架构、复杂度、性能等问题。除非你真的什么都不需要面对。
AI 能解决这些问题吗?能,但是你得给 AI 说明白需求,然后看明白 AI 给你的方案,最后你来决定选择哪一种。如果你看不懂 AI 在跟你说什么,那你就不能控制 AI 了。
还是那句话,AI 不可以代替你懂。
我一直在说 “AI 不可能代替你懂”,这是我自己使用 AI 编程的体会。
王垠在以前的文章《人工智能的局限性》,包括最近在微博上,都描述了他对于 AI 的核心观点,那就是 “AI 没有读心术”。这个和我们日常使用 AI 编程的体会是一致的,你必须非常清晰告诉 AI 你想要什么,AI 才会给你什么。如果你的描述是模棱两可的,你忽悠 AI,AI 也会敷衍你。你说不清楚,AI 就做不明白。
王垠的课能帮助程序员抵抗 AI 的冲击吗?也许可以吧……假如不可以,那该怎么办?