先说一个可能让你意外的事:现在搭一套能用的小工具,最难的已经不是写代码了。
写代码这件事,AI 已经能替你做掉大半。真正卡住人的,是想不清楚三件事——到底要什么、什么算做对了、做到哪一步算够用。而这三件事,恰好是你天天在做的:你比任何程序员都更懂你那摊业务。
所以这一页不教编程。它讲的是动手前后必须想清楚的事。这些事来自两套真实落地过的系统,不是凭空总结的道理。
两套都在客户公司落地试点过,不是凭空想的例子。而且它们留下了开发过程的记录,所以下面讲的每件事,都能指到当时真实发生过的哪一步。七件事,就是它们的过程里最值得你拿走的部分。
从提需求到能用,走了 17 天和 20 天
两套系统的需求是同一天提出来的。一套 17 天后上线,另一套 20 天后上线。
在往下看七件事之前,先把这条路整个走一遍——先看形状,再看道理。
| 时间 | 发生了什么 |
|---|---|
| 第 1 天 | 需求拆开,先做最短的一条路。学情分析明确「先用 Excel 导成绩,拍照识别放到第三期」;磨课评课明确「排课系统先预留,这一期不做」。 同一天,磨课评课的系统骨架立了起来(47 个文件),学情分析的「能导入 → 能算 → 能出报告」跑通。也就在这一天,学情分析做网页的那套工具被换掉了一次。 |
| 第 7 天 | 学情分析:家长报告从「把结果念一遍」改成「说清这说明什么、下一步做什么」 |
| 第 11 天 | 需求变大了一次。学情分析从「给老师和家长看」扩到「给老板看的六个场景」:全局总览、教师效能、退学预警、家长满意度、招生支撑、标准化管理。定成五期,先做前两个。 同一天,磨课评课在做 PDF 导出——改了四版 |
| 第 12–14 天 | 两边都在造演示数据和修问题。磨课评课修四个数据质量问题、重造演示数据;学情分析改招生看板、改考试详情页。 学情分析「班」的隐患,就是这两天造演示数据时埋下的——一个班被陆续派了好几门课的考试(第 01 件事)。 第 14 天,磨课评课的管理端界面按「教导主任要做什么决定」重做了一遍 |
| 第 18 天 | 磨课评课:给评分维度改名(「板书与多媒体」→「激发兴趣与引导」),并统一九个维度的评分描述与权重。改这一个名字,要动六个地方 |
| 第 21 天 | 学情分析:业务方自己看出「班」有问题——「八年级平行C班」底下同时挂着数学、英语、语文三门课的考试。现实里不会这样:英语班和语文班是两个不同的班。根因是系统里的「班」没有"是哪一科的"这个属性——6 月 16 日造演示数据时就长歪了,一直没被发现。随后彻底重构:12 个混合科目的班拆成 48 个单科班 |
这条路的形状,有五件事值得注意
- 需求没有变复杂,是「要看的人」变多了。学情分析最初只服务两个角色(老师、家长),十天后要服务老板。磨课评课一开始只是个评分工具,后来要服务老师自己(成长曲线)和校区管理(交叉看板)。
- 第一天就决定了「不做什么」。拍照识别、排课系统——两个项目都在第一天划了明确的边界外。不做,才做得完。
- 需求方要的不是「好看」,是「能拿来做决定」。磨课评课做到一半时,需求方说了一句很关键的话:不要只做得好看,要从教导主任的角度想——他要做什么决定。这一句话改掉了整个管理端界面的做法。
- 「可用」的分界线是上线,不是改完。写完不等于能用;真正的分界是把它传上去、有真实的人打开它。而这一步往往最不顺——磨课评课新版上线了三次,线上打开的仍是旧版。
- 最后三分之一的时间在「修」,不在「做」。从第 12 天起,两个项目的大部分工作是修问题、重做界面、改标签、补数据。这段不产生新功能,但它决定这东西到底能不能用。
把你脑子里那句「这还用说」写下来
这一条不涉及技术,但它是最容易被跳过、也最贵的一步。
做系统的人不是你这一行的。他不知道「一个班有几门课」「一张单子要几个人签」「月底对账先看哪张表」。这些在你看来不用想的事,他必须知道,而且必须知道对。
学情分析这套系统在这里栽过一次。根子在系统里的「班」:它只是一个名字,没有"是哪一科的"这个属性。
班就叫「七年级火箭班」「八年级平行班」——不带科目。而考试是带科目的。这个缺口从第一天就在,只做单科的时候看不出来。
造演示数据的时候,这个缺口直接长成了数据:同一个「七年级火箭班」,先被安排了数学,又被安排了英语和语文——四场考试,三个科目。
直到业务方打开班级列表,看到了一个问题:
「八年级平行C班」底下,怎么会同时挂着数学、英语、语文三门课的考试?
这个情况现实里根本不会发生——英语班和语文班是两个不同的班。
造数据的人不会觉得这有什么:对他来说,「八年级平行C班」就是一个班名。可对业务来说,「英语班」和「语文班」是两回事。
而这恰恰是「这还用说」最危险的地方:「英语班和语文班是两个班」这句话,在培训机构的日常里根本不需要说——排课的人心里门儿清,特意说一句反倒奇怪。但系统里的「班」只是一个名字,你不说,它就当它们是同一个。
当时摆在面前的是两个选择:只把班级的名字改掉,让它看起来像单科班(便宜,当天就能完);或者把班级按科目真正拆开。选了后者——只改名字的话,底下的数据还是"一班多科目",下次做任何一张新报表,都会再撞上同一个问题。
彻底的做法是这几件事一起做:
- 给班级加上"科目"这一列
- 再建一张表,记录哪个学生属于哪个班
- 把原来"一个班多门课"拆成"一个班一门课"
- 把已有的考试,重新归属到拆出来的新班上
代价是真实的:当时库里 12 个班,每一个都挂着不止一门课的考试,全都要拆开重排。而且那个用来搬迁数据的程序,第一次还没写成就失败了,重写一遍才跑起来。
拆完的结果是这样的——班级的名字里带上了科目,一个班只考一门课:
| 拆之前 | 拆之后 |
|---|---|
| 八年级平行C班 (挂着数学、英语、语文的考试) |
八年级数学平行C班 / 八年级英语平行C班 / 八年级语文平行C班 (各考各的,共 48 个班) |
这种不对,只有你看得出来——因为你天天在这个业务里。做系统的人看到的是一个班名,看不出它少了什么。
换个场景就好懂:你带新人时,那些你从来不解释、默认他"应该知道"的规矩,他一定会做错。做系统也是一样——你不说的,它不会知道。
改主意没关系,但要让后来的人看得懂
做任何东西的过程,都是不停改主意的过程。问题不在改,在于改完有没有人知道为什么改。
还是学情分析那套系统。它的文件夹里躺着六个名字很像的小程序:三个改记数据方式的,两个专门修数据的,一个补内容。你从名字能猜出它们干了什么,但猜不出为什么。
因为除了这几个小程序本身,没有任何一份文档说明当初为什么这么定、后来又为什么改。它们还在,你还能看懂;一删,这段历史就没了。
对照着看另一套——磨课评课留下了完整的设计说明,末尾附了一张「决定记录」表,三列:日期、决定了什么、为什么。哪怕当时只有一条,也写清了。
不过更能说明问题的是磨课评课的一次改名。把评分维度「板书与多媒体」改成「激发兴趣与引导」——听起来是一句话的事,实际要动六个地方:系统里那份默认的维度清单、发给 AI 的评分标准、给老师的建议提示、网页上「关于」页的三处文字、示例报告的网页、示例报告的数据文件。漏掉任何一处,就会出现"页面上叫一个名字、报告里叫另一个名字"。
而且改的时候才发现:代码里的默认清单写着 6 个维度,系统实际在跑 9 个。多出来的三个是在管理后台里加的,代码从来没跟上。
换个场景就好懂:项目里改需求要签变更单。不签,下个月接手的人看到这块被砍了,不知道为什么,很可能又给加回来。
只给结论没用,要告诉人"错在哪、怎么改"
磨课评课那套系统的报告,是最值得看的部分。它不是给一个分数就完事。
一节课从九个角度打分,每个角度下面是三样东西:AI 的评语、扣分项、改进建议。比如"师生互动"这一项,得了 5 分,下面会写清扣在哪两处、具体建议怎么调整。
报告里另有一块,是按优先级排序的改进建议——先改哪条、后改哪条,排好了。
换个场景就好懂:给下属做绩效反馈,只说"你这次 3.5 分"没有意义。得说清哪件事做得好、哪件事下次换个做法。评分体系的价值在反馈,不在分数。
一个数字,必须有参照系
同一份磨课报告里,除了总分,还带着另外两个数:
- 同年级的平均分(示例里是 71.5 分,同年级 24 人)
- 这位老师自己的历史记录
为什么必须带上?因为单独一个分数,读不出高低。是这个年级普遍水平高、所以这个分数算差?还是这届学生难教、这个分数已经不错?
横向和同年级比,纵向和自己的过去比——这个分数才变成信息。
结论要能指回原话、原题
这是让用户"服气"的关键一步。
磨课评课的录音会转成逐字稿,而且是分了段的。说"你这节课互动不够",得能指到是哪个环节、哪几句话——老师才会认,也才知道具体回去改哪里。
学情分析同理。它在题目和知识点之间建了一层关联:知识本身是分层的(大知识点下面挂着小知识点),每道题、每份试卷都连到具体的知识点上。
有了这层关联,才可能说出"这个学生在'分数的四则运算'上错了 4 题"——而不是只知道他考了 63 分。
换个场景就好懂:说"这块业务有问题"没人服。得能指出是哪张表、哪一笔。反馈要落到具体位置,才有行动价值。
能不能用起来,卡在两头
很多人以为系统做出来就能用。真正卡住的地方通常在两头:数据进不来,结果送不出去。
进来这一头
现实是:学校和机构的数据,都躺在 Excel 和 Word 里。成绩是 Excel 表,试卷是 Word 文档,没人会替你整理成标准格式。
所以学情分析专门做了两个导入的部件:一个读 Excel 成绩表,一个读 Word 试卷。数据进不来,后面分析得再好也等于零。
出去这一头
同一批数据,它出三类报告,给三种完全不同的人:
- 班级报告给老师 —— 全班哪里弱、哪些题错得多
- 教师报告给教学管理 —— 哪些知识点讲了但没讲透
- 家长报告给家长 —— 自家孩子强在哪、弱在哪、先补什么
把全班排名塞进家长报告,家长看不懂也没用。同一个结论,对不同的人要说不同的话。
换个场景就好懂:你辛苦做了一份分析,如果别人拿不到、或者拿到了看不懂,这份分析在实际工作里的价值是零。做之前先想清楚:数据从谁手里拿、结果送到谁手里。
改了三遍还是不对,先别改内容
磨课评课要把报告导出成 PDF,方便存档和当面沟通。这件事花了整整一天,改了四个版本。
前三个版本都在改样式:
- 第一版:版式塌了
- 第二版:换了排版方式,还是乱
- 第三版:干脆把所有装饰都删掉,只留表格和文字——还是乱
到第四版才反应过来:问题根本不在样式上,在用来生成 PDF 的那个工具身上。它处理中文和复杂排版本来就不太靠得住。换成用浏览器的方式来生成,一次就对上了。
当时点醒人的是一个很简单的观察:同一份内容在浏览器里看是完全正常的,导出来才乱。——那说明内容没问题,是把它变成 PDF 的那个环节有问题。
一句话记住它:同一处改到第三遍还不对,就停下来怀疑工具,别再改内容。继续改下去,你会把本来对的东西也改坏——那三个版本里有两次是白改的。
里面装的是真人的事,边界要在动手时定
这一条不占编号,因为它不是"七件事里的第八件",而是从第一天就要摆在那儿的前提。
学情分析处理的是真实的学生信息:档案、成绩、排名、家长报告——报告里还会写明孩子的短板和波动。这类数据天生敏感。
所以一套涉及真人的系统,在上线之前就得先回答:谁能看、能看多少、看的时候留不留痕迹、离职的人还能不能进得去。
这不是"以后再补"的功能,是动手时就要划的边界。等系统跑起来再想这件事,通常已经晚了。
这一页出现的词
以后和技术同事聊,你会听到这些词。记住它们的意思就够了,不用记拼写。
| 你会听到的词 | 其实是什么意思 |
|---|---|
| 数据结构 / 数据模型 | 你怎么把东西记下来、分几类、彼此怎么关联 |
| 迁移 | 给已经装满东西的柜子重新分格子 |
| 前端 | 用户看得见的那一层——网页、界面、按钮 |
| 后端 | 背后干活的那一层——用户看不见,负责处理和存东西 |
| 部署 / 上线 | 把你做好的东西传上去,让别人真的能用上 |
| 变更记录 / 决策记录 | 改主意的变更单,重点在"当初为什么这么想" |
| 逐字稿 | 录音转成的文字,分段存好,方便指到具体位置 |
| 知识点 | 把一门课拆成的小块,题目挂在它下面,才能算清哪块弱 |
| 导入 / 导出 | 把 Excel、Word 里的数据收进来;把结果送出去给别人看 |
| 接口 | 别人(或别的程序)从外面访问你这套系统的入口 |
想看看完整的?
上面每一件事,都能在这两套真实系统里看到它原本的样子。