AI越强越不能放弃学编程!斯坦福教授:别被“几分钟出Demo”骗走基本功,编程正在从背语法变成练判断

“You should learn how to program.”

Chris Piech:你仍然应该学习编程。

AI时代,人们应不应该学习编程是一个很现实的问题。

刚入门的人已经可以让Claude Code生成一套能运行的网页,让Cursor读仓库、改文件、跑测试。过去需要学几个月才能做出的第一个作品,现在可能一下午就能跑起来。

既然代码可以直接生成,为什么还要从变量、循环和函数学起?

斯坦福大学计算机科学教授Chris Piech在最近一期访谈里,给出了一个很明确的答案:

要学。现在学编程,更重要的是学会解决问题,而不是只记住代码语法。

备注:Chris Piech是斯坦福大学计算机科学副教授,斯坦福计算机科学本科、硕士和人工智能方向博士学位,长期研究机器学习。他还是全球在线编程项目Code in Place的联合创办者,已经和AI出现前后两代编程学习者打了多年交道。

Chris已经连续6年在Code in Place这个在线编程课授课。

这门在线编程课约有1.7万名学生和1000多名教师,一个很有意思的变化是,Cursor和Claude Code出现后,课程报名人数差不多翻了一倍。

大家没有因为AI会写代码就离开编程,反倒来了更多人。

Chris不拿就业前景劝学生。他在访谈里问了一个问题:AI会写文章,人还要不要学写作?AI会算概率,人还要不要学习推理?如果答案仍然是“要”,编程也一样。

工具能放大一个人的能力,前提是这个人有东西可供放大。

AI替你写得越多,五周后的Bug越难收拾

Chris自己也大量使用AI编程。写出第一版已经不难,他更关注那些暂时看不出来的错误。

Chris Piech:我经常用AI编程,但我碰巧懂得不少编程和软件架构。如果没有这些知识,AI会开始做出一些糟糕的决定。

刚做完原型时,我可能感觉不到。五周后,等学生实际用起来,奇怪的Bug就会出现。那时如果我看不懂架构,也就没法帮他们解决问题。

这很像现在的Vibe Coding。

页面能打开,接口能返回,Demo演示也顺利,于是大家默认任务已经完成。等到数据开始增长、多人同时使用,或者第二个开发者来改需求,藏在架构里的问题才一个个露出来。

比如模型为了赶快实现功能,可能绕过现有服务层直接访问数据库,在三个地方各写一套权限判断,或者给同一份业务状态起了不同名字。

这些代码都能运行,测试不完整时甚至一路绿灯。几周后再加功能,开发者面对的是一套已经长歪的结构,改正某一行代码根本解决不了。

Chris担心的也是这件事:如果代码一直由AI代写,人会在什么时候失去那部分最值钱的架构判断?

语法正在贬值,拆解问题开始涨价

“AI is going to get really good at syntax.”

Chris Piech:AI会越来越擅长处理语法。

Chris把学习编程分成两部分。

一部分是语法:怎样声明变量,循环怎么写,某个库该调用哪个函数。另一部分是解决问题:怎样把一个大问题拆开,数据应该怎样组织,算法和业务规则怎样接在一起。

模型正在快速代替第一部分。以后能不能背出每条命令,分量会越来越轻。

第二部分却躲不过去。

假设需求只有一句“给订单增加超时关闭”。写出定时任务和状态更新并不难,难的是继续往下问:已经付款但回调延迟的订单怎么办?关单消息重复消费会不会二次退款?老版本客户端能否识别新状态?任务执行失败后从哪里重试?

这些问题没有一个Prompt模板能替团队自动决定。

以前很多初学者被语法卡住,还没摸到解决问题这一层就放弃了。

现在语法门槛降下来,新人反而可以更早接触系统如何运转。不过有个条件:不能只收下AI给出的结果,还得追着它问清楚为什么这样拆。

代码最好的地方,是写错了马上露馅

“You get immediate falsifiable feedback.”

Chris Piech:编程会立刻给你一个可以验证的反馈。

这也是Chris坚持让人学习编程的原因。

生活里的很多决定要几个月甚至几年才能看到结果。代码没有这么客气。条件写反了,程序马上报错;数据结构选得不合适,性能测试很快就会拉响;接口理解错了,集成测试直接失败。

编程把“我觉得这样可行”变成“运行一下看看”。提出假设、动手实现、读取失败、重新修改,这个循环足够短,一个下午就能做很多轮。

Agent加入以后,这套训练仍然成立。区别只是代码不一定由人逐行敲出来。开发者需要先写清验收标准,再看模型的改动能不能通过测试、日志和真实数据的检查。

如果整个过程只剩一句“帮我做完”,这段反馈就被外包了。作品虽然出来了,人并没有获得多少判断经验。

别让Claude Code代写,把它变成陪练

主持人问Chris,如果现在还是一名年轻开发者,他会怎样学习。

Chris:先用Claude Code做很多原型,然后要求它把完成项目所需的核心知识教给自己。原型只是练习材料,每次动手都要把背后的概念补回来。

一项任务可以这样跑:先让Claude Code给出架构方案,暂时不要改文件;自己判断模块边界和数据流,再允许它实现。代码生成后,让它解释最重要的三个决定,以及哪种输入最容易让程序失败。

接着换一个需求,先由自己判断会影响哪些文件,再和Agent的计划对照。

遇到看不懂的代码,不要用“继续”把问题顶过去。让它缩小范围,画出调用链,补一条失败测试,再由自己改掉其中一小段。这个动作看起来比全自动慢,却能把项目经验留下来。

Chris在访谈里还提到,成为高产出工程师离不开实际投入的时间。他特意区分了“自己在创造”和“把任务交给Claude Code”。

Agent可以参与创作,却不能替人积累全部经验。

计算器会乘法,孩子依然要学乘法

“Hard to skip the foundations.”

Chris Piech:基础很难跳过去。

Chris用了一个简单的类比。计算器会做乘法已经很多年了,学校仍然会教孩子乘法。需要调整的是学习重点:背出13×7的答案没那么重要,理解乘法代表什么依然重要。

放到编程里,道理差不多。

开发者可以少花时间背API和命令参数,变量、控制流、数据结构、函数边界这些概念却不能省。进入真实项目后,还要知道一次请求怎样穿过服务,状态保存在哪里,错误由谁处理,修改失败后怎样恢复。

否则,Agent生成的每一段代码都只能用“看起来没问题”来验收。一旦测试没覆盖到,开发者很难判断问题藏在业务规则、并发、缓存还是数据库里。

AI减少了记忆负担,也让学习路径可以重新排布。先理解概念,需要细节时再查;先看清数据流,需要实现时再让模型补语法。跳过机械记忆可以,跳过理解不行。

顶尖工程师不必记住所有代码

访谈最后,Chris重新描述了他眼里的顶尖工程师。

这个人未必记得代码库里的每个函数,更重要的能力,是把现实中的问题转成应用、数据分析或者研究任务。

AI把做出第一版产品的门槛压低了。

Chris甚至认为,一名18岁的学生和朋友组队,也可能搭出一套很像样的代码库。新的难题随之出现:什么问题值得解决,用户究竟需要什么,哪个功能能让事情向前推进。

这些判断过去往往要到资深阶段才有机会练。现在新人也能借助Agent直接做产品,早点面对用户、数据和失败。写代码依然要学,学习目标已经从“独立敲完所有实现”,扩展到“能把一个真实问题交付成可用的软件”。

Chris给年轻人的建议很朴素:去做东西,做有人愿意使用、愿意喜欢的东西。作品一轮轮迭代,编码能力和解决问题的能力也会一起长出来。

写在最后:不要把学习机会一键外包

Chris并没有劝开发者远离AI。恰恰相反,他自己经常用,也鼓励年轻人多做原型。

他提醒学生保持一种自觉:使用AI的时候,自己有没有一起成长?

这个问题可以放进每一次AI编程任务里。合并代码前,问自己三件事:我能不能讲清这次改动的数据流?我知不知道它最可能在哪里失败?需求换一个条件后,我能不能独立判断修改范围?

三个问题都答不上来,拿到的只是一次可运行结果。只要能答出其中大部分,Agent就在帮你缩短练习周期。

AI都会写代码了,现在学习编程的回报早已超过掌握一门语言。你是在训练自己把一个模糊问题,变成可运行、可验证、出了问题还能修的系统。

Claude Code可以替你敲出第一版。五周后那个Bug为什么出现,最后仍要有人看得懂。

参考链接:
https://www.youtube.com/watch?v=g-CD1d0q01I 

 

分享到: 文章二维码
© 版权声明

暂无评论

您必须登录才能参与评论!
暂无评论...