系统工程程序员修 Bug
若干年前,互联网上曾经有一张非常热门的 GIF 图片,我收藏至今。这就是下面这张白猫修水管的图片,让人捧腹大笑。
这张 GIF 图片其实出自于一个叫《我的邻居全是猫》的儿童动画,而这部动画居然是反复“去世”和“复活”的“暴走漫画”出品的。
每当看到这张 GIF 图片的时候,身为系统工程师的我就会感同身受,因为这个和我在过去好多年修系统 Bug 的经历实在是太像了。尝试去解决一个系统问题,碰了一个东西,一开始看一些肤浅的局部迹象,以为解决了问题,结果却引发了系统中其他的甚至更大的问题。然后接着想办法去解决这个新的问题,结果又引发了更多的问题。就像这只白猫一样,修了一个水管又引发了另一个水管漏水,修了那个水管又引发了另一个水管漏水,最后水漫金山,完全不知道是什么地方出了问题,无从下手。
产生这样的情况的根本原因,我认为就是系统各个成分之间的接口定义不明确,且系统的各个成分没有有效的质量管控。再加上系统各个成分之间的依赖关系错综复杂,抱着修复问题的初心去改动一个小东西,看上去解决了局部问题,但最终可能导致系统全面性的崩溃。
这也就是为什么,我们经常能在网上看到一些梗,类似的说“千万不要动这个 Bug,因为系统就是靠 Bug 运行的”,这些绝对不是空穴来风。