请拿出证据!

今天在写代码的时候,测试给我提了一个 bug 。主要是一个草稿的功能,需要根据不同的用户保存不同的草稿。

这原本是一个很简单的功能,因为项目中已经有以为大佬 A 在很早之前就实现了 和用户相关的缓存操作,我之前也是用的他写好的组件实现具体的业务功能的。

但是测试跟我说这个问题的时候,我也是挺诧异的,表示这个应该不会吧,这个功能已经存在很久了的(根据代码提交时间判断),而且是比较基础的组件,很多都是依赖这个的,要出问题,那很多地方都可能出现问题的。但是测试掏出他的测试机,在我面前重现了这个问题。我还是有些不相信,我拿过测试机试了一下,确实是这样。

“好吧,我知道了,我等一下看看”,我说到,心里也大概确定这个是有问题的。

我首先怀疑的还是我代码的问题,因为那个组件确实是比较基础的组件,如果真的出问题,测试那边很可能都炸锅了。我查找了一下其他地方对这个组件的使用方法,对比了一下,确定我的写法没问题。

然后大概看了一下那个组件的代码,没看到存储缓存和用户之间关联的操作,带着这个疑问,我找了另一个同事 B 。我给他看了我的代码,让他帮我排查一下,是不是我使用姿势不对?

B同事 也大概看了一下,说,“使用没什么问题呀”。

我就说,我没看到缓存跟用户管理的操作,这块是在哪里做的?会不会有问题?

B同事 在我的指引下,也跑偏了。。。。也开始怀疑是不是那个组件有问题。

于是,我和 B同事 去找了 A大佬,说我们用这个组件遇到了一问题,并没有根据用户存储缓存。

A大佬听了,表情严肃,“你别怀疑这个好不好,这个都用好久了”。我顿时就感受到大佬的气势,开始怀疑是我代码使用的问题了。。。。

A大佬看了一下我调用的代码,说调用没问题。反问,“你 debug 过了吗?”。我小声说道:“测试给我提了这个问题....”,我还没说完,就被打断了,“哦?测试说有问题就有问题呀?你自己先把 数据库 导出来,拿到数据再来找我。”

我瞬间感觉无比羞愧,作为一个程序员,居然没有自己把数据库导出来看,就找别人排查、解决问题。我连真正的问题是哪个都还没搞清楚!

思考

今天这个事情,也让我反思。我做事总是有些马虎,也因为这个毛病出了不少问题。有一次也是找同事反映问题,结果还是因为我的马虎造成的,不过我及时发现和承认了这个问题,没有造成什么实际的问题。

我在这里给自己定下一条规定。

如果觉得别人的代码有问题,请拿出证据!

有时候很多一些问题是自己马虎造成的,在找证据的过程中,可能自己就能发现了,也就不至于后面再尴尬的承认是自己的问题,也不会因为自己的这个失误导致造成实际的生产问题。找到证据的时候,还要再检查两边,如果还是发现有问题,再找相关的人反映问题。

引申

如果觉得别人有问题,或者猜忌别人,这个时候就要想想是不是自己的问题,然后去找证据证明。而不是认定这个就是别人的问题,一旦有了这种想法,思路就会被带跑偏,也就很难往“是不是自己的问题”这条路上靠了。