乐于分享
好东西不私藏

【CS146S 自学专栏第 1 篇】AI 时代的软件开发者到底该学什么?

【CS146S 自学专栏第 1 篇】AI 时代的软件开发者到底该学什么?

本文是 Stanford CS146S: The Modern Software Developer 的非官方中文自学专栏整理。内容基于公开课程页、公开作业仓库和相关工具官方文档重新组织,面向基础薄弱或刚入门的读者,方便按公众号文章形式学习。

很多人第一次听到“AI 软件开发”时,脑子里会出现一个很简单的画面:我把需求告诉 AI,AI 直接把代码写好,我复制运行,项目就完成了。

这个画面很诱人,但它也很危险。真正的 AI 时代软件开发,不是“人类什么都不用学了”,而是“人类要学会用新的方式管理复杂系统”。斯坦福 CS146S 这门课的价值就在这里:它不是把 AI 当成一个炫技工具,而是把 AI 放进真实的软件工程流程里,讨论需求、代码、测试、安全、审查、部署和维护会怎样改变。

先把一个误解讲清楚:AI 不是替代学习,而是放大学习

如果一个人完全不懂文件、终端、Git、Python、前后端、数据库、测试,他当然也可以让 AI 生成一段代码。但问题是:

代码为什么报错,他看不懂。

AI 改了哪些文件,他不知道。

数据保存在哪里,他说不清。

接口返回错了,他不知道是前端、后端还是数据库的问题。

AI 说“已经修复”,他没有能力验证。

这就是 AI 编程最常见的坑:看起来速度很快,实际上只是把问题推迟到了更难排查的时候。

所以,AI 时代的软件开发者,不是不用学习基础,而是更需要学习基础。过去你学基础,是为了自己写代码;现在你学基础,还要为了判断 AI 写的代码是否可靠。

AI 时代开发者的新角色

以前的开发者主要做三件事:理解需求、写代码、修 bug。

现在的开发者会多出几件新工作:

第一,给 AI 提供上下文。AI 不在你的公司开会,不知道你的业务规则,不知道哪些接口不能改,也不知道哪些数据库字段不能删。你必须把这些背景写清楚。

第二,把大任务拆成小任务。不能对 AI 说“帮我做一个完整系统”,然后等奇迹发生。更好的方式是拆成:先建数据模型,再写接口,再写测试,再写页面,再更新文档。

第三,设计验收标准。你不能只说“做得好一点”。你要说清楚:接口路径是什么,输入输出是什么,哪些测试必须通过,哪些文件不能动,什么情况算失败。

第四,审查 AI 的结果。AI 可能写出能运行但不安全的代码,也可能修了一个 bug 又引入另一个 bug。现代开发者必须会读 diff、跑测试、看日志、做代码审查。

第五,建立工作流。高手不是每次都临时问 AI,而是会把重复流程沉淀下来,比如“新增接口必须先写测试”“修改 API 后必须同步文档”“每次提交前必须跑安全扫描”。

这套专栏要学的不是某一个工具

很多工具会变。今天大家用 Cursor、Claude Code、Warp、Copilot、Codex、Bolt;明天可能又出现新的 IDE、新的 Agent、新的平台。工具会更新,底层能力不会过时。

这套专栏真正要教的是一套能力模型:

基础能力:文件、终端、Git、Python、JSON、HTTP、数据库表达能力:把模糊需求写成清晰任务上下文能力:让 AI 理解项目结构和约束拆解能力:把大功能拆成可验证的小步骤验证能力:用测试、日志、安全扫描检查结果审查能力:看懂代码变更,判断是否值得合并协作能力:用 PR、文档、复盘管理开发过程

这几个能力组合起来,才是 AI 时代真正有用的软件开发能力。

什么是现代软件开发者

现代软件开发者不只是写代码的人,而是能把一个想法变成可运行、可维护、可验证的软件的人。

举个例子,老板说:“我们做一个学习计划管理器吧。”

初学者可能会直接问 AI:

帮我写一个学习计划管理器。

更成熟的开发者会这样处理:

目标:做一个学习计划管理器。用户:学生和自学者。核心资源:学习任务。功能:创建任务、查看任务、修改状态、删除任务。数据字段:标题、说明、截止日期、状态、创建时间。技术栈:FastAPI + SQLite + 简单网页。验收标准:1. 所有接口能本地运行。2. 所有输入必须校验。3. 至少有 5 个测试。4. README 说明如何启动。5. 不允许把密钥写进代码。

这两种问法的区别,就是“随便让 AI 写”和“用工程方法管理 AI”的区别。

初学者应该怎么学这套内容?

不要一上来就追求“全自动 Agent”。先按三个阶段走。

第一阶段:补基础。你要知道项目文件放在哪里,命令在哪里执行,Git 是怎么记录版本的,JSON 为什么是 AI 输出里最常见的格式。

第二阶段:做小项目。不要先做大平台。先做待办事项、笔记、学习计划、书单、课程表这种小应用。小应用更容易看懂完整流程。

第三阶段:加入 AI 工作流。等你知道一个项目怎样运行,再让 AI 帮你写测试、改代码、生成文档、做代码审查。

学习顺序建议是:

先能看懂项目再能手动跑起来再能让 AI 改一小块再能写测试验证它最后再谈多 Agent 和自动化

AI 开发最重要的一句话

AI 可以生成代码,但不能替你承担责任。

一个项目上线后,用户不会说“这是 AI 写错了,所以不怪你”。他们只会看到软件不能用、数据丢了、页面报错、功能不符合需求。所以,现代开发者的核心价值不在于比 AI 打字更快,而在于能判断什么是正确、可靠、可维护的结果。

本篇小练习

今天不需要写代码,只做一个思维练习。

把下面这个模糊需求改写成清晰任务:

我想做一个能帮我学习的工具。

参考答案:

我要做一个学习任务管理器。用户可以新增学习任务,查看任务列表,修改任务状态,删除任务。每个任务包含:标题、说明、截止日期、状态。状态只能是:未开始、进行中、已完成。应用先做本地版,不做登录。验收标准:1. 浏览器打开后能看到任务列表。2. 新增任务后刷新页面仍然存在。3. 标题不能为空。4. 删除任务前有确认。5. README 写清楚启动步骤。

你会发现,需求一旦写清楚,AI 就更容易帮你;更重要的是,你自己也更容易判断它有没有做对。

下一篇预告

下一篇我们先不碰复杂 AI 工具,而是给零基础读者补一堂最重要的基础课:文件、终端、Git、Python、JSON。很多人 AI 编程卡住,不是因为不会 Prompt,而是因为这些基础没有打牢。

参考资料

Stanford Bulletin: CS146S Course: https://bulletin.stanford.edu/courses/2274401

CS146S public assignment repository: https://github.com/mihail911/modern-software-dev-assignments

OpenAI API docs: code generation: https://platform.openai.com/docs/guides/code-generation