这两年做软件专业教学,有个场景越来越常见。
学生拿着一个做好的App过来,页面挺漂亮,登录、聊天、数据库都有,点起来也像那么回事。
我问一句:
“这个权限为什么这样设计?”
安静了。
再问:“数据库里这几张表为什么这么拆?”
还是安静。
最后学生很诚实:
“老师,这部分是AI写的。”
我完全不反对学生用AI。
我自己天天用Claude Code。让我现在回到所有代码都手敲的年代,我也不干。放着电钻不用,非拿螺丝刀拧一天,这不叫工匠精神,这叫跟手腕过不去。
但有件事必须说清楚:
AI能帮你把软件做出来,不等于它把软件开发教会了。
这两个东西,现在被很多人混在了一起。

能跑,已经是最低要求了
前几天我在Hacker News看到一个提问。
一位做数据分析和管理的人,平时用SQL、Excel,也懂一点R。后来靠ChatGPT和Claude,他做出了Web应用、Python脚本、桌面工具,甚至还有一个真正上线、多人使用的Android应用。
这已经很厉害了。
可他自己越做越虚。
东西是跑起来了,但为什么能跑,他不完全清楚;架构是不是合理,不知道;复杂度上来以后哪里会崩,也没底。
于是他问了一个特别好的问题:
AI时代,到底什么应该认真学,什么只需要学到能监督,什么可以彻底交给AI?
这个问题,比“今年学Cursor还是Claude Code”重要多了。
工具半年换一轮。今天排行榜第一,过两个月可能就在评论区卖惨。
判断力没这么容易过期。
一个项目能在演示机上跑起来,只能证明它在那几分钟里没死。
能不能改需求,能不能扛异常,能不能保护用户数据,换个人能不能接手,出了事故能不能找到原因——这些才是软件开发。
说得难听一点:
演示成功是截图,长期可用才是工程。
AI补不了的第一课:需求
学生最爱给AI一句话:
“帮我做一个学生管理系统。”
AI很配合,登录页、学生列表、增删改查,一会儿全有了。
问题是,谁能看什么?辅导员和任课老师权限一样吗?学生能不能改自己的信息?退学数据是删除还是保留?
这些不是代码问题。
这是你有没有真正理解使用者。
AI可以根据需求写代码,但它不能替你确认需求。你给它一句模糊的话,它不会拍桌子说“先别写,这需求是扯淡”。它通常会很有礼貌地帮你把扯淡做成一个精美界面。
所以需求分析必须深学。
不要求每个学生都当产品经理,但至少要会追问:谁用、在什么场景用、什么算完成、哪些情况不能发生。
第二课:数据
现在用AI做项目,最容易被忽略的是数据库。
表建出来了,字段也有,跑几个测试数据没问题。
等到数据量上来、业务关系变复杂,重复、脏数据、权限混乱一起冒头。
数据库不是给页面找个地方存东西。
它是业务规则最后落地的地方。
实体怎么拆、关系怎么定、约束放哪里、哪些数据不能丢,这些必须理解。SQL可以让AI写,数据模型不能闭着眼签收。
第三课:架构
AI特别擅长局部正确。
你让它加一个按钮,它能加。再加一个支付,它也能加。再来消息通知、文件上传、第三方登录,它都说没问题。
最后项目像一套不断加盖的农村自建房。
每个房间都能住,楼梯在厕所里。
架构不是背微服务、DDD和一堆缩写。对学生来说,先学会把系统拆成边界清楚的几块,知道谁依赖谁,知道改这里会不会把那里炸掉,已经很值钱。
AI可以搭架子,但你得看得出这个架子是不是歪的。
第四课:安全
这一课最不能外包。
AI生成的登录功能看上去很完整:账号、密码、Token,一个不少。
可密码怎么存?接口有没有越权?错误信息会不会把数据库结构吐出来?上传文件能不能执行?
页面越漂亮,越容易让人忘记后面可能开着窗。
学校里做课程项目,很多时候数据是假的,服务器也是临时的,漏洞没造成后果。学生就会得到一个危险错觉:既然没出事,那就是安全的。
不是。
只是没人搭理你。
等项目真接上学生信息、就业数据和企业账号,AI随手写下的一行代码,就可能变成事故报告里最贵的一行。
第五课:测试
“老师,我试过了,能用。”
这句话我听着就紧张。
你试的是正常流程。那密码输错呢?网络断了呢?接口超时呢?两个人同时改一条数据呢?
AI写测试很快,这恰恰是好事。
但测试什么、什么结果才算对,仍然需要人判断。
不会测试的人,用AI只是把未知错误生成得更快。会测试的人,才真正吃到了AI的效率红利。
第六课:部署和运维
本地运行成功,是软件最快乐的时刻。
一部署,快乐就结束了。
环境变量、域名、证书、数据库迁移、日志、备份、监控,轮番进场。
学生经常把“上线”理解成上传到服务器。程序员工作以后才知道,上传只是开始,半夜收到报警才叫正式认识这个项目。
AI能写Dockerfile,能配CI,也能帮你查日志。
但你必须知道服务现在是什么状态,失败后怎么恢复,数据怎么找回来。
否则所谓上线,就是把问题从自己电脑搬到公网。

那语法还要不要学?
要学,但不用再像以前那样学。
过去我们花大量时间记语法、抄代码、背API。现在这部分可以明显压缩。
循环怎么写、框架配置怎么填、普通CRUD怎么补,完全可以让AI多干。
学生真正需要深学的,是六种判断:
需求有没有说清楚 数据关系对不对 系统边界稳不稳 安全底线守没守 异常有没有测到 上线以后救不救得回来
语法学到能读、能改、能定位问题。常规代码让AI写,人负责审。
这才是合理分工。
不是学生手写一切,也不是学生按一下回车,然后把AI的劳动成果打印出来参加答辩。
我现在最担心的,不是学生用AI作弊
我担心的是另一件事。
学生用AI做出越来越漂亮的项目,老师也觉得效果不错,学校展示时大屏一放,领导一看,嗯,人工智能赋能教学,挺好。
大家都开心。
可如果答辩只问“用了什么模型”“生成效率提高多少”,不再追问为什么这样设计、失败了怎么办、数据丢了怎么恢复,我们培养出来的就不是AI时代的软件人才。
是AI作品的讲解员。
所以AI进课堂以后,考核反而应该更难。
不一定要求多写代码,但要多做解释、多改需求、多造故障、多现场排查。
代码可以生成,答辩不能生成。
项目可以让AI帮着做,判断必须长在学生自己身上。
AI时代最值钱的,不是把答案生成出来,而是知道这个答案能不能交付。
这六门课,AI都能帮忙。
但一门也不能替你毕业。
回见。
夜雨聆风