2023年35周:
在工作中,你是哪一种人?
最近客户遇到一个线上的性能问题,看了两天没解决,最后被我们同事一个小时给发现问题,并提供了一个两行代码的修复方案,缓解了问题,上线后得到了用户的认可。但是客户在回顾的时候,硬说是没有发现主要原因,只是修复了一个代码坏味道的问题,让人倍感无奈!
一般来说,后端的性能问题主要来自于数据库查询,原因主要有索引没有加上,或者查询语句写的不好而引起的 N+1 问题。而前端的问题就更简单了,不要阻塞主线程。这次我们面对的就是一个前端的性能问题,在遇到这个问题之后,大家的第一反应就是主线程被阻塞。在我们介入前的两天里,有客户开发将多处疑似代码从主线程里拿出来,放在后台线程,结果测试发现问题还在。我们介入后,很快找到了原因,一个耗时操作放在了循环里,而这个循环大概需要运行 4000 次。所以修复方法很简单,将这个耗时操作放在循环外,2 行代码搞定。测试不再出现卡顿,上线后得到了用户的认可。
说是缓解了问题,而不说我们最终修复了这个问题,因为这个耗时操作还在主线程。后面有人将这些代码也从主线程里提出来,放在了后台线程里。从理论上是永远避免了卡顿的问题,但是没人能说清楚到底提升了多少。客户在回顾时,弱化了我们的工作,将修复后台线程的工作着重表现出来,很让人无奈。那么问题来了,在工作中,你是那种做紧急的 hotfix 的人呢?还是那种从根本上解决问题的人?或者说,那种人应该得到很多的认可?
在上面的例子中,我们就扮演了 hotfix 的人,但是被客户弱化到一无是处。于是我想起了扁鹊三兄弟的故事:
据《史记》记载,魏文侯问扁鹊“你们兄弟三人谁的医术更高明?”扁鹊言道“大哥医术最高,二哥次之,自己最差。”魏文侯好奇道“何出此言?”扁鹊答“大哥治病,常常通过望闻问切,诊断隐患,善于在病害形成之前就能事先铲除病因。可一般人并不知道他的高明,是以大哥声名不显。二哥治病,往往治于病情起初之时,一般人就以为他只能看看小病,所以他的名气只及于乡里。而我是治于病情严重之时,用针刺、用猛药,救人于危重之时,所以大家都以为我医术最高明,名气因此传遍天下。”
扁鹊一定是看过孙子兵法的,那些善战者,都是些无智明,无勇功的。这些有着高超技艺的人,被默默无闻的埋没在历史的长河中。
哎,自古圣贤皆寂寞,比圣贤还寂寞的人,总共有多少呢?
如果你喜欢这篇文章,欢迎赞赏作者以示鼓励