本書簡明實用、見解深刻,總結(jié)了高效程序員在開發(fā)過程中的45個個人習(xí)慣、思想觀念和方法,有助于開發(fā)人員在開發(fā)進程、編碼工作、開發(fā)者態(tài)度、項目和團隊管理,以及持續(xù)學(xué)習(xí)等5個方面積極修煉。通過學(xué)習(xí)這些內(nèi)容,養(yǎng)成這些好的習(xí)慣,你可以極大地提升自己的編程實力,更快速、更可靠地交付更高質(zhì)量的軟件,從而成為真正的高效程序員。
目錄
第1章 敏捷——高效軟件開發(fā)之道 1第2章 態(tài)度決定一切 10
1 做事 12
2 欲速則不達 15
3 對事不對人 18
4 排除萬難,奮勇前進 23
第3章 學(xué)無止境 26
5 跟蹤變化 28
6 對團隊投資 31
7 懂得丟棄 34
8 打破砂鍋問到底 37
9 把握開發(fā)節(jié)奏 40
第4章 交付用戶想要的軟件 43
10 讓客戶做決定 45
11 讓設(shè)計指導(dǎo)而不是操縱開發(fā) 48
12 合理地使用技術(shù) 52
13 保持可以發(fā)布 55
14 提早集成,頻繁集成 58
15 提早實現(xiàn)自動化部署 61
16 使用演示獲得頻繁反饋 64
17 使用短迭代,增量發(fā)布 69
18 固定的價格就意味著背叛承諾 73
第5章 敏捷反饋 76
19 守護天使 78
20 先用它再實現(xiàn)它 82
21 不同環(huán)境,就有不同問題 87
22 自動驗收測試 90
23 度量真實的進度 93
24 傾聽用戶的聲音 96
第6章 敏捷編碼 98
25 代碼要清晰地表達意圖 100
26 用代碼溝通 105
27 動態(tài)評估取舍 110
28 增量式編程 113
29 保持簡單 115
30 編寫內(nèi)聚的代碼 117
31 告知,不要詢問 121
32 根據(jù)契約進行替換 124
第7章 敏捷調(diào)試 128
33 記錄問題解決日志 129
34 警告就是錯誤 132
35 對問題各個擊破 136
36 報告所有的異常 139
37 提供有用的錯誤信息 141
第8章 敏捷協(xié)作 146
38 定期安排會面時間 148
39 架構(gòu)師必須寫代碼 152
40 實行代碼集體所有制 155
41 成為指導(dǎo)者 157
42 允許大家自己想辦法 160
43 準備好后再共享代碼 162
44 做代碼復(fù)查 165
45 及時通報進展與問題 168
第9章 尾聲:走向敏捷 170
9.1 只要一個新的習(xí)慣 170
9.2 拯救瀕臨失敗的項目 171
9.3 引入敏捷:管理者指南 172
9.4 引入敏捷:程序員指南 174
9.5 結(jié)束了嗎 175
附錄A 資源 176
索引 182
態(tài)度篇
1. 做實事
不要抱怨,發(fā)牢騷,指責(zé)他人,找出問題所在,想辦法解決。對問題和錯誤,要勇于承擔(dān)。
2. 欲速則不達
用小聰明、權(quán)宜之計解決問題,求快而不顧代碼質(zhì)量,會給項目留下要命的死角。
3. 對事不對人
就事論事,明智、真誠、虛心地討論問題,提出創(chuàng)新方案。
4. 排除萬難,奮勇前進
勇氣往往是克服困難的唯一方法。
學(xué)習(xí)篇
5. 跟蹤變化
新技術(shù)層出不窮并不可怕。堅持學(xué)習(xí)新技術(shù),讀書,讀技術(shù)雜志,參加技術(shù)活動,與人交流。要多理解新詞背后的所以然,把握技術(shù)大趨勢,將新技術(shù)用于產(chǎn)品開發(fā)要謹慎。
6. 對團隊投資
打造學(xué)習(xí)型團隊,不斷提高兄弟們的平均水平。
7. 懂得丟棄
老的套路和技術(shù),該丟,就得丟。不要固步自封。
8. 打破砂鍋問到底
不斷追問,真正搞懂問題的本質(zhì)。為什么?應(yīng)該成為你的口頭禪。
9. 把握開發(fā)節(jié)奏
控制好時間,養(yǎng)成好習(xí)慣,不要加班。
開發(fā)流程篇
10. 讓客戶做決定
讓用戶在現(xiàn)場,傾聽他們的聲音,對業(yè)務(wù)最重要的決策應(yīng)該讓他們說了算。
11. 讓設(shè)計指導(dǎo)而不是操縱開發(fā)
設(shè)計是前進的地圖,它指引的是方向,而不是目的本身。設(shè)計的詳略程度應(yīng)該適當(dāng)。
12. 合理地使用技術(shù)
根據(jù)需要而不是其他因素選擇技術(shù)。對各種技術(shù)方案進行嚴格地追問,真誠面對各種問題。
13. 讓應(yīng)用隨時都可以發(fā)布
通過善用持續(xù)集成和版本管理,你應(yīng)該隨時都能夠編譯、運行甚至部署應(yīng)用。
14. 提早集成,頻繁集成
集成有風(fēng)險,要盡早盡量多地集成。
15. 提早實現(xiàn)自動化部署
16. 使用演示獲得頻繁反饋
17. 使用短迭代,增量發(fā)布
18. 固定價格就意味著背叛承諾
估算應(yīng)該基于實際的工作不斷變化。
用戶篇
19. 守護天使
自動化單元測試是你的守護天使。
20. 先用它再實現(xiàn)它
測試驅(qū)動開發(fā)其實是一種設(shè)計工具。
21. 不同環(huán)境,就有不同問題
要重視多平臺問題。
22. 自動驗收測試
23. 度量真實的進度
在工作量估算上,不要自欺欺人。
24. 傾聽用戶的聲音
每一聲抱怨都隱藏著寶貴的真理。
編程篇
25. 代碼要清晰地表達意圖(免費樣章鏈接)
代碼是給人讀的,不要耍小聰明。
26. 用代碼溝通
注釋的藝術(shù)。
27. 動態(tài)地進行取舍(免費樣章鏈接)
記住,沒有最佳解決方案。各種目標不可能面面俱到,關(guān)注對用戶重要的需求。
28. 增量式編程
寫一點代碼就構(gòu)建、測試、重構(gòu)、休息。讓代碼干凈利落。
29. 盡量簡單
寧簡勿繁。如果沒有充足的理由,就不要使用什么模式、原則和特別的技術(shù)。
30. 編寫內(nèi)聚的代碼
類和組件應(yīng)該足夠小,任務(wù)單一。
31. 告知,不要詢問
多用消息傳遞,少用函數(shù)調(diào)用。
32. 根據(jù)契約進行替換
委托往往優(yōu)于繼承。
調(diào)試篇
33. 記錄問題解決日志(免費樣章鏈接)
不要在同一地方摔倒兩次。錯誤是最寶貴的財富。
34. 警告就是錯誤
忽視編譯器的警告可能鑄成大錯。
35. 對問題各個擊破(免費樣章鏈接)
分而治之是計算機科學(xué)中最重要的思想之一。但是,要從設(shè)計和原型階段就考慮各部分應(yīng)該能夠很好地分離。
36. 報告所有的異常
37. 提供有用的錯誤信息(免費樣章鏈接)
稍微多花一點心思,出錯的時候,將給你帶來極大便利。
團隊協(xié)作篇
38. 定期安排會面時間
常開會,開短會。
39. 架構(gòu)師必須寫代碼(免費樣章鏈接)
不寫代碼的架構(gòu)師不是好架構(gòu)師。好的設(shè)計都來自實際編程。編程可以帶來深入的理解。
40. 實行代碼集體所有制
讓開發(fā)人員在系統(tǒng)不同區(qū)域中不同的模塊和任務(wù)之間輪崗。
41. 成為指導(dǎo)者
教學(xué)相長。分享能提高團隊的總體能力。
42. 讓大家自己想辦法(免費樣章鏈接)
指引方向,而不是直接提供解決方案。讓每個人都有機會在干中學(xué)習(xí)。
43. 準備好后再共享代碼
不要提交無法編譯或者沒有通過單元測試的代碼!
44. 做代碼復(fù)查
復(fù)查對提高代碼質(zhì)量、減少錯誤極為重要。
45. 及時通報進展與問題(免費樣章鏈接)
主動通報,不要讓別人來問你。