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