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