热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

一次“背锅”和“解锅”后的反思

中秋过的真快,还没体会到就到最后一天了。今天在图书馆,突然想写篇与技术无关的,但是我们工作中经常发生的事情。本来不想写这种类型的文章,怕这种文章降低自己形象显得太low。但是一来想

  中秋过的真快,还没体会到就到最后一天了。今天在图书馆,突然想写篇与技术无关的,但是我们工作中经常发生的事情。本来不想写这种类型的文章,怕这种文章降低自己形象显得太low。但是一来想锻炼下自己的文笔叙事能力,越怕这怕那越不敢动笔,越不动笔越没长进,总要开个头来个正向刺激循环;二来相比技术类型的文章,故事类型的文章应该更受大家待见观看;三来这种工作中常见的“甩锅”事件值得大家探讨评论一下,碰撞的火花下交换解决思路,或许以后再碰到类似的事情,能够更迅速完美的解决。

  故事是这样的,昨天周六,突然有客户反馈了一个问题过来,说公司产品有个业务操作展示错乱了,下一步操作无法执行。问题很快反馈到我们研发大群来了,由于前一天刚好产品迭代了一个版本,负责人是后端的一位小Leader,于是这个问题先由后端的这个同事接了。这个同事看了下接口返回数据,没看出什么问题,马上判定说是前端这边的问题,怀疑是前端这边进行了逻辑修改,要前端去定位原因。

  由于前端部门老大回老家了,这个任务就落到我头上了。客户发现的问题,还是这么明显的操作,我们竟然没有自查出来,测试也没测出来,那问题就严重了。我也不敢怠慢,顾不得去玩了,赶紧回家连上公司电脑查原因。先查这块逻辑最近git记录,没有发现明显的更改逻辑;然后又切换了四个月前的一个代码分支看效果,发现效果和如今一样。因此我判断,应该不是前端这边的问题,是后端返回的数据出问题了。但是是哪块的数据出问题了,由于这块业务比较复杂,代码很多,我一时也找不出来。于是先把我的判断观点抛到群里,建议后端同事去自查下代码,最近有没有对这块逻辑进行更改。

  这个后端同事真是对自己太自信了,说后端返回的数据没有看出什么问题,绝逼是前端的问题,让前端去自查代码定位原因!尼玛,这话我有点不爱听了,这是合作互赢的态度吗?但是由于我一时拿不出有力的证据来反驳,只好不和他继续讨论了,先妥协了去看代码。由于他有我们前端代码的权限,然后受我那个判断观点启发,于是他切了前端五个月前的分支代码来看效果。其实他在进行这步操作的时候,我也在进行这个操作,发现五个月前的代码竟然展示正常!这什么操作?我一时没整明白了!

  这时他已经把他的“重大发现”赶紧发群里了,四个月前和今天的代码显示不正常,而五个月前的代码显示正常,是不是表示前端在四个月前就已经制造出了这个bug,这么长的过程前端同事都没发现,测试部门同事也没发现!

  这个锅就大了,难道我们前端都是干饭的?我赶紧冷静了一下,梳理了下逻辑,回忆了下四个月前的那次版本迭代,是在那个版本中对这个逻辑进行了大修改和功能增加。那个功能刚好是我负责更改的,因此印象还是很深刻。我对自己写的东西还是很有信心的,另外我对当时负责测试的那个同事的业务能力也很有信心。这么明显的bug,首先我不可能自查不出来;其次就算我没自查出来,不可能测试同事也没测出来;再次退一万步讲,就算测试同事当时没有测出来,不可能四五个月的时间过去了,产品、开发、测试、运营还有客户这么频繁的使用还没发现这个问题。

  但是那位后端同事,就抓住这个点不放了,坚持质疑为什么五个月前的代码可以正常显示和操作,而现在却不正常了?我一时说不出个所以然来,只好提议后端能不能部署一个四个月前的分支测试环境,让我对比下数据,快速定位问题。后端同事听不进去,坚持是前端的问题,说后端返回的数据看起来没有问题,没必要部署以前的后端代码,这个问题只需要前端去查看自己的代码,就能解决。

  我有点生气了,大家都意识到问题的严重性了,都想快速把问题解决掉。但是你这么自信,这么坚持自己,是国共合作团结一心共同抗日该有的态度么?既然说服不了他,只能我妥协了,去看代码。网络突然卡起来了,然后自己笔记本屏幕有点小,远程看代码看的有点眼花,干脆直接去公司了。还是公司的双屏幕好,马上就看出返回的数据中有个地方异常了,我手动改了下,然后效果就显示正常了。应该就是这个原因了,我赶紧截图单独发给这个后端同事,让他去查下这个数据为什么异常了。

  但是这个同事真的真的是对自己的判断太自信了,不认同我这个说法,坚持为什么五个月前的代码可以正常显示,为什么现在却不正常了,硬抓住这个点不放,要我去看前端代码解决这个问题。这感觉就是有点顽固了,平时感觉这小伙挺好打交道的,怎么突然这样呢?我只好说,那我们同时进行,我去查我这边的代码,你去查你那边的代码,等下我会给你答复旧版本正常新版本异常的问题。他回了句:不太可能是后端问题,但是我可以去看下。我去,你对自己写的功能有自信,难道我对自己写的功能就没自信了吗?过了一会,他说他也在来公司的路上了。

  我决定要拿出有力的答复来狠狠的打他的脸,开始认真过一遍代码再梳理些已经被遗忘的逻辑。代码太多了,看得我头晕脑胀,不过好歹整理出思路了,但是一时不知道怎么组织语言表达出来。然后我突然惊喜的发现了自己电脑里保存了一条以前的旧数据,打开一看,果然印证了我之前的猜测,是新数据异常造成了这个现象。这时候他也来公司了,我叫他赶紧过来看,一时不知道怎么形象准确的表达,所以我请他看我的操作。但是他一直在那说为什么旧版本正常,而新版本不正常,说了好几次。我生气了,沉了脸说:你能不能先看下我这个操作。他这才停下来看我如何操作。没想到我在操作的过程中,突然知道怎么组织话语,把新旧版本不同表现的原因说出来了。

  他这才稍微认可我的说法,又说,为什么如今你们对我们的数据格式这么依赖。我说,你看看这个效果图,你的数据有返回我们马上就能用的数据吗?新加的功能让我不得不根据目前的数据格式进行遍历提取我们需要的数据。他又说,这是当初你们老大和我定下来的数据格式..... 然后他就回他座位找问题去了。 等了好一阵子,我去问他,找到原因了吗?他说已经改好通知运维发预发布了,一行代码引发的血案。

  我这才松了一口气,这个问题终于解决了。但是,既然已经改好了怎么不通知我一下,害我在那等那么久,那没什么事我先回家了.......

  可能是当时没反应过来,回来后我才在反思今天发生的这个事。这个后端同事今天表现出来的自信和质疑,让我一度很生气,但是在找到最后的原因后,我为什么不去打击一下他那嚣张的气焰,为什么我最后的表现竟然是”松了一口气“,玛尼这不是有点犯贱吗?为什么明明是我这边的道理,怎么感觉好像一直像是我这边的问题,怎么一直是我这边在妥协?如果他不要那么自负,早一点去自查代码,这个问题不是很快就解决了,何须我这边去忙活半天。我后面为什么不去质疑他这么重要的功能是能随便改动的吗?代码的严谨性呢?后端那边经常说代码审查代码审查,这是怎么审查的?代码改动了,没有去考虑相关的功能影响吗?没有去通知相关的人去进行测试? ......

  以上的质疑算是我自己一时的意淫,真要去做了以后大家都这么干,那工作氛围得成什么样?再说人哪有不犯错的,以我目前这表达能力,万一哪次犯错了被人揪住小辫子那不得给踩死。但是该有的说法是不是还得说出来,一来大家都是为了公事,为了把事情做好,没有私人恩怨;二来不想自己在别人的印象中是一个软蛋,可以随便捏拿,得有一些菱角,大家和平共处,一起把事情做好。凭心而论,我们公司研发都还是比较单纯的,很少有因为推脱工作责任而互相推诿互相攻击的,大家互相协作互相配合,工作氛围还是不错的。但是我身边的一些同学朋友的公司,里面的工作氛围真是不可描述啊,我有时听了他们的描述,感觉这甩锅真是甩出了新高度,某些人身上自带攻击性,说话句句带刺,心理有点不正常啊,这种环境下真不知道这些小伙是怎么坚持下来的!

  总结一下就是:工作中,我首先表示我的和平处理态度,互相尊重,互相协作;但是如果你一味的甩锅,和打压我,那我也要亮出我的獠牙来。另外这个表达能力真得好好的提升下,一段准确形象的表达可以节省多少口舌;再厉害一点的表达能力,应该是既能把意思表达清楚,又能使人心悦诚服的接受。

  还有什么呢?

  



推荐阅读
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 自 Node.js 6.3 版本起,调试功能已内置在核心模块中,无需额外安装 node-inspector 等工具。通过简单的命令即可启动调试模式,并利用 Chrome 浏览器进行高效的代码调试。 ... [详细]
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 本文探讨了现代分布式架构的多样性,包括高并发、多活数据中心、容器化、微服务、高可用性和弹性架构等,并介绍了与这些架构相关的重要管理技术,如DevOps、应用监控和自动化运维。文章还深入分析了分布式系统的核心概念、主要用途及类型,同时对比了单体应用与分布式服务化的优缺点。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • 2023年最佳PHP开发学习路径推荐
    本文详细探讨了针对不同背景的学习者如何选择最适合自己的PHP开发学习资源,包括书籍、在线课程及培训机构的推荐。 ... [详细]
  • APM(Application Performance Management,应用性能管理)对于提供互联网服务的企业至关重要。本文将深入探讨APM如何帮助识别和解决导致用户流失的技术问题,以及它在提升整体用户体验方面的作用。 ... [详细]
  • 忙而不盲:探索高效工作的艺术
    本文探讨了在日常工作中如何避免盲目忙碌,通过理解和应对稀有事件、管理负面情绪以及明确学习目标,提升工作效率和个人成长。 ... [详细]
  • 本文介绍了Java语言开发的远程教学系统,包括源代码、MySQL数据库配置以及相关文档,适用于计算机专业的毕业设计。系统支持远程调试,采用B/S架构,适合现代教育需求。 ... [详细]
author-avatar
jac
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有