做程序員的經歷讓我知道了一些關於軟件編程的事情。下面的這些事情可能會讓朋友們對軟件開發感到驚訝:
1.
一個程序員用在寫程序上的時間大概佔他的工作時間的10-20%,大部分的程序員每天大約能寫出10-12行的能進入最終的產品的代碼 —
—不管他的技術水平有多高。
好的程序員花去90%的時間在思考、研究和實驗,來找出最優方案。差的程序員花去90%的時間在調試問題程序、盲目的修改程序,期望某種寫法能可行。「一
個卓越的車床工可以要求比一個一般的車床工多拿數倍高的工資,但一個卓越的軟件寫手的價值會10000倍於一個普通的寫手。」——比爾 蓋茨
2.
一個優秀的程序員的效率會是一個普通的程序員的十倍之上。一個卓越的程序員的效率會是一個普通程序員的20-100倍。這不是誇張 — —
1960年以來的無數研究都一致的證明了這一點。一個差的程序員不僅僅是沒效率 — — 他不僅不能完成任務,寫出的大量代碼也讓別人頭痛的沒法維護。
3.
卓越的程序員只花很少的時間去寫代碼——至少指那些最終形成產品的代碼。那些要花掉大量時間寫代碼的程序員都是太懶惰,太自大,太傲慢,不屑用現有的方案
去解決老問題。卓越的程序員的精明之處在於懂得欣賞和重複利用通用模式。好的程序員並不害怕經常的重構(重寫)他們的代碼以求達到最好效果。差的程序員寫
的代碼缺乏整體概念,冗餘,沒有層次,沒 有模式,導致很難重構。把這些代碼扔掉重做也比修改起來容易。
4.
軟件遵循熵的定律,跟其它所有東西一樣。持續的變更會導致軟件腐爛,腐蝕掉對原始設計的完整性概念。軟件的腐爛是不可避免的,但程序員在開發軟件時
沒有考慮完整性,將會使軟件腐爛的如此之快,以至於軟件在還沒有完成之前就已經毫無價值了。軟件完整性上的熵變可能是軟件項目失敗最常見的原因。(第二大
常見失敗原因是做出的不是客戶想要的東西。)軟件腐爛使開發進度呈指數級速度放緩,大量的軟件在失敗之前都是面對著突增的時間要求和資金預算。
5. 2004年的一項研究表明大多數的軟件項目(51%)會在關鍵功能上失敗,其中15%是完全的失敗。這比1994年前有很大的改進,當時是31%。
6. 儘管大多數軟件都是團體開發的,但這並不是一項民/主的活動。通常,一個人負責設計,其他人負責實現細節。
7. 編程是個很難的工作。是一種劇烈的腦力勞動。好的程序員7×24小時的思考他們的工作。他們最重要的程序都是在淋浴時、睡夢中寫成的。因為這最重要的工作都是在遠離鍵盤的情況下完成的,所以軟件工程不可能通過增加在辦公室的工作時間或增加人手來加快進度。
留言