Skip to content

第十九章 不同频

张老板的电话是在周三下午打来的。

林知行正在宿舍里调排课系统的权重参数。屏幕上是一个复杂的约束关系图,三十七个校区的教师、课程、时间段像蜘蛛网一样交织在一起。他刚把一个冲突检测的阈值从0.85调到0.92,正准备跑一轮测试,手机响了。

"小林,你明天上午来一趟。"

张老板的声音在电话里听起来比平时低沉。不是那种刻意压低的低沉,是一种自然的、带着疲惫的低沉,像一块被水泡过的木头。

"好的,张总。什么事?"

"排课的事。还有一些别的事,当面说。"

电话挂了。林知行看着手机屏幕,通话时长48秒。

他把手机放下,继续盯着屏幕上的约束关系图。

三十七个校区。一千零八十三名教师。上万名学生。

这张图他已经看了两周了,每天至少看四个小时。初排阶段的冲突率已经从最初的23%降到了4.7%,调整阶段的人工干预次数从每次排课平均12次降到了3次。数据在变好,但他心里清楚,这个"好"是有边界的——他能优化的是算法能感知到的约束,那些感知不到的,他无能为力。

比如人际约束。

他打开"人际约束模块_v1"文档,光标在第四种方案的位置闪烁。还是没有。

他把文档关了。


第二天上午九点,林知行和方小满准时出现在张氏教育总部。

会议室还是上次那间,但气氛不一样了。上次是演示,张老板坐在主位上听,刘主管在旁边测试,张副总偶尔插两句话。这次是开发会议,张老板旁边坐了五个人——刘主管、两个校区负责人、一个财务、还有一个林知行没见过的中年女人。

"这是我们的教务总监,王姐。"张老板介绍了一下。

王姐点了点头,没说话,但眼神很锐利,像在扫描什么。

林知行在白板前站定,打开笔记本电脑,准备汇报排课系统的开发进度。

"张总,排课核心模块的开发进度是这样的——"

"先不急。"张老板抬手打断了他,"排课的事一会儿再说。我昨天电话里说了,还有一些别的事。"

林知行愣了一下,把汇报的PPT关掉。

张老板靠在椅背上,双手交叉放在胸前。他的姿势看起来很放松,但林知行注意到他的手指在轻轻敲击自己的胳膊,节奏不均匀。

"小林,你做的这个排课系统,我用了两周,整体还行。"张老板说,"但是你知道,我们教育机构不只有排课。"

林知行点头:"是的,张总。"

"排课只是教务的一部分。"张老板继续说,"我们还有学生管理、成绩分析、家长通知、教师绩效评估。这些东西目前都是人工在做,效率很低,错误率也高。"

林知行心里"咯噔"一下。

他看了一眼方小满,方小满也在看他,眼神里写着"坏了"。

"我在想,"张老板说,"你能不能把这些也做进去?做一个完整的教务管理系统,不只是排课。"

会议室里安静了几秒钟。

林知行能感觉到自己的心跳在加速。不是紧张,是一种本能的警觉——他闻到了需求膨胀的味道。

"张总,"他开口了,"您的想法我理解。但是我想确认一下,您是希望在现有排课系统的基础上扩展功能,还是希望重新做一个全新的系统?"

"当然是扩展。"张老板说,"排课已经做了一半了,在这个基础上加功能就行。"

"好的。"林知行说,"那我想先了解一下,您说的学生管理、成绩分析、家长通知、教师绩效,这四个模块的具体需求是什么?"

张老板看了一眼王姐。

王姐打开了一个文件夹,拿出一叠A4纸,递给林知行。

"这是我们目前的需求文档,"她说,"你先看看。"

林知行接过那叠纸,快速翻了翻。

厚度大约有三十页。

他心里又"咯噔"了一下。

"王姐,"他说,"这三十页的需求,是目前所有模块的需求,还是只有这四个模块的?"

"四个模块的。"王姐说,"排课的需求之前已经和你对过了,不在这里面。"

林知行把那叠纸放在桌上,没有继续翻。

"张总,"他说,"我理解您想做一个完整的教务系统。但是我想先和您确认一下优先级。"

"优先级?"张老板皱了皱眉。

"是的。"林知行说,"这四个模块的需求量都很大,如果同时开发,工期会很长,成本也会很高。我建议先选一个最紧急的模块做,其他模块排到后面。"

张老板没有立即回答。他看了林知行一会儿,然后说:"你觉得哪个最紧急?"

林知行想了想:"从技术角度,我建议先做学生管理。因为学生数据是其他模块的基础,成绩分析、家长通知、教师绩效都需要用到学生数据。如果先把学生管理做好,后面几个模块的开发会更顺畅。"

张老板听完,没有说话。

他转头看了一眼王姐,王姐也没有说话,但她的嘴角微微动了一下,像是想说什么又忍住了。

"小林,"张老板说,"你的思路我听懂了。技术上,你说的有道理。"

林知行松了一口气。

"但是,"张老板继续说,"我不是要最优解。"

林知行愣住了。

"我是要不出事。"

会议室里又安静了。

林知行看着张老板,张老板也看着他。两人对视了大约三秒钟。

"张总,"林知行开口了,"我不太明白您的意思。不出事和最优解,不是一回事吗?"

张老板摇了摇头。

"不一样。"他说,"最优解是技术上的最优,不出事是业务上的不出事。"

林知行皱了皱眉:"能具体说说吗?"

张老板靠在椅背上,手指又开始敲击胳膊。

"你知道我们上学期出了什么事吗?"他问。

林知行摇头。

"城南校区,一个老师排课排错了,把同一个时间段排给了两个班。结果两个班的学生都去了教室,挤在一起,有一个学生被推倒了,磕破了头。家长闹到教育局,我们赔了三万块。"

林知行没说话。

"城北校区,一个老师请病假,教务没及时调课,结果那个班的学生在教室里等了四十分钟没人管。家长又闹了,我们又赔了两万。"

林知行继续没说话。

"还有一次,"张老板的声音低了一点,"城西校区,一个老师和另一个老师闹矛盾,不想搭班。教务不知道,把他们排在一起了。结果那个老师直接辞职了,我们临时找代课老师,花了半个月才稳定下来。"

会议室里安静得能听到空调的嗡嗡声。

张老板看着林知行:"小林,你说的最优解,是把课排得最合理、效率最高、冲突最少。这些我都要。但我要的不只是这些。"

"您要什么?"林知行问。

"我要不出事。"张老板重复了一遍,"我要的是,排课系统排出来的结果,不会让家长闹、不会让老师辞职、不会让学生受伤。这些事情,比效率重要一百倍。"

林知行沉默了。

他脑子里在飞速运转。

张老板说的"不出事",他听懂了。这不是一个技术指标,是一个业务指标。技术上的最优解,是把所有约束条件都满足、把所有冲突都消除、把所有资源都利用到极限。但业务上的"不出事",是要避免那些技术指标无法衡量的风险——家长的情绪、老师的人际关系、学生的安全。

这些风险,他的算法感知不到。

"张总,"林知行说,"我理解您的意思了。您要的不是效率最高,是风险最低。"

张老板点了点头:"对。"

"那我调整一下思路。"林知行说,"排课核心功能我会继续做,但我会在排课结果里加入风险评估模块。每一条排课结果,都会附带一个风险等级,标记哪些安排可能引发家长投诉、老师不满、或者其他问题。您和教务团队可以优先处理高风险的排课结果。"

张老板听完,没有立即回答。他转头看了一眼王姐,王姐这次开口了:"这个思路可以。但我想问一下,风险等级怎么定?"

林知行想了想:"目前可以先用规则来定。比如,同一老师连续排课超过四节,风险等级+1;同一时间段安排两个实验课,风险等级+2;有历史冲突记录的老师被排在一起,风险等级+3。后面可以用数据来优化这些规则。"

王姐点了点头,没有再问。

张老板说:"行。排课的事就按你说的做。其他几个模块,你先评估一下,下周给我一个方案。"

"好的,张总。"

会议结束,林知行和方小满走出会议室。

方小满在走廊里长出了一口气:"操,吓死我了。我还以为他要加需求不加钱。"

林知行没接话。他脑子里还在转张老板那句话。

"我不是要最优解,我是要不出事。"

他以前从来没想过,最优解和不出事会是两回事。

在他的认知里,最优解就是不出事——把所有约束都满足、把所有冲突都消除、把所有资源都利用到极限,这不就是不出事吗?

但张老板说的"不出事",不是这个意思。

张老板的"不出事",是避免那些他的算法感知不到的风险。

这些风险是什么?是家长的情绪,是老师的人际关系,是学生的安全。这些东西不是数据,不是约束条件,不是可以量化的东西。

他的算法,感知不到这些东西。

方小满在旁边说:"你发什么呆呢?"

林知行回过神来:"没什么。在想事情。"

"想什么?"

"想张老板那句话。"

方小满"哦"了一声:"他说什么了?"

"他说,他不是要最优解,他是要不出事。"

方小满想了想:"这话有道理啊。你想想,咱们做的排课系统,如果排出来的课让老师不满意、家长投诉,就算效率再高也没用。"

林知行看了他一眼:"你也这么想?"

"当然。"方小满说,"你以为张老板是技术人吗?他是生意人。生意人要的是稳定,不是最优。"

林知行没说话。

他继续往前走,脑子里在消化这句话。

生意人要的是稳定,不是最优。

他以前从来没有从这个角度想过问题。


回到宿舍,林知行打开电脑,开始整理今天会议的纪要。

他把张老板的需求分成了两类:

第一类:技术指标——排课效率、冲突率、资源利用率。

第二类:业务指标——家长投诉率、老师满意度、学生安全事故数。

两类指标,两种优化方向。

技术指标可以用算法来优化,业务指标不行。业务指标取决于那些他的算法感知不到的因素——家长的情绪、老师的人际关系、学生的安全。

他打开"人际约束模块_v1"文档,光标在第四种方案的位置闪烁。

还是没有。

他把文档关了,打开了一个新的文档,文件名叫"风险评估模块_v1"。

他在第一行写下:

"风险评估——基于规则的初步方案。"

然后他开始列规则:

  • 同一老师连续排课超过四节:风险+1
  • 同一时间段安排两个实验课:风险+2
  • 有历史冲突记录的老师被排在一起:风险+3
  • 怀孕教师排高强度课程:风险+5
  • ……

他写到第五条的时候停住了。

怀孕教师排高强度课程。

他从来没有想过这个问题。

在他的模型里,教师只是一个变量——有时间段偏好、有资质限制、有通勤距离。但他从来没有想过,教师还有身体状况。

他打开张老板给的教师数据库,搜索了一下"备注"字段。

没有。

他又搜索了一下"健康信息"字段。

也没有。

他靠在椅背上,看着天花板。

天花板上那块水渍还在,形状像一个不规则的三角形。

他盯着那块水渍看了很久。

他在想一个问题:他的模型里,缺了多少东西?

他不知道。

但他知道,缺的东西比他想象的多。


晚上十一点,方小满已经睡了。

林知行躺在床上,睡不着。

他打开手机,刷了一下技术社区。

他的那篇方法论帖子,转发量已经突破了一万五。评论区又多了几十条,大部分是"大佬牛逼""已收藏""学到了"之类的客套话。

他没什么兴趣看。

他点开了一个收藏夹,里面是他关注的几个公众号。

"产品急诊室"。

他点进去,看到了最新的一篇文章。

标题是:《AI创业者最容易犯的错:把解决方案当产品》。

他记得这篇文章。上次方小满给他看过,当时他只扫了一遍,没仔细看。

现在他仔细看了。

文章很长,大约四千字。文章没有点名,但明眼人都看得出是在回应技术社区上关于AI应用方法论的讨论。

文章的核心论点是:技术人做AI应用,最容易犯的错是把解决方案当产品。他们以为自己做的东西是产品,但实际上只是解决方案。产品和解决方案的区别是——产品是给用户用的,解决方案是给自己看的。

林知行读到这里,停了一下。

"产品是给用户用的,解决方案是给自己看的。"

他想了想张老板。

张老板是用户。用户要的是"不出事",不是"最优解"。

他继续往下读。

文章说,技术人做AI应用,往往会陷入一个陷阱:他们把所有的精力都花在技术实现上,忽略了用户的真实需求。他们以为用户需要的是一个功能强大的工具,但实际上用户需要的是一个能解决问题的产品。

功能强大和能解决问题,不是一回事。

林知行又停了一下。

他想了想排课系统。

排课系统的功能很强大——能处理三十七个校区、一千多名教师、上万名学生的排课问题,能检测冲突、优化资源、生成报告。但张老板要的不是这些。张老板要的是"不出事"。

功能强大是技术指标,"不出事"是业务指标。

他继续往下读。

文章的最后,作者写了一段话:

"如果你是技术人,正在做AI应用,我建议你问自己三个问题:第一,你的目标用户是谁?第二,他们的真实需求是什么?第三,你的产品能帮他们解决什么问题?如果你答不上来,那你做的就不是产品,只是解决方案。"

林知行把这段话读了三遍。

然后他打开了评论区。

评论区已经有两百多条评论了,大部分是"说得太好了""学到了""已转发"之类的。

他往下翻了翻,没有看到自己的名字。

他想了一下,在评论区打了一段话:

"你说的这些问题我正在经历。我做了一个教育机构的排课系统,技术上没有大问题,但客户的需求和我的假设完全不一样。我以为他们需要的是最优解,但他们需要的是不出事。你的文章让我意识到,我一直在做解决方案,不是产品。"

他盯着这段话看了很久。

然后他把这段话删了。

他又打了一段话:

"你的文章写得很好,但我有一个问题。你说技术人应该问自己三个问题:目标用户是谁、真实需求是什么、能帮他们解决什么问题。但我想问的是,如果目标用户自己都不知道自己需要什么,那怎么办?"

他盯着这段话又看了很久。

然后他又把这段话删了。

他重新打了一段话,只有一句:

"你说的这些问题我正在经历。等我做完这个项目再回你。"

他盯着这句话看了五秒钟,点了发送。

刷新。

评论出现在文章下方。

他等了一会儿,姜意没有回复。

他把手机放在枕头旁边,闭上眼睛。

脑子里还在转。

他在想张老板那句话:"我不是要最优解,我是要不出事。"

他在想姜意那句话:"产品是给用户用的,解决方案是给自己看的。"

他在想一个问题:他的排课系统,到底是产品,还是解决方案?

他不知道。

但他知道,这个问题必须回答。

窗外的风声很大,吹得窗户哐啷响。

方小满在上铺翻了个身,床板嘎吱响了一声。

林知行睁开眼睛,看着黑暗的天花板。

他想起了一句话,是方小满之前说的:"你总想着用算法解决问题,但有些问题不是算法问题。"

现在他开始理解这句话了。

有些问题,不是算法问题。

是人的问题。