極限程式設計實踐
1. 客戶作為團隊成員
2. 使用者素材:對項目需求的簡單的、模糊的概括,而不是詳細的需求細節
3. 短傳遞周期:疊代計劃——兩周;釋出計劃——三個月(大約六次疊代)
4. 驗收測試:使用簡單腳本,在疊代開始前或疊代過程中逐漸完成
5. 結對程式設計:結對的關系每天至少要改變一次
6. 測試驅動的開發方法:首先編寫一個單元測試,然後編寫代碼使測試通過
7. 集體所有權:每個程式員對項目的每個子產品都有接觸,都編寫有自己的代碼
8. 持續內建:每隔一到兩個小時就進行一次簽入(check-in),并使所有測試都通過
9. 可持續的開發速度:團隊必須保持旺盛的精力和敏銳的警覺,不允許加班工作(釋出前一周例外)
10. 開放的工作空間
11. 計劃遊戲:劃分業務人員(也就是客戶)與開發人員的職責。業務人員決定特性的重要性,開發人員決定實作一個特性所需要的代價
12. 簡單的設計:1.考慮能夠工作的最簡單的事情;2.你将不需要它;3.一次,并且僅有一次
13. 重構:經常性地重構:每隔一個小時或半個小時一次
14. 隐喻:構造一個将整個系統聯系在一起的全局視圖(一個恰當的比喻),這有助于從整體上考慮系統。