第二十六章 马德华的离开

一

马德华最终还是走了。

不是因为裁员——他在裁员名单公布之前就拿到了新公司的 offer,主动提了离职。但他走的方式,让所有人都没想到。

二

事情发生在马德华离职前的最后一周。

他手头还有一个模块没有交接完——报表导出功能。这个功能是他半年前写的,代码质量一般,但一直在线上稳定运行。

交接的对象是张小龙。马德华花了两天时间给张小龙讲了代码逻辑,然后说:"差不多了,剩下的你自己看代码就行。"

张小龙看了看代码,发现有一段逻辑他看不懂——一个复杂的 SQL 查询,嵌套了三层子查询,没有注释,变量名全是 t1、t2、t3。

他去问马德华。马德华看了一眼说:"这段 SQL 是我从网上找的,当时能跑就没改。你要是看不懂,就别动它。"

张小龙不太放心,又去问王志远。王志远看了那段 SQL,皱了皱眉——这段查询的性能很差,在数据量大的时候可能会超时。但因为目前数据量不大,所以一直没出问题。

"这是一个定时炸弹。"王志远说。"数据量再涨一倍,这段 SQL 就会超时。"

他把这个问题记在了技术债务清单里,打算后面找时间优化。

三

马德华离职的前一天,出事了。

报表导出功能突然报错——一个客户要导出最近三个月的销售数据,系统超时了。

原因就是那段 SQL。三个月的数据量刚好超过了临界点,查询时间从 2 秒飙到了 30 秒,超过了系统的超时限制。

客户投诉了。周旋经理让马德华修复。

马德华看了一眼,说:"这个 SQL 要重写,工作量不小。我明天就走了,来不及。"

周旋的脸色很不好看:"你写的代码,你不修就走?"

"我已经交接给张小龙了。"马德华说。"让他修吧。"

张小龙一脸茫然——他刚接手这个模块,连代码都没完全看懂,怎么修?

王志远看不下去了。他站起来说:"我来修。"

他花了一个下午重写了那段 SQL——把三层嵌套子查询拆成了两个简单的查询加一个 JOIN,加了合适的索引。查询时间从 30 秒降到了 0.5 秒。

修完之后,他写了详细的注释,解释了每一段查询的逻辑和优化思路。

四

马德华离职的那天下午,来跟大家告别。

他走到王志远的工位旁边,站了一会儿。

"小胖,谢谢你帮我擦屁股。"他的语气里有愧疚。

王志远摇了摇头:"不是帮你,是帮张小龙。他刚接手,不应该背这个锅。"

马德华沉默了一会儿,然后说了一段让王志远意外的话:

"小胖,你知道吗,我当年也是像你这样的。"

"什么意思?"

"我刚入行的时候,也是认认真真写代码,认认真真做 Review,认认真真学新技术。那时候我觉得,只要技术好,就能在这个行业混得好。"

他靠在隔板上,眼神有点恍惚。

"但后来我发现,技术好不一定升得快。有些人技术一般,但会来事儿,升得比我快。有些人技术很好,但不会表现,一直在底层干活。我就开始……偷懒了。觉得反正认真也没用,不如混日子。"

"混着混着,就真的变成了一个混日子的人。代码能跑就行,文档能糊弄就糊弄,Review 能跳过就跳过。我知道这样不对,但改不回来了。就像……就像技术债务一样,欠得越多,越不想还。"

王志远没说话,把杯子里的啤酒喝了一大口。

他想起马德华平时的样子——嘻嘻哈哈、油嘴滑舌、能偷懒就偷懒。他从来没想过,马德华也曾经是一个认真的人。

"德华哥,"他说,"新公司好好干。"

马德华笑了笑,但笑容里有一点苦涩:"我试试。"

他拍了拍王志远的肩膀:"小胖,你比我强。别变成我这样。"

然后他转身走了。

五

马德华走后,王志远坐在工位上想了很久。

他想起赵北辰说过的一句话:"技术债务不会消失,只会越积越多。你现在偷的懒,将来都要加倍还。"

马德华的故事让他意识到——这句话不只是在说代码,也是在说人。

人也会积累"职业债务"。

每一次偷懒、每一次糊弄、每一次"能跑就行",都是在给自己的职业生涯欠债。欠得越多,越不想还,越不想还,欠得越多。最后变成了一个恶性循环——你知道自己在退步,但已经没有动力去改变了。

马德华不是一个坏人。他只是在某个时刻放弃了对自己的要求,然后一步一步滑了下去。

王志远告诉自己:不要变成马德华。

不是因为马德华不好,而是因为马德华曾经可以更好。

六

那天晚上,王志远在笔记本上写下:

Day 390

马德华走了。

他说他当年也是认真的人。后来觉得"认真也没用",就开始混日子。混着混着,就真的变成了混日子的人。人也会积累"职业债务"——每一次偷懒都是在欠债,欠得越多越不想还。

德华哥走的时候说了一句"别变成我这样"。我记住了。

认真不一定有回报,但不认真一定有代价。这话听着像鸡汤,但看着德华哥的背影,我觉得它是真的。

他合上笔记本,想起马德华离开时的背影。

一个曾经认真的人,变成了一个混日子的人。

这是他见过的最让人唏嘘的"技术债务"。


:::{admonition} 小胖的笔记 :class: tip

本章知识卡片:技术债务与职业素养

1. 技术债务(Technical Debt)

类型 示例 后果
代码债务 没有注释、命名混乱、重复代码 维护成本越来越高
测试债务 没有单元测试、测试覆盖率低 bug 越来越多
文档债务 没有设计文档、API 文档过时 新人上手困难
架构债务 过度耦合、没有模块化 改一个功能影响全局

管理技术债务的方法: - 维护一份技术债务清单 - 每个 Sprint 分配 10-20% 的时间还债 - 新代码不欠新债(Boy Scout Rule:离开时比来时更干净)

2. 代码交接检查清单

# 交接项
1 代码仓库权限移交
2 核心逻辑讲解(最好有文档)
3 已知问题和技术债务清单
4 线上配置和部署流程
5 监控和告警规则
6 上下游依赖关系
7 常见问题和排查方法

3. 职业债务

人也会积累"职业债务"。每一次偷懒、每一次糊弄,都是在给职业生涯欠债。

预防方法: - 保持对代码质量的要求,不因为"反正没人看"就降低标准 - 持续学习,不因为"够用了"就停止成长 - 定期反思,问自己"我比半年前进步了吗?"

:::