有想像力的程序员才有未来
吴旻
泰岩网络工作室
同事向我诉说,网络某节点上有大量数据堆积,导致下游节点数据显示迟缓。
我赶紧找到具体开发人员,询问过程及原因。幸运的是,他还真了解这件事,而且知道不是一天半天了。他的解释是,那个节点服务器的网卡是百兆的,在数据量大的时候,会有数据发送不及时的情况。
我实证的了一下,他说的情况属实。一般的说,我们默认服务器都是千兆以太网卡的。前些日子我们新部署了一个节点,我们可能没意识到分给了我们一台百兆以太网的服务器。(百兆以太网卡,那得是几年前的服务器了呀?)
故事的精彩之处在于对这件事情的处理过程。我问那个兄弟,这个事情应该怎么办?显然,他还是有所准备的,他说:运维的同事说了,要么申请一台新的服务器,要么申请把百兆以太网卡更新为千兆以太网卡,但这都得走流程,需要时间。
我问他,那你的意见呢?从他知道这件事情好几天而没有任何行动来看,我觉得他的真实想法是保持现状,以免他麻烦。果然他的回答不出所料,他说:那就走流程呗。
他的回答既中规中矩,又官僚十足。走流程解决不了眼下的问题,还要引起一大堆事情。我笑着问,还有没有别的办法?
他沉默不语,表示他无可奈何,也表示他尽力了。
女儿3岁的时候,有一天全家在吃晚饭,她一个人在一边玩。我见卫生间的灯还开着,就对她说:姑娘,帮爸爸把卫生间的灯关了!说实话,那时我是成心难为她,她至少还差20厘米的距离才能够得到开关。
女儿乐于接受挑战,痛快的“哎”了一声表示答应,噔噔噔跑到开关下,伸手使劲够,却是够不着。结果老婆马上怒了,涨着脸向我吼道:她怎么够得着!老婆的真实意思是,姑娘摔倒了怎么办?
其实我也不知道怎么办,我的本意就是要给姑娘出个难题,等她把问题解决了,我的饭也吃完了。其实不解决也没关系,我本来也没指望她解决,我的更真实的目的是吃个安稳饭。姑娘有点事做,就不会上来抢东抢西,弄得大家每天吃饭跟打仗似的,还要防着姑娘不定什么时候上来捣乱。
既然老婆发怒了,我得平息一下,要不然真的就吃不好饭了!我很随口地说了一句,她会有办法的。
这一句话提醒了姑娘,马上噔噔噔跑进卧室,不知道翻了什么东西,又噔噔噔跑出来,手里抱着她的小凳子。于是全家人就目瞪口呆地看着她稳稳地站在小凳子上,“啪”的一声,把灯关掉了。很显然,我们谁也没有教过她这么做,我们谁也没想到她能这么做。
老婆冲过去抱起姑娘,使劲地亲,一边亲还一边说:宝儿,你太可爱了!你太可爱了!
缺乏想像力的程序员,喜欢用现成的方案去套实际中遇到的每一个困难留,如果不能解决,那他就无能为力了。其实程序员遇到的困难,许多都不是能套用现成方案解决的。用个比喻来说,水和火是不相容的,如果我提出个又有水又有火的需求来,崩溃的兄弟极可能是一片一片的:这怎么可能,你要么让我做水,要么让我做火,不可能既做火又做水!
我理解这些可爱的兄弟们,喜欢写程序,就是因为程序是确定的。出这么个矛盾的需求,实现是难为人。但程序员的核心价值,就是要用自己的想像力去创造性地解决实际当中的困难,哪怕许多时候仅仅是换个角度去想一想。
我明白,我的这个兄弟对应该怎么进行这种思维转换显然不在行。因为一个部署是多台服务器的,我提醒说,那其它服务器都运行正常吗?
他回答说,都正常,别的服务器都是千兆以太网卡的。
我继续提醒,那A服务器没有那么大的网络流量,可不可以和这台出问题的机器功能对调一下?仅仅相当于是把程序换台机器部署?
他回答说,可以。
那好,你去办吧。我说。