冬天来的比线上的bug更早。
西伯利亚的冷空气像一把钝锯,一下一下锯着园区的木板墙,也锯着人骨头缝里那点残存的温度,窗外呼啸的风声像是为这群熬夜的人唱一首冰冷的安魂曲。程序员阿亮把那件薄得像纸片的格子衫裹得更紧些,手指却还是冻得不听使唤,连敲键盘都像在跟一块铁板较劲,每一下都带着僵硬的钝响。
工位上方的空调早就坏了,报修单提交了三次,系统状态永远停留在 “已受理”。窗外的风卷着雪粒,狠狠砸在玻璃上,发出密集的噼啪声,相比产品经理那一阵接一阵,让人头皮发麻催进度的消息提示音,这拍打声倒也显得和蔼可亲。
“阿亮,线上又挂了。” 测试发来一条消息,后面跟着一个裂开的表情,那裂缝越张越大,像要从屏幕里伸出来,把他整个人吸进去,连骨头一起吞掉。
阿亮叹了口气,端起桌上那杯早就凉透的咖啡喝了一口。苦,而且涩,像极了他这一年的绩效。他戴上耳机,打开日志,红色的报错像雪地里的血迹一样刺眼,密密麻麻的堆栈信息滚得比窗外的雪还快。这日志由代码铺就,黑与红的融合不代表救赎,而是一种集体赴死前的壮丽,阿亮注视其间,眼前是无数程序员的尸骸,破碎而木讷,看不见一丝生气,只有一种被吞噬的闷响。在那些黑色和红色的间隙,不再有代码成就万事基的激情,只剩下像冬天呼出的白气似的敷衍。
当冰冷的像一条蛇的电源线被胳膊的温度捂热的时候,阿亮总算找出了问题。这个 bug 藏得很深,像冬天的冰,表面看起来平静,下面却冻得坚硬,冷不丁就把人一脚拽进深渊。
他刚想修复,又一条消息弹了出来。
“阿亮,运营那边说活动要提前上线,今晚十二点必须发版。” 产品经理的头像在屏幕上闪个不停,像一只催命的鬼,又像一颗随时会爆炸的雷。
阿亮看着那条消息,突然觉得一阵寒意从后背窜上来,比窗外的冷空气还要刺骨。他想起自己已经连续加班一个月了,想起家里还在等他回去修的热水器,想起女朋友昨天发的那条 “我们是不是该谈谈” 的消息 —— 那条消息他到现在还没敢点开。
他深吸一口气,回了一句:“好。”
然后,他把那件薄得像纸片的格子衫又裹紧了一点,继续敲起了键盘。窗外的安魂曲还在歌唱,雪还在下,而线上的 bug,像冬天一样,一个接一个,永远没有尽头。
“程序中复杂的部分必须以某种简单的方式组织起来。。。这就是编程所要用到的艺术和才能 - 化繁为简。
‘差程序员’是不会化繁为简的。他们总以为编程语言“能跑通”的程序,就已经化解了复杂性,而没考虑降低其他程序员需要面对的复杂性。。。在这些程序员看来,他们写出来的东西是能用的,这就是他们的老板需要的,看来也应该是客户需要的。。。他们把结果交给其它程序员,其他程序员又会在这之上增添复杂性,完成自己的工作。
程序员对化解复杂性考虑得越少,程序就越难懂。。。所以,‘好程序员’应当竭尽全力,把程序写得让其他程序员容易理解。因为他写的东西都很好懂,所以要找出bug是相当容易的。 -- 来自《简约之美:软件设计之道》”
这里提到的化繁为简,我认为就是将复杂的系统以清晰的结构与高可读性的代码呈现出来的过程。作者认为不能仅仅为了完成需求来写代码,这是一种应付老板和客户的行为。他认为写代码的时候还要考虑到代码是否可以让人容易理解,当然也包括是否易修改,易扩展,易维护。
其实这本身就是认知高度和自我要求的问题:你是选择追求卓越,还是选择得过且过?我相信两种态度随着时间的推移,所造成影响的差别应该是非常巨大的;不仅是写代码,做任何事情都是。
‘差程序员’是不会化繁为简的。他们总以为编程语言“能跑通”的程序,就已经化解了复杂性,而没考虑降低其他程序员需要面对的复杂性。。。在这些程序员看来,他们写出来的东西是能用的,这就是他们的老板需要的,看来也应该是客户需要的。。。他们把结果交给其它程序员,其他程序员又会在这之上增添复杂性,完成自己的工作。
程序员对化解复杂性考虑得越少,程序就越难懂。。。所以,‘好程序员’应当竭尽全力,把程序写得让其他程序员容易理解。因为他写的东西都很好懂,所以要找出bug是相当容易的。 -- 来自《简约之美:软件设计之道》”
这里提到的化繁为简,我认为就是将复杂的系统以清晰的结构与高可读性的代码呈现出来的过程。作者认为不能仅仅为了完成需求来写代码,这是一种应付老板和客户的行为。他认为写代码的时候还要考虑到代码是否可以让人容易理解,当然也包括是否易修改,易扩展,易维护。
其实这本身就是认知高度和自我要求的问题:你是选择追求卓越,还是选择得过且过?我相信两种态度随着时间的推移,所造成影响的差别应该是非常巨大的;不仅是写代码,做任何事情都是。
展开
2
19