薄薄的一本書,但是蘊含著 成為 clean coder 的哲理。
剛好分配到第六章,在講練習這件事情。
每個專業人士要有成功的表現,必須經過練習這件事情。不管是鋼琴家,木工,不少人都是透過練習來累積技能,讓自己熟悉。
程式史上第一個練習可能來自 C 作者的書 那第一個hello world程式了。
但是,這些專業的人不少是用自己的時間,來做練習這件事情。
而偏偏,很多程式設計者,卻不用自己的時間來練習。
這是一本哲學之書,一本真正的程式設計師寫出的 哲學之書。
可能有人說技術成分可能不高,但是,這卻是你為什麼做這的核心想法
,薄薄幾頁都蘊藏的滿滿的哲思,可以供大家思考。
博客來-無瑕的程式碼 番外篇:專業程式設計師的生存之道
http://www.books.com.tw/products/0010598217
"""節錄
不同的是,以往你只會做出一種回應,因此事態的發展只有一條路徑,而最終就陷入了一種悲慘的循環。那是個什麼樣的循環呢?
1.在面對一個新的專案或功能時,沒有一套科學的辦法來進行時程的預估〈老是估不準〉。
2.開發過程中,老是〈無法集中專注力〉,被這樣的事、那樣的事所影響,工作效率極差。
3.由於工作效率差,所以跟不上進度,〈壓力〉來了,只好加班熬夜來趕工。也〈沒時間寫測試〉。
4.加班熬夜寫出的程式,品質比較差,常常出現bug。
5.由於沒有寫測試,沒有一套自動化測試,所以〈除錯〉又花了許多時間,導致要加更多的班來進行除錯。
6.在接近專案截止日之前,終於快要完工了,但是客戶又要求〈加入新功能〉。但也給你更多的時間來開發,使你無法拒絕。
7.由於大多數程式碼都是加班趕出來的,品質非常差,因此在擴充功能時難以修改。只好回頭做〈重構〉。
8.由於加班趕工沒做好自動化測試,所以當加入新功能後,對於〈原有功能是否因此出錯了?〉,沒有把握,所以必須花做更多的時間在測試。
現在又回到了1或2,直到客戶不再要求加入新功能為止。
9.已經沒時間測試了,在最終的截止日期還是把結果給發佈出去了。〈交給客戶去測吧〉。客戶必須測完後才會交付尾款。
10.由於沒有進行完整的測試,因此,客戶發現了bug,所以要求修改,同時也對您所推出的最後版本產生懷疑,因此使得〈專案遲遲無法結案,無法收到尾款〉。
現在又回到了5,直到有天客戶的常用功能都OK了,或者你再也受不了而離職,甚至放棄收取尾款為止。
即便離職或放棄尾款也不能解決問題,因為你還是必須接新的專案,而這又回到了1。
以上的循環是否讓您感覺生活品質很差呢?是不是懷疑自己走錯行了呢?其實不是這樣的,問題在於你沒有找對方法來處理每一個步驟的應對之策。
這本書,從每個您所熟悉的故事中,發展出不同的分支,教導您如果這樣做,結果會是怎樣?如果那樣做,結局又會是怎樣?Bob大叔開的是一間顧問公司,寫程式也有四十幾年了,因此,他提出的做法完全是經驗的累積,經得起實際的考驗。如果您有疑慮,那大可不必一次全部都應用到同一個專案中,一次針對某一項來修改應對之策,您會發現,即便只是針對某一項來作修正,都會讓您獲益匪淺。
本書大多數的篇幅都在說故事,以說故事的方式來論理,當中有大約四個章節是和技術高度相關的,當中包含TDD、驗收測試、測試策略、協作、工具等等。關於這些議題,本書並未提供程式碼,而是以方法介紹為主軸來進行介紹,若你想看看實際程式碼的示範,可以參閱《無瑕的程式碼》一書。
"""