為什么程序員都有點(diǎn)怪?
自己做了n年的程序員,也和各種形形色色的程序員合作了n年,回顧總結(jié),發(fā)現(xiàn)不管程序員性格是外向的還是內(nèi)向的,是多話的還是沉默寡言的,他們或多或少都有如下的怪癖,區(qū)別只在于怪癖的嚴(yán)重程度。
1. 別人寫的代碼總是比自己差,我情愿重寫也不要用別人
這個(gè)現(xiàn)象不用多闡述,如果你是程序員,應(yīng)該深有感悟。如果你還覺(jué)得感悟不深刻,你就看看你公司代碼里面是不是有類似于多個(gè)版本的諸如thread pool啊,object pool啊。
【總結(jié)】:如果有現(xiàn)成的允許使用的經(jīng)過(guò)測(cè)試的代碼或程序庫(kù),并且有人維護(hù)或維護(hù)成本可以接受,程序員應(yīng)該盡量使用現(xiàn)有代碼和庫(kù)來(lái)節(jié)省時(shí)間和開發(fā)測(cè)試成本。
2. 喜歡把代碼寫的越簡(jiǎn)短越好,語(yǔ)法越偏僻越好,別人越難看懂越好
最高層次就是:一行代碼,n個(gè)功能,別人都不懂,只有作者他自己懂。隨后,這個(gè)便成了炫耀的資本,到處說(shuō):“來(lái),你過(guò)來(lái)看,知道這行代碼是干什么的嗎?恩,就知道你不知道,哈哈。”我每次都是這樣詛咒這些程序員的:“下次希望你去維護(hù)別人寫的這種代碼”。
【總結(jié)】:晦澀的代碼,維護(hù)成本會(huì)非常高。有時(shí)候,我情愿犧牲一些性能,也要寫易懂的代碼。所以,好的代碼不但要實(shí)現(xiàn)功能,更要好維護(hù)。我對(duì)好維護(hù)的定義標(biāo)準(zhǔn)就是:A寫的代碼讓B能很輕易的理解和修改。
3. 以為越接近機(jī)器碼的語(yǔ)言,就是高級(jí)的有技術(shù)含量的編程語(yǔ)言
在他們眼里,直接寫01010110才是最高技術(shù),實(shí)在記不住,才用匯編。匯編還記不住,那才就用c/cpp。java/C#一點(diǎn)技術(shù)含量也沒(méi)有。
我想說(shuō),你們這個(gè)想法讓我這個(gè)寫html+javascript的情何以堪啊,我說(shuō),你們?cè)趺床挥玫度タ逃脖P啊,那個(gè)最直接啊。實(shí)在不行,你用匯編寫個(gè)網(wǎng)頁(yè)我瞅瞅啊,那個(gè)我才佩服你呢。
【總結(jié)】語(yǔ)言本身沒(méi)有好壞之分,只是工具而已。好的程序員就是需要能在各種不同的情況下選擇適合的語(yǔ)言。
4. 程序結(jié)構(gòu)大于一切,客戶需求可以放在一邊
我碰到有些程序員,真是極其注重程序的結(jié)構(gòu)設(shè)計(jì),當(dāng)然這個(gè)沒(méi)有錯(cuò),我也相當(dāng)認(rèn)可,但是你知道的,客戶那需求可是一直要改啊改的,而且有一些是出乎當(dāng)初我們預(yù)料的改動(dòng),但客戶才不管呢,反正按時(shí)按需完成就是了。但是,碰到有些程序員,好說(shuō)歹說(shuō),他死活不肯改,說(shuō)改了會(huì)影響程序結(jié)構(gòu)啊,設(shè)計(jì)就很難看之類的。說(shuō)實(shí)話,我也很認(rèn)同,確實(shí)對(duì)結(jié)構(gòu)有影響,但是我們得搞清楚誰(shuí)是衣食父母啊,是客戶啊,不是結(jié)構(gòu)!所以,我很想對(duì)這類程序員說(shuō):有本事你看著程序結(jié)構(gòu)就飽了,別吃飯啊。
【總結(jié)】:正像我上一篇blog所說(shuō)的,IT只是個(gè)工具。如果你造出來(lái)一個(gè)工具,即使再好看,再完美,如果達(dá)不到使用要求,那就什么也不是。
5. 對(duì)程序性能有時(shí)候很神經(jīng)質(zhì)
我記得有一次,我們需要寫一個(gè)桌面應(yīng)用程序,有個(gè)程序員和我討論了很長(zhǎng)時(shí)間到底應(yīng)該用系統(tǒng)lock還是自己寫一個(gè)基于計(jì)數(shù)器的lock(這里我不得不說(shuō),那些程序員都是很好的程序員,理論知識(shí)很豐富深刻,以上海西南某高校居多)。我承認(rèn),基于計(jì)數(shù)器的lock確實(shí)比較高效,因?yàn)椴挥檬钩绦蛳萑雰?nèi)核態(tài)。但是,對(duì)于一個(gè)本身就是慢速的用戶桌面應(yīng)用,有必要自己實(shí)現(xiàn)一個(gè)高效lock嗎?自己實(shí)現(xiàn),增加了開發(fā)測(cè)試成本,而且還增加了很多bug幾率。如果把這些時(shí)間花在改進(jìn)用戶UI上,那不是遠(yuǎn)比為了快那么幾十毫秒來(lái)的更有價(jià)值嗎?
【總結(jié)】:我們的時(shí)間和精力是有限的,所以有些事情,即使是對(duì)的,但是我們也不去做。因?yàn)槿绻覀儼延邢薜臅r(shí)間和精力放在其他方面,我們可以收獲更多。這個(gè)就是所謂的性價(jià)比吧。
程序員一直給人印象是:性格怪異,智商高,粘著椅子,敲著電腦。我要說(shuō)的是,這個(gè)都是誤解。其實(shí)現(xiàn)實(shí)中的程序員大多數(shù)是很開朗的,和其他人沒(méi)什么兩樣。但程序員有時(shí)候工作是非常辛苦的,可以為了修一個(gè)bug而通宵達(dá)旦,對(duì)生活和健康影響都很大。所以,我祝每個(gè)程序員都幸福健康。。。
最后,還是以一副圖片結(jié)尾,我覺(jué)得這個(gè)還是很形象的從某一個(gè)方面表達(dá)了程序員的生活: