AI 时代,还有新人会写自己的第一行 Hello World 吗?
本文属于《我和苏Claw底的理想国》系列文章。该系列作品都是是作者和 OpenClaw 的对话,辩论,分析,甚至是对骂的的内容的整理。
AI 让入门「变容易」了吗?
对于每个 AI 时代之前的程序员来说,“入门”等同于第一个能正常运行的 Hello World 代码。打印一行“Hello World!”,那行代码本身没什么技术含量,但从那个时刻开始,你让机器按你的意志说话了,从那一刻开始,你的程序员生涯正式入门了。
这个仪式的价值,不在于那行代码,而在于它背后的过程:你要搭环境、查语法、看报错、猜原因、改了再跑。每一个失败和成功,都在建立一种底层直觉——我改了这里,那里变了;我漏了一个分号,它就不工作了。这种「低级别的反馈循环」,是理解机器行为的起点。
现在,对于 AI 时代的新手程序员来说,入门变得相当容易。你描述需求,代码就出来了,而且能跑。你获得了结果,不需要再经历那个认知建构的过程。
如果入门是「能产出一个能跑的东西」,那确实变容易了。但如果入门是「建立对系统行为的理解」,AI 没有帮到你,甚至帮了倒忙。
原因很简单:没有问题,就没有理解。
理解不是被灌进去的,它是被问题拉出来的。你脑子里有一个缺口,某个信息填进去,那才叫理解。手写代码的过程就是在不断制造缺口——你想让它做这件事,但它没做;你以为这样写是对的,但它报错了。每一个这样的时刻,都是一个等待被填补的缺口。
AI 做的事情是:在缺口还没形成之前,就把答案送过来了。所以问题不是 AI 给的答案质量不好,而是答案来得太早,早到缺口还没来得及出现。
「阅读理解 AI 代码」能替代手写吗?
你可能会说:我不用手写,我让 AI 生成代码,然后认真读懂它,不也一样吗?
听起来有道理,但这里有一个关键的差异被忽略了:你在什么处境下读这段代码。
读开源项目的时候,你是带着一个具体问题去找答案的。你遇到了困难,你不知道怎么做,你去看别人怎么解决的。这个「困难」是前置条件,它让你的大脑处于主动搜索的状态,读到某个实现时会有「啊,原来可以这样」的顿悟感。这个顿悟是真实的认知重构。
但如果你用 AI 生成代码,你还没有遇到困难,甚至还不知道这里「本来」会有困难。你读那段代码,是在没有问题意识的情况下读答案。这种阅读很难真正学到什么东西,因为你的大脑没有对应的「钩子」可以挂。
而且手写代码的过程里,有大量微小的决策和错误:变量叫什么名字、先写哪个分支、忘了初始化、类型搞错了。这些错误看起来很低级,但它们才是直觉的来源。你踩过「忘了关文件句柄导致资源泄漏」这个坑,你才真的理解资源管理。你自己写过一个 O(n²) 的循环然后发现它慢得不行,你才真的对复杂度有感觉。
AI 生成的代码跳过了所有这些错误。它给你的是一个已经正确的结果,而正确的结果里没有学习信号。
手写 Hello World,变成了一种选择
以前,手写代码是默认路径。你想学编程,没有别的办法,只能从这里开始。每一个坎都在筛人,但同时也在塑造人,你跨过去了,你就获得了跨那个坎的能力。
现在,你可以绕过去,而且绕过去更快、更爽、更容易有成就感。
手写代码从「默认课程」变成了「选修课」。而选修课有一个普遍规律:选的人,往往是本来就对这件事有热情的人。真正需要它的人,反而因为不知道自己需要它,不会去选。
这制造了一种新的不公平——不是资源上的不公平,而是认知上的不公平。有人告诉你「你应该去手写,哪怕很慢很痛」,你就有机会建立底层直觉;没有人告诉你,你就顺着阻力最小的路走下去,感觉一切都很好。
早期筛选机制失效,新人会高估自己
我并不是想说新人骄傲或者不努力,因为我甚至在一年前,也可以算一个彻彻底底的新人。这更像是一个令人担忧的处境——反馈信号失真了。
以前,你写不出来就是写不出来,报错就是报错,程序跑不了就是跑不了。这些失败信号是即时的、明确的、无法掩盖的。它们在不断校准你对自己能力的判断:我现在能做什么,我还不能做什么。
现在,AI 把大部分失败信号都消化掉了。你写了一个需求,AI 给你代码,代码跑起来了,你获得的反馈是「成功」。但这个成功信号里,有多少是你的能力,有多少是 AI 的能力?人的本能是倾向于把成功归因于自己的。
“不怕 AI 有幻觉,就怕人有。”—— AI 创造的代码制造了一种能力幻觉。你做出了东西,你觉得自己会了,但你其实只是会提需求。这两件事在早期看起来一模一样,但它们是本质不同的能力。
更麻烦的是,这个幻觉很难被自然戳破。以前,你的能力边界在日常工作里会不断暴露——遇到一个新问题,你搞不定,你知道自己不行。现在 AI 会帮你填平很多坑,你的能力边界变得模糊,你很长时间都感觉「还好」。直到遇到一个真正复杂的、AI 也给不出好答案的问题,你才发现自己的底层理解根本没有建立起来。但那个时候,你能做什么,你也不知道,你在路上已经偏离太远了。
定位模糊是现在的新手不得不面临的处境。因为大家都在用 AI,横向比较也看不出来——你用 AI,你旁边的人也用 AI,大家产出看起来差不多,没有参照系。甚至,你自己“古法编程”的学习进度,会看起来比别人慢很多。
这让人担忧的不是某一个人,而是整代人同时面对的处境。那些真正需要底层理解的事——复杂系统的架构、性能瓶颈的定位、真正关键的技术决策 —— AI 目前还做不好。而能做这些事的人,恰恰需要那种从踩坑里积累出来的直觉,AI 又在引导新人偏离这条路。这个缺口,迟早会在某个地方暴露出来。
给现在新人的小小建议
先说一件事:这是一个客观的处境,不是个人努力能完全解决的。就像在一个全班都用计算器的考场里,有人跑来告诉你「你应该练心算」。他说的可能是对的,但这个建议本身有点反时代,执行起来需要付出额外的代价。
所以我不想给「你要克制自己不用 AI」这种建议,那既不现实,也不公平。但有几件事值得认真对待。
区分两种用 AI 的姿态。 一种是「让 AI 帮我完成任务」,另一种是「让 AI 帮我理解问题」。前者是用 AI 替代自己思考,后者是用 AI 加速自己思考。具体来说,遇到一个问题,先自己想一想「我觉得应该怎么做,为什么」,然后再去问 AI,看它的答案和你的判断有什么差别,差在哪里。这个「先判断再对比」的习惯,能让你在用 AI 的同时,还在建立自己的直觉。
把「为什么」当成一个习惯。 AI 给你一段代码,跑起来了——然后呢?养成一个习惯:问自己「我能不能解释这段代码在做什么,为什么这样做」。如果解释不了,就去搞懂它,再跑下一步。这个习惯能帮你把「AI 给的答案」慢慢转化成「自己的理解」。
警惕顺滑感。 用 AI 写代码有一种特别顺滑的感觉,一气呵成,很爽。但这种顺滑感本身是一个信号——当你感觉太顺了,往往意味着你没有在真正思考,只是在执行。遇到真正困难的问题,AI 也会犯难,也会给出不好的答案。那些时候反而是学习密度最高的时刻,不要急着换一个 prompt 让它重来,先自己想一想卡在哪里。
软件设计和开发的学习,是一件长期且坎坷的事。你需要长期保持思考,不断抛出问题。如果你在这条路上走得太快太顺,应该警惕:是不是 AI 帮你兜底了不少本应该是你暴露出的问题?
最后一个问题
AI 爆发后,我认为每个程序员都应该问自己:没了 AI,我还能写出什么?
这个问题的价值不只是测量自己的能力边界,它更深的意义是:它在提醒你,你和 AI 之间的关系是什么。
如果你答不上来,你和 AI 的关系是依赖——AI 是你的拐杖,你的能力是借来的。
如果你答得上来,你和 AI 的关系是协作——AI 是你的工具,你的能力是真实的,AI 只是放大了它。
这两种关系,从外面看,早期几乎一模一样。但本质上是完全不同的处境。依赖意味着,AI 不在了或者给出错误答案的时候,你是盲的。协作意味着,你始终知道自己在做什么,AI 只是让你做得更快。
只有你能回答「没了 AI,我还能写出什么」这个问题。只有你能回答这个问题,你才能真正知道:有了 AI,我还能做什么。