周日凌晨两点十七分,数据模型运行到了最关键的阶段。
林眠已经三十七个小时没有合眼了。他的太阳穴在突突跳动,视野边缘偶尔会出现细微的闪烁光点——这是视觉皮层过度疲劳的信号。但他没有停。桌面上散落着能量饮料的空罐子,还有一个只咬了一口的冷掉的三明治。
屏幕上,三条曲线正在同步绘制。
第一条蓝色曲线,是过去一周技术部所有人每小时的平均代码提交量。这条线从早上九点开始平稳上升,在下午三点达到峰值,然后开始缓慢下滑——这很正常,符合人体生理节律。
第二条红色曲线,是每小时产生的bug数量。这条线就诡异了:早上九点到下午六点,它几乎是一条平直的底线,偶尔有轻微波动。但晚上七点过后,它开始抬头。八点,小幅上升。九点,明显爬升。十点之后,几乎呈45度角直线飙升。
林眠放大晚上十点到凌晨两点的区间。
红色曲线在屏幕右上角几乎要冲出坐标系。峰值出现在午夜十二点左右,是白天平均水平的3.8倍。
更诡异的是第三条黄色曲线——这是林眠自己添加的“代码复杂度指数”。它测量的是每段代码的逻辑复杂度和依赖关系。理论上,复杂的代码更容易出bug,所以黄线应该和红线同步波动。
但现实是:黄色曲线很平稳。甚至在晚上十点后,代码复杂度还在下降——因为员工太累了,写的都是简单重复的逻辑,或者直接复制粘贴以前的代码。
复杂度下降,bug率却飙升。
这不合理。
林眠皱起眉头。他调出原始数据,一行行检查。
晚上十点四十五分,小李提交了一段数据验证代码。白天类似的代码,平均bug率是每百行0.7个。这段代码的bug率是每百行3.2个——而且都是低级错误:边界条件没判断,空指针没处理,连变量名都拼错了一个字母。
午夜零点二十一分,小张提交了一个接口模块。林眠记得这个模块——小张三天前就写好了初版,当时测试通过率98%。现在提交的是“优化版”,测试通过率却跌到了71%。优化了什么?林眠点开代码对比工具。
所谓“优化”,就是把原本清晰的三个函数,硬生生揉成了一个两百多行的巨型函数,注释乱七八糟,异常处理七零八落。
这不是优化,是退化。
是疲劳状态下,大脑丧失结构化思维能力的典型表现。
林眠的手指在键盘上停住了。
他忽然想起母亲批改作业时的情景。她教语文,最常说的一句话是:“文章写得好不好,不在于用了多少华丽辞藻,在于思路清不清晰。”她批改到深夜时,有时候会揉着眼睛说:“眠眠,妈妈眼睛花了,有些字都看成重影了。”
那时候他不懂,只觉得妈妈辛苦。现在他懂了——当视觉疲劳到出现重影时,大脑的判断力已经严重受损。母亲那时批改的作业,肯定有很多错漏没看出来。
但作业批错了,最多是学生少得几分。
代码写错了,系统可能会崩溃,数据可能会丢失,公司可能会损失真金白银。
林眠深吸一口气,新建了一个分析维度。
他要把“个人累计加班时长”和“个人bug率”关联起来。
数据重新跑起来。进度条缓慢移动。
等待的时间里,他站起身,在办公室里踱步。地毯很软,吸收了脚步声。月光从东面的窗户斜斜照进来,在地板上投出窗格的影子。行军床区域传来均匀的呼吸声——小李睡着了,小张还在低烧中昏睡,其他几个人也都进入了深度睡眠。
至少,他们现在在休息。
林眠走到小张床边,伸手探了探他的额头。温度降下来了,但皮肤摸起来还是干燥发烫。小张在睡梦中皱了皱眉,嘟囔了一句什么,听不清。
林眠给他掖了掖被角,走回工位。
进度条走到100%。
屏幕上的散点图让他倒吸一口凉气。
---
上午八点十分,苏早推开技术部玻璃门时,被眼前的景象震住了。
白板上贴满了打印出来的图表和照片,用不同颜色的马克笔密密麻麻写满了标注和箭头。林眠站在白板前,手里拿着激光笔,正在给围坐的十几个人讲解——不只是技术部的人,还有产品部刘总监、运营部的两个经理,甚至财务部那个平时很少露面的老会计也来了。
“看这张图。”林眠的嗓音沙哑,但语气清晰有力,“横轴是个人过去一周的累计加班时长,纵轴是个人bug率。每个点代表一个人。”
白板上的散点图呈现出一个令人不安的规律:大多数点都落在一条向右上方倾斜的带状区域里。加班越多,bug率越高。
但真正诡异的是右上角那三个点——它们几乎垂直飙升,bug率是其他人的四到五倍。
“这三个点是谁?”产品部刘总监问。
林眠用激光笔圈出那三个点旁边的标注:“技术部的小周、王浩,还有运营部的小陈——就是前天晕倒送IcU的那个实习生。”
会议室里一片死寂。
“他们过去一周的累计加班时长分别是78小时、82小时和91小时。”林眠继续说,“bug率分别是平均水平的4.2倍、4.8倍和5.1倍。更关键的是——”
他切换下一张图,是一张时间序列分析。
“这三个人的bug率变化曲线,在加班时长超过60小时后,开始指数级上升。而在加班时长超过70小时后,曲线几乎垂直。”
激光笔的红点停在那三条冲天而起的线上。
“这意味着什么?”林眠环视众人,“意味着当疲劳积累到某个临界点后,人的工作质量不是线性下降,是断崖式崩塌。你付出的每一分钟额外加班,不是在创造价值,是在制造错误——而且错误的成本,可能远高于你创造的价值。”
财务部老会计推了推眼镜:“林工,这个‘错误的成本’,有数据支撑吗?”
“有。”林眠从桌上拿起一份刚打印出来的报告,“我调取了公司过去两年的bug修复成本统计。平均每个线上bug,从发现到修复到验证到重新上线,需要1.5个人日。按技术部平均薪资计算,成本大约是3000-5000元。”
他顿了顿。
“而刚刚提到的那三个人,过去一周累计产生了47个bug。其中12个是线上bug,已经造成了实际影响。保守估计,修复成本在8万到12万元之间。而他们三人这一周的加班,为公司创造了多少额外价值?”
他调出一张产出统计表。
三个人过去一周的代码产出量:比平均水平高15%。
但有效产出——也就是真正通过测试、能上线运行的代码——比平均水平低40%。
“所以实际上,”林眠总结,“他们不是在加班创造价值,是在加班制造损失。公司支付了1.5倍的加班费,换来了更多的bug和更低的效率。”
会议室里响起低低的议论声。
刘总监脸色难看:“我们产品部那边……最近的需求文档错误率也高了很多。有个产品经理把两个功能的需求写反了,导致开发做完了才发现要重做。”
运营部的一个经理点头:“我们也是。上周的活动策划案,数据算错了一个小数点,差点酿成大事故。”
“所以这不只是技术部的问题。”林眠说,“这是系统性疲劳导致的全方位质量下滑。”
他走到另一块白板前,上面贴着一张更大的图。
“这是我最担心的发现。”他的声音更低沉了,“我把全公司过去一个月的工作数据都跑了一遍,发现了一个……几乎是规律的现象。”
图上画着一条诡异的曲线。
它从零点开始,随着工作时间延长,bug率缓慢上升。但在某个点之后——通常是连续工作10小时左右——曲线开始加速。12小时后,斜率急剧增大。14小时后,曲线几乎垂直向上。
而在16小时处,图上标注了一个红色警告标志。
“连续工作16小时后,”林眠指着那个红标,“bug率是正常水平的6到8倍。更可怕的是,这时候产生的bug往往不是简单的逻辑错误,是架构层面的、可能引发系统级故障的重大缺陷。”
他调出几个案例:
案例一:某员工连续工作18小时后,“优化”了一个核心数据库查询,结果把“whERE”条件写反了,差点清空整个用户表。
案例二:另一个员工连续工作20小时后,在部署脚本里写错了一个Ip地址,把测试环境代码部署到了生产环境,导致线上服务中断两小时。
案例三:销售部有个员工,连续加班三天后,在给客户的报价单上少写了一个零——把100万的合同报成了10万。幸好发现及时。
“这些不是‘不小心’,”林眠说,“是大脑已经丧失基础判断力的表现。就像你累到极致时,会把盐当成糖放进咖啡里——不是分不清盐和糖,是大脑根本没法处理‘分辨’这个指令了。”
会议室里安静得能听到空调出风口的声音。
苏早站在门口,静静听着。她看着林眠——这个穿着皱巴巴衬衫、眼睛里布满血丝的男人,正用最冷静的语气,说着最惊心动魄的真相。
她看到小李在角落做笔记,手有点抖。
看到小张撑着病体坐在后排,眼神复杂。
看到其他部门的人,脸上那种“原来如此”的恍然,和“我们也在经历”的苦涩。
然后她看到林眠转过头,看到了她。
两人的目光在空中交汇了一瞬。
林眠对她点了点头,继续转向白板。
“所以回到最初的问题:为什么‘007’行不通?”他重新打开第一张散点图,“因为人体不是机器。机器可以24小时运转,只要供电、散热、维护跟得上。但人不行——人的注意力、判断力、创造力,是需要恢复期的资源。强行透支,换来的不是更多产出,是更多错误,更多事故,更多……悲剧。”
他说“悲剧”两个字时,声音很轻。
但所有人都听懂了。
那个在IcU的实习生,就是悲剧。
小张高烧不退,也是悲剧。
而这样的悲剧,正在以数据可以预测的方式,在全公司蔓延。
“林工,”刘总监开口了,声音干涩,“这些数据……能给我们产品部一份吗?我们需要调整排期节奏。”
“我也要一份。”运营部经理说,“我们要重新评估活动强度。”
“财务部也需要。”老会计推了眼镜,“如果加班反而增加成本,那我们需要重新测算项目RoI。”
林眠点点头:“数据我可以分享,但有两个条件。”
所有人都看着他。
“第一,这些数据只能用于内部管理优化,不能外传——不是为了保护公司,是为了保护提供数据的员工。”
“第二,”他顿了顿,“下周一上午九点,陈董要开上市筹备扩大会议。我希望你们——如果认可这些数据的价值——能在会上,说出你们的真实感受。”
会议室再次陷入沉默。
这次沉默更长,也更沉重。
说出真实感受?
意味着要站在王总监的对立面,要质疑公司的“奋斗文化”,要在上市前的敏感时期,提出不和谐的声音。
风险太大了。
刘总监第一个开口:“我女儿下个月中考,我这段时间天天加班到半夜,连她模拟考成绩下降了都不知道。”他的声音有些哽咽,“我……我会说。”
运营部经理咬了咬牙:“我们部门那个写错小数点的员工,现在还在医院输液。医生说她是焦虑症急性发作。”他抬起头,“我也会说。”
财务部老会计叹了口气:“我算了一辈子账,最清楚一个道理——短期的透支,长期一定要还,而且往往要还得更多。”他看向林眠,“林工,数据给我一份。周一,我可以用财务角度支持你的分析。”
陆陆续续,其他几个经理也表态了。
不是慷慨激昂,是疲惫中带着一点决绝。
像一群被逼到墙角的人,终于决定回头看一眼,自己到底被逼到了哪里。
会议在上午九点半结束。
人群散去后,办公室里只剩下技术部的人和林眠。
小李走过来,手里拿着一个笔记本。
“林工,”他说,“‘生活时间线’我整理好了。”
林眠接过笔记本,翻开。
每一页是一个人的记录,很简单,就几行字:
小张:上次完整休周末——三个月前。上次和家人吃饭——上周二晚上,吃了半小时,接了三个工作电话。上次做开心的事——不记得了。
小李:上次完整休周末——两个月前,和女朋友去郊游,中途被叫回来加班。上次和家人吃饭——昨晚,在工位和爸妈视频,他们看到我身后的行军床,没说话。上次做开心的事——上周三,偷偷看了十分钟猫视频,笑了。
小周:上次完整休周末——入职以来没有。上次和家人吃饭——父母在外地,一年见一次。上次做开心的事——每天写完代码的那一秒。
……
林眠一页页翻过去,手指在纸面上轻轻摩挲。
纸张很薄,但上面的字很重。
翻到最后一页,是小李自己的补充:
“林工,我们不是在抱怨。我们只是……想起来了,原来生活不只是屏幕上的代码,不只是钉钉上的消息,不只是加班时长排行榜。原来我们曾经有过生活,后来弄丢了。现在想找回来,还来得及吗?”
林眠合上笔记本,递给小李。
“来得及。”他说,“只要我们决定找,就来得及。”
上午十点,苏早把林眠叫到办公室。
关上门,她开门见山:“王总监那边有动作了。”
“什么动作?”
“他今天早上找了陈董,说技术部最近‘纪律涣散’、‘效率低下’,建议对你进行停职审查,让杨明远暂时接管技术部。”苏早的声音很冷,“陈董没同意,但也没反对。他说等周一开完会再说。”
林眠点点头,并不意外。
“另外,”苏早压低声音,“王总监在收集你的‘黑材料’。他找了几个人谈话,想证明你数据造假,证明你煽动员工对抗公司管理。”
“他有证据吗?”
“没有。但欲加之罪,何患无辞。”苏早看着他,“周一那场会,可能是你最后一次机会。如果输了,你可能真的会被踢出公司。”
林眠沉默了几秒。
然后他笑了——很淡的笑,但很坚定。
“那就更不能输了。”
他从口袋里掏出一个U盘,放在苏早桌上。
“这是什么?”
“周一会用的演示文稿完整版,加上所有原始数据和分析脚本。”林眠说,“如果我被赶出去,你就用这个。数据不会因为谁不在场,就停止说话。”
苏早拿起U盘,握在手心。
金属外壳冰凉,但握久了,会染上体温。
“林眠,”她忽然说,“你有没有想过……如果你真的被开除了,以后怎么办?”
“想过。”林眠很坦然,“可能会去其他公司,可能会自己创业,也可能……休息一段时间。但我母亲说过一句话:‘对的事,不是因为有好处才做,是因为应该做。’”
他看着苏早。
“这件事,应该做。所以我就做了。结果如何,不重要。”
苏早的心脏猛地一紧。
她想起第一次见到林眠时,他在茶水间研究咖啡机,一脸“这机器设计真不合理”的认真。那时候她觉得这人怪,还有点装。现在她明白了——他不是装,他是真的,对一切不合理的、伤害人的东西,有一种近乎本能的抗拒和修复欲。
像看见机器坏了就想修好。
像看见人累了就想让他休息。
像看见系统出问题了,就想把它调校回正确的轨道。
“你……”苏早想说什么,但喉咙发紧。
林眠对她点点头,转身准备离开。
“林眠。”她叫住他。
他回头。
“去睡一会儿。”苏早说,“哪怕两小时。周一的会,你需要清醒的头脑。”
林眠想了想,点头:“好。”
他推门出去。
苏早坐在椅子上,看着那个U盘。
然后她打开电脑,开始写一封邮件。
收件人:陈国栋董事长。
主题:关于周一会议的重要补充材料
正文很简短:
“陈董,附件是技术部林眠整理的数据分析报告初稿。数据来源合规,分析逻辑严谨,结论触目惊心。建议您在周一会议前抽空阅读。这关系到公司真正的核心竞争力——不是员工能加多少班,是员工能在健康、可持续的状态下,创造多少长期价值。”
她附上U盘里的一份摘要文档,点击发送。
邮件发送成功的提示音响起。
窗外,阳光正好。
秋日的天空湛蓝如洗,几朵白云缓慢飘过。
城市在正常运转,车流,人流,生活流。
而在这栋大楼里,一场关于“正常”的战争,正在进入倒计时。
林眠回到工位,没有立刻睡觉。
他打开那个隐藏任务界面。
【隐藏任务:用数据说话】
【当前进度:】
【1. 建立完整的数据模型,证明“007工作制”的效率悖论(完成度:98%)】
【2. 收集不少于5个因过度加班导致健康危机的真实案例(完成度:5/5)】
【3. 在至少20人以上的正式场合,公开展示数据分析结果(完成度:100%)】
【4. 使至少一位公司决策层成员认可你的结论(完成度:60%)】
第四条进度条前进了一点点。
也许是因为刘总监他们,也许是因为苏早刚才发的邮件。
还差一点。
就一点。
林眠关掉界面,调出最后一张图——那张bug率随加班时长飙升的诡异曲线。
他盯着那条几乎垂直的红线,看了很久。
然后他在图下方加了一行小字:
“当我们庆祝‘奋斗’时,我们在庆祝什么?是更多的工作时长,还是更少的错误、更高的质量、更可持续的创造?”
保存,加密,备份。
做完这一切,他终于感到一阵排山倒海的疲惫。
他走到行军床边,躺下。
闭上眼睛前,他看到窗外那片湛蓝的天空。
真好啊。
他想。
然后他睡着了。
这一次,没有梦。