周末晚上,北京刮大风,我在海淀的一家饭馆里,被前同事大伟拉着喝闷酒。
大伟今年快四十了,在一家SaaS企业做交付大区经理。那天几杯清酒下肚,平时挺爱吹牛的一个北方汉子,突然眼圈就红了,说话的声音都在抖。
“老马,我可能要栽了。”
细问之下,其实起因是个极其微小的疏忽。半个月前,他给一个重要大客户报下半年的服务器扩容预算时,Excel表格里的一个公式拉错了,导致总价少报了十万块钱。
说句实在话,十万块在那个千万级的盘子里,算不上致命伤,及时跟老板坦白,走个特殊审批或者跟客户道个歉,也就补救回来了。
但大伟慌了。他太想在这个新老板面前维持“完美干将”的人设了。
为了填上这十万块的窟窿,这半个月里,他开始了一场疯狂的“掩盖行动”。他偷偷从别的项目里挪用赠送额度,跑去跟供应链的兄弟软磨硬泡改折扣,甚至为了圆一个谎,在部门例会上编造了一套漏洞百出的说辞。
结果,窟窿没捂住,反而在跨部门的对账中被财务直接捅了出来。现在不仅是算错账的问题,老板直接怀疑他的人品和职业操守,停了他的职。
“这半个月,我每天晚上睡不着,头发大把大把地掉。看到老板的微信,心跳就飙到一百二。”大伟捂着脸,整个人像一滩烂泥,“老马,我怎么就把自己逼到了这个绝路上?”
我给他倒了杯热茶,心里一阵唏嘘。
咱们这代人,从小受到的规训就是“不许犯错”。考卷上多一个红叉,就会换来责骂;职场上出一点纰漏,就觉得天要塌了。于是,咱们下意识地把大脑当成了一个必须永远光鲜亮丽的展示柜。
但咱们常常忽略了一个残酷的账本:那个失误本身,可能只耗费了你10%的成本;而你为了掩盖失误、维持“我没错”的完美假象,却搭进去了整整90%的算力和信任。
吞下错误的系统,迟早会烧毁主板
干了三十年系统架构,我特别怕碰到一种系统。
那种系统看起来特别“坚强”。底层代码明明已经抛出错误了,但当初写代码的程序员为了让界面不报错、不让测试人员发现,在中间加了一层过滤,把所有的错误提示硬生生地“吞”了下去。
在行话里,这叫“静默失败(Silent Failure)”。
用户看着界面一切正常,甚至连个卡顿都没有。但实际上,底层数据库里的账目已经开始错乱,内存里的垃圾数据正在疯狂堆积。直到某天赶上双十一的流量洪峰,“砰”的一声,整个机房的服务器全盘崩溃,甚至连抢救的日志都找不到。
其实,咱们很多成年人,就是在一路强行运行着这种“静默失败”的人生。
婚姻里有了摩擦,怕吵架伤面子,选择沉默冷战,假装岁月静好,直到某天因为洗碗的小事直接去领了离婚证;工作里能力没跟上,怕被同事看扁,硬着头皮装懂,背地里焦虑到抑郁,直到捅出天大的篓子。
越是拼命包装那个完美无缺的假象,系统内部的压力就越大。
真正健壮的架构是怎么设计的?是只要碰到一丁点异常,哪怕只是个空指针,系统也会立刻尖叫着抛出满屏的红色报错(Exception Throwing)。
它很难看,它很狼狈,它会让程序员连夜爬起来挨骂。但正因为这极其刺眼的报错,问题被暴露在了阳光下,维修工具才能精准下刀。
失误,是这个世界反馈给咱们的最真实的原始数据。你不敢直视它,就永远拿不到进化的补丁。
凌晨三点的联络中心:被“面子”拖垮的割接夜
说个我亲身经历的战壕往事吧,那是我职业生涯里冒冷汗最多的一夜。
2012年秋天,我带队给一家北方的大型商业银行做全省联络中心系统的底层大升级。这种核心通信网的割接,向来是踩在刀刃上跳舞,只能在周六凌晨的两点到四点进行。
那天晚上,省行的科技部老总亲自坐镇。我手下有个负责配置路由脚本的年轻工程师,小吴。小伙子名牌大学毕业,平时特别要强,干活容不得别人说半个不字。
凌晨两点半,旧系统切断,新路由脚本加载。
刚加载完,测试席位的电话就全乱了。原本该进理财VIP组的电话,全被扔到了信用卡挂失组。大屏幕上的呼损率开始报警。
我当时就站在小吴身后,问他:“路由配置是不是漏了哪个省的区号?”
小吴当时的脸“唰”地一下就白了。但他硬着头皮、目不转睛地盯着屏幕说:“马总,不可能,我昨天在测试环境跑了三遍,绝对不是我的脚本问题,肯定是客户那边的防火墙把信令拦截了!”
因为他这句斩钉截铁的判断,我们全组加上银行的网管,开始像无头苍蝇一样去查防火墙、查光缆、查交换机日志。
时间一分一秒地过去。凌晨三点半,还有半小时就要业务恢复了,问题还是没找到。银行的科技老总脸色已经难看至极,直接在机房里拍了桌子:“到底行不行?不行马上给我全量回滚!”
机房里冷气刺骨,但我后背的衬衫紧紧贴在身上,全是冷汗。
就在我准备下令回滚的最后一刻,小吴突然捂住脸,声音带着哭腔:“马总,对不起……是我写错了一个正则表达式,把‘010’的前缀漏掉了……”
我一把推开他,扑到键盘前,三行代码,两分钟改完,重启进程。
绿灯亮起,路由全通。
那一夜结束后,我们在外面的早餐摊吃包子,没人说话。我没有去向领导申请开除小吴,但我只跟他说了一句话:“今天差点毁掉咱们整个团队的,不是你漏写的那行代码,而是你为了掩盖那行代码,生生浪费掉的那五十分钟抢救时间。”
小吴在那个寒冷的清晨,把头深深地埋进了胸口。
咱们很多人,不就像那个夜晚的小吴吗?为了维护那一点点可怜的面子,为了证明“我很专业”,宁愿把整个局面拖入死地,也不敢当面承认一句“这事儿我搞砸了”。
从废墟里,提炼你的“进化补丁”
后来带的团队多了,我慢慢总结出一个看人的偏方。
如果一个人出了错,第一反应是写几千字的报告来论证外部环境有多恶劣、跨部门协作有多不配合,这个人我基本就不会再重用了。
因为他把所有的算力,都耗在了“公关危机”上。
而真正厉害的高手,面对失误时,呈现出的是一种极其可怕的“冷血感”。
他们不会陷入自我贬低的内耗,也不会急着去推卸责任。他们会像一个旁观的法医一样,冷冷地剖开自己刚刚犯下的错误。
“这个bug是怎么产生的?”
“是我轻信了某个未经校验的数据流?还是我越权调用了不该调用的模块?”
“如果下次再遇到类似的场景,我该在系统里加一个什么样的校验机制来阻断它?”
他们把每一次失误,都当成是系统白送的一次压力测试。
咱们普通人,怎么才能拥有这种从废墟里提取“进化补丁”的能力?
简单说就是:降低对完美的期待,把“容错率”当成你人生架构的一部分。
当你不再幻想自己是一个永远正确的“神”,而是接受自己本来就是一台随时会出小故障的“肉身机器”时,你对错误的耐受度就会大幅提升。出错了?行,认栽,抛出异常信号,打个补丁,明天继续跑。
这种不怕摔、摔了还能抓把沙子起来的粗粝感,才是这个残酷世界里最顶级的竞争力。
写在最后
这半辈子走过来,见过了太多光鲜亮丽的崩塌。
很多人外表看起来像一座装甲森严的钢铁城堡,履历完美,光环无数,但实际上,里头全是生锈的齿轮和被刻意掩盖的火花。只要外面随便扔块石头,整座堡垒就可能瞬间内爆。
真正的强大,从来都不是假装没有伤疤。
而是当你站在人生的聚光灯下,敢于坦然地指着身上那些缝合过的补丁说:“你看,我在这里摔过跟头,但我活着把它缝好了。”
别再为了维持那个并不存在的“完美人设”去撒谎、去硬撑了。
放下你心里的那层伪装网,让外面的风吹进来。只有敢于直面自己系统里的bug,你才配拥有这台机器最终的控制权。
今日微动作:
每个人最近,肯定都有一两件被自己搞砸了、但因为觉得丢人而一直藏在心里的小事(可能是错过了一个Deadline,可能是对家人发了无名火,可能是买错了一个不便宜的物件)。
今晚,去找那个直接受到影响的、你最信任的人(伴侣、老友或者同事)。
只发一句话,不带任何“因为”、“但是”等找理由的后缀。
就坦坦荡荡地说一句:“那件事,是我办砸了,这回我认。”
当你把这句话发出去的那一刻,你会听见,你身体里那个一直紧绷着、耗费了你巨大电量的“掩盖进程”,终于被彻底关闭了。
今晚,你会睡得特别沉。