編輯推薦
1. 匯聚編程大師40餘年編程生涯的心得體會
2. 闡釋軟件工藝中的原理、技術、工具和實踐
3. 助力專業軟件開發人員具備令人敬佩的職業素養
成功的程序員在以往的工作和生活中都曾經曆過大大小小的不確定性,承受過永無休止的壓力。他們之所以能夠成功,是因為擁有一個共同點,都深切關注創建軟件所需的各項實踐。他們將軟件開發視為一種需要精雕細琢加以修煉的技藝,他們以專業人士的標準要求自己,他們具有職業素養。
軟件開發大師Robert C. Martin在書中介紹瞭真實軟件技藝中的各項原則、技術、工具和實踐,展示瞭怎麼以自豪、自尊和自信的心態進行軟件開發,怎麼取得卓越錶現和豐碩成果,怎麼做到有效溝通和確切估算,怎麼以坦誠的心態麵對睏難,並引導讀者認識到專業程序員肩負的責任重大,闡述瞭什麼纔是程序員的職業素養。
書中的具體內容包括:
● 成為真正的軟件專業人士需要具備哪些條件,如何應對彼此衝突又緊張的進度錶和不近情理的管理人員;
● 如何做到流暢編程,剋服阻塞狀態;
● 如何應對無休止的工作壓力,避免崩潰;
● 如何培養堅持不懈的態度,如何擁抱新的開發範式;
● 如何管理好時間,避免身陷泥潭無法自拔;
● 如何培育有利於程序員和開發團隊茁壯成長的環境;
● 什麼時候應該說“不”,怎麼說;
● 什麼時候應該說“是”,承諾意味著什麼。
軟件強大、優雅而實用,讓人驚嘆不已,不論是開發者還是用戶都樂於使用這樣的軟件。它們並非是由機器編寫齣來的,而是齣自那些對軟件技藝擁有堅定信念的專業軟件開發者之手。本書將幫助讀者成為專業軟件開發者中的一員,並贏得隻有他們纔能擁有的榮譽感和成就感。
內容簡介
本書是編程大師“Bob 大叔”40餘年編程生涯的心得體會的總結,講解要成為真正專業的程序員需要具備什麼樣的態度,需要遵循什麼樣的原則,需要采取什麼樣的行動。作者以自己以及身邊的同事走過的彎路、犯過的錯誤為例,意在為後來者引路,助其職業生涯邁上更高颱階。
作者簡介
作者介紹
Robert C. Martin,軟件開發大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編,被後輩程序員尊稱為“Bob大叔”。20世紀7 0年代初成為職業程序員,後創辦Object Mentor公司並任總裁。Martin還是一名多産的作傢,至今已發錶數百篇文章、論文和博客文章。除本書外,還著有《代碼整潔之道》《敏捷軟件開發:原則、模式和實踐》《UML:Java程序員指南》等。他創辦瞭cleancoders.com網站,專為軟件開發人員提供教育視頻。
譯者介紹
餘晟,混跡軟件開發和互聯網行業多年,目前在滬江網負責研發和架構管理工作。業餘喜愛閱讀、思考,關注工程師的全麵發展,探索更聰明的技術方案,樂於幫助外界更多理解IT行業的約束、規律和習慣。
章顯洲,螞蟻金服高級項目專傢,業餘以技術翻譯作為個人修煉與迴饋軟件開發社區的途徑。自2009年來,翻譯和與人閤譯多本技術管理書籍,偶爾也會齣現在技術社區聚會上作一些分享。近年來主要緻力於螞蟻金服基礎設施和架構升級方麵的項目集管理。
目錄
必讀引言 1
第1章 專業主義 7
1.1 清楚你要什麼 8
1.2 擔當責任 8
1.3 首先,不行損害之事 10
1.3.1 不要破壞軟件功能 10
1.3.2 不要破壞結構 12
1.4 職業道德 13
1.4.1 瞭解你的領域 14
1.4.2 堅持學習 16
1.4.3 練習 16
1.4.4 閤作 17
1.4.5 輔導 17
1.4.6 瞭解業務領域 17
1.4.7 與雇主/客戶保持一緻 18
1.4.8 謙遜 18
1.5 參考文獻 18
第2章 說“不” 19
2.1 對抗角色 21
2.2 高風險時刻 24
2.3 要有團隊精神 25
2.3.1 試試看 26
2.3.2 消極對抗 28
2.4 說“是”的成本 30
2.5 如何寫齣好代碼 35
第3章 說“是” 37
3.1 承諾用語 39
3.1.1 識彆“缺乏承諾”的徵兆 40
3.1.2 真正的承諾聽起來是怎樣的 40
3.1.3 總結 43
3.2 學習如何說“是” 43
3.2.1 “試試”的另一麵 43
3.2.2 堅守原則 44
3.3 結論 46
第4章 編碼 47
4.1 做好準備 48
4.1.1 淩晨3點寫齣的代碼 49
4.1.2 焦慮時寫下的代碼 50
4.2 流態區 51
4.2.1 音樂 52
4.2.2 中斷 53
4.3 阻塞 53
4.4 調試 55
4.5 保持節奏 57
4.5.1 知道何時應該離開一會 58
4.5.2 開車迴傢路上 58
4.5.3 洗澡 58
4.6 進度延遲 58
4.6.1 期望 59
4.6.2 盲目衝刺 59
4.6.3 加班加點 60
4.6.4 交付失誤 60
4.6.5 定義“完成” 61
4.7 幫助 61
4.7.1 幫助他人 61
4.7.2 接受他人的幫助 62
4.7.3 輔導 62
4.8 參考文獻 63
第5章 測試驅動開發 65
5.1 此事已有定論 66
5.2 TDD的三項法則 67
5.3 TDD的優勢 68
5.3.1 確定性 68
5.3.2 缺陷注入率 68
5.3.3 勇氣 69
5.3.4 文檔 69
5.3.5 設計 70
5.3.6 專業人士的選擇 70
5.4 TDD的局限 70
5.5 參考文獻 71
第6章 練習 73
6.1 引子 73
6.1.1 10的22次方 74
6.1.2 轉變 75
6.2 編程柔道場 76
6.2.1 卡塔 77
6.2.2 瓦薩 78
6.2.3 自由練習 78
6.3 自身經驗的拓展 79
6.3.1 開源 79
6.3.2 關於練習的職業道德 79
6.4 結論 80
6.5 參考文獻 80
第7章 驗收測試 81
7.1 需求的溝通 81
7.1.1 過早精細化 83
7.1.2 遲來的模糊性 83
7.2 驗收測試 85
7.2.1 “完成”的定義 85
7.2.2 溝通 88
7.2.3 自動化 88
7.2.4 額外工作 89
7.2.5 驗收測試什麼時候寫,由誰來寫 90
7.2.6 開發人員的角色 90
7.2.7 測試的協商與被動推進 91
7.2.8 驗收測試和單元測試 93
7.2.9 圖形界麵及其他復雜因素 93
7.2.10 持續集成 94
7.3 結論 95
第8章 測試策略 97
8.1 QA應該找不到任何錯誤 98
8.1.1 QA也是團隊的一部分 98
8.1.2 需求規約定義者 98
8.1.3 特性描述者 98
8.2 自動化測試金字塔 98
8.2.1 單元測試 99
8.2.2 組件測試 100
8.2.3 集成測試 100
8.2.4 係統測試 101
8.2.5 人工探索式測試 102
8.3 結論 102
8.4 參考文獻 102
第9章 時間管理 103
9.1 會議 104
9.1.1 拒絕 104
9.1.2 離席 105
9.1.3 確定議程與目標 105
9.1.4 立會 106
9.1.5 迭代計劃會議 106
9.1.6 迭代迴顧和DEMO展示 107
9.1.7 爭論/反對 107
9.2 注意力點數 108
9.2.1 睡眠 108
9.2.2 咖啡因 108
9.2.3 恢復 109
9.2.4 肌肉注意力 109
9.2.5 輸入與輸齣 109
9.3 時間拆分和番茄工作法 110
9.4 要避免的行為 110
9.5 死鬍同 111
9.6 泥潭 111
9.7 結論 112
第10章 預估 113
10.1 什麼是預估 115
10.1.1 承諾 115
10.1.2 預估 115
10.1.3 暗示性承諾 117
10.2 PERT 118
10.3 預估任務 120
10.4 大數定律 122
10.5 結論 123
10.6 參考文獻 123
第11章 壓力 125
11.1 避免壓力 127
11.1.1 承諾 127
11.1.2 保持整潔 127
11.1.3 危機中的紀律 128
11.2 應對壓力 128
11.2.1 不要驚慌失措 128
11.2.2 溝通 129
11.2.3 依靠你的紀律原則 129
11.2.4 尋求幫助 129
11.3 結論 129
第12章 協作 131
12.1 程序員與人 133
12.1.1 程序員與雇主 133
12.1.2 程序員與程序員 135
12.2 小腦 137
12.3 結論 138
第13章 團隊與項目 139
13.1 隻是簡單混閤嗎 139
13.1.1 有凝聚力的團隊 140
13.1.2 如何管理有凝聚力的 團隊 141
13.1.3 項目承包人的睏境 142
13.2 結論 142
13.3 參考文獻 143
第14章 輔導、學徒期與技藝 145
14.1 失敗的學位教育 145
14.2 輔導 146
14.2.1 DIGI-COMP I,我的 第一颱計算機 146
14.2.2 高中時代的ECP-18 148
14.2.3 非常規輔導 150
14.2.4 艱難的錘煉 150
14.3 學徒期 151
14.3.1 軟件學徒期 152
14.3.2 現實情況 154
14.4 技藝 154
14.5 結論 155
附錄 工具 157
代碼整潔之道 程序員的職業素養 下載 mobi epub pdf txt 電子書 格式