作者 / 刘润
10月24日,程序员节。
为什么选10月24日作为程序员节?
因为 1024 = 2 的 10 次方。程序员使用“二(2)进制”编码,1024日期的选定也代表了二进制计数的基本单位之一。
每一位程序员,都好像是一个小小的1024,没日没夜地敲着代码。
尤其是今年2020年,程序员特别不容易。
大家突然发现,1024 + 996 = 2020。
而且更巧的是,404 + 404 + 404 + 404 + 404 = 2020,404在程序员的语言中代表网页未找到的错误代码。
2020等于5个404相加,是魔幻2020的节奏。
不过还好,2020年马上就要过去了,刚想舒口气,却又发现:
1024 + 997 = 2021
天啊,明年这是要升级成每周工作7天的节奏啊......
玩笑归玩笑,程序员其实是特别值得尊敬的一群人。
身处互联网时代的我们,每天网上冲浪,每一次点击、每一页浏览,都离不开程序员的建设。
如果说上帝可能是“真实世界”的建造者,程序员就一定是“数字世界”的建造者。
甚至有人说:“上帝是个程序员。”
而且,程序员身上还有一个更令人尊敬的品质 —— 一定要找到根本原因。
是否能找到“根本原因”,是探寻万物规律、解决现实问题的关键。
今天我通过两个小故事,和你聊一聊“根本原因”。
— 1 —
美国通用汽车“香草冰淇淋”的故事可能很多人读过:
有一天美国通用汽车公司的庞帝雅克(Pontiac)部门收到一封客户抱怨信,上面是这样写的:
这是我为了同一件事第二次写信给你,我不会怪你们为什么没有回信给我,因为我也觉得这样别人会认为我疯了,但这的确是一个事实。
我们家有一个传统的习惯,就是我们每天在吃完晚餐后,都会以冰淇淋来当我们的饭后甜点。
由于冰淇淋的口味很多,所以我们家每天在饭后才投票决定要吃哪一种口味,等大家决定后我就开车去买。
但自从最近我买了一部新的庞帝雅克后,在我去买冰淇淋的这段路程问题就发生了。
你知道吗?每当我买的冰淇淋是香草口味时,我从店里出来车子就发不动。但如果我买的是其他的口味,车子发动就顺得很。
我要让你知道,我对这件事情是非常认真的,尽管这个问题听起来很猪头。
为什么这部庞帝雅克当我买了香草冰淇淋它就秀逗,而我不管什么时候买其它口味的冰淇淋,它就一尾活龙?为什么?为什么?
---
事实上庞帝雅克的总经理对这封信还真的心存怀疑,但他还是派了一位工程师去查看究竟。
当工程师去找这位仁兄时,很惊讶的发现这封信是出自于一位事业成功、乐观、且受了高等教育人。
工程师安排与这位仁兄的见面时间刚好是在用完晚餐的时间,两人于是一个箭步跃上车,往冰淇淋店开去。
那个晚上投票结果是香草口味,当买好香草冰淇淋回到车上后,车子又秀逗了。
这位工程师之后又依约来了三个晚上。
第一晚,巧克力冰淇淋,车子没事。
第二晚,草莓冰淇淋,车子也没事。
第三晚,香草冰淇淋,车子“秀逗”。
这位思考有逻辑的工程师,到目前还是死不相信这位仁兄的车子对香草过敏。因此,他仍然不放弃继续安排相同的行程,希望能够将这个问题解决。
工程师开始记下从头到现在所发生的种种详细资料,如时间、车子使用油的种类、车子开出及开回的时间……
根据资料显示他有了一个结论,这位仁兄买香草冰淇淋所花的时间比其它口味的要少。
为什么呢?原因是出在这家冰淇淋店的内部设置的问题。
店家为了让顾客每次都能很快的取拿,将香草口味特别分开陈列在单独的冰柜,并将冰柜放置在店的前端。至于其它口味则放置在距离收银台较远的后端。
现在,工程师所要知道的疑问是,为什么这部车会因为从熄火到重新激活的时间较短时就会秀逗?
原因很清楚,绝对不是因为香草冰淇淋的关系,工程师很快地由心中浮现出,答案应该是“蒸气锁”。
因为当这位仁兄买其它口味时,由于时间较久,引擎有足够的时间散热,重新发动时就没有太大的问题。
但是买香草口味时,由于花的时间较短,引擎太热以至于还无法让“ 蒸气琐 ”有足够的散热时间。
— 2 —
而今天我要讲的,是另一个故事,是一个我刚刚加入微软,一位前辈讲给我听的,而后来每年我都要讲给新员工听的故事。
这天,工程师接到了一个客户的电话,说他的计算机系统每到夜里就会自动重新启动,夜夜如此,非常奇怪。
工程师帮助客户仔细检查了各种系统报告,发现的确重启过,但是原因不明。
排查了一段时间,但系统还是每天一到半夜就出问题,仿佛灵异事件一般。
客户很着急,这位工程师建议客户,找一个人夜里守在计算机旁边,看看系统出故障当时到底是怎么回事。客户想了想,也就答应了,也许别无他法。
于是,客户安排了一名 IT 人员带着报纸,拿着相机,当晚整夜地坐在计算机旁边,等候问题发生。如果有任何问题,这名值班人员就会用相机把屏幕照下来。
奇怪的事情发生了!夜夜重启的系统,当晚安然度过!
工程师、客户都在问这名值班人员做了什么,可是他却丈二和尚摸不着头脑地说:“我就是看了看报纸,什么也没做啊!”
也许系统自动好了?实在想不通,大家就让这名值班人员回去休息了。
万万没想到的是,第二天晚上,系统再次出了问题,症状与从前一模一样!
于是,只要客户安排人员在计算机旁边守候,夜夜平安;只要一夜无人,必有故障。
— 3 —
前辈讲到这里,用侦探般的口吻压低了声音问:“你们知道,这是怎么回事吗?”我们几个新员工张大了嘴说不知道。
他诡异地笑了笑,接着说:关键的确就在那个值班人员身上。
后来聪明的工程师仔细排查,分析到底那个值班人员有意、或无意做了什么,保护了系统。
终于发现,原来问题的根本原因是“空调”!!!
这个客户的机房原来平常是不开空调的。但是每当值班人员守夜的时候,因为机房太热,他就会打开空调看报纸,一直到第二天清晨。
如果没有开空调,机器的 CPU 过热就会出问题,这个问题自从入夏就反复发生;打开空调,系统就会安然无恙。
前辈用一句话对这个故事做了总结“:做技术的,不要搞封建迷信活动,凡事皆有原因,相信科学。
“不要搞封建迷信活动”,就成了我那段时间的座右铭。
最后的话
不论是通用汽车“香草冰淇淋”事件,还是微软“计算机重启”故事,工程师、程序员都在探寻事件的“根本原因”。
程序员搭建的是“数字世界”的运行规则,在这个世界中,从来不存在“差不多”、“还可以”、“就这样吧”......
每一行代码,都必须精准;每一次勘误,都必须直达根本原因。即使 “996”,也从未放松标准。
正是因为程序员如此品质,才有了我们每天在互联网世界畅游。