乐于分享
好东西不私藏

AI能帮你做出App,但补不了这6门课

AI能帮你做出App,但补不了这6门课

这两年做软件专业教学,有个场景越来越常见。

学生拿着一个做好的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都能帮忙。

但一门也不能替你毕业。

回见。