關(guān)于編程 鮮為人知的真相
1.一個(gè)程序員用在寫程序上的時(shí)間大概占他的工作時(shí)間的10-20%,大部分的程序員每天大約能寫出10-12行的能進(jìn)入最終的產(chǎn)品的代碼——不管他的技術(shù)水平有多高。好的程序員花去90%的時(shí)間在思考、研究和實(shí)驗(yàn),來找出***方案。差的程序員花去90%的時(shí)間在調(diào)試問題程序、盲目的修改程序,期望某種寫法能可行。“一個(gè)卓越的車床工可以要求比一個(gè)一般的車床工多拿數(shù)倍高的工資,但一個(gè)卓越的軟件寫手的價(jià)值會(huì)10000倍于一個(gè)普通的寫手。”——比爾蓋茨
2.一個(gè)優(yōu)秀的程序員的效率會(huì)是一個(gè)普通的程序員的十倍之上。一個(gè)偉大的程序員的效率會(huì)是一個(gè)普通程序員的20-100倍。這不是夸張——1960年以來的無數(shù)研究都一致的證明了這一點(diǎn)。一個(gè)差的程序員不僅僅是沒效率——他不僅不能完成任務(wù),寫出的大量代碼也讓別人頭痛的沒法維護(hù)。
3.偉大的程序員只花很少的時(shí)間去寫代碼——至少指那些最終形成產(chǎn)品的代碼。那些要花掉大量時(shí)間寫代碼的程序員都是太懶惰,太自大,太傲慢,不屑用現(xiàn)有的方案去解決老問題。偉大的程序員的精明之處在于懂得欣賞和重復(fù)利用通用模式。好的程序員并不害怕經(jīng)常的重構(gòu)(重寫)他們的代碼以求達(dá)到***效果。差的程序員寫的代碼缺乏整體概念,冗余,沒有層次,沒有模式,導(dǎo)致很難重構(gòu)。把這些代碼扔掉重做也比修改起來容易。
4.軟件遵循熵的定律,跟其它所有東西一樣。持續(xù)的變更會(huì)導(dǎo)致軟件腐爛,腐蝕掉對(duì)原始設(shè)計(jì)的完整性概念。軟件的腐爛是不可避免的,但程序員在開發(fā)軟件時(shí)沒有考慮完整性,將會(huì)使軟件腐爛的如此之快,以至于軟件在還沒有完成之前就已經(jīng)毫無價(jià)值了。軟件完整性上的熵變可能是軟件項(xiàng)目失敗最常見的原因。(第二大常見失敗原因是做出的不是客戶想要的東西。)軟件腐爛使開發(fā)進(jìn)度呈指數(shù)級(jí)速度放緩,大量的軟件在失敗之前都是面對(duì)著突增的時(shí)間要求和資金預(yù)算。
5.2004年的一項(xiàng)研究表明大多數(shù)的軟件項(xiàng)目(51%)會(huì)在關(guān)鍵功能上失敗,其中15%是完全的失敗。這比1994年前有很大的改進(jìn),當(dāng)時(shí)是31%。
6.盡管大多數(shù)軟件都是團(tuán)體開發(fā)的,但這并不是一項(xiàng)民/主的活動(dòng)。通常,一個(gè)人負(fù)責(zé)設(shè)計(jì),其他人負(fù)責(zé)實(shí)現(xiàn)細(xì)節(jié)。
7.編程是個(gè)很難的工作。是一種劇烈的腦力勞動(dòng)。好的程序員7×24小時(shí)的思考他們的工作。他們最重要的程序都是在淋浴時(shí)、睡夢(mèng)中寫成的。因?yàn)檫@最重要的工作都是在遠(yuǎn)離鍵盤的情況下完成的,所以軟件工程不可能通過增加在辦公室的工作時(shí)間或增加人手來加快進(jìn)度。
原文鏈接:http://www.aqee.net/2010/09/05/some-lesser-known-truths-about-programming/
【編輯推薦】