《軟件架構師的12項修煉》姊妹篇,回歸架構工作的技術本源,探尋成功架構師必備的技術技能
從解決方案的概念化到平臺開發(fā)及治理,從技術創(chuàng)新的選擇到為架構注入企業(yè)精神,指明個人和團隊在架構工作中的全面提升之道
精通每位軟件架構師都需要的關鍵技術技能!
作為軟件架構師,要想取得成功就必須兼具技術技能和軟技能。Dave Hendricksen在其暢銷的《軟件架構師的12項修煉》中闡明成為成功軟件架構師所必需的三大軟技能:關系技能、個人技能和商務技能?,F(xiàn)在,他又轉向技術技能。從數(shù)十年的經(jīng)驗中,Hendricksen將技術技能組織為三個領域。
項目技能:從構思開始推進項目,直至交付
技術技能:構建、購買或者利用正確的技術
想象力技能:實現(xiàn)增強長期競爭力的架構愿景
從解決方案的概念化到平臺開發(fā)及治理,從技術創(chuàng)新的選擇到為架構注入企業(yè)精神,本書將幫助你拓展和磨練這些關鍵技術技能。
《軟件架構師的12項修煉:技術技能篇》揭示了架構師所需要的技術技能,提供了掌握它們所需的清晰框架及實用方法學。
Hendricksen的兩本書共同提供了軟件架構師邁向優(yōu)秀的完整、實用的路徑。它們將指導你架構生涯的每一步——從占據(jù)合適的位置到之后的成長。
《軟件架構師的12項修煉:技術技能篇》是資深架構師DaveHendricksen的力作,系統(tǒng)闡述了成功架構師的必備技術技能,以及個人及團隊拓展、應用這些技能的方法。本書分為3個部分,一部分(第1~5章)介紹項目技能,涵蓋合作關系、發(fā)現(xiàn)、概念化、估算、管理;第二部分(第6~9章)介紹技術技能,涵蓋平臺開發(fā)、架構透視、治理和技術訣竅;第三部分(第10~12章)介紹想象力技能,涵蓋技術創(chuàng)新、戰(zhàn)略路線圖和企業(yè)執(zhí)行。
Dave Hendricksen,全球三大咨詢提供商湯姆森路透集團(Thomson Reuters)公司資深軟件架構師,在軟件架構方面有非常深的造詣。在公司中,他與新產(chǎn)品開發(fā)團隊緊密合作,為大規(guī)模在線平臺(如Westlaw.com)創(chuàng)建新穎的法律產(chǎn)品。Hendricksen曾在卡內(nèi)基梅隆大學具有影響力的軟件工程學院做過題為“在敏捷世界中設計和構建大規(guī)模系統(tǒng)”的演講。
姚軍,曾在多家證券公司擔任IT經(jīng)理,在軟硬件項目實施、網(wǎng)絡管理及應用領域有15年以上的工作經(jīng)驗,自2006年以來已有多部譯作出版。
譯者序
前言
致謝
第一部分 項 目 技 能
第1章 合作關系 5
1.1 什么是合作關系 6
1.2 合作關系的關鍵特征 6
1.3 一致 7
1.3.1 我需要和誰結成合作伙伴 7
1.3.2 找出思想領袖 8
1.3.3 認識影響力人物 8
1.3.4 確定可信的建議者 9
1.3.5 社區(qū)評審(架構評審委員會) 9
1.3.6 在做出關鍵決策之前尋求一致 9
1.3.7 共同愿景的一致成就合作關系 10
1.4 信任 10
1.4.1 建立信任 10
1.4.2 建立公開披露機制 10
1.4.3 避免將攤子鋪得過大(過度投入) 11
1.4.4 在你過度承諾之后如何解脫 12
1.4.5 學會說“不” 12
1.4.6 信任帶來透明度—合作關系的命脈 13
1.5 語境 14
1.5.1 了解合作的性質(zhì) 14
1.5.2 了解你的業(yè)務背景(語境) 14
1.5.3 技術決策需要合作關系 14
1.5.4 關鍵點:技術決策是政治決策 15
1.5.5 首先介紹情況(提供語境) 15
1.5.6 支持你的合作伙伴 16
1.5.7 為合作伙伴的成功做出貢獻 17
1.5.8 人多勢眾 17
1.6 協(xié)作 17
1.6.1 將價值放到臺面上 17
1.6.2 成為導師 17
1.6.3 尋找導師 18
1.6.4 合作關系可能是機遇之源 19
1.6.5 合作關系是邁向構思的一步 19
1.6.6 協(xié)作推動更強大的合作關系 19
1.7 關系 19
1.7.1 合作關系不僅和業(yè)務有關 19
1.7.2 想要索取就要先付出 20
1.7.3 外部合作關系 20
1.7.4 過去的不愉快經(jīng)歷 20
1.7.5 躲開組織中的刻薄鬼 20
1.8 小結 21
參考書目 22
第2章 發(fā)現(xiàn) 23
2.1 什么是發(fā)現(xiàn) 24
2.2 發(fā)現(xiàn)的關鍵 25
2.3 了解客戶 25
2.3.1 與銷售、市場及新產(chǎn)品開發(fā)部門建立合作關系 26
2.3.2 與客戶會面 29
2.3.3 取悅客戶的是什么 33
2.4 了解市場 34
2.4.1 了解客戶的客戶 35
2.4.2 客戶愿意在哪里花錢 36
2.4.3 競爭對手在做什么 37
2.4.4 傾聽不同客戶的主題 38
2.5 理解你的業(yè)務 39
2.5.1 研究你的業(yè)務目標 39
2.5.2 個性化公司的戰(zhàn)略目標 39
2.5.3 為決策開發(fā)一個業(yè)務語境 40
2.6 小結 40
參考書目 41
第3章 概念化 42
3.1 構思 43
3.2 及早介入 43
3.3 概念化:將生命賦予思路 44
3.4 概念形成 45
3.4.1 他們使用什么語言 45
3.4.2 正在討論的是什么問題 46
3.4.3 當你較晚進入構思團體中時,需要謹慎投入 48
3.4.4 這個概念是什么樣子的 49
3.5 概念具體化 51
3.5.1 最小可行性產(chǎn)品 51
3.5.2 試驗的需求 52
3.5.3 建立假設有助于協(xié)調(diào)愿景 53
3.5.4 確定必不可少的功能和客戶角色 53
3.5.5 和客戶一起進行概念具體化 54
3.6 概念演化 54
3.6.1 以史為鑒 54
3.6.2 接受多種視角 55
3.6.3 尋求概念完整性 56
3.6.4 發(fā)現(xiàn)鄰近的機遇 57
3.7 小結 57
參考書目 58
第4章 估算 59
4.1 估算概述 60
4.1.1 估算的目的是什么 61
4.1.2 是否建立了項目語境 61
4.1.3 什么是架構方法 62
4.2 理解估算過程 63
4.2.1 估算管線 63
4.2.2 項目類型 63
4.2.3 項目籌資的其他方式 64
4.2.4 理解業(yè)務過程 65
4.3 開發(fā)架構方法 66
4.3.1 是合作伙伴關系還是合同關系 66
4.3.2 項目在業(yè)務上的依據(jù)是什么 66
4.3.3 營銷方式是什么 67
4.3.4 是不是重復的估算 67
4.3.5 已經(jīng)識別了哪些風險?能否緩解 68
4.3.6 是否將構建一個平臺 69
4.3.7 是否將更改平臺 69
4.3.8 使用何種技術 70
4.3.9 采用何種組織結構 70
4.3.10 是否需要進行外部調(diào)查 71
4.3.11 是否找出了可利用的組件 71
4.4 估算策略 72
4.4.1 為未知因素和挑戰(zhàn)制訂計劃 72
4.4.2 務實:不要為了獲得項目而屈服 72
4.4.3 嚴密控制關鍵因素 73
4.4.4 開發(fā)估算反饋循環(huán) 73
4.4.5 最大限度地減少組織耦合和內(nèi)聚 73
4.4.6 隨身帶著PowerPoint 73
4.4.7 開發(fā)檢查列表 73
4.4.8 及早獲得高管和組織的支持 74
4.5 估算原則 74
4.5.1 確定疑難問題 74
4.5.2 提供選項 74
4.5.3 保持設計決策的開放 74
4.5.4 了解時間表 74
4.5.5 知道你想要的結果 75
4.5.6 避免負面態(tài)度 75
4.5.7 尋找說“是”的機會 75
4.5.8 現(xiàn)在就開始討價還價,不要等到以后 75
4.5.9 不要認輸 75
4.5.10 相信你的直覺 75
4.5.11 了解其他人估算過的項目 75
4.5.12 了解業(yè)務部門的目標價格 76
4.6 完成估算 76
4.6.1 了解時限 76
4.6.2 誰參與估算 76
4.6.3 理解你的切入點 76
4.6.4 組合所有信息 77
4.6.5 與高管人員接觸 77
4.6.6 推銷估算 77
4.7 小結 79
參考書目 80
第5章 管理 81
5.1 架構管理定義 82
5.2 架構師負責的領域 83
5.3 堅持追求技術上的卓越 83
5.3.1 確立一個愿景 83
5.3.2 提升技術負債意識,投資合適的解決方案 83
5.3.3 保持技術環(huán)境的趣味性 84
5.3.4 找出潛在的專利 84
5.3.5 尋求數(shù)據(jù)中心和運營部門對你的方向的支持 85
5.3.6 推廣解決方案 85
5.3.7 建立戰(zhàn)略性解決方案 85
5.3.8 利用現(xiàn)有解決方案 86
5.4 交付項目 86
5.4.1 與項目經(jīng)理成為合作伙伴 86
5.4.2 無情地消除依賴性 86
5.4.3 管理預期 87
5.4.4 控制開發(fā)過程 87
5.4.5 在發(fā)生問題時出現(xiàn) 88
5.4.6 了解項目上不透明的因素 88
5.4.7 限制處于領導地位的承包商數(shù)量 88
5.4.8 提供技術管理(職責領域) 89
5.4.9 應急管理 89
5.5 解決問題 90
5.5.1 提出難題 90
5.5.2 立即處理問題 90
5.5.3 說“不”,但是要提出選項 90
5.5.4 在決策中努力保持一致 91
5.5.5 學會正面處理問題、攤牌 92
5.5.6 知道在協(xié)商中你所愿意接受的 92
5.5.7 勇于對不同意的領域(有禮貌地)提出挑戰(zhàn) 92
5.5.8 堅持立場 92
5.5.9 知道哪些不是你的問題 92
5.6 與高管人員成為合作伙伴 93
5.6.1 通過透明度管理風險 93
5.6.2 審核估算 93
5.6.3 限制框圖中方框的數(shù)量 93
5.6.4 提升技術意識 93
5.6.5 支持老板 94
5.6.6 不要打斷高管人員的講話 94
5.6.7 保持自信 94
5.7 管理你的時間 94
5.7.1 限制投入的項目數(shù)量 94
5.7.2 定義自己的角色并堅持 95
5.7.3 確定費時工作的優(yōu)先級 95
5.7.4 學會在限定的日期和時間做出決策 96
5.7.5 只在你是活躍的參與者時才參加會議 96
5.7.6 了解最后期限 96
5.7.7 委托你信任的人 96
5.7.8 面對面會談 96
5.8 培養(yǎng)技術人才 97
5.8.1 制定架構導師計劃 97
5.8.2 建立技術論壇 97
5.8.3 鼓勵技術團隊成員參與當?shù)氐臅h和用戶組 98
5.8.4 雇用最好的員工:不只是填補一個職位 98
5.9 提高技能 99
5.9.1 與其他架構師坐在一起 99
5.9.2 每天做一些技術工作 99
5.9.3 專注于令你吃驚的事情 99
5.9.4 成為某個領域的專家 99
5.9.5 尋求能夠提高技能的項目 99
5.10 小結 100
參考書目 100
第二部分 技 術 技 能
第6章 平臺開發(fā) 106
6.1 平臺開發(fā)定義 107
6.2 平臺開發(fā)的要素 107
6.3 功能 108
6.3.1 定義目標集 108
6.3.2 定義功能集 108
6.3.3 專注于可利用功能 109
6.3.4 開發(fā)強大的概念模型 109
6.3.5 API是“打開王國的鑰匙” 109
6.4 生態(tài)系統(tǒng) 110
6.4.1 平臺用戶 110
6.4.2 平臺所有權 110
6.4.3 平臺管理 115
6.4.4 平臺開發(fā) 117
6.4.5 認識與平臺相關的成本 118
6.4.6 管理平臺質(zhì)量 119
6.4.7 平臺集成 119
6.4.8 可伸縮性 120
6.4.9 安全性 120
6.5 指導原則 120
6.5.1 追求超卓的質(zhì)量 120
6.5.2 追求卓越運營 121
6.5.3 可配置性勝過硬編碼 121
6.5.4 追求可利用性 121
6.5.5 追求冗余架構 121
6.5.6 追求線性的伸縮性 121
6.5.7 避免平臺纏繞 122
6.5.8 避免平臺蔓延 122
6.5.9 持續(xù)升級到最新技術 122
6.6 小結 122
參考書目 123
第7章 架構透視 124
7.1 架構透視的定義 125
7.2 架構原則 126
7.2.1 最少意外原則 126
7.2.2 最少知識原則(迪米特法則) 126
7.2.3 最小工作量原則(齊普夫法則) 127
7.2.4 機會成本原則 127
7.2.5 單一職責原則 128
7.2.6 精簡原則(奧卡姆剃刀或者KISS) 128
7.2.7 最后責任時刻原則(延遲成本) 129
7.2.8 反饋原則 129
7.3 架構關注點 130
7.3.1 可用性 130
7.3.2 可伸縮性 131
7.3.3 可擴展性 132
7.3.4 可重復性 133
7.3.5 兼容性 133
7.3.6 可持續(xù)性 133
7.3.7 安全性、災難恢復、業(yè)務持續(xù)性和開源許可證 134
7.3.8 第三方集成 134
7.4 架構溝通 134
7.4.1 領域模型 134
7.4.2 流程圖 134
7.4.3 環(huán)境圖 135
7.4.4 用戶界面模型 136
7.4.5 邏輯架構框圖 136
7.4.6 執(zhí)行概況圖 137
7.4.7 硬件環(huán)境框圖 137
7.4.8 風險、假設、問題和相互依賴性(RAID) 138
7.5 整合所有因素 140
7.6 小結 140
參考書目 140
第8章 治理 142
8.1 治理的定義 143
8.2 治理原則 143
8.2.1 避免供應商鎖定 143
8.2.2 鼓勵開源產(chǎn)品的使用 143
8.2.3 最小化中斷成本(實現(xiàn)業(yè)務持續(xù)性計劃和災難恢復) 145
8.2.4 實現(xiàn)業(yè)務部門之間的松散耦合 146
8.2.5 利用公共功能 146
8.2.6 確保監(jiān)管依從性 147
8.2.7 確保安全性 148
8.2.8 最小特權原則(最小授權原則) 149
8.2.9 尋求統(tǒng)一身份和訪問管理 149
8.2.10 尋求數(shù)據(jù)可移植性(避免數(shù)據(jù)鎖定) 149
8.2.11 尋求集成和自動化 149
8.3 治理的領域 150
8.3.1 估算 150
8.3.2 管理關注點 151
8.3.3 架構 151
8.3.4 設計 152
8.3.5 構建、編碼、集成、部署、測試和監(jiān)控 153
8.4 使用敏捷方法的治理和健康壓力 153
8.5 小結 154
參考書目 154
第9章 技術訣竅 155
9.1 技術訣竅的定義 156
9.2 開發(fā)訣竅 156
9.2.1 發(fā)展與技術訣竅的聯(lián)系 156
9.2.2 發(fā)展技術訣竅的先進性 159
9.2.3 發(fā)展技術訣竅的卓越性 161
9.2.4 技術訣竅綜合體 167
9.3 技術訣竅驅(qū)動的架構 167
9.4 小結 168
參考書目 169
第三部分 想象力技能
第10章 技術創(chuàng)新 174
10.1 技術創(chuàng)新的定義 175
10.2 趨勢感知 176
10.2.1 趨勢感知的領域 176
10.2.2 應用趨勢感知 177
10.3 業(yè)務融合 178
10.3.1 注意客戶咨詢中的趨勢 178
10.3.2 獲得客戶反饋 178
10.3.3 分析客戶反饋 179
10.3.4 何時要對趨勢保持警惕 179
10.3.5 何時接受趨勢 180
10.4 戰(zhàn)略性研究 180
10.5 技術創(chuàng)新原則 181
10.5.1 尋求得到批準的最少研究時間和資金 182
10.5.2 下小的賭注 182
10.5.3 定期使用技術搜索瀏覽和跟蹤趨勢 182
10.5.4 建立實驗室區(qū)域 183
10.5.5 運用具備用戶反饋循環(huán)的快速試驗 183
10.5.6 向業(yè)務部門和客戶展示原型 183
10.5.7 在系統(tǒng)邊緣上引入新技術 184
10.6 實用技術創(chuàng)新 185
10.7 小結 186
參考書目 186
第11章 戰(zhàn)略路線圖 187
11.1 戰(zhàn)略路線圖的定義 188
11.2 戰(zhàn)略路線圖的要素 188
11.2.1 戰(zhàn)略要點 188
11.2.2 時序 189
11.2.3 用“泳道”組織 189
11.2.4 依賴性感知 189
11.2.5 直觀表示 189
11.2.6 協(xié)作特性 189
11.2.7 代碼命名 189
11.2.8 上下文相關(個性化) 190
11.2.9 多學科和專業(yè)性 190
11.2.10 優(yōu)先級排定 190
11.2.11 迭代特性 190
11.2.12 更新 190
11.2.13 發(fā)布 190
11.2.14 可計量 190
11.3 路線圖制定策略 191
11.3.1 在白板上用即時貼演示路線圖 191
11.3.2 從終點開始(反向推導) 191
11.3.3 召開研討會 191
11.3.4 將戰(zhàn)略路線圖視為項目 191
11.3.5 捕捉基本指導原則 192
11.4 路線圖制定原則 192
11.4.1 保持簡單 192
11.4.2 與業(yè)務部門合作 192
11.4.3 行動起來 192
11.4.4 尋找樂趣 192
11.4.5 沒有目標的戰(zhàn)略毫無意義 193
11.4.6 識別需要研究和創(chuàng)新的領域 193
11.4.7 識別技能和知識的不足 193
11.4.8 在實現(xiàn)目標的時間上保持靈活 193
11.4.9 勇于嘗試新路徑 193
11.4.10 路線圖與細節(jié)無關,重點是目標和關鍵里程碑 194
11.4.11 追隨能夠激勵你的方向 194
11.5 架構師在路線圖制定中的角色是什么 195
11.6 路線圖可能用于哪些地方 195
11.7 路線圖考慮因素 195
11.8 路線圖社會化 196
11.9 慶祝里程碑的實現(xiàn) 198
11.10 小結 198
參考書目 198
第12章 企業(yè)執(zhí)行 200
12.1 企業(yè)執(zhí)行的定義 201
12.2 企業(yè)執(zhí)行的要素 202
12.2.1 企業(yè)精神 202
12.2.2 承受預期風險 203
12.2.3 交付成果 203
12.3 企業(yè)執(zhí)行原則 204
12.3.1 可承受損失原則 204
12.3.2 檸檬水原則 204
12.3.3 拼花布原則 204
12.3.4 一鳥在手原則 204
12.3.5 飛機駕駛員原則 205
12.3.6 把握時機 205
12.3.7 追隨愛好 205
12.3.8 學會變通 205
12.3.9 以高成本效益的方式在實踐中學習和犯錯 207
12.3.10 尋求反饋 207
12.3.11 尋求可利用機會 208
12.4 以企業(yè)執(zhí)行推動架構 209
12.5 小結 209
參考書目 210
結語 組合所有技能 212