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