美文网首页
对一次事故的反思

对一次事故的反思

作者: 郑经铧Monkey | 来源:发表于2018-06-10 23:18 被阅读174次

    前段时间,我负责的小组在攻坚项目时,组内成员由于考虑不周全,导致代码上线后出现低级错误,对线上所有的用户都造成了数据混乱影响。影响范围极广(全用户),还好后来通过各种方式在 1 小时内将数据还原、错误修正。

    理论上大家第一反应会是去追究第一责任人,做个组内处分,加强代码审核即可完事。但是我想起刘润老师介绍过:企业发生的所有的问题都是管理问题。因此我针对此事故做了深入的思考与分析。

    是人有问题?还是流程有问题?

    首先,不可否认事故的第一制造者是员工。

    那么是员工的工作态度不对,还是专业能力不行呢?

    负责实施此项目的工程师是一名有多年经验的技术人员,理论上专业能力和态度应该不差。虽然说造成此次事故是有失职之实,但因此定义此工程师能力不达标,要换更好的工程师,或者再安排其他人进组,那成本未免也太高了点。

    那是我们的流程有问题吗?

    貌似是。因为只要是人,只要存在人工操作,就不可避免出现人为错误。因为所有人不可能保证自己每时每刻的精力都是充分的。

    这次事故发生的原因就是在修改代码时,新增的功能漏考虑之前的逻辑,导致用户操作污染了数据。

    而在我们的开发流程里,为了追求快速开发,一直缺少「自动化测试」这一环节。

    也就是说:

    员工的失职虽然是直接原因,但是项目的研发流程和制度上一直存在漏洞,项目在执行的过程中一直存在「雷区」,只是看什么时候踩到罢了。

    怎么解决?

    既然能定位到原因,问题就好解决了。当前我做的第一决策是:

    1. 所有成员必须在 2 天内补完自己负责的核心业务逻辑测试;
    2. 为了减少人员成本,我们将代码从 coding 迁移到 git 上,这样做是为了能使用 travis-ci 进行自动化测试;
    3. 加强监控机制(《一个简单的天眼计划》),保证所有用户请求都能第一时间捕获,方便定位问题;
    4. 加强项目的 code review,避免出现业务逻辑错误;
    5. 培训项目组以及公司内部其他技术人员写测试的方案,将此方案推广到其他项目组中,避免类似事情发生;

    现在的状况

    每次提交代码后,自动测试的结果会汇报到公司内部钉钉上

    在我们集成了自动化测试后,不仅系统更稳定了,而且还查出了几次开发中的隐患。当前整个项目组运转情况很好,用兄弟们的话说是:现在晚上都能睡得着觉了。


    众生畏果,菩萨畏因。身为一个合格的负责人,遇到问题要更加深入的追本溯源,从源头、从制度上去避免问题的发生。

    相关文章

      网友评论

          本文标题:对一次事故的反思

          本文链接:https://www.haomeiwen.com/subject/qwpqeftx.html