前几天看到一个论坛的小白开发者的提问,我愣了一下:AI 都能几分钟写出一个小应用了,我还要不要从语法、算法、数据结构这些“古法”开始学? |
这个问题太真实了。
尤其是这两年,Cursor、Claude Code、GitHub Copilot、Windsurf 这些工具起来之后,写代码这件事的体感真的变了。
以前你想做一个网页,得先学 HTML、CSS、JavaScript,搞清楚按钮怎么写、接口怎么调、报错怎么查。现在呢?你把需求说清楚:我要一个待办清单,有新增、删除、搜索、保存本地数据。AI 可能几十秒就给你搭一个能跑的版本。
再进一步,所谓 vibe coding,也就是“凭感觉编程”,更刺激。你不用太懂代码,只要不断跟 AI 描述你想要什么、哪里不对、再改一下,它就能带着你把东西聊出来。
这事对新手的冲击非常大。屏幕前如果你正在学编程,大概率会冒出一个特别扎心的念头:
我是不是还没上桌,桌子就被掀了? |
我花半年学语法,AI 眨眼写完;我刷一百道算法题,实际工作里 AI 直接生成;我跟着视频一行行敲项目,别人靠提示词一晚上做出 demo。那我到底还学不学?
我的答案很明确:要学。但不是照着过去那套苦哈哈的方式原封不动学。
AI 编程时代,所谓“古法”真正值钱的部分,不是死记语法,不是为了面试硬刷几百道题,也不是把每一行代码都亲手敲出来才有仪式感。
真正值钱的是四个字:判断能力。 |
所谓判断能力,就是你要——
知道一个需求该怎么拆; 知道 AI 写出来的代码哪里可能有坑; 知道报错应该往哪个方向查; 知道一个东西能跑,不代表它安全、稳定、好维护; 知道什么时候该用现成库,什么时候才值得自己造轮子。
这才是“古法”的魂。不是手写代码这件事本身。
01AI 编程最狠的地方,是把“写出来”变便宜了

坦率讲,我把这些 AI 编程工具翻了个遍,也看了一堆评测和事故复盘,越看越发现,它们最吓人的地方,根本不是会写代码。
代码生成这件事,早就有了。以前 IDE 也会补全,低代码平台也能拖拽页面,脚手架工具也能一键生成项目结构。真正变天的是:AI 开始理解“意图”。
你不再需要一开始就说“请帮我写一个 React 组件,使用 useState 管理状态,再绑定 onClick 事件”。你可以直接说:“帮我做一个给研究选题打分的小工具,输入标题、目标读者和卖点,输出一个 1 到 10 分的评分和修改建议。”
它能自己猜技术方案,自己建文件,自己补逻辑,甚至自己运行测试。这就很像什么?
| 打个比方 以前你得自己拿锯子、钉子、木板做一张桌子。现在你旁边站了一个特别能干的木工学徒,你说“我要一张能放电脑、别太晃、最好有抽屉的桌子”,他就开始干活。可如果你完全不懂桌子,最后他给你做了一张表面好看、螺丝没拧紧、抽屉一拉就掉的桌子,你能看出来吗? |
这就是 AI 编程的核心矛盾。
「它让做出来变便宜了,却让判断做得对不对变得更重要了。」 |
以前不会写代码,你第一步就卡住。现在第一步不卡了,真正的坑后移了。坑不在“能不能生成”,而在“敢不敢上线”。
02为什么很多人会觉得古法没用了

我特别理解那种感觉。你辛辛苦苦学了三个月 JavaScript,好不容易搞明白数组、对象、异步请求,结果旁边一个人打开 AI,直接说“做个后台管理系统”,哐哐生成一堆文件。你心态很难不崩。
更别说很多短视频和文章还会在旁边拱火:
“不会代码也能做 App。” “一个提示词生成创业项目。” “程序员要被淘汰了。” |
这种内容看多了,人会产生一种错觉:编程的难点就是把代码写出来。既然 AI 能写,那学编程就没意义了。说实话,我一开始也差点被这种说法带跑。但我越想越觉得不对劲——这其实只看到了最外面一层。
写代码这件事,可以拆成好几层:
- 第一层
是把想法翻译成代码。 - 第二层
是把大需求拆成小任务。 - 第三层
是在限制条件下做技术选择。 - 第四层
是保证代码长期可维护。 - 第五层
是出了问题能定位、能修复、能复盘。
AI 现在对第一层帮助最大,对第二层也越来越强。但越往后,越需要人来掌舵。
举个很小的例子。你让 AI 写一个“求两个数平均值”的函数,它大概率会写对。可是如果需求变成“统计一批用户最近 30 天的平均消费额,排除退款订单,按地区分组,金额要考虑汇率,结果要能支持 100 万用户同时查询”,这就不是一行公式的事了。
你得知道数据从哪里来,边界条件有哪些,性能扛不扛得住,缓存怎么做,权限怎么控,结果错了谁负责。AI 可以参与每一步,但不能替你承担每一步的判断。
| 打个比方 这就像导航很强,但你不能因为有导航,就完全不看路。导航会告诉你右转,可如果前面正在修路、地上有坑、旁边冲出来一辆电动车,踩刹车的人还是你。 |
03Vibe Coding 很爽,但不能把责任也 vibe 掉

说到这里,就绕不开 vibe coding。公开资料里,vibe coding 这个词是 Andrej Karpathy 在 2025 年提出的。大概意思是,人用自然语言描述想法,AI 负责生成代码,你不断运行、反馈、调整,甚至不用太关注代码细节。
这个画面确实有未来感。我自己也觉得,这会极大改变软件开发。以前很多普通人有想法,但卡在“不会写代码”。现在门槛被 AI 砍掉一大截,很多小工具、小产品、小自动化都可以被普通人做出来。这是好事。
但我不太喜欢把它吹成“以后不用懂代码了”。因为真正危险的地方就在这儿:你可以 vibe 出一个 demo,但你不能 vibe 掉责任。
AI 不对你的数据库负责。 AI 不对用户隐私负责。 AI 不对线上事故负责。 AI 不会在老板、客户、用户面前替你解释为什么数据没了。 |
说实话,我去翻公开社区里那些 AI Agent 翻车案例时,心里是有点发凉的。有人明确叮嘱 AI 不要动数据库,结果它还是把数据删了;还有人只因为文件夹名字里多了一个空格,转义出错,整块硬盘被误删。我第一次看到这些时是真有点意外,原来翻车不是“写错一行”那么简单,而是“一句话没交代清楚,整个系统就没了”。
这些案例不用全信,也不用全往自己身上套,但它们至少提醒了我一件事:当 AI 拿到文件系统、数据库、部署权限之后,它不再只是“写几行代码的助手”,它开始能真实改变你的系统。这时候你还完全不懂它在干什么,就很危险。
以前你让实习生改代码,至少会 code review。现在你让 AI 改代码,反而因为它速度太快、态度太自信,就不 review 了。这不合理。
「AI 越强,越要验收。」 |
| 打个比方 就像你请了一个干活特别快的装修队,不代表你可以连水电图都不看。恰恰相反,因为它一天能砸三面墙,你更得知道哪面墙不能砸。 |
04古法里最该留下的,不是“苦”,是“验收能力”

很多人一听“古法编程”,脑子里浮现的是:背语法、刷算法、手敲项目、看厚厚的计算机网络和操作系统、在黑框框里调一天 bug。
说实话,这里面有些东西确实可以换一种学法了。比如很多语法细节,没必要像以前那样死背。你忘了某个 API 怎么写,问 AI 就行;你想从 Python 切到 Go,也可以让 AI 带着你迁移。但有几类能力,我觉得不但不能扔,反而更重要了。
| 一 · 读代码能力 AI 写出来的东西,你至少要能大概看懂。一个很简单的标准:你能不能把这段代码讲给一个初中生听?如果你讲不出来,只能说“反正 AI 说没问题”,那你其实没有掌控它。 |
| 二 · 调试能力 真正拉开差距的,不是永远不出错,而是出错后你能不能缩小范围:是前端传参错了?后端接口错了?数据库数据错了?AI 可以帮你猜,但你要知道怎么验证。就像医生看病,AI 可以列十种可能病因,但你总得做检查,不能看到第一条就直接开刀。 |
| 三 · 测试能力 测试不是大公司的繁文缛节,而是你和 AI 合作时的安全绳。你让 AI 写一个函数,别只看它“能跑”,要让它写几个测试:正常输入、空输入、异常输入、边界值、超大数据量。看代码靠经验,写测试靠规则——经验你可能暂时还没有,但规则现在就能用起来。 |
| 四 · 工程化意识 工程化说白了就是:这个东西以后还能不能改、别人能不能接、出了问题能不能查。AI 很容易给你生成一个“当下能跑”的版本,却可能重复写三份类似逻辑、引入没人维护的库、把配置写死、把权限判断塞得到处都是。这些短期不显眼,长期都是债。 |
技术债这个词很形象。你今天为了快,借了一点债,明天要还利息。AI 让借债更容易了,所以你更要知道什么时候不能借。
05那算法和数据结构还要不要学?要,但别神化

这个问题最容易吵起来。
一派说:算法是内功,必须苦练。 另一派说:工作里根本用不到红黑树,AI 还能直接写,刷题纯属浪费生命。 |
老实讲,我觉得两边都有道理,但都容易说过头。
如果你是想做专业程序员,尤其想进大厂、做基础架构、数据库、搜索、推荐、AI 系统、游戏引擎、编译器,那数据结构和算法当然要学。因为这些不是“面试题”,而是你理解系统的语言。
你不懂哈希表,就很难真正理解为什么查找可以很快;你不懂队列,就很难理解任务调度;你不懂树和图,就很难理解很多索引、依赖关系、路径搜索;你不懂复杂度,就很容易写出小数据能跑、大数据崩盘的代码。
但如果你只是一个普通运营、产品经理、自媒体作者,想用 AI 做几个自动化工具,那你不需要一上来死磕动态规划。你更需要的是:变量是什么,条件判断是什么,循环是什么,接口是什么,数据怎么流动,错误怎么排查。
也就是说,算法要不要学,取决于你的目标。
「别为了焦虑而学,也别为了偷懒而不学。」 |
我更推荐一个分层学法:
- 第一层
所有人都该学一点编程思维。知道输入、处理、输出,知道程序是按规则执行的。 - 第二层
想长期写代码的人,要学常见数据结构和复杂度。数组、对象、栈、队列、哈希表、树、图,至少知道它们适合解决什么问题。 - 第三层
想走专业深水区的人,再系统刷算法、补操作系统、网络、数据库、编译原理这些硬基础。
| 打个比方 不是每个人都要造压缩机。但你至少要知道冰箱是不是在制冷,坏了大概该找谁修,别把热饭直接塞进去还怪冰箱不行。 |
06新手最该警惕的,是“我会用 AI”等于“我会编程”的错觉

这话可能有点刺耳。现在很多新手用 AI 做出第一个项目,会非常兴奋。我完全理解,那种“原来我也能做出来”的感觉很爽。但这里有个坑:你做出来了,不代表你学会了。
AI 给你搭了一个项目,你能运行起来,这叫完成了一次“结果”。但学习要看的是,你有没有形成“迁移能力”。什么叫迁移能力?就是换一个类似问题,你还能不能做。
今天 AI 帮你做了待办清单,明天换成记账工具,你知道哪些部分类似,哪些部分不同吗?今天它帮你修了登录 bug,明天接口报 401,你知道大概率是权限、token、跨域还是后端校验问题吗?如果完全不知道,那你只是被 AI 带着走了一遍。
| 打个比方 就像有人跟着导航开车,从家到公司开了十次。但有一天导航坏了,他发现自己连东西南北都分不清。这不是会开路,这是会听指令。 |
所以初级阶段,我反而建议慢一点。不是不用 AI,而是不要一上来就把所有思考都丢给 AI。你可以先自己想 20 分钟:这个功能大概要分几步?数据放在哪里?用户点击后会发生什么?可能出什么错?
想不出来也没关系,把你的想法告诉 AI,让它补充、纠正、反问你。这时候 AI 是陪练。如果你直接说“帮我全写了”,它就是代笔。
陪练会让你变强,代笔只会让你交作业。 |
07真正会用 AI 的人,都在做三件事

我观察下来,真正把 AI 编程用得好的人,不是提示词写得多玄学,而是有三个共同点。
| 第一,先规划,再动手 他们不会一上来就说“帮我写个系统”,而是先让 AI 阅读项目、梳理结构、找相关文件、提出方案,再自己判断方案靠不靠谱。就像盖房子,先看地形、画图纸、确定承重,最后才施工。 |
| 第二,小步提交 AI 太容易一口气生成几千行改动。好的做法是把需求拆小:先改数据结构,再改接口,再改页面,再补测试。每一步都能运行,每一步都能回退。AI 速度越快,越容易把错误扩散得很远。 |
| 第三,会验证 不是让 AI 说“已经修复”就真的修复了。要运行测试,要手动点一遍关键流程,要看日志,要检查边界情况。能自动化的就自动化,不能自动化的就写清楚自测步骤。 |
「AI 编程时代最值钱的不是 prompt,而是验收清单。」 |
你能不能把“这个功能算完成”的标准说清楚?比如不是笼统地“做一个登录功能”,而是:
用户输入正确账号密码能登录;密码错误有提示;空密码不能提交;被禁用账号不能登录;token 过期会跳回登录页;连续失败 5 次要限制;日志不能记录明文密码。 |
你看,这些话没有一行代码,但它们比代码更重要。AI 可以写实现,但验收标准要靠人定。
08对不同人,我的建议不一样
| 如果你是普通人,只想用 AI 提高效率 不用把自己吓到,你不需要从 C 语言指针开始啃,也不需要刷 300 道算法题。先学三件事: ① 学会把需求说清楚:要什么输入、什么输出、有哪些规则。 ② 学一点基础概念:文件、路径、变量、函数、接口、数据库。 ③ 学会做简单验证:生成脚本就拿几组数据测,生成网页就自己点一遍。 |
| 如果你是转行学编程的人 不要只学 AI 工具,也不要只学传统教程,最好两条腿走路。看教程时跟着敲核心部分,但别机械复制。每学一个功能,就问 AI:如果让你实现,你会怎么拆?你的代码和教程有什么不同?把 AI 当第二位老师,一个可以随时追问的老师。 |
| 如果你是初级程序员 我建议你更谨慎一点。你当然要用 AI,不用会落后,但不要把最该练的东西全交出去——尤其是修 bug、读代码、写测试、做设计。遇到 bug,先自己定位 20 分钟,把现象、猜测、试过的方法写下来,再问 AI。这样问出来的答案质量会高很多,你也会学到东西。 |
| 如果你是资深工程师 AI 对你的价值可能更大,因为你脑子里已经有判断框架,能快速筛选 AI 生成的东西,让它探索方案、写样板、补测试、做迁移、查重复逻辑。但资深也有坑:太相信自己的判断,或太相信 AI 的速度。越是大改动,越要设计先行、权限隔离、小步验证。 |
09最好的学法:古法和 AI 对照着学

我最推荐的学习方式,不是纯古法,也不是纯 AI,是对照。比如你要学一个登录功能:
- 第一步
先自己画流程:用户输入账号密码,前端提交,后端校验,生成 token,前端保存,之后请求带上 token。 - 第二步
看教程或文档,理解每一步为什么存在。 - 第三步
让 AI 实现一个版本。 - 第四步
拿 AI 的版本和教程版本对比:目录结构、安全处理、错误提示有什么不同?有没有测试?有没有把密钥写死? - 第五步
让 AI 反过来考你:这段代码哪里处理登录状态?token 过期怎么办?为什么密码不能明文存?
这个过程非常有效。因为你不是被动接受 AI 的答案,而是在“对答案”。小时候做数学题,直接抄答案没用;但你先自己做,再看答案,效果完全不一样。AI 编程也是这个逻辑。
空着脑袋问 AI,得到的是结果。带着问题问 AI,得到的是成长。 |
10我们到底该扔掉什么,又该留下什么
所以回到开头的问题:AI 编程时代,还要不要学古法?我的答案可以再拆细一点。
| 可以少做的 · 少花时间死记语法。 · 少做那种为了手熟而手敲 20 遍的重复练习。 · 不再迷信“必须从最底层一层层学完才配做项目”。 · 可以更早用 AI 做真实项目,在项目里反向补知识。 |
| 一定要留下的 · 留下读代码的耐心。 · 留下调试问题的肌肉记忆。 · 留下写测试的习惯。 · 留下对安全、性能、可维护性的敬畏。 · 留下对官方文档的尊重。 · 留下把复杂问题拆小的能力。 · 留下不提交自己看不懂代码的底线。 |
这就是新时代的古法。它不再是“我必须亲手砌每一块砖”,它更像是——
“我得懂这房子为什么不会塌。” |
11AI 会放大你原本的水平

有句话我特别认同,它很适合作为 AI 编程时代的学习原则:
AI 可以比我厉害,但是“我 + AI”一定要比 AI 厉害,这就是我存在的价值。 |
如果你完全没有基础,AI 会放大你的想象力,也会放大你的盲区。 如果你有一点基础,AI 会让你更快做出东西,也会暴露你哪里不懂。 如果你有扎实基本功,AI 就像一个速度极快的助手,帮你把重复劳动压缩掉,让你把精力放在设计、判断和创造上。
所以,AI 不是让基础消失了,而是把基础的价值换了一个地方体现。以前基础体现在:你能不能写出来。以后基础体现在:你能不能定义清楚、判断正确、验收到位、持续改进。
写代码这门手艺,正在从“手工业”变成“指挥系统”。
| 打个比方 一个真正好的指挥,得懂乐器,懂节奏,懂每个声部什么时候该进、什么时候该停。你不一定亲自拉小提琴,但你听得出来它跑调了。AI 编程也一样——你不一定每行代码都亲手敲,但你得听得出,哪里跑调了。 |
12最后给一份很实用的学习清单
如果你现在正焦虑,不知道从哪里开始,我给你一份简单清单。不用一次全学完,按顺序来。
01 学会描述需求。别只说“帮我做个网站”,要说清楚:谁用、解决什么问题、有哪些页面、每个按钮点了发生什么、失败时怎么提示。 02 学基础语法,但别死背。变量、条件、循环、函数、数组、对象、异步,这些必须懂。具体 API 忘了可以查、可以问 AI。 03 学会读报错。报错不是敌人,是线索。看到红字先别慌,找文件名、行号、错误类型,再让 AI 解释。 04 学会写测试。哪怕只是让 AI 帮你写 5 个测试用例,也比完全不测强。 05 学数据怎么流动。前端输入怎么到后端,后端怎么查数据库,结果怎么返回页面。把这条线看懂,很多项目就不神秘了。 06 学一点安全常识。密码不能明文存,密钥不能写进代码,删除操作要确认,权限不能只靠前端判断,用户输入不能直接拼 SQL。 07 学会做小步改动。一次只改一个目标,改完就运行。别让 AI 一次性重构半个项目。 08 养成“解释给别人听”的习惯。如果你能把 AI 写的代码讲清楚,说明你真的开始掌控它了。 |
这份清单看起来不酷,没有“一个提示词月入十万”那么刺激。但它靠谱。而靠谱,在 AI 时代会越来越稀缺。
13结尾:别跪着用 AI,也别闭眼用 AI
AI 编程最好的状态,不是崇拜,也不是抵触。不是跪着说“AI 太强了,我不用学了”,也不是捂着耳朵说“这都是邪门歪道,只有手写才正统”。更好的状态是:承认它强,然后学会用它;承认自己会被改变,然后保留自己的判断。
古法不是旧时代的包袱,而是你面对新工具时,不被它牵着鼻子走的底气。 |
以后会有越来越多代码不是人一行行敲出来的。但需求是谁定义的,风险是谁承担的,质量是谁把关的,方向是谁决定的?还是人。
所以别问“AI 都会写代码了,我还要不要学”。更好的问题是:我要学到什么程度,才能让 AI 成为我的放大器,而不是我的拐杖?
我的答案是:学到你能看懂它、质疑它、验证它、修正它。到那一天,你就不是被 AI 替代的人——
你是带着 AI 干活的人。 |
如果你身边有正在学编程、准备转行、或者担心被 AI 取代的朋友,把这篇转给他。少看一点焦虑标题,多建立一点真正能用的判断力,比什么都重要。 |
喜欢的话就点点喜欢+关注+转发
夜雨聆风