令人怀疑人生的小差错

花火田丁 2018-02-24 15:13:37 +0000

题图来自于NextDay @Barcelona 西班牙


最近有几次找系统问题查到差点怀疑人生。

日志分析、断点调试、代码走读,该用的招数都用上了,愣是没发现问题在哪。


个中辛酸血泪史就在此略过了。


其中有两次分别查了整整一天,一个是因为SQL查询语句中应该写AND的地方用了OR,真是最没有技术含量的失误。

还有一次,也就是今天,被测试环境的Oracle给坑了,一顿调试+改代码,改到怀疑人生之后,问题依旧存在,去接了个广告电话回来,鬼使神差顺手重启了下Oracle服务,居然一切正常了。


别看这寥寥几句带过,过程真的分分钟想一头撞死。


在这里说细节不合适,太技术太枯燥,按照以往的套路,一定是要透过现象看本质,通过日常中碰到的问题发掘出人生大道理上的嘛,而且大道理也必须具备「相对」这一特质。


第一个问题其实挺容易察觉,毕竟是代码上的问题,看得仔细一点就能发现,但就这么从我眼皮底下溜过去了,特别是排查的时候我还盯着那段罪魁祸首看了好几秒钟。


现在回头神来去想当时的心态,那句SQL太短了,就一行,以至于我在看的时候一扫而过,同时有个声音一直跳出来说,这么简单清晰的逻辑不会有错的,怎么可能会有错?!恰恰就是最简单的地方出错了,而这种错却又是最有杀伤力的,犯错的会哭笑不得,怀疑自己的人生。排错的人则简直不敢相信自己的眼睛,更加怀疑人生。


我们常说「不要犯低级错误」,但纵观全局,虽然没有统计数据支撑,但我相信出现低级错误的概率可能远高于高级错误


高级错误毕竟有一定的门槛,更多的会是逻辑上的错误或者什么结构上的漏洞,犯错的人可能并不是无意识而为之,那么总会有章可循。排错的人,也会顺着这样的思路去查找。


而,低级错误,很多时候都是无心而为之,可能就是一时开小差,打错几个字母,就像那个把AND写成OR的(嗯,趁机澄清不是我),自己都没有意识到。


明明准备放酱油,结果放成了老陈醋。反应快的,回过神来,哎呀一声,怎么会搞错的?!反应慢的,当出锅后尝到一种难以描述的味道之后,哎哟我去!


无意识的行为很难追溯,特别是在自己与他人都觉得这是个可能性极低的行为时,更是很难理解。待到一切水落石出,去问那个当事人,完全就是断片的状态,当时怎么就这么做了呢,说是鬼使神差,一点不为过。


第一个问题告诉我们,排查问题真的不能放过一丝细节,越简单的越不能放过。


再说说第二个问题,做过IT的人都知道,特别是基础架构的童鞋,说重启能解决90%的问题,一点儿都不夸张。


栽在第二个问题上的原因是没有首先保证运行环境有一个健康的状态,环境有问题,那么再怎么去折腾代码都于事无补。


如果从简单着手去排查问题是基础,那么环境就是基础的基础。锅忽冷忽热的不稳定,还怎么继续炒菜呢。


有时候很羡慕小朋友们的逻辑,简单粗暴,单刀直入。成年人们脑袋里太多复杂的弯弯绕绕,把简单的事情复杂化是游刃有余,而把复杂的事情剥离出来一步步处理,有时候却却步不前,无从下手。


几年前意识到这点之后,在分析任何问题的时候,都时刻提醒自己,要从最简单的步骤做起,老老实实从地基开始,才有可能慢慢搭起高楼大厦,一开始就站在高处,只会离事实越来越遥远。现在看来,还需继续努力啊。


这里一定会有一个「但是」


是的,分析问题的时候不能放过最简单的细节,如果有的问题确实是个复杂的技术难题,那就需要老老实实去啃掉它,而不要想着大事化小,小事化了,选择一个看似简单的方式去缝缝补补,那迟早有一天它还会卷土重来。


有句话说得挺好「战略上藐视敌人,战术上重视敌人」,对待问题也是一样。

撒欢吧
谈理想
聊人生
讲故事
相对论
花火田丁
微信号:huahuoding
花火田丁
不折腾不人生