Why Don't You Complain
程序员,你为什么不抱怨呢? 我就不明白了。
我周围有许多这样的程序员,他们勤勤垦垦地,低头苦干。做事情总是从头到尾,一笔一画,走着正道。天天做一些事情, 重复地做着一些事情,那些我认为没有必要重复地、让人去做的事情。比方说,在fix bug的过程中,他们会重复地做着下 面的事情:
第一步,依据shared buffer起始地址,page大小,以及page no来获得数据页的起始地址。
第二步,解析页结构。这些数据页有着固定的结构,比方说它有页头信息,依据页头信息可以得到页内数据的所有信息:总 共有多少数据记录;各个记录的生命周期信息;各个记录的长度;各个记录的起始位置; 各个记录包含的事务信息,等等。
第三步,寻找需要的数据。搜索上面得到的页数据,进行分解和梳理,便能够得到比较重要的小部分数据。
上面这三步中,重复度最大的是前两步,它们是没有“技术含量”的,也是最耗时间的。这些数据一般都是二进制的。即使使用 gdb此类工具,还是避免不了一些数学方面的计算,或者十六进制数据的转换,或者数据结构体的转换或者运算。只有最后一步, 才是真正需要人的大脑去推理的,是需要具有细胞质的、能够进行逻辑性思维的人的大脑去参与的。相对而言,前两步,是计算 机可以帮我们去做的。但是,我们伟大的程序员总是自己在重复地帮助计算机在做着前两步的活儿。
呃,热情的程序员!
呃,伟大的程序员!
呃,勤劳的程序员!
我就不明白:为什么你不让计算机帮你做这些事情呢?
计算机在重复做事情上有着天然的优势,它才是真正应该热情的、伟大的、勤劳的助手,它无怨无悔,任劳任怨。而人类在做重 复的事情上不在行的,因为人会产生厌倦感,会反感这种机械式地活动,会有不满的情绪产生,他的效率是会快速下降的。相反 地,计算机永不抱怨,除非它材质老化了。
程序员,你对这种事情怎么就不抱怨呢?停下来,想一想,是否可以让计算机替你做这些事情?是否可以把这种无用功的事情用 代码固化下来?是否存在另一种方法,让这种计算机才能读懂的二进制数据,转换一下,让人看得懂呢?
带着一个反叛的心去做事!
带着一个懒惰的心去做事!
带着一个抱怨的心去做事!
带着一个永不重复的心去做事!
Don't Repeat Yourself More Than One Time!
努力地去改变现状,而不是像陀螺一样原地旋转!