5whys分析法在美团工程师中的实践

article/2025/9/21 18:26:58

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前言

网站的质量和稳定性对于用户和公司来说至关重要,但是在网站的快速发展过程中,由于各种原因导致事故不可避免的发生,这些大大小小的事故对公司难免会造成一些负面的影响,为了避免同类事故的再次发生,美团的工程师们从事故中不断学习,对每次事故进行深入分析和总结,形成了一种Casestudy文化,并结合一套科学的分析方法-5whys分析法,深入分析事故背后的根本原因和流程漏洞,使得事故发生的频率大大降低。

在本文中,首先对5whys分析法的进行简单介绍,然后再结合美团工程师Casestudy的案例去分享这套分析法的在美团的实践。

5whys分析法

5whys分析法,又名why-why分析法,它是根本原因分析(Root Cause Analysis) 的一种具体方法,适用于去分析一些简单和难度适中的问题。简单的说,就是针对问题持续的问5个为什么(通常需要至少5个“为什么”,但5个why不是说一定就是5个,可能是1个,也可能是10都没有抓到根原),通过这样一种分析思路,能很快找到问题深层次的根本原因以及工作流程上的漏洞,并据此再制定预防措施,防止问题重新出现或再次发生,大大降低解决问题的成本。

代码review流程

在美团,5whys分析法作为每个工程师需要掌握的一种工作方法,已经广泛应用到Casestudy的原因分析中去。

###利用5why分析法来进行Casestudy原因分析的几个步骤

#####Step 1:对事故进行详细描述

“If I had an hour to save the world,I would spend 59 minutes defining the problem and one minute finding solutions.”
– Albert Einstein

对于事故进行定义和描述比较重要,这一步不可省略。在描述事故时,我们基于5W2H(What,Who,Where,When,Why,How,How much)分析法来对事故进行描述,说清楚事故发生的时间,地点,发现人,怎样解决的,解决的时间等等。

  • What:描述下发生了什么问题。
  • Who:描述下责任人是谁,谁发现的问题,谁解决的问题。
  • Where:描述下在哪里发现的事故。
  • When:描述下事故的时间因素,什么时候发现的事故,什么时间解决的事故。
  • Why:描述下为什么是个事故,强调事故的影响。
  • How:描述下事故是怎样被解决的。
  • How much:描述下事故的可量化的影响范围和造成的损失,影响了多少用户,造成了多少损失等等。

#####Step 2:提问:为什么这问题会发生?

识别并确认导致当前问题发生的直接原因。如果原因是可见的,验证它。如果原因是不可见的,考虑潜在原因并核实最可能的原因。

#####Step 3:检验上一步中发现的原因是否是根本原因?

检查上一步中的回答的原因是否是导致事故的根本原因,如果不是,则重复Step2和Step3,直至找到事故发生的根本原因为止,最终通过这样一个过程建立一个通向根本原因的原因/效果关系链。这个过程一般需要持续5次为什么(可能少于或多于5个),这也是5whys分析法名字的由来。

#####Step 4:找到问题发生的根本原因,制定执行计划并修复

找到问题发生的根本原因后,采取明确的措施和手段去处理问题,预防和避免类似问题的再次发生。对于采取的纠正措施和手段,需要问问“采取后能否避免问题的再次发生”,如果不能,再找到其他的解决之道。

#案例分析

2014年某月某日,某内部App ios版应用相关负责人小美接到大量用户投诉,ios的App启动时出现闪退现象,导致大量用户不能进入应用,虽说接到反馈后及时修复,但还是造成了一些不良的影响,针对此次事故,领导要求对事故进行总结,要求深入分析事故的原因。

小美基于5W2H分析法先对事故进行描述:

事故起止时间:2014年某月某日 10时30分-2014年某月某日 10时40分

责任人:小美

事故详情:小美对此次事故进行了详细描述,包含整个事故经过的时间、事件,在什么时间节点什么人做了什么事,谁发现的问题,谁解决的问题,怎样解决的问题。

影响范围:此次事故造成的影响和损失。

然后小美再结合5whys分析法中的原因分析实践深刻总结造成此次事故的所有原因:

1)为什么会发生此次事故?

事故的直接原因是由于某个服务端API的返回值新增加了一个字段导致此次事故的发生。

2)为什么服务端API的返回值变更会影响ios版app的崩溃而android版正常?

主要还是由于ios版代码兼容性问题,服务端api的变更导致了类似空指针异常的发生。

3)为什么事故发生前未能发现程序代码的兼容性问题而导致质量低的代码到线上?

一方面是由于小美是新人;另一方面组内缺少对代码进行质量控制的手段。

4)为什么组内没有对代码进行质量控制的手段呢?

一方面由于组内人手不足;另一方面缺少一个比较好的代码review流程去推动质量控制。

5)为什么不尽早推动这套代码review流程去预防类似事故的发生?

组内人员对代码质量的重视程度不够,存在侥幸心理。

结合5whys分析法的实践,从以下3个层面分析了此次事故的原因:

1、为什么会发生?

2、为什么没有提早发现?

3、为什么没有从系统或流程上预防事故?

表面上看因为服务端API的变动造成了此次事故,次级原因是由于IOS程序的兼容性导致,但其发生的根本原因还是在于开发人员对于代码质量存在侥幸心理并且上线流程上有漏洞,未能建立一套合理的代码reivew和审核机制,只有制度或流程上的改进才能尽量避免类似问题的再次发生。

找到根本原因后,小美所在团队针对此次事故做了一个Casestudy总结,强调代码质量的重要性,并将代码Review的流程提上日程,利用公司Git平台提供的fork和pull request机制建立起一套合理的代码review流程,并要求组内人员遵守这套规则,使得代码质量大大提升,降低了事故的风险。

代码review流程

#总结

Casestudy作为美团工程师的必修课之一,如果不去结合5whys分析法去实践,只顾解决表面原因而不管根本原因,可能事故发生后采取临时措施改进后就忘了,问题免不了要复发;但通过5whys分析法这样一种分析过程,工程师们学会分析问题由表入里,直指问题要害,大大降低了解决问题的成本,从而间接提高了工作效率。

对于工程师的成长,技术能力至关重要,但是职业技能和通用素质的提高对于工程师的长期成长来说也是很重要的。在美团的工作中,工程师们不光在技术能力得到提高,并且还能掌握很多科学的工作方法,5whys分析法仅仅是其中之一,后续再分享其他方法给大家。

#参考

  • 根本原因分析
  • 为什么一为什么分析法
  • 精益创业
  • Stash 1.3: Enterprise Git Gets Social with Pull Requests

转载于:https://my.oschina.net/dolphinboy/blog/2247810


http://chatgpt.dhexx.cn/article/JuJIH7hM.shtml

相关文章

单因素方差分析的计算过程详解

统计分析之单因素方差分析计算过程详解 Excel方差分析 用Excel计算方差分析,三种方法: 一步步手推法 用Excel的数据分析→单因素方差分析自动生成 在1的基础上通过SUMX2MY2优化法 Excel版操作步骤可参见 Excel单因素方差分析操作详解 P…

哈佛大学——差异表达分析(九)DESeq2步骤描述

文章目录 学习目标DESeq2差异基因表达分析流程第一步:估计大小因子第二步:估计基因离散(gene-wise dispersion)第三步:拟合曲线到基因的分散估计第四步:将基因离散估计值向曲线预测值收缩MOV10 DE分析:探讨离散估计和评…

数学建模之层次分析法(AHP)

层次分析法(Analytic Hierarchy Process) AHP是对一些较为复杂的,较为模糊的问题作出决策的简易方法,它特别适用于那些难以完全定量分析的问题。由美国运筹学家T.L.Saaty教授于上世纪70年代初期提出。 目录 层次分析法&#xff0…

时序分析-季节因素

目录 1时序分析的基础 1.1 简介 1.2 分类 2 分析套路 3 主流时序分析模型 3.1移动平均 3.2 指数平滑法 3.3 组合模型 3.4 ARIMA 4 研究细分领域 4.1 异常值检测 4.2 季节序列分析 4.1 同期平均法 4.1.1 简单季节指数法 4.1.2 趋势季节指数法 4.2 长期趋势剔除法…

html5播放器的示例代码

本次的分享是一个基于HTML5标签实现的一个自定义视频播放器。其中实现了播放暂停、进度拖拽、音量控制及全屏等功能。 效果预览 核心思路 我相信一定会有些没有接触过制作自定义播放器的童鞋对于 标签的认识会停留在此。 <video controls"controls" autoplay"…

HTML5音乐播放器

明月浩空-HTML5浮窗音乐播放器研发于2014年&#xff0c;并持续更新至今 是基于QQ音乐、酷狗音乐、网易云音乐等歌曲ID全自动解析的网页音乐播放器 依靠服务器强大的接口功能&#xff0c;只需要一个ID既可获取全部信息 同时播放器主体会跟随专辑图片主色值自动变色&#xff0c;歌…

h5的开源播放器组件

哈喽&#xff0c;大家好&#xff0c;今天我要给大家推荐一个非常棒的看片神器&#xff0c;那就是【moovie】.它是一款专注于电影的HTML5 播放器。 先展示一下效果&#xff0c;测试了一下&#xff0c;支持倍速播放、快捷键操作、字幕偏移即时调整&#xff0c;还有一些参数展示&a…

H5播放器使用方法。

1.使用webkit-playsinline playsinline 在iOS微信webview中视频不会弹出来&#xff0c;直接播放。 <video id"test_video" class"test_video" webkit-playsinline playsinlinesrc"http://res.imtt.qq.com/qqbrowser/js/advideo.mp4"control…

H5,Audio音乐播放器(移动版)

有些时候&#xff0c;总是感觉自己进步的没有以前快了。于是就怀疑自己是不是也被时间磨灭了&#xff0c;这可真是一件不幸的事儿。可能是自己会的东西太少了&#xff0c;总是有种莫名的危机感。 前一段时间&#xff0c;想写一个移动版音乐播放器&#xff0c;于是就开始利用下班…

H5 video 播放器demo

H5 video 播放器demo 前言 最近在做一个wap端的项目&#xff0c;需要视频播放功能。大家也知道wap对flash支持很差&#xff0c;所以优先考虑使用h5播放器video,在这里我介绍用video实现视频播放方法。之后在介绍几个插件和第三方视频实现方法。 H5 video 因为video样式是原…

SkeyeWebPlayer.js H5播放器开发之播放器video动态创建(三)

SkeyeWebPlayer.js H5播放器是由成都视开信息科技开发和维护的一个完善的RTSP、FLV、HLS等多种流媒体协议播放&#xff0c;视频编码支持H.264&#xff0c;H.265&#xff0c;音频支持AAC&#xff0c;支持TCP/UDP协议&#xff0c;是一套极佳的且适合用于综合安防视频云服务播放组…

H5音乐播放器(包含源码与示例)

H5音乐播放器&#xff08;包含源码与示例&#xff09; 基于Angularionic的H5音乐播放器&#xff0c;源码&#xff1a;https://gitee.com/CrimsonHu/h5-music-player 示例地址 建议使用原版chrome或edge访问&#xff1a;http://intelyes.club:5300/ 功能 实时歌词显示支持歌…

基于H5+js开发一款音乐播放器

前言&#xff1a;当下音乐播放器不胜其数&#xff0c;为了更好的掌握一些东西&#xff0c;我们来自己制作一个音乐播放器。 文章目录&#xff1a; 一.开发环境&#xff1a;二.页面视图&#xff1a;1.主文件入口&#xff08;首页&#xff09;&#xff1a;2.音乐播放界面&#…

H5纯原生播放器 【学习video】

这是一个纯原生的H5播放器&#xff0c;尽管网上有很多第三方库&#xff0c;但是基础打的牢固&#xff0c;一定会帮你走的更远。 大厂也非常重视基础&#xff0c;再说了那些第三方库也是基础一点点搭起来的&#xff0c;所以有兴趣学习的同学可以下载来学习。 代码中的细节我都…

MuiPlayer - 一款优秀的 H5 视频播放器框架

Mui Player Gitee | Docs | 中文文档 介绍 MuiPlayer 是一款 HTML5 视频播放插件&#xff0c;其默认配置了精美可操作的的播放控件&#xff0c;涉及了常用的播放场景&#xff0c;例如全屏播放、播放快进、循环播放、音量调节、视频解码等功能。 支持 mp4、m3u8、flv 等多…

[h5]一个基于HTML5实现的视频播放器代码详解

什么是 HTML5&#xff1f; HTML5 是最新的 HTML 标准。 HTML5 是专门为承载丰富的 web 内容而设计的&#xff0c;并且无需额外插件。 HTML5 拥有新的语义、图形以及多媒体元素。 HTML5 提供的新元素和新的 API 简化了 web 应用程序的搭建。 HTML5 是跨平台的&#xff0c;被…

一个牛逼的开源 H5 视频播放器

【公众号回复 “1024”&#xff0c;免费领取程序员赚钱实操经验】 大家好&#xff0c;我是章鱼猫。今天给大家分享的这个开源项目&#xff0c;对于前端开发者来讲非常非常的有用。因为它是一个 H5 的视频播放器。 字节跳动出品&#xff0c;必属精品啊&#xff01;尤其是我感觉在…

H5移动端页面使用DPlayer视频播放器

背景&#xff1a; 如果使用原生video标签&#xff0c;那在不同类型手机浏览器上样式都不一样&#xff0c;而且播放表现不一样&#xff0c;比如使用css隐藏播放按钮在PC端有效&#xff0c;在手机端就无效&#xff0c;故我们选择引入第三方成熟的播放器。 需求&#xff1a; 1、自…

13款用于Web的流行HTML5视频播放器

​​​​​​当视频流媒体席卷通信世界&#xff0c;为了保持和提升用户增长&#xff0c;内容创造者和流媒体服务提供者需要提供高质量的用户体验。而想要实现这一点&#xff0c;他们都需要在自己的网站上内嵌HTML5视频播放器。 在本文中&#xff0c;我们将来了解一下现在市面上…

分位数回归的实现方法

目录 分位数回归简介实现方法参考文献 分位数回归简介 简介参照可参照参考文献【1】。如下图&#xff0c;散点图代表我们所需分析数据&#xff0c;若用简单的参数方程拟合&#xff0c;即只利用期望值&#xff0c;会损失很多数据特征。因此分位数回归就可以乘风破浪了。 分位数…