朱赟的技术管理课_03_02_Bug引发事故该不该追究责任
您好,我是朱茵。
今天我分享的主题是bug,引发事故,该不该追究责任?人分圣贤,孰能无过,技术人员也是人,因此在编程的过程当中难免会出现bug,那出了bug系统就会出问题,出了问题,系统就会宕机。
那么bug引发的一连串事故该不该追究责任,又如何去追责呢?今天我就跟您聊一聊bug和责任的问题。
记得有一次,一个国内的访问团来公司参观。
在交流的过程当中,有人问,在你们的工作中,工程师的bug或失误引发的问题会不会被追究责任?会不会扣工资,会不会被开除呢?当时我很诚实的,按照实际情况回答说,不会,这个人又继续问我,那出了事故没有任何惩罚,不会有问题吗?当时我围绕着员工的素质、自觉性、责任心进行了回答我来再次思考这个问题。
我越想越觉得有意思。
后在LBNB负责支付和交易业务,这意味着大部分的错误都等价于真金白银。
无论是从用户那儿少收钱,导致了公司的亏损,还是从用户那儿多收钱,引起法律和合约的纠纷。
只要跟钱沾了边儿,都不是小事情。
俗话说,常在河边走,哪有不湿鞋,因为各种代码问题引起的麻烦也是屡见不鲜。
那么在bug引发问题的情况下,怎样处理才能最大程度的保持团队的主动性、责任感和执行力呢?我们先来假想两种极端的情况,如果每个错误都受到惩罚会怎样?如果所有的错误都没有任何追究和跟进,又会怎样呢?假如每个错误都会受到惩罚,不难想象,以下情况一定是难以避免的。
第一,大家都怕闯祸,所以风险高的事儿没人做。
如者总是那几个靠谱的老司机,做,没有机会处理这种复杂情况的人,永远得不到锻炼,也无法积累这样的经验。
第二,如果有人搞砸了什么事情,会因为担心承担后果而推卸责任,从而尽可能的掩盖错误的坏影响,不让人知道。
第三呢,如果别人犯了错,会觉得不关自己的事儿。
第四,指出别人的错误就会导致别人被追究责任。
因此,看到有问题也会犹豫,要不要指出。
反之,如果无论发生什么错误,都不需要承担后果或进行反省,没有任何担当,那可能又会出现以下情况。
第一,同样的错误可能会一再发生。
第二,小错没有被及时制止,或者没有引起足够重视,最终导致酿成大错。
第三,做事仔细的人会觉得不公平。
第己为了安全起见,每次代码改动都写很多单元测试,每个项目都反复测试和预防问题。
但是别人的草草而就导致错误百出,却因为显得进度更快,反而被认定为更有效率。
那么对于工作中的错误,尤其是bug导致的错误,我们应该采取什么态度和措施呢?第一,追究责任,但不是惩罚,知其然并知其所以然。
搞清楚在什么场景下,什么样的bug引发了什么样的错误,相关人员应该尽最大的可能去做好善后工作,并思考如何避免下次犯同样的错误。
第二,对事儿不对人。
在这个追究的过程中,重点在于怎么改善流程,改进制度,来避免同样的错误,而不是指责员工不应该怎么样。
如果相关人员已经那么做了答什么,这个错误仍然没有及时被发现和制止呢?第三,反复问,为什么从根本上发现问题错误为什么会发生?有些bug可能只是显露出来冰山一角。
我们来举一个假设的例子。
第为小王的代码改动,影响了小李的代码,让小李之前实现的功能不对了。
在这种情况下,我们首先要问,第一,为什么小李代码功能不对,没有立马被发现呢?在因为小李当时的测试用例没有覆盖这种情况。
第二,为什么小李的测试力不完整呢?答,因为这个地方的测试需要mark一个服务的返回值。
但是这个mark的值并不是真的服务器端的返回值。
所以测也测不出来。
第三,为什么要去mark?答,因为我们的测试这系统框架不够完善,这样反复问、反复想,就能找出根本上值得改进的问题了。
而这样的结果和受益比惩罚犯错的人要好得多。
第四呢就是员工关系的建立也非常的关键。
我们需要培养的是大家相互信任,互帮互助,为了共同的目标,努力的氛围,而不是一种不安全感。
这种不安全感可能是自己不够自信,害怕犯错,也可能是对他人的漠不关心,或者是对其代码质量有怀疑。
只有大家都相信,找出问题的根本目的是解决问题,避免问题再发生,才能建立一个不断反思、不断学习、不断进步的良性循环。
最后给大家留个思考题,这也是现实生活当中我多次听说的事故。
如果你是一家公司的技术主管,那团队里边一位工程师因为误操作删除了线上的用户数据。
这时候你又发现上个月数据的自动备份,因为某些故障停止了,现在你该怎么办呢?。