程序员应不应该背锅?

上半年绩效考核终于接近尾声,我也有机会静下心来回顾过去半年的经历。

来 FB 工作虽然已半年多,但我骨子里依然是从毕业起就耳濡目染的那一套价值体系,任何在 FB 所经历的公司文化或者工程文化上的差异,都会带给我强烈的体验冲击和后续的思考,比如说最近在脑子里挥之不去的程序员背锅话题。

FB 曾经有一句名噪一时的口号:“Move fast and break things”。鼓励员工快速大胆的去实践自己的想法,而不需要过分担心风险。我这半年的经历可以印证这句话所言不虚,这种精神确实是 FB 工程文化的一部分,就我所在的部门,就经历了大大小小的工程事故。但这并不表明 FB 在产品质量的把控上存在明显问题,相反在我看来, FB 的这套持续交付质量控制系统非常有效,并不逊色于国内的做法,这个话题可以再起一篇文章另谈。

有一个线上事故印象特别深刻,据同事说,应该是部门成立有史以来发生过的最严重的问题,我全程参与事故的调试,修复以及复盘。在事故刚出现,后台数据狂飙的那一瞬间,我着实跟着紧张了一把,因为那个版本里有我最大的一次代码提交,在找出真正的事故原因之后我松了口气,然后开始持续高度密切关注背锅的问题。这么大的故障,这口锅得多大多沉。后续发生的事每一件都偏离了我的预想。

修复

刚确认事故的那一刻起,先是几个人在一个群里讨论事故细节,之后越来越多的 Engineer 和 Manager 加入进来,讨论很热烈,鉴于影响规模之大这点倒不难想象。没多久就确认了原因以及提出好几个解决思路,有几个 Engineer 主动领了任务分头并行。

整个过程中有几个细节让我很在意。

想象一下,如果支付宝线上版本全面 crash,后台收到海量的用户反馈,一星评价,然后上了科技新闻,而所有的讨论和处理仅仅发生在一个二十多人的群里,除此之外,感觉不到任何异样,部门里其他团队依旧是在忙自己的活,好像什么都没发生,这种气氛是不是有些反常。我中途还和另一个团队哥们聊了一会,他简单询问了下过程,嘿嘿一笑后就转身和别人讨论自己的需求去了。

群聊里,部门老大出现了一次,确认事故原因已找到,修复方案已在执行之后就消失了。下午五点多,热闹的群聊突然冷清了下来,我知道这是因为下班的时间点到了。有个哥们还在群里留言,嘿,我要赶回家的巴士先撤了,等我到家再看下有什么我可以帮忙的。我第一反应是黑人问号脸,哥们胆子真肥,问题还没最终修复,老大还在群里呆着,你就准点下班了,还在群里高调宣布,几个意思?我以前在国内不是没经历过这么大的事故,现在能记起来的是每个人脸上的凝重,和部门老大涨红了脸的咆哮,而且我知道,谁要是在那个时候准点下班,一定会遭遇老板最炙热的目光拷问。

期间,还有个非常资深的哥们在群里开玩笑:“this review is gonna be so exciting!(emoji 笑脸)”,心情看着不错呀你!

当天晚上十一点的时候,问题还在,修复并没有那么快。群聊里突然没了一点动静,我知道这是因为睡觉的时间到了。最后一条留言是,有个哥们说自己晚上会再测试一把,确认问题真正修复,还顺带解释道,正好自己晚上要喝啤酒通宵看球。我觉得他这后面一句不说会更好。

事后我回想起整个过程,也问自己,如果大家在处理时都更严肃,更紧张,甚至部门老大当众发一顿脾气,会不会问题就解决的更快一点。好像并不会,我认为处理的核心在于,是否在积极寻找事故原因和修复方案,如果这条主线在高效的往前走,除此之外的方式和手段都于事无补,都是多余的或者出于其他考量的。

复盘

我期待已久的复盘会议发生在大概一周之后,我知道事故一定由于一个 Engineer 的代码改动导致的,期待见到这位背锅侠。遗憾的是,在一个二十多人的会议室里,我确信这位大侠一定就在现场,但就是不知道是哪一位。奇不奇怪?

会议的全程都在讨论事故是如果绕过系统流程进入线上的,在讨论后续可能的方案来避免类似的故障。简单提到事故的原因是由于某某团队的某次改动导致的,但仅此而已,只有团队的名字,不知道具体是谁,好像也没人关心,会议的主要讨论都集中在解决方案。部门的终极老大坐在一个角落的桌子上,如果不是看过照片,还真不知道他是哪位。老大主要的发言是: “我们确信某某团队的项目对我们是必须的,所以不该因为项目的风险而质疑,应该想办法来规避风险”。

后来我找机会和一位资深员工又聊了这个话题。他说他经历过很多个复盘会议,会议的目的都不是去指责谁,而是如何避免类似的风险。有一次他参加的时候,有位苦主可能过于紧张,慢慢进入了状态,说自己不该这样不该那样,应该怎样怎样,然后他就被大家集体制止了,说,hey,hey,stop!我们开会不是来责怪你,别跑题了,我们还是继续讨论解决方案吧,然后哈哈哈的把尴尬带过去了。

该不该背锅?

就我以前经历而言,最高级别的线上故障肯定会有一个责任人,而且这位兄台的年底绩效考核基本上是完蛋了,没有奖金,没有股票,更别提升值机会了。这种直接关联,事故与责任人一对一的惩罚机制意义在哪?它是否能有效降低程序员因为粗心而导致故障的概率?

我明白所有程序员都会写 bug,早些年的时候,我认为 bug 虽然是无法避免的,但程序员可以凭借经验的累积和技艺的提升来完全规避大的故障。随着代码越写越多,经历也多了之后,我彻底否定了这一想法。我现在认为,无论你多么资深,在某个领域沉浸了多少年,你始终有一定概率会写出大 bug。来 FB 之前和之后,我都见过我认识的非常厉害的程序员,写过因为粗心而导致的大故障。当然粗心的对象并不一样,刚毕业的新手是在写一个排序函数时粗心,经验老道的程序员则可能是在重构一个系统时粗心。

通过绩效考核的惩罚能不能降低粗心的概率呢?能,在一天,一个星期或者一个月里绝对能,但长期来看,这种压力总会有松懈的时候,是人就会犯错。在关键的时候,我们更应该依赖不断打磨日渐成熟的系统和工具来检测杜绝错误,而不是依靠人的神经系统。

因为一次的故障而否定某个程序员一年的努力,显得太不人道。

那事故的责任人是不是就可以高枕无忧,在事故之后依然可以没事人一样逍遥法外呢?这是绝无可能的,每个人都不是孤立的个体,所有的行为都会有其群体效应,每一个醒目的大 bug 都会在潜移默化中削弱你在团队里的影响力和认可度,我们完全可以把事故的责任交给成熟的工程文化去消化,而且在这种文化里,一旦犯了错,至少还有机会去弥补,可以促使责任人用更大的成绩来抵消过错。

事故的真正价值在于对现有系统漏洞的补充,从而规避未来风险。

最后值得一提的是,FB 很早前就将口号换成了“Move fast with stable infra”,意思是要稳中求快。

程序员之路长且远,路上多荆棘,诸君还是应该通过持续学习来提高自身姿势水平,要稳不要皮。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,030评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,198评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,995评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,973评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,869评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,766评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,967评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,599评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,886评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,901评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,728评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,504评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,967评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,128评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,445评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,018评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,224评论 2 339

推荐阅读更多精彩内容

  • ——读禅小语 印度佛教与魏晋玄学的撞击,产生了中国禅宗,禅是印度佛教中国化的终极产物。 对于宗教...
    正蓝阅读 552评论 1 2
  • 文/叶老巫 || 每天絮絮叨叨,坚持日更, 第163篇 1、 不会写,根本原因在哪?是你没有材料,仓库是空的。没有...
    叶两步阅读 1,107评论 8 41
  • 是我偏离了自己的初心, 还是一直在努力变成你想要的模样。
    子卿的花期阅读 146评论 0 0