聊天讨论 被薅 2.6w!记一次让我压力大到失控的 bug

coderwamgh(wang) · 2025年01月13日 · 最后由 cb360 回复于 2025年01月16日 · 288 次阅读

事情经过

前几天,线上系统出现了一个结算的缺陷,该缺陷源于我编写的代码。出问题的时候是周日晚上,那时我接到了大领导的电话,问我具体的财务损失细节。

最后调查发现有两个用户利用了系统漏洞,导致 87 笔订单出现了多结算的问题,薅了大概 2.6 w。其中一个人已经跑路了,另一名用户账户余额只有几百块钱。 发现问题后,我们立即停止了提现功能,其他应对措施则安排到明天上班后处理。

然而,那个晚上我辗转难眠,内心承受着巨大的压力。

作为项目的唯一开发者,我不仅要完成编程任务,还要像项目负责人一样承担风险与责任。这或许是普通开发与项目负责人之间最大的差异。

周一早上去上班,前一天晚上也没睡,精神状态可想而知,浑浑噩噩的,先把问题和场景分析清楚,最终发现是用户在加价的时候回写了订单状态,导致重复结算。紧急加上各种校验,然后把所有相关的接口全部加强校验。

代码还没写完,我就被召去会议室接受批评了。直属领导和大领导怼着我一顿骂,诸如 “身为高级开发,竟然范这种错误” 等。我试图解释原因,结果被骂的更凶了。 这次经历让我深刻认识到,犯错后被批评时,最好先认错,再给出解决时间,而不是解释出错原因。

我的心情更加沉重,压力山大。我花了一整天时间,直到凌晨才完成修复并上线。

然而,几天后问题再次重现。

经过仔细排查,我发现底层架构的分布式锁存在缺陷,未能有效锁定请求。在 finally 块中使用了 redisson 的 forceunlock 方法,导致并发场景下当前线程的锁被其他线程释放。

于是,我再次被召至会议室接受批评。这次批评简短而直接:“今天必须修复完毕,再出问题就自行离职。”

回到工位后,我先修复了分布式锁的问题,又在资金流水处理中增加了数据库锁。我又一次工作到凌晨,期间还处理了一个紧急需求,有几次甚至工作到凌晨一两点。 到现在这件事已经过去近一周了。

回想起那几天的经历,我几乎彻夜未眠,承受着巨大的身心压力。凌晨三四点才入睡成了常态,这对我的身体和精神都造成了极大的伤害,辞职的念头不断在我脑海中闪现。那次事件让我对 bug 产生了严重的心理阴影。

昨晚,商务同事告诉我,已经追回了 1.5 万元,预计能追回 2.4 万元,剩余部分将分批追回。

真心感谢商务同事,也给别人造成了不少麻烦。

心理感悟

不知道你如果遇到我经历的情况有什么感受。希望你不要有我这么大的压力。不过这次压力也让我更深刻的体会到了一些事。

就一份工作而已

工作嘛,不过就是人生路上的一段经历,实在不行,拍拍屁股走人就是了,别让自己被压力压得喘不过气,最后身体垮了,公司可不会心疼你,吃亏的还是自己。 人有时候得自私一点,多替自己考虑考虑,别太纠结那些集体荣誉啊责任心之类的,毕竟每份工作都是咱们成长路上的一块垫脚石。

要成为工作的主人,别让工作反过来牵着咱们鼻子走。

以前我总觉得公司给我发薪水,我就得好好为它卖命。

现在想想,这些年我开发的系统,今年已经帮公司带来了 600 多万的 GMV,虽然这也有商务、运营同事们的功劳,但我的那点薪水跟这比起来,简直是九牛一毛。这么看来,公司其实应该感激我这些年的辛勤付出才对。

最重要永远是身体、亲人和朋友

人生说长不长,说短不短。大家都是几十年时间,身外之物,生不带来,死不带走。

自己的身体健康才是最重要的,不要等身体垮了再追悔莫及,一旦失去,再想挽回可就难了,因为很多健康问题都是不可逆的,医学并非万能。

其次是家人、伴侣、朋友。想想自己出生和去世的时候,身边会有哪些人?这时候工作在哪里呢?

以前我对家人很不耐烦,但现在我学会了耐心倾听,连老婆都觉得我 “好欺负” 了哈哈哈。或许说再多都不会有用,直到自己刻骨铭心的经历一波。 要知道,业务、公司乃至整个地球,离了谁都能继续运转,但亲人、爱人和朋友失去了你,他们的世界将会充满悲伤。

心态非常重要

就算出了再大的 bug,业务依旧能够维持,公司也不会因此关门大吉,天也不会塌,地球不会停止自转,太阳不会熄灭,更重要的是,写 bug 的人不会死。

其实,过度的压力和焦虑并不能提升我的工作效率,特别是我这种因为 bug 连续几晚失眠的人,勉强去修复,效果反而不如先睡个好觉再来处理。

现在想来,那时候给自己的巨大压力,简直是自找苦吃,有点自虐的味道。人还是要对自己宽容点,别给自己太大压力。

至于领导那些 “自己提离职”、“这么低级的错误” 之类的责备,听听就算了,别太往心里去。他可能就是一时气急,需要找个出口发泄一下,或者想强调这件事的重要性,让你务必处理好。这不过是情绪的一种释放方式。

你就当他是在对空气发泄,等他骂完了,你只需要表态你会解决问题,并给出一个明确的时间点就行。

给他点情绪价值。毕竟,领导也有自己的上级要汇报,到时候说不定他也会被骂得更惨呢,哈哈。

付出行动

在调整了认知和心态之后,关键还是要落实到行动上,从失败中汲取教训,确保类似情况不再发生。

经历了这次结算风波后,我对结算的每一个环节和关键点都有了深刻的理解,相信以后再接手任何项目,结算部分都不会再成为我的软肋。

对结算系统设计感兴趣的朋友,可以回顾一下我之前的两篇分享,里面有详细的文档介绍。接下来,我还会通过模拟订单场景,结合具体的建表语句,深入剖析结算架构的设计。

对我来说,事情解决才会让我安心。

我必须亲自把系统中涉及结算的场景和代码重新梳理一遍,确保每一个细节都了然于胸,这样才能保证下次绝不会再犯同样的错误,我心中的大石也才能落地。

我希望你能明白,调整心态固然重要,但如果不付诸行动去真正解决问题,那么下次问题依然会出现,甚至会让你时刻生活在不知何时会再次爆发的恐惧之中。

解决问题需要付出精力和行动,这可能更难,但这才是人成长和进步的原因。

加油,共勉。

<顺便吆喝一句,民族企业大厂,前后端测试捞人,感兴趣的来!>

给多少钱,干多少事。PUA 直接走。😈

Ccasidio 回复

是滴,要更加关注自己

没有测试人员吗?可以甩锅给测试

唯一一个开发、这种项目出问也正常吧,要求这么高

还在自我 PUA 呢, 定责时候拿你当股东,开工资时候拿你当牛马

110440 回复

是,没办法

blackJ 回复

当代牛马现状😅

链接无法表明身份,有一定风险。 已删除。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号