中秋过的真快,还没体会到就到最后一天了。今天在图书馆,突然想写篇与技术无关的,但是我们工作中经常发生的事情。本来不想写这种类型的文章,怕这种文章降低自己形象显得太low。但是一来想锻炼下自己的文笔叙事能力,越怕这怕那越不敢动笔,越不动笔越没长进,总要开个头来个正向刺激循环;二来相比技术类型的文章,故事类型的文章应该更受大家待见观看;三来这种工作中常见的“甩锅”事件值得大家探讨评论一下,碰撞的火花下交换解决思路,或许以后再碰到类似的事情,能够更迅速完美的解决。
故事是这样的,昨天周六,突然有客户反馈了一个问题过来,说公司产品有个业务操作展示错乱了,下一步操作无法执行。问题很快反馈到我们研发大群来了,由于前一天刚好产品迭代了一个版本,负责人是后端的一位小Leader,于是这个问题先由后端的这个同事接了。这个同事看了下接口返回数据,没看出什么问题,马上判定说是前端这边的问题,怀疑是前端这边进行了逻辑修改,要前端去定位原因。
由于前端部门老大回老家了,这个任务就落到我头上了。客户发现的问题,还是这么明显的操作,我们竟然没有自查出来,测试也没测出来,那问题就严重了。我也不敢怠慢,顾不得去玩了,赶紧回家连上公司电脑查原因。先查这块逻辑最近git记录,没有发现明显的更改逻辑;然后又切换了四个月前的一个代码分支看效果,发现效果和如今一样。因此我判断,应该不是前端这边的问题,是后端返回的数据出问题了。但是是哪块的数据出问题了,由于这块业务比较复杂,代码很多,我一时也找不出来。于是先把我的判断观点抛到群里,建议后端同事去自查下代码,最近有没有对这块逻辑进行更改。
这个后端同事真是对自己太自信了,说后端返回的数据没有看出什么问题,绝逼是前端的问题,让前端去自查代码定位原因!尼玛,这话我有点不爱听了,这是合作互赢的态度吗?但是由于我一时拿不出有力的证据来反驳,只好不和他继续讨论了,先妥协了去看代码。由于他有我们前端代码的权限,然后受我那个判断观点启发,于是他切了前端五个月前的分支代码来看效果。其实他在进行这步操作的时候,我也在进行这个操作,发现五个月前的代码竟然展示正常!这什么操作?我一时没整明白了!
这时他已经把他的“重大发现”赶紧发群里了,四个月前和今天的代码显示不正常,而五个月前的代码显示正常,是不是表示前端在四个月前就已经制造出了这个bug,这么长的过程前端同事都没发现,测试部门同事也没发现!
这个锅就大了,难道我们前端都是干饭的?我赶紧冷静了一下,梳理了下逻辑,回忆了下四个月前的那次版本迭代,是在那个版本中对这个逻辑进行了大修改和功能增加。那个功能刚好是我负责更改的,因此印象还是很深刻。我对自己写的东西还是很有信心的,另外我对当时负责测试的那个同事的业务能力也很有信心。这么明显的bug,首先我不可能自查不出来;其次就算我没自查出来,不可能测试同事也没测出来;再次退一万步讲,就算测试同事当时没有测出来,不可能四五个月的时间过去了,产品、开发、测试、运营还有客户这么频繁的使用还没发现这个问题。
但是那位后端同事,就抓住这个点不放了,坚持质疑为什么五个月前的代码可以正常显示和操作,而现在却不正常了?我一时说不出个所以然来,只好提议后端能不能部署一个四个月前的分支测试环境,让我对比下数据,快速定位问题。后端同事听不进去,坚持是前端的问题,说后端返回的数据看起来没有问题,没必要部署以前的后端代码,这个问题只需要前端去查看自己的代码,就能解决。
我有点生气了,大家都意识到问题的严重性了,都想快速把问题解决掉。但是你这么自信,这么坚持自己,是国共合作团结一心共同抗日该有的态度么?既然说服不了他,只能我妥协了,去看代码。网络突然卡起来了,然后自己笔记本屏幕有点小,远程看代码看的有点眼花,干脆直接去公司了。还是公司的双屏幕好,马上就看出返回的数据中有个地方异常了,我手动改了下,然后效果就显示正常了。应该就是这个原因了,我赶紧截图单独发给这个后端同事,让他去查下这个数据为什么异常了。
但是这个同事真的真的是对自己的判断太自信了,不认同我这个说法,坚持为什么五个月前的代码可以正常显示,为什么现在却不正常了,硬抓住这个点不放,要我去看前端代码解决这个问题。这感觉就是有点顽固了,平时感觉这小伙挺好打交道的,怎么突然这样呢?我只好说,那我们同时进行,我去查我这边的代码,你去查你那边的代码,等下我会给你答复旧版本正常新版本异常的问题。他回了句:不太可能是后端问题,但是我可以去看下。我去,你对自己写的功能有自信,难道我对自己写的功能就没自信了吗?过了一会,他说他也在来公司的路上了。
我决定要拿出有力的答复来狠狠的打他的脸,开始认真过一遍代码再梳理些已经被遗忘的逻辑。代码太多了,看得我头晕脑胀,不过好歹整理出思路了,但是一时不知道怎么组织语言表达出来。然后我突然惊喜的发现了自己电脑里保存了一条以前的旧数据,打开一看,果然印证了我之前的猜测,是新数据异常造成了这个现象。这时候他也来公司了,我叫他赶紧过来看,一时不知道怎么形象准确的表达,所以我请他看我的操作。但是他一直在那说为什么旧版本正常,而新版本不正常,说了好几次。我生气了,沉了脸说:你能不能先看下我这个操作。他这才停下来看我如何操作。没想到我在操作的过程中,突然知道怎么组织话语,把新旧版本不同表现的原因说出来了。
他这才稍微认可我的说法,又说,为什么如今你们对我们的数据格式这么依赖。我说,你看看这个效果图,你的数据有返回我们马上就能用的数据吗?新加的功能让我不得不根据目前的数据格式进行遍历提取我们需要的数据。他又说,这是当初你们老大和我定下来的数据格式..... 然后他就回他座位找问题去了。 等了好一阵子,我去问他,找到原因了吗?他说已经改好通知运维发预发布了,一行代码引发的血案。
我这才松了一口气,这个问题终于解决了。但是,既然已经改好了怎么不通知我一下,害我在那等那么久,那没什么事我先回家了.......
可能是当时没反应过来,回来后我才在反思今天发生的这个事。这个后端同事今天表现出来的自信和质疑,让我一度很生气,但是在找到最后的原因后,我为什么不去打击一下他那嚣张的气焰,为什么我最后的表现竟然是”松了一口气“,玛尼这不是有点犯贱吗?为什么明明是我这边的道理,怎么感觉好像一直像是我这边的问题,怎么一直是我这边在妥协?如果他不要那么自负,早一点去自查代码,这个问题不是很快就解决了,何须我这边去忙活半天。我后面为什么不去质疑他这么重要的功能是能随便改动的吗?代码的严谨性呢?后端那边经常说代码审查代码审查,这是怎么审查的?代码改动了,没有去考虑相关的功能影响吗?没有去通知相关的人去进行测试? ......
以上的质疑算是我自己一时的意淫,真要去做了以后大家都这么干,那工作氛围得成什么样?再说人哪有不犯错的,以我目前这表达能力,万一哪次犯错了被人揪住小辫子那不得给踩死。但是该有的说法是不是还得说出来,一来大家都是为了公事,为了把事情做好,没有私人恩怨;二来不想自己在别人的印象中是一个软蛋,可以随便捏拿,得有一些菱角,大家和平共处,一起把事情做好。凭心而论,我们公司研发都还是比较单纯的,很少有因为推脱工作责任而互相推诿互相攻击的,大家互相协作互相配合,工作氛围还是不错的。但是我身边的一些同学朋友的公司,里面的工作氛围真是不可描述啊,我有时听了他们的描述,感觉这甩锅真是甩出了新高度,某些人身上自带攻击性,说话句句带刺,心理有点不正常啊,这种环境下真不知道这些小伙是怎么坚持下来的!
总结一下就是:工作中,我首先表示我的和平处理态度,互相尊重,互相协作;但是如果你一味的甩锅,和打压我,那我也要亮出我的獠牙来。另外这个表达能力真得好好的提升下,一段准确形象的表达可以节省多少口舌;再厉害一点的表达能力,应该是既能把意思表达清楚,又能使人心悦诚服的接受。
还有什么呢?