自己做了n年的程序员,也和各种形形色色的程序员合作了n年,回顾总结,发现不管程序员性格是外向的还是内向的,是多话的还是沉默寡言的,他们或多或少都有如下的怪癖,区别只在于怪癖的严重程度。
1. 别人写的代码总是比自己差,我情愿重写也不要用别人
这个现象不用多阐述,如果你是程序员,应该深有感悟。如果你还觉得感悟不深刻,你就看看你公司代码里面是不是有类似于多个版本的诸如thread pool啊,object pool啊。
【总结】:如果有现成的允许使用的经过测试的代码或程序库,并且有人维护或维护成本可以接受,程序员应该尽量使用现有代码和库来节省时间和开发测试成本。
2. 喜欢把代码写的越简短越好,语法越偏僻越好,别人越难看懂越好
最高层次就是:一行代码,n个功能,别人都不懂,只有作者他自己懂。随后,这个便成了炫耀的资本,到处说:“来,你过来看,知道这行代码是干什么的吗?恩,就知道你不知道,哈哈。”我每次都是这样诅咒这些程序员的:“下次希望你去维护别人写的这种代码”。
【总结】:晦涩的代码,维护成本会非常高。有时候,我情愿牺牲一些性能,也要写易懂的代码。所以,好的代码不但要实现功能,更要好维护。我对好维护的定义标准就是:A写的代码让B能很轻易的理解和修改。
3. 以为越接近机器码的语言,就是高级的有技术含量的编程语言
在他们眼里,直接写01010110才是最高技术,实在记不住,才用汇编。汇编还记不住,那才就用c/cpp。java/C#一点技术含量也没有。
我想说,你们这个想法让我这个写html+javascript的情何以堪啊,我说,你们怎么不用刀去刻硬盘啊,那个最直接啊。实在不行,你用汇编写个网页我瞅瞅啊,那个我才佩服你呢。
【总结】语言本身没有好坏之分,只是工具而已。好的程序员就是需要能在各种不同的情况下选择适合的语言。
4. 程序结构大于一切,客户需求可以放在一边
我碰到有些程序员,真是极其注重程序的结构设计,当然这个没有错,我也相当认可,但是你知道的,客户那需求可是一直要改啊改的,而且有一些是出乎当初我们预料的改动,但客户才不管呢,反正按时按需完成就是了。但是,碰到有些程序员,好说歹说,他死活不肯改,说改了会影响程序结构啊,设计就很难看之类的。说实话,我也很认同,确实对结构有影响,但是我们得搞清楚谁是衣食父母啊,是客户啊,不是结构!所以,我很想对这类程序员说:有本事你看着程序结构就饱了,别吃饭啊。
【总结】:正像我上一篇blog所说的,IT只是个工具。如果你造出来一个工具,即使再好看,再完美,如果达不到使用要求,那就什么也不是。
5. 对程序性能有时候很神经质
我记得有一次,我们需要写一个桌面应用程序,有个程序员和我讨论了很长时间到底应该用系统lock还是自己写一个基于计数器的lock(这里我不得不说,那些程序员都是很好的程序员,理论知识很丰富深刻,以上海西南某高校居多)。我承认,基于计数器的lock确实比较高效,因为不用使程序陷入内核态。但是,对于一个本身就是慢速的用户桌面应用,有必要自己实现一个高效lock吗?自己实现,增加了开发测试成本,而且还增加了很多bug几率。如果把这些时间花在改进用户UI上,那不是远比为了快那么几十毫秒来的更有价值吗?
【总结】:我们的时间和精力是有限的,所以有些事情,即使是对的,但是我们也不去做。因为如果我们把有限的时间和精力放在其他方面,我们可以收获更多。这个就是所谓的性价比吧。
程序员一直给人印象是:性格怪异,智商高,粘着椅子,敲着电脑。我要说的是,这个都是误解。其实现实中的程序员大多数是很开朗的,和其他人没什么两样。但程序员有时候工作是非常辛苦的,可以为了修一个bug而通宵达旦,对生活和健康影响都很大。所以,我祝每个程序员都幸福健康。。。
最后,还是以一副图片结尾,我觉得这个还是很形象的从某一个方面表达了程序员的生活: