我們,採集的只是石頭,卻必須時時刻刻展望未來的大教堂。
- 第一章:注重時效的哲學
- 負責你的代碼,不要找蹩腳的藉口
- 不要容忍破窗戶:有問題就及時修改,別累積技術債
- 做團隊裡「做變化的催化劑」:提供大家改變的契機,讓大家追隨你而改變
- 永遠記住大目標,要見樹並見林
- 使質量成為需求問題:讓你的用戶參與權衡
- 定期為你的知識資產做投資
- 批判地分析你讀到的和聽到的
- 你說什麼和你怎麼說同樣重要:交流、知道你要說什麼、瞭解聽眾、選擇文件的風格和美觀
- 第二章:注重實效的途徑
- 不要重複你自己:和重用(Reuse)差別在,重複(Repeat)在於你做了同樣的事情,你應該只做一次卻做了很多次,造成時間和成本浪費;而重用則是再次利用優秀的程式碼來達到效率上的精進。
- 讓重用變得容易(Make It Easy to Reuse)
- 消除無關事物之間的影響:提升系統各組件的正交性(即降低耦合性)
- 有正交性的好處:提高生產率、降低風險、項目團隊、設計
- 編碼:讓代碼解藕、避免使用全域變數、避免相似的函數
- 可撤銷性:不要存在最終決策,你的產品隨時隨地都有可能砍掉重練
- 使用曳光彈來幫助你找到目標:和原型製作的差異在於曳光彈代碼是完整的,之後會構成最終系統的骨架的一部分
- 用戶能及早看到能工作的東西
- 開發者建構了一個他們能在其中工作的結構
- 有了集成的平台
- 為了學習而製作原型:原型所具備的元素有
- 正確性
- 完整性
- 健壯性
- 風格
- 靠近問題領域編寫程式(Program Close to the Problem domain):選擇特定語言或是編寫特別定義過的程式來解決問題
- 估算以免發生意外
- 理解提問內容
- 建立系統的模型
- 把模型分解為組件
- 給參數指定值
- 估算項目進度
- 第三章:基本工具
- 用純文本保存知識(Keep Knowledge in Plain Text)
- 利用命列Shell的威力(Use the Power of Command Shells)
- 用好一款編輯器:好的編輯器應該具有以下特性
- 可配置:可高度客製化
- 可擴展性
- 可編程性
- 總是使用原始碼控制工具
- 要修正問題,而不是發出指責
- 不要恐慌
- 將你的數據視覺化
- 跟蹤
- 使用橡皮鴨:向別人解釋你的程式碼,讓別人像鴨子一樣一直點頭,直到問題出現
- 消除過程
- Select沒有問題
- 不要假定,要證明
- 學習一種文本操縱語言
- 撰寫能撰寫程式碼的工具
- 第四章:注意時效的偏執
- 你不可能寫出完美的軟體
- 使用DBC按照合約設計:
- 前條件
- 後條件
- 類別不變項
(未完.....)