The Pragmatic Programmer
程式設計是一門手藝,且從來都沒有最佳的解決方案,而這就是務實主義派上用場的地方。本書將幫你融合電腦科學的基礎以及廣泛的專案實作,理論與實務結合,成為更好的程式設計師。如同副標題所述,務實的哲學就是從新手邁向大師的關鍵,務實的程式設計師最終能完成工作,而且做得更好。
書的內容起源於作者們的工作筆記,因此前半段較注重程式設計師的手藝培養;後半段則強調在專案中協作的重點,然而概念都是共通的,就是程式設計師應該以合理且實際的方式做事情
。因此書的第一章會先討論務實的哲學,說明程式設計師應該對程式負責、避免軟體亂度提升、交付夠好的軟體,並解釋投資知識資產以及團隊溝通的重要性。
在關於軟體手藝的幾個章節,作者從優秀設計的精隨展開,介紹各種常見的設計工具如DRY原則、正交性、領域語言等,並指出這些工具的最終目標都是為了讓程式更好修改
( Easy to Change )。接著介紹種能提高生產力的工具如文字處理、除錯工具、工程日誌怎麼整合進工作環境,還有各種設計模式如合約式設計、去耦合、轉換式程式設計、並行等如何幫助我們設計出更好的軟體。
跟專案協作的相關章節開始把讀者從程式設計師帶往提供解決方案的角色
,這裡有一件事是初入職場的程式設計師一定要了解的,客戶有一個模糊的問題要解決,但是他不知道自己確切要什麼
,因此各種探索式詢問、外交手腕、取得共識等溝通技巧就變得十分重要,這部分需要的技能跟程式設計師受過的訓練完全不同,遇到不知道該怎麼做的時候,請記得專案的目標就是取悅你的客戶
並複習敏捷宣言,仔細思考怎樣才是務實完成工作的方式。
本書與另一本軟體開發實務指南都是程式設計師的必讀經典,不過本書著重於完成工作而開發實務指南更在乎軟體建構的工藝,兩本都適合程式設計師在職業生涯中不斷拿出來複習。可能是因為這些書點出了把事情做好的核心概念,而這些概念會影響讀者的各種決策,隨著經驗的增加,在不同階段重讀時會有不同體會。
參考資料
The Pragmatic Programmer 20週年紀念版