我真想揪着同事的脖领子梆梆给他两拳

在这件事发生之前,我在公司个人信息上的签名一直是“加油干活,努力奋斗,快乐每一天”。

在这件事发生之后,我把签名改成了:

我真想揪着你的脖领子梆梆给你两拳。

948d025e2f1ced6ed8f17869a4685ba5.png

这个悲惨的故事还要从两周前的一个项目说起。

2c2e54f4b6c44216c578e20ff668b821.png

1 半夜报警

老大交给我一个新项目,让我三天做完。

难度倒是不大,就是把一个proto中的几个字段给删掉,节省点内存。

我一共改了5行代码,改完之后心里美滋滋,哎,半天搞完,我可以摸两天鱼了。

到了第三天,我装作累了三天的样子,开始上线。

小流量,推全,观察线上日志没有问题,好了,又完成一个项目!

哪知道,眼前的顺利只是过眼云烟,真正的噩梦当然要到晚上才出现。

到了凌晨三点的时候,我在睡梦中,左拥右抱美女如云,但我不为所动,指着她们的鼻子让她们走,不要耽误我写代码。

其中一个美女说:“就你写那代码,三行能有五个bug,可拉倒吧。”

我正要反驳她,一阵刺耳的铃声响了。

我从梦中惊醒。

迷迷糊糊地拿起电话,接起来。

一个机器女声传来:“您的线上服务发生故障,目前有损,请尽快查看。”

坏了!

真他娘的出bug了!

我现在想想,梦里的那个美女长得也不像我的QA啊,怎么说话也这么准。

等等,现在哪还有功夫瞎想,赶紧起来看看报警。

我一个鲤鱼打挺没起来,再一个咸鱼翻身起来了。

赶紧披上睡衣,打开电脑,眯着眼睛看报警。

我下巴都要掉地上了。

100多台机器实例,全!都!挂!了!

0e2fe0c75d13cc41484146127e268be7.png

2 喊醒四个部门的人陪我一起痛苦

这个时候,我反而淡定了。

人就是需要在危机出现的时候学会淡定。

当然,主要是这问题大了,我反正也一时半会解决不了,先冷静下吧。

我起身拿了瓶红牛,好兄弟,今晚靠你了。

很多人都以为线上的业务要在晚上流量少的时候上线,这样才不会影响线上业务。

实际上,这不一定。

我们的业务是给用户推送消息,半夜是没有消息要推送的,这个时候上线确实不影响,但是出bug了也看不出来。

所以我们上线必须要在晚上8点之前。

这就导致了,我现在想要紧急回滚代码都没权限。

哎,这里开始,新人同学们可以开始留神了,多年的处理报警经验,分享给你们。

我先赶紧打电话给我自己的老大,一是把事情报告给他,以他的经验来判断下一步要做什么,第二,稍后处理问题难免遇到权限不足的事情,先给他整醒再说。

第二个电话打给运维部门的人,让他们紧急帮我开通晚上回滚代码的权限,并且给我最快的回滚速度。

第三个电话打给我这个业务线下游的人,告知他们我们的业务现在挂了,让他们自行判断是否需要处理自己的业务。

第四个电话打给QA,当然,这事儿可以不给他打,我单纯是想找个人跟我一起悲惨的处理问题。

半个小时,线上的代码回滚了。

但这只是开始,我还不能去睡,现在去睡都对不起我喝的那两瓶红牛。

我开始看日志,排查报警出现的原因。

我就改了五行代码,这都能出这么大的问题?

看了一个小时日志,报错发生的地方和我这次改动没有任何关系。

这咋回事?

到这里,已经是凌晨四点了,我看线上业务恢复正常,先回去睡了,不然明早一定是起不来了。

睡前我双手合十祈祷,不要让我梦到那个嫌弃我代码的美女了,最好梦到个秃头程序员大佬,点醒我出问题的地方。

92b461a41a7c66fc50cb12a742e04697.png

3 邪了门了!到底哪里出的问题?

第二天,我带着硕大的黑眼圈来公司。

我包里揣了三瓶红牛。

我就不信这个邪了,到底哪里出的问题?

我捞出来报错的日志,一行一行的看,一句代码一句代码的看。

确认出错的代码我没有任何改动,真奇怪。

看了一上午,我愣是没发现哪里有问题。

中午吃饭,我还在想这个事情,真是邪了门儿了。

这个代码本来是我前同事负责的,他两个月前跑路了,最近这活才到我手里,从他上次上线到现在有5个月了,也没出问题,怎么今儿个就出问题了呢?

等等,5个月前上线?

他,是不是。。。

我去代码库看了一眼提交记录,又去看了一眼上线记录。

我。。。

我血压瞬间冲上来了。

他,用自己的分支上线代码后,没有把更改同步到主干分支。

导致我一直是在更旧的代码上做的改动。

而他自己早就离职了,没有任何人知道这个事情。

此时此刻,我就是不知道他的号码。

不然我一定温柔的打给他, 约他过来吃个饭叙叙旧。

等他过来后,我揪着他的脖领子,梆梆给他两拳!

91d21b6500d5bcb06d21e5471e0dc8c9.png

4 看来两拳还不够

有了这个教训,我心里犯嘀咕了,这哥们负责的可不止一个产品,是不是其他的也有类似问题。

我一个一个排查,果然,不止这一个,还有另外一个代码库,他提交了五次代码都没合入。

说真的,百度作为成熟的大公司,有完备的开发流程和上线流程。

按照规范,只要把代码库做一下简单的配置,就能限制上线未合入的代码,但问题就是这哥们儿图方便,把这配置直接关了。

就导致,本来能够避免的问题,非得人为发现不可。

其实我能理解他的脑回路,因为这个项目其实就他一个人负责,也就是说没有其他人参与。

他甚至可以不遵守分布式开发的规范,想怎么改怎么改,哪怕是写了代码直接上线不提交,理论上都是可以的,更别说合入代码了。

他是方便了。

我快疯掉了。

这件事,让我错过了一个美梦,让我花费了五瓶红牛,让我因为熬夜又掉了几根珍贵的头发。

那个被我半夜喊起来的QA,第二天还讹了我顿肯德基。

想到这,我的拳头又攥紧了。

fcbf58851cf7e5704314c8a31c96d542.png

5 你不是一个人在战斗

很多同学在学校独立开发惯了,什么github啥的也就当个存储空间来用,对团队开发完全没有概念。

这就是造成问题的关键,你得知道一件事,你在修改的代码,会影响很多人,你在修改的代码,别人可能也在修改。

遵守规范,不仅能够帮助别人,更能体现你的专业,关键是,能不让你的冤种同事半夜还要处理因为你造成的bug。

代码写得好不仅仅是技术高超,你的流程是否规范,你的代码是否能让别人看懂,你的注释是不是都加了,你的文档是不是足够清晰,这都是团队开发更需要的能力。

在公司对一个人的最高评价其实不是“他技术真牛X”,而是“这人贼靠谱”。

我还是宽容一些吧,谁不会犯错呢,让我把签名改回“风轻云淡,开心快乐”吧。

等下,我刚才是不是又发现了一个他没提交的代码库???

两拳是不行了,我得给你两脚!

猜你喜欢

转载自blog.csdn.net/yhan_shen/article/details/124263768