颜林林的个人网站

Linlin Yan's Personal Website

粪坑说

2007-09-19 19:00

粪坑之说,由来已久,是因为技术的行当里,无处不粪坑。

粪坑的前身,在《人月神话》中被称作“焦油坑”,形容让人不仅无法抽身、而且轻易能让更多人陷入其中的软件工程项目。焦油的粘稠,让连大象在内的诸多猛兽都难逃劫难,更别说我们这些早已深受其苦的程序员了。

马丁·福勒在《重构》一书中,又详细分析了这种难缠的特点和来源——程序结构设计的不合理之处,并以“臭味”形容之。于是,我们将焦油坑重新取了名字,亲切地称之为“粪坑”,以表述自己在看着别人留下的程序代码时的感觉。

每个程序员都希望自己能写出完美的代码,如同作家希望写出流芳千古的传世之作。但其实,在坑里待得久了,看着坑里前人留下的堆积如山的粪球,会发现自己堆砌的代码也在慢慢趋同于粪坑本身。因为,总有一些需求变化,会让你怨恨自己没有先知先觉,先前还引以为傲的代码突然成为无法满足需求的羁绊。程序项目规模的膨胀,逐渐会溢出各种臭味,来自设计的,来自编码的,来自疲于奔命应付需求的……总之,一切都不可避免地在向粪坑靠近。

要在粪坑中生存不是件容易的事,更别说在其中畅游了。熏天的臭味,对于程序员,往往是最大的折磨,尤其从事这职业的往往又都是一些完美主义者,一定会因自己每天如同屎壳郎般的行为而倍感自卑。

推而广之到别的技术行业,其实也存在同样的问题,项目中存在各种因素,总能把人陷入其中不能自拔,于是都能成为粪坑。对于粪坑,没有什么好办法能解决。要么把别人推入其中,自己则不负责任地逃走;要么就只能努力给粪坑加上一个盖子,让臭味不至于总那么扑鼻;再要么,或许在粪坑里逐渐适应了,就能不觉其臭了。

评论(备份自LiveSpace):

  • 2007-09-22 - Jim: 我认为这个问题要从心里角度出发解决,第一、不要太完美主义,没有一件事情是完美的;对自己和别人不要那么苛刻,应该想到在你看别人代码很不爽的时候,不要忽略了至少人家的东西解决了 80%问题这个事实,你看到的知识没有做好的20%。第二、总是积极面对变化;当变化发生的时候,乐观地接受,分析清楚变化带来的问题,并且改进原来的东西、做法、思维模式;还需要保持对变化的敏感度,争取在变化出现之前或者刚出现的时候就进行相应的调整去适应变化。第三、认识到人的认知存在缺陷;不管是谁,只要能把事情做到当前他自己的认知最好的程度,就已经到位了,以后来看以前自己做的东西,多多少少总是有不满意的地方,但是forget about it,只要以前做的时候尽力就可以安心了。
    总结下来就是:认清现实、平衡取舍、尽力而为、持续改进。