去幾十年的大型系統開發過程,看似都陷入了一個焦油坑,並且在其中拼命掙扎。表面上看起來,沒有任何一個單獨的問題解決不了,可是當他們相互糾纏在一起的時候,麻煩程度往往令人難以想象。
程式構件需要產品化(通用、測試、文件),同時程式構件需要被整合(介面、系統整合),之後才能形成程式設計系統產品(Programming Systems Product)。根據經驗,程式設計系統產品的成本是程式成本的9倍,然而這是大多數系統開發的目標。
程式設計行業樂趣在於:
- 創造新事物帶來的純粹快樂
- 自己的創造物能夠被別人需要的快樂
- 編寫程式過程本身的快樂
- 任務不重複,持續學習新知識的快樂
- 成為程式設計師就可以輕鬆的嘗試上面的快樂,比起當一名詩人要簡單的多
然而,這個過程並不全是快樂的,程式設計的苦惱在於:
- 程式相對於人類思維來說是要追求完美的,即使錯了一個字元也不能正常
- 工作目標往往由他人來設定
- 為了依靠其他人的程式,往往要委曲求全
- 尋找BUG是重複、枯燥、艱苦的,而且尋找最後一個錯誤要比第一個花費更多時間
- 在投入了大量辛苦的勞動之後,你的產品可能已經不再被需要了
我們所面臨的挑戰和任務是在實際的進度和有效的資源範圍內,尋找解決實際問題的切實可行方案。
作者通過他的經驗,試圖告訴我們,大型程式設計專案的成本是幾何式增長的,如果不正確處理問題,我們很可能會陷入一個焦油坑中。
總的來說,作為第一章,作者從行業和個人兩個角度,丟擲了幾個重要的問題。同時也引出了本書的主旨,即解決這些問題,作者試圖先帶領讀者瞭解問題本質,然後在思考解決問題的方案。
相信作為程式設計師,面對這些問題或多或少都能引起共鳴。其實,本書首次發行於1975年,早在如此多年之前,這些問題就已經被人深入的討論過。總覺得,今天的我們還在因為這些問題而困擾,多少是會感到有點羞愧的呢。
我們談的OOP程式設計和MVC思想等內容的同時,是否真的能解決我們所遇到的問題,還是我們可能一開始從根本上就做錯了什麼?