刚下班去吃了个肯德基,听到店长在训斥店员,听了下,事情经过大概是这样的:
有顾客嫌冰淇淋太少(实际上是标准量,并没有少),要求店员多打一圈。 虽然这样做违反规定,但店员觉得多给一点没什么,就照做了,也没有征求店长的许可。 店长在例行查看监控录像时发现问题,找店员去对峙,于是发生了我看到的一幕。
店员小姑娘很委屈:就为一点冰淇淋至于么,能值多少钱?就当我请那位顾客的了,你从我工资里扣吧。
店长更生气了:你以为我在心疼那点冰淇淋的钱?这是公平问题、信誉问题! 顾客花多少钱,就应该给多少钱的货,一分不多一分不少。 你偏袒这位顾客,其他顾客看到了怎么想?要是被录下来投诉到总部,起码罚一万,也由你来赔么? 到时候我们店被扣分,我这个店长可能都没得当,你跟我一起喝西北风去吧。
想到十年前我初进职场的时候,也曾因为不会拒绝而捅了篓子,而且情况要更加严重。
那天,后端负责人请了病假,但他那边有代码急着上线, 于是用钉钉让我在内网提交一下发版审批,他直接在钉钉上确认,就可以上线了。 他还补充说,代码已经 review 过,且合并到了稳定分支,可以放心发版。
本来这次发版只有后端的改动,和我这个前端切图仔没什么关系, 但我当时觉得这只是举手之劳,并没有考虑到潜在的后果,于是就照做了。
发版后不到一个小时,客服那边反馈说客户遇到了 bug ,而且是十几个客户遇到了相同的 bug 。 没办法,那就回滚吧。可当我提交了回滚的发版审批之后,后端负责人已经“失联”了(后来才知道他那时正在手术台上)。
这时客服又来催,说是有 VIP 客户的业务受到了这个 bug 的影响。 后端同事这时好像已经找到 bug 原因了,但只有他们的负责人有发版权限,他们也只能干瞪眼。
他们给我出了个(馊)主意:回滚审批的页面上有个“紧急发布”功能,可以越过审批人强制发布。 只需要写个小作文说明原因,然后由 SRE 同意即可发布。
我当时也是心急火燎,没有多想就申请了强制回滚。 SRE 那边问我,确定要回滚么?出事了你可要负责。 我迟疑了一下,但看着客服在催,后端负责人一直不回消息,其他后端同事觉得回滚没问题,于是就咬牙确认了。
于是灾难的一幕发生了:原本只是某个功能模块有 bug ,现在是整个服务不可用。 后端同事一拍脑袋,哎呀忘了,新版本执行了数据迁移,数据结构都变了,旧版本不仅跑不了还会导致数据损坏。 赶快回滚数据库到发版前的时刻。
可是回滚数据库的审批链条长得可怕,什么 DBA ,SRE ,甚至一堆人的 leader 都要参与审批。
我的这个审批工单还惊动了部门老大,他此时正在上海开会。 因为此次事故不得不中断会议,Zoom 过来协助解决问题。
他的第一句话就是,不要回滚数据库,发版后产生的所有数据一条也不能丢。除非你想让整个部门跟着消失。
后面的事就不用多说了。在服务完全中断的五个多小时后,所有损坏的数据均完成修复,新版本代码也成功上线。 后端负责人负此次事故的主要责任,case study 结束后就再也没见到过他,钉钉显示已离职。 我和一堆后端还有 QA 同事负次要责任,不仅要参与他们的 case study ,还要背最低绩效,年终奖归零。
因为这件事我在组里也一直抬不起头,过完年就直接提了离职。人生中的第一次也是唯一一次大厂工作经验就此落幕。
所以我想说的是,在工作中,对于那些本来不应该由自己做的事,哪怕这件事再简单, 看上去再无害(实际上你可能没有能力判断是否有风险),也不要不好意思拒绝。 至少要先请示一下自己的上级,有个人给你兜底。
![]() |
1
phrack 3 天前
你这故事其实有点离谱啊,为什么那个后端不找自己组的其他人反而找你个前端来发版,他跟你比自己组里的还熟呢?
|
![]() |
2
povsister 3 天前 ![]() 你想表达的意思我 get 了,但发版可不是举手之劳... 尤其是越权发布
|
![]() |
3
tonytonychopper 3 天前
我比较好奇为什么后端会找你前端来发版本,并且对方明知道要做手术还不提前找好 backup……
|
![]() |
4
dswyzx 3 天前 ![]() 都要上手术台了还在考虑工作。这大厂是离了谁地球不敢转吗
|
5
huigeer 3 天前 via Android
这是两个不太相干的类比,后一个严格说你的问题很大,这是越职
|
6
bernardkickass OP |
7
bernardkickass OP @phrack @tonytonychopper 大部分后端同事十点半以后才陆续到工位,而我通常十点以前就到了。
当天发版是他临时做出的决定,如果让其他后端同事操作的话,就来不及通过审批了,因为手术马上就要开始了。 |
![]() |
8
CEBBCAT 3 天前
这两个故事都是真的吗?行文很有 AI 味
|
9
leo72638 3 天前 via iPhone
上手术台前要发版还行
|
10
bernardkickass OP |
11
yuanmomo 3 天前 via iPhone ![]() 这个只是 op 在的公司。我现在的公司就没有这个顾虑了,有问题,提出来,谁有时间,改就是了。
上次印象深刻,另外一个组找我们老大沟通一个东西,老大没问我们,就回复说可以那样干。结果人家组就这么干了,结果我 review 的时候,一看这样做就不对,拉个会 @讨论一下,领导上来就跟人道歉说他没想到这样做不行。结果别的组也说,没关系,没关系,改了就是了。 第二次也是他们组,我当时没跟他们细说,以为他们懂,ingress 加一行配置就行。结果他们组一个同事哼哧哼哧搞了半个月,用 spring 写了一个 http 代理转发,说白了就是个简单得 NGINX ,让我 review ,我哭笑不得。明明几分钟的事情,搞了半个月,结果在转发文件上传的请求时很不稳定,没办法,同事说框架的问题,解决不了。最后我给他们说具体的方案,他们恍然大悟,最后几行配置搞定。这里很明显我背锅,要是早说不至于浪费同事的时间,我也跟他们道歉了。 说到底,要是一个环境,没有年终奖,员工也不怕裁员(裁员了,失业津贴 100%发十个月),哪儿来这么多破事,说到底还不就是那个恶心人的绩效考核。 |
12
udisyue 3 天前
首先你这是跟肯德基两码事,肯德基那个是造成对客户不公平的结果
其次,你前端代人上线本来就是不对的,后端负责人不在也应该是他组内代理人去执行,上线没有小事 |
13
SD10 3 天前 via iPhone
肯德基事件应该有标准处理的培训吧,没有的话不应该批评店员。
|
14
iOCZS 3 天前
权限职责分离是对的;不要轻易回滚也是对的
|
![]() |
15
swananan 3 天前
我这边可以看到的,op 当年大概犯了以下几个错误,当然都和肯德基的例子没什么关系😂
1. 帮别人进行线上发布,我觉得最核心的不是答应帮别人发布,而是没有理解线上发布需要做什么事情,发布不是只点一个发布按钮就结束了,灰度、业务报警、客户反馈,这些需要时刻跟踪,发布版本的变更内容和可能造成的影响都得了然于胸。如果对发布有了这些认知,相信 op 也不会随随便便答应别人(还是不同业务线的人)的发布要求。 2. 线上紧急回滚需要谨慎,不能一键回滚,而是要当做发布来处理,灰度、监控报警观察等等一些系列操作都不能缺失,一把梭等于是在玩命,当然版本发布者的回滚风险评审确认也是必不可少。所以,也是为什么发布必须又核心开发者本人来执行,而不是找人代发。 顺便推荐下我写的一篇博客,https://jt26wzz.com/posts/0007-online-firefighting-real-world-lessions-from-4-years-on-call/ |
![]() |
16
JamesR 3 天前
感谢分享经验,我见过好几次了,前端有时候,经常直接改我们后端的东西,以为很简单,不就一行代码嘛,为了省事,结果有时候还是出错,一查日志,结果发现前端改的。
|
![]() |
17
BeforeTooLate 3 天前
刚入职场,领导教我第一个事情就是:遇到不确定的事情千万不要自己蒙头做,找你上级领导确认一下总没错。
|
![]() |
18
CEBBCAT 3 天前
@bernardkickass #10 很抱歉给你造成困扰,原因是字里行间和以往读过的文字不太像,却和 LLM 润色过的文章缥缈之处有些神似。看来阁下的行文错别字很少了,感谢分享真实故事👍
|
![]() |
19
a2603230 3 天前
这种事情基本上小公司的日常了,小公司出问题基本不回滚,直接等服务端修复完再重开服务。
|
20
fredweili 3 天前
完全不是一个事情,KFC 就是沟通方式的问题,怎么处理都没错
瞎回滚,那就是年轻没吃过亏,fix bug ,能用的部分一定不要去碰,什么问题改什么 所谓本分之外的工作拒绝,那就是躺平,分不到钱的时候别叫就行了 |