“试试这套 SDD 规范驱动工作流”---我认真研究了“AI乱改代码”的解决方案,然后问了三个问题

0 阅读9分钟

学C语言的第3天,我点开了一篇大厂技术文章,然后……


刷到那篇文章的时候,我正准备关掉手机去睡觉

事情是这样的。

作为一个刚刚结束高考、计科的准大一新生,我这段时间的状态大概是:

  • 早上醒来刷B站,看“计算机专业大一应该做什么”
  • 下午刷B站,看“C语言从入门到精通”
  • 晚上刷B站,看“AI时代学计算机还有没有出路”
  • 睡前最后刷一下手机,然后——

我刷到了这篇文章:

《AI 乱改代码?试试这套 SDD 规范驱动工作流》

标题里的“AI乱改代码”成功吸引了我的注意,因为我想象中的AI写代码一直是“一键生成、完美运行、我只需要复制粘贴交作业”的画风。AI乱改很严重吗?

于是我点了进去。

然后我就看到了这些东西:

OpenSpec、Spec、Design、Tasks、MCP、Skills、AGENTS.md、Hooks、Vibe Coding……

我当时的表情大概是:😐 → 😕 → 😵

但来都来了,硬着头皮读呗。

读着读着,我脑子里冒出了三个问题。


第一个问题:这玩意儿,跟我学的C语言有关系吗?

这篇文章讲的SDD(Spec-Driven Development,规范驱动开发),看起来是针对大型项目、团队协作、前端后端微服务架构的。里面的代码示例我基本看不懂,提到的工具我一个都没用过。

我打开大一培养方案,确认了一下:第一学期主要学C语言,写的是控制台程序、排序算法、链表操作、学生成绩管理系统这类东西。代码量撑死了几百行,需求就是老师一句话:

“用C语言实现一个学生成绩管理系统,要求支持增删改查。”

这种情况下,我需要先写一个几十页的Spec文档吗?显然不需要。

但是——

我在文章里看到了这段话:

这些问题的症结,往往在于研发上下文缺乏有效组织,这是单纯优化Prompt难以逾越的瓶颈。

虽然我还没开始“研发”,但这句话让我想到了一件事:

我学C语言的时候,经常遇到这种情况——

打开Dev-C++(别笑,真的用这个教),开始敲代码,边想边写。写到一半忘了刚才定义了什么变量,往上翻找。程序报错了,瞎改一通,跑通了,但完全不记得改了什么。第二天再看这段代码,跟看天书一样,完全不知道自己在写什么。

这不就是“上下文缺乏有效组织”吗?

所以我的结论是:

SDD的工具和流程,大一用不上。但SDD的核心思想——先把需求写清楚、把架构想清楚、把任务拆清楚,再动手写代码——这玩意儿放到任何语言、任何阶段都管用。

哪怕只是写一个200行的C语言课设,也值得花10分钟先在文件顶部写一段注释:这个程序要做什么、有哪些功能、边界条件是什么。

这应该就是SDD在大一阶段的“平替版”吧。


第二个问题:如果我只学C语言,是不是就跟不上AI时代了?

这篇文章里反复提到的场景是:用AI生成代码、用AI辅助开发、用AI帮忙调试。

而我,一个准大一新生,目前的技术栈是:

  • HTML(能写个带标题的网页)
  • CSS(能让背景换个颜色,但不太美观)
  • Python(能跑 print 和 input,没搞懂 class 是什么)
  • C语言(正在学,目前进度:printf("Hello World!")以及scanf

也就是说,我连“手动写代码”都还没完全学会,AI辅助开发这件事对我来说,好像还比较遥远。

但文章里有一句话让我稍微安心了一点:

现在模型的能力已经很强了,但它并不会自动替我们完成所有判断。真正决定产出质量的,还是取决于我们的用法。

翻译成我能听懂的话,大概就是:

AI是工具,人是司机。大学四年应该学会的不是“怎么让AI写代码”,而是“怎么写代码、怎么设计程序、怎么判断AI生成的东西对不对”。

C语言可能不是最时髦的语言,但它教会你内存怎么管理、指针怎么操作、程序怎么运行。这些东西,是你在AI时代判断“AI写的这坨代码到底对不对”的基础。

所以我的第二层结论是:

大一好好学C语言,不亏。学的是“判断力”。


第三个问题:这篇文章里,有什么是我现在就能用的?

说实话,文章里90%的内容我现在用不上。但剩下的10%,我反复看了好几遍,觉得大一就能开始用

我总结成了三件具体的事情:

第一件事:写代码之前,先写注释

原文学到的:Spec(规格说明)要写清楚“做什么、不能做什么、验收标准是什么”。

大一的平替做法:拿到一个编程作业,先别急着敲代码。在文件顶部写一段注释:

/*
 * 程序:学生成绩管理系统
 * 
 * 功能:
 *   1. 添加学生(学号、姓名、成绩)
 *   2. 删除学生(按学号)
 *   3. 修改成绩(按学号)
 *   4. 查询成绩(按学号)
 *   5. 计算平均分和排名
 * 
 * 数据:结构体数组,最多50人
 * 
 * 边界:
 *   - 学号是8位数字
 *   - 成绩0-100
 *   - 学号重复了要提示
 *   - 删除不存在的学号要提示
 * 
 * 验收:所有功能跑通,输入非法数据不崩溃
 */

写完之后再开始写代码。过程中时不时回头看一眼,问自己:我有没有跑偏?

就这一个习惯,能省掉大量的无效debug时间。

第二件事:把大作业拆成“每日任务清单”

原文提到:Tasks(任务拆解)要把需求拆成可执行、可验证的小任务。

比如学生成绩管理系统,老师给了一周时间。我拿到题目后,别等最后三天才开始写,先拆任务:

任务验收
第1天定义结构体 + 写主菜单循环编译通过,菜单能循环显示
第2天实现添加学生功能能写入数组,打印验证
第3天实现查询和修改功能按学号能查能改
第4天实现删除和排名功能删除后数组正确,排名正确
第5天文件读写(保存到txt)重启程序数据不丢
第6天整体测试 + 边界测试所有功能跑通,乱输入不崩
第7天写实验报告提交

每天完成了就打勾。万一第6天崩了,你可以回到第5天的版本重新来。

再也不会有“课设前夜通宵改bug”的绝望了。

第三件事:每次做完作业,花10分钟写“复盘笔记”

原文提到:Archive(归档沉淀)要把经验沉淀下来,以后复用。

DeepSeek说大一的平替做法是:

每次实验做完,在手机备忘录里写三行话:

【踩了什么坑】
- 指针传参忘记用 &,导致值没改成功
- scanf 后缓冲区有换行符,用 getchar() 清掉了

【学会了什么】
- 动态内存分配 malloc 和 free 怎么用
- 链表的插入删除操作终于搞懂了

【下次注意】
- 涉及指针的操作,先画图捋一遍再写代码

我也确实知道这份笔记的价值,会随着时间推移越来越大。等到大二学数据结构、大三准备面试、大四做毕设,翻出来看,我会比“学过就忘”的同学省下大量复习时间。

三个字总结就是:别白学。


最后,我想说点认真的

这篇文章我确实没完全看懂,MCP是什么、Hooks怎么配、OpenSpec怎么用——这些对我一个刚学C语言的人来说还太遥远。

但我看懂了文章的核心精神:

人负责定义规则和判断结果,AI负责在规则内完成实现。

其实学编程也是一样:

你负责先想清楚、写清楚、拆清楚,然后代码(不管是手写的还是AI生成的)才能在规则内稳定运行。

所以,虽然我还没开始用AI辅助写代码,但我打算做一件事:

把SDD的思想,先用到我的C语言学习上。

每次写程序前,先写注释说明白要做什么。
每次拿到大作业,先拆成每天能完成的小任务。
每次做完实验,花十分钟写一份复盘笔记。

这些习惯养成了,等大二真正开始用AI写代码的时候,我应该不会成为文章里说的那种“AI乱改代码”的人。

因为到那时候,我已经学会了——先定好规矩,再让工具干活。


假想小剧场(都看到这里,就点点赞呗orz)

写到这儿的时候,我室友路过看了一眼我的屏幕。

他问:“你在写什么?”

我说:“我在写一篇技术文章的读后感。”

他看了一眼标题草稿,说:“你不是刚学C语言三天吗?”

我说:“对,所以我现在还是一知半解,但我觉得挺有用的,先写下来。”

他说:“那你这篇文章准备发哪?”

我说:“掘金。万一四年后我成了大佬,这就是我入行的第一篇技术感悟。万一没成……”

“没成咋样?”

“没成就当给学弟学妹留个参考吧,至少有人试过了,准大一也可以看大厂技术文章。”

他沉默了一会,说:“那你现在还是先把C语言作业写完吧。”

我说:“对,写完我就去用Git把代码传上去,哪怕就一百行,也得有版本管理。”

他看我的眼神,像看一个刚学会走路就想去跑马拉松的人。

但我觉得,那个方向是对的。


——写于2026年7月最后一天,计科准大一新生,C语言学习进度3天。

这篇文章我可能会在四年后回来看。到时候如果还在写代码,希望自己已经用上了真正的SDD。