找bug的境界,我觉得会有三层,
初级,在出bug的第一反应是,这应该不是我的问题,带着焦躁的情绪去找,期待这个问题不出在现我写的程序而是别人的,耗费了一段时间后或者是没找到,发现问题真的是自己这,时间耗费了不少,效率很低。
中级,出现bug了,去收集错误信息,或者重现操作,来debug调试一步步断点定位,最终bug是能够找到,但遇到线上问题,信息不足的时候,效率一下子就降下去了。
高级,bug出现,日志没有堆栈信息,特别是线上环境,没办法第一时间看到出错位置,此时去了解了bug业务信息,定位了大概位置,然后去研读源码,无需debug和重现,就能发现问题所在
我们都是从初级成长过来的,大多数都停留在第二个阶段,如何提升自己的效率,让自己更多的时间去专注在研发上,我觉得这个是每个开发者都要提升的技能。首先,出现bug不要因为外在的压力而紧张和焦虑,戒急戒燥,保持专注和内心宁静是你能快速找到bug的大前提,我知道出现重大bug的时候,有时间的压力和上司的压力让你无法做到静心,但越是这个时候越需要去拚弃这些压力,让自己不收这些压力的干扰来深入到bug本身。
第二点是不要去抗拒bug,软件工程出现bug很正常,谁都会写出有bug的程序,出现了不要抗拒他,思想上不认同会让你从找问题的时候就走歪,一定要正视和面对自己,对自己默念,这个bug一定是出现在我写的那个地方,而不是抱着这个bug一定不是我搞出来的心理来找
第三点是平时的刻意训练,在出现bug的时候,了解到bug出现的业务信息之后,不要去通过重现或者debug方式来找,而是先思考出现的方式是什么,会有那些条件下出现,产生结果又那些不同,然后一步步缩小范围,带着自己的猜想的去查看源码,若是猜想不对,再回退或者通过debug去查看,想想自己是那些地方没有想到再遇到会怎么去思考。
通过这种反复对自己找问题能力的训练,我相信通过两个项目左右的刻意联系找bug的效率会越来越快,前提是一定要要求自己去刻意训练,前期会比较耽误时间,随着时间推移,这个时间会越来越快,就类似你的一个脑回路,逼格瞬间提升,让身边的同事刮目相看的。