David Veksler曾發(fā)表過一篇博文《Some lesser-known truths about programming》,列出了一些鮮為人知的編程事實,這些事實是什么呢?酷殼個人網(wǎng)站樓主陳皓對此文進(jìn)行了翻譯,全文如下:
我的程序員經(jīng)歷讓我明白了一些關(guān)于軟件開發(fā)的事情。下面是一些在編程中可能會讓人感到詫異的事情:
1. 一個程序員用了大約只用了10%-20%的時間來編碼,而且大多數(shù)程序員,無論他的水平如何,其平均每天只有10-12行的代碼最終會進(jìn)入最終的軟件產(chǎn)品中。這是因為,優(yōu)秀的程序員會花費90%的時間來思考、調(diào)查、研究最佳的設(shè)計。而糟糕的程序員則會花費90%的時間來調(diào)試代碼,并隨意地改動代碼并嘗試讓代碼工作起來。
“A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer.” –Bill Gates
“一個優(yōu)秀的車工其工資是一個普通車工的好幾倍,但是一個優(yōu)秀程序員寫出來的代碼比一個普通程序員要值錢一萬倍。——比爾蓋茨”
2. 一個好的程序員比一個普通的程序員多十倍的生產(chǎn)率。而一個優(yōu)秀的程序員的生產(chǎn)率則比普通程序員多20-100倍。這并不是夸張(自從上世紀(jì)60年代的研究一直表明這是一個事實)。一個糟糕的程序員并不只是沒有產(chǎn)出的——他們并不僅是完成不不工作,而且還會制造出大量的讓別人頭痛并要去解決的麻煩。
3. 優(yōu)秀的程序員花少量的時間寫代碼——那些代碼都會出現(xiàn)在最終的產(chǎn)品中。那些花大量的時間寫代碼的程序員其實是很懶惰、很無知,或是很自大的,以至于不能使用已經(jīng)存在了的解決方案來解決已有的問題。優(yōu)秀的程序員精通于對通用模式的識別和重用。好的程序員并不害怕持續(xù)地重構(gòu)/重寫自己的代碼,直到達(dá)到最理想的方案。糟糕的程序員的代碼基本上都缺少概念一致性,代碼冗長,缺少層次和模式,所以,也就很難被重構(gòu)。所以,重寫他們的代碼要比重構(gòu)他們的代碼要容易得多。
4. 軟件和其它一切事物一樣,都遵循著一致性規(guī)則。持續(xù)得更改只會讓軟件變成一潭爛泥,其破壞了原始設(shè)計的概念一致性。軟件產(chǎn)品變成泥沼是不可避免的事情,但是因為程序員不考慮軟件概念一致性而導(dǎo)致軟件產(chǎn)品更為快速地成為泥沼,這種速度快得可能會在軟件產(chǎn)品還沒有完成時,軟件產(chǎn)品已經(jīng)變得沒有價值。設(shè)計概念一致性的失敗通常都會導(dǎo)致軟件項目的失?。ǘ诙髮?dǎo)致軟件項目失敗的原因則是發(fā)布的軟件并不是用戶想要的)。軟件變成爛泥的速度正在呈指數(shù)級下降,太多的項目在被完結(jié)前都面臨著激增的時間和成本。
5. 一個 2004 研究報告 指出,大多數(shù)的軟件項目 (51%) 都會在關(guān)鍵環(huán)節(jié)出問題。而15%的項目則是完全失敗,當(dāng)然,這比1994年有了很大的進(jìn)步,當(dāng)時完全失敗的項目是31%。
6. 雖然,幾乎所有的軟件產(chǎn)品都有些開發(fā)團(tuán)隊,但其并不是民主的。通常,只有一個人負(fù)責(zé)設(shè)計,而剩下的人去實現(xiàn)細(xì)節(jié)。
7. 編程是一個辛苦的工作。其實是一個劇烈的腦力勞動。好的程序員24×7地在思考他們的工作,他們一般都在洗澡和夢中編寫軟件中最重要的代碼。因為最重要的工作只能在鍵盤之外完成,軟件項目不可能因為加班或是加人來加快進(jìn)度。