fsword's blog

A blogging framework for hackers.

程序员的洁癖

| Comments

程序员这个群体里有一些人有代码洁癖,他们遇到一个烂东西往往不能忍受,一般认为,这对工作的推进是很不利的,因为有时候过于追求 do things right 会导致不能及时的 do right things 。

但是我却有些不同的想法,我们常常看到的情形其实不是洁癖太多而是太少,甚至对代码没有什么责任感,一些“很有执行力”的同事,其实是“大干快上”的路子,这样会让工作变成历史包袱。

当然,有洁癖的人确实会显得“执行力”不够,但是问题可能并不出在“因为洁癖要追求完美”,而是——能力确实就不够。

这么说有些残忍,不过以我自己的经历看,可能这才是真实情况。

我也是个有洁癖的人,干活一直不是很快。刚工作的时候别人往往建议”别想太完美,做了再说“。现在工作很多年了,有些方面我开始熟悉甚至精通,由于经验积累,我在这些方面做事会比较快,这时遇到之前的朋友,他们会觉得我开始务实,不那么有洁癖了。

然而我的洁癖其实一直没变,变化的是工作能力。即使现在,如果遇到我不熟悉的领域,工作还是不够快。当然,这时其他人会觉得“你又太注意完美了”。

追求完美当然很好,这些人只是觉得过于注意完美会影响效率。逻辑确实没错,不过我们怎么判断这个度呢?有些我们一开始没有想好的东西会影响后续的很多工作,而有些东西计较太多却并没什么区别。是“吹毛求疵”还是“远见卓识”?如何判断?

说实话,我也没什么好办法,可能有点帮助的就是过往的经验了。编程是一个创造性的工作(如果只是重复劳动,那么复制即可,也就不需要coding了),不过通过抽象、类比这样的思维活动,我们能找到一些和过去的经验类似的模式,回想过去的经历,我们会认识到某些事情看来不重要,而某些则对后续工作影响深远,在这些经验的支持下,我们会选择把力气用在什么地方。

从这个角度看,你会发现一个现象,其实没有真正意义上“求全责备”的人,即使那些公认有洁癖的人,也不会在所有地方都吹毛求疵,他们只是在“什么东西更重要”这个问题上作出了与你不同的回答而已。

每个人的经历都不尽相同,因此基于经验产生的判断也不会完全一样,而团队需要交流的,正是这种不同的经验。由于每个人的思维都可能存在盲点和误区,大家沟通各自的旧有经验,发现值得重视的地方,就可以不断改进工作;另一方面,由于每个人都会有一些思维定势,因此交流和沟通都会带来冲突,解决冲突需要冷静细致的工作,甚至还要搭上时间成本。因此,民主的氛围有时会比较有助于团队成功,但有时又会带来很多的代价。在这方面没有标准答案,只能尽量的寻求平衡。

甚至经历也不是万能的,有过几年工作经历以后,很多人都会遇到被自己的旧知识“坑一下”的情况,似乎以前的教训现在也可以忽视,而以前的成功方法放到现在反倒是一剂毒药。这是“创造性”工作的本质决定的,抽象也好类比也罢,它一定需要丢弃一些不同,我们常说“旧观念需要更新,情况变了”,这里的情况就是那些被抛弃掉的、本以为不重要的东西。

上述话题要说完整可能需要很多篇幅,这里只想说明的软件开发是一件很难的事情。而正是因为软件开发如此之难,因此需要每个人都有一些“洁癖”,工作时需要更多的思考,而不只是完成任务。如果你因此而进展缓慢,无论是不是因为“洁癖”太多,努力提高能力和经验都是解决之道,慢慢的,你的工作会更熟练,效率得以提升,同时也更有经验去判断什么才是真正重要的问题。

Comments