編輯推薦
《軟件架構師的12項修煉》不僅幫助軟件開發人員係統地學習如何修煉這12項軟技能,而且還能讓他們進一步理解軟件架構師的角色和本質,使他們最終突破技術的“天花闆”,成為一名閤格的軟件架構師。
海報:
內容簡介
每一位軟件開發人員都有一個架構師的夢,但為何真正的軟件架構師卻寥寥無幾?軟件開發人員更容易在技術上有所積纍和突破,但是技術上的精湛並不足以使你成為一位優秀的軟件架構師。閤格的軟件架構師究竟應該具備哪些能力和素養?《軟件架構師的12項修煉》科學而係統地歸納齣軟件架構師應該具備的完整能力模型,該能力模型呈一金字塔結構,共分為4層:位於層的是技術技能,是軟件架構師的基石,屬於硬技能;從下往上的三層分彆是關係技能、個人技能和商務技能,這些都屬於軟技能。由於硬技能會隨著具體技術領域的不同而韆差萬彆,因此本書假定讀者已經具備瞭這方麵的技能;但其他3大方麵的軟技能卻在每個技術領域都適用,是每一位軟件架構師的必修課,這是本書的核心內容。
為瞭便於認知和實踐,本書將3大方麵的軟技能分為12項:關係技能包含文雅的舉止(在任何環境下都能與人文雅相處的能力)、溝通(與人有效交互的能力)、協商(將事情辦成的能力)、領導力(通過施加影響力將事情辦成的能力)和政治(“政治場閤”與人交互的能力)等5項;個人技能包含透明化(使自我、團隊關係和項目透明化的能力)、激情(激發和保護激情的能力)和語境切換(將注意力迅速切換到新語境並保持專注的能力)等3項;商務技能包括商務知識(讀懂商務語言的能力和瞭解産品與顧客的能力)、創新(如何通過學習和思考來創新的能力)、實用主義(抓住關鍵問題的能力)、認知(認知目標、戰略及閤作夥伴的能力)等4項。
《軟件架構師的12項修煉》不僅幫助軟件開發人員係統地學習如何修煉這12項軟技能,而且還能讓他們進一步理解軟件架構師的角色和本質,使他們最終突破技術的“天花闆”,成為一名閤格的軟件架構師。
目錄
譯者序
前言
緻謝
第一部分 關係技能修煉
第1章 文雅的舉止
1.1 彆人怎樣評價你
1.2 技術之天花闆
1.3 變得文雅、專業的途徑
1.3.1 注重關係甚於爭執孰對孰錯
1.3.2 學會委派
1.3.3 生活是有反作用的
1.3.4 有效溝通之生與死
1.3.5 要正直誠實而不是率直
1.3.6 不要掩蓋問題-它們以後還會冒齣來的
1.3.7 提供專業的服務
1.3.8 忘掉以前的冒犯
1.4 小結
1.5 參考資料
第2章 溝通
2.1 溝通原則
2.1.1 先聽後說
2.1.2 專心緻誌
2.1.3 正麵思考
2.1.4 盡早道歉
2.1.5 不要在缺陷上招緻惱羞成怒
2.2 溝通策略
2.2.1 多說"是",少說"不是"
2.2.2 在銷售過程中建立起信任關係
2.2.3 特殊場閤纔說"不"
2.2.4 抑製想自衛的衝動
2.2.5 傾聽建議來改善閤作
2.2.6 瞭解彆人和自己的溝通需求
2.2.7 纔思敏捷
2.3 與執行官溝通
2.3.1 執行官需要信任、忠誠和連貫性
2.3.2 清晰性甚於完整性
2.3.3 不要讓執行官感到驚訝
2.4 小結
2.5 參考資料
第3章 協商
3.1 協商原則
3.1.1 不要讓人驚訝
3.1.2 不要模棱兩可
3.1.3 委派權威而不是義務
3.1.4 有睏難時尋求幫助
3.1.5 不要掩蓋問題
3.1.6 即使很難,也要堅持做正確的事
3.2 協商策略
3.2.1 傾聽你的內心呼喚
3.2.2 設法同意
3.2.3 不要找分歧
3.2.4 尋找共同點
3.2.5 如果無法達到一緻,就讓所有人稍微不滿吧
3.2.6 將協商作為一種改進措施
3.3 協商前的工作
3.3.1 知道哪些是可協商的
3.3.2 瞭解如何在單位裏遊刃有餘
3.3.3 關鍵決定上尋求閤作氛圍
3.3.4 學習文化
3.3.5 讓彆人明白你的想法
3.4 協商的收尾
3.4.1 捍衛決策的執行
3.4.2 維護架構決定記錄
3.4.3 你有時會贏,有時會輸
3.4.4 從委派中學習
3.5 小結
3.6 參考資料
第4章 領導力
4.1 領導力的原則
4.1.1 建立信任關係
4.1.2 建立共識
4.1.3 建立戰略夥伴關係(通過關係帶來安全)
4.1.4 要身體力行(為你所說的話帶來安全)
4.1.5 感知風險、評估影響、做齣行動(明確風險的清晰度)
4.1.6 適當處理風險:什麼是鞭炮,什麼是原子彈(明確影響的清晰度)
4.2 領導策略
4.2.1 奧卡姆剃刀法
4.2.2 展現可視化信息
4.2.3 領導者要確保事情不跑題
4.2.4 基於環境推銷
4.2.5 隨大流(找機會利用已有的資源)
4.2.6 關注執行官於認知,而非解決衝突
4.3 領導的時機
4.3.1 利用單位的動量
4.3.2 知道何時伸齣援手
4.3.3 允許其他人學習
4.3.4 知道何時該卓爾不群
4.3.5 請求原諒還是徵求允許
4.4 領導彆人
4.4.1 允許彆人奉獻(不要命令)
4.4.2 通過影響力激勵彆人
4.4.3 確保彆人能做主
4.4.4 處理衝突
4.5 小結
4.6 參考資料
第5章 政治
5.1 政治的定義
5.2 政治市場
5.3 政治環境
5.3.1 與公司的戰略方嚮保持一緻
5.3.2 理解你所處的文化環境
5.3.3 及早處理彆人關注的問題
5.3.4 相信你所推銷的東西
5.3.5 不關我的事
5.3.6 關係很重要(與彆人的關係)
5.4 政治原則
5.4.1 寬宏大量
5.4.2 不要為你的價值妥協
5.4.3 光明正大地競爭
5.4.4 透明地操作
5.4.5 你是怎樣的人就怎樣錶現
5.4.6 幫助彆人,不求迴報
5.4.7 認識到生活是反身的
5.5 政治策略
5.5.1 幫助彆人達成其目標
5.5.2 學會享受過程而不是目標
5.5.3 在關鍵之處力爭齣色
5.5.4 願意就低優先級目標妥協
5.5.5 不要對彆人的糟糕舉止采取冒犯的行動
5.5.6 私下處理人際問題
5.6 政治時機
5.6.1 以適時的作風執行事情
5.6.2 今天失利並不代錶明天不會成功
5.6.3 要認識到政治上你不會是常勝將軍
5.6.4 積極參與政治遊戲
5.7 成為一名好的政治人物
5.8 參考資料
第二部分 個人技能修煉
第6章 透明化
6.1 住在玻璃房中的架構師
6.2 透明化的類型
6.3 自我透明化
6.3.1 錶現自然真誠
6.3.2 承認自己的弱點
6.3.3 承認你的實力和興趣
6.3.4 趕在人前與上司溝通
6.4 項目透明化
6.4.1 讓執行官看到你手裏所有的撲剋牌
6.4.2 架構師把透明化和清晰性帶到許多領域
6.4.3 架構師將"發現"變成"收獲"
6.5 關係透明化
6.5.1 該信任時就給彆人信任
6.5.2 你說的話長久不變
6.5.3 道歉錶明你的透明化
6.5.4 學會在做齣反應前傾聽(尋求透明化)
6.5.5 允許彆人對你透明化
6.6 成為一名透明的架構師
6.7 參考資料
第7章 激情
7.1 什麼是激情
7.2 發現激情
7.2.1 如何找到激情
7.2.2 恒心與激情:終極的殺手組閤
7.2.3 崗位上的激情
7.2.4 重新點燃激情
7.3 將激情作為嚮導
7.3.1 等待機遇:它經常在找你,說話非常輕
7.3.2 跟著直覺走
7.3.3 選擇你有激情的領域
7.3.4 改變會督促你前行
7.3.5 缺乏激情會成為你事業上升的天花闆
7.3.6 把難事做好,盡心盡力投入
7.3.7 激情是提供動力的內在燃料
7.4 保護你的激情
7.4.1 忽略批評:這是你的激情、你的認知,不是他們的
7.4.2 不要分神
7.5 今天能做什麼來追求你的激情
7.6 學會投入並享受過程
7.7 成為一名激情四射的架構師
7.8 參考資料
第8章 語境切換
8.1 自我意識語境
8.1.1 專心緻誌
8.1.2 明白你的弱項
8.1.3 生命中不僅僅有工作
8.1.4 多任務工作的效率奧秘
8.1.5 控製你的腎上腺素:慢下來
8.2 架構意識語境
8.2.1 使用"可/有…性"的字眼
8.2.2 尋求適當的耦閤性和內聚性
8.2.3 持續構建你的語境
8.3 "大象"語境
8.3.1 哪些事沒有提到
8.3.2 提問一些難題
8.3.3 早些發齣壞消息
8.3.4 如果他們擁有這個公司,他們會怎麼做
8.4 決策意識語境
8.4.1 他們真的已經把問題解決瞭
8.4.2 他們知道哪些替代方案可行嗎
8.4.3 彆人是否已經權衡過此技術
8.4.4 作為中立的第三方,即便這樣做是個缺點
8.5 交談語境
8.5.1 不要開會和用電子郵件
8.5.2 如果需要,(馬上)讓彆人參與進來
8.6 談話者語境
8.6.1 瞭解你的談話對象
8.6.2 中庸之道
8.6.3 有時要唱紅臉,有時要唱白臉
8.6.4 提供背景信息
8.7 項目語境
8.7.1 提齣預算
8.7.2 帶來實用性
8.7.3 學會在雪崩中衝浪
8.7.4 挑齣專門的資源
8.7.5 你做齣瞭哪些假設條件
8.8 成為一名善於察言觀色、見風使舵的架構師
8.9 參考資料
第三部分 商務技能修煉
第9章 商務知識
9.1 瞭解商務
9.1.1 營銷、財務(投入産齣比)和銷售
9.1.2 考慮拿一個商務學位
9.2 瞭解你的公司
9.2.1 瞭解産品對客戶的價值所在
9.2.2 知道你的公司如何賺錢
9.2.3 瞭解你公司的曆史、文化
9.3 瞭解你的顧客
9.3.1 考慮拜訪顧客、打電話給銷售或者在門麵上幫員工乾活
9.3.2 考慮參與可用性研究,參與産品概念訪談或其他客戶産品評估
9.3.3 考慮使用敏捷技術
9.4 瞭解你的領域
9.4.1 收集領域知識
9.4.2 在商務環境中瞭解你的領域
9.5 幫助公司更好地瞭解技術
9.6 成為一名諳熟商務的架構師
9.7 參考資料
第10章 創新
10.1 創新的定義
10.2 建立邊界條件
10.2.1 找齣邊界條件
10.2.2 在邊界內創新
10.2.3 你會做什麼(假如沒有約束條件,不必故作姿態)
10.2.4 鼓勵彆人思考、開放
10.2.5 應對那些唱反調的人
10.2.6 避開唱反調的人,找個安全的地方來思考
10.3 發展內心準則
10.3.1 順從你的直覺
10.3.2 學會信任自己
10.3.3 認真傾聽客戶的聲音,但要保持自己的認知
10.3.4 聽聽彆人的話(協作)
10.3.5 你今天能邁齣一小步嗎
10.3.6 今天不行沒關係:繼續埋頭苦乾,早晚會成功的
10.4 組閤基本概念
10.4.1 閱讀、閱讀、還是閱讀
10.4.2 瘋狂的主意讓你發現真正的邊界
10.4.3 要有大眼光
10.4.4 創新者的睏難抉擇
10.4.5 創新與集聚:將事情按正確分組整閤在一起
10.4.6 選擇簡潔
10.4.7 簡潔性是知識産權的根本
10.4.8 在著手解決前先思考問題
10.4.9 定義問題
10.4.10 睡覺時思考
10.4.11 戰略問題還是戰術問題
10.5 成為一名能創新的架構師
10.6 參考資料
第11章 實用主義
11.1 實用型架構的定義
11.2 範圍管理
11.2.1 與商務夥伴一起確定特性的優先級
11.2.2 幫助執行官做齣正確決策
11.2.3 處理不確定性
11.2.4 有些時候,你隻需要一個概念就能開始乾瞭
11.2.5 使用敏捷過程作為一種實用主義方法
11.3 風險管理
11.3.1 區分可能性和可行性
11.3.2 對於每個決定,都自問一些重要的問題
11.3.3 應對可能的風險
11.3.4 架構刺探
11.3.5 與運營人員一起確定效率
11.3.6 觀察其他項目,決定有哪些地方是可犧牲的
11.4 溝通
11.4.1 記錄下大傢一緻同意的決議
11.4.2 提供多種替代方案,並推薦其中一種
11.4.3 用透明性拉平期望值
11.4.4 發展經驗方法來估量項目
11.5 成為一名實用主義的架構師
11.6 參考資料
第12章 認知
12.1 認知之定義
12.2 找尋和創立引人注目的目標
12.2.1 發現認知
12.2.2 從混沌現實編造齣有說服力的故事
12.2.3 剋服障礙
12.3 開發與建立戰略路綫圖
12.3.1 將路綫映射至認知
12.3.2 製定支持認知的戰略
12.4 確定誌同道閤的夥伴
12.4.1 認知需要齊心協力
12.4.2 認知要求有關鍵的利益相關者
12.4.3 認知需要資金支持
12.5 實踐認知
12.5.1 將認知當做增加投入産齣比的戰略
12.5.2 使用認知灌輸目標感
12.5.3 在項目評估時就應用認知
12.5.4 采用支齣信封(界定認知範圍)
12.6 成為一名有遠見的架構師
12.7 參考資料
……
精彩書摘
第一部分
Part 1 關係技能修煉
“技術”不能讓一個企業運轉起來,而“關係”能。
—Patricia Fripp
成功公式的一個最重要因素就是要明白如何與人相處。
—美國總統西奧多·羅斯福
我確信再也沒有什麼事情比雇傭人並開發人的潛能更重要瞭。最終,你是靠人來決勝,而不是靠戰略。
—Allied Signal首席執行官Larry Bossidy
如果你想讓某個人與你為敵,隻要告訴他“是你錯瞭”。這個辦法屢試不爽。
—Henry C. Link
交談的真正藝術在於不僅在正確的地方說齣正確的事情,還在於衝動的時候不要說齣錯誤的事情。
—英國作傢Dorothy Nevill女士
本書的第一部分注重講述架構師的五個必備關係技能。第1~5章緻力於討論原理、戰略及其他領域,諸如與執行官交互,以使你更有效率地管理架構關係。
第1章:文雅的舉止。講述你要在任何處境下都應保持與彆人文雅相處。
第2章:溝通。講述與他人有效交互的能力。
第3章:協商。討論將事情辦成的能力。
第4章:領導力。論述如何施加影響來將事情辦成。
第5章:政治。講述在政治場閤與彆人交互的能力。
……
前言/序言
前言:
軟的東西總是比硬的東西還硬。
—美國企業傢、百事公司副董事長羅傑·恩裏科
在開始閱讀本書前,我希望你準備保持一種開放的心態,並渴望對日常生活嘗試某些新的方法。
我叫Dave Hendricksen,是Thomson Reuters公司的一名軟件架構師。我的工作主要是産生智力法規信息,包括在Westlaw.com網站上從法律、法規及知識産權材料的數據捕獲到數據顯示過程。我和一位漂亮女士已經結
婚22年瞭。我們育有兩個孩子,養著一隻貓和一條狗,另有一個魚塘。
作為一名吃技術飯的人,我經常覺得我自己和“平常”世界的其他人不太一樣。分析式思維、關注於解決問題、構建事務、連續幾個鍾頭玩遊戲,所有這些對我來說再正常不過瞭。我喜歡學習新東西。對我而言,上學總是很有意思。我擁有數學和聖經專業的學士學位,以及兩個碩士學位—一個是計算機科學,另一個是技術管理。
我喜歡努力工作,渴望付齣任何辛勞以便按時完成項目。我喜歡聽老闆說:“乾得真棒,Dave!”當然瞭,我的想法是這樣的:工作齣色,獲得晉升。生活畢竟在某種程度上有些恐怖,至少在從技術進入管理時。總是有道看不見的屏障阻擋著大批有纔能的人往上爬,或者在事業上有進一步的發展。這道神秘的屏障反映齣人們軟技能的缺乏,它默默地阻礙著那些人往更高的階梯前進。
我寫這本書的目的是幫助你學習必備的軟技能,這些技能是你要修煉為一名軟件架構師所必須掌握的。
本書假定你已經有瞭成為架構師必備的技術技能,因此本書不會關注此類技能。換句話說,本書著重於闡述對作為架構師日常行為非常關鍵的十二項必備軟技能。這些技能對於有技術背景的人們來說往往是最有挑戰性的技能,也是成為優秀的軟件架構師必須修煉的技能。
本書的這十二項技能按三個部分來組織:關係技能、個人技能和商務技能。這種分類基於相關的優先順序,即如果你沒有關係技能,其他兩組技能就不用提瞭。倘若你與彆人或單位中的若乾部門相處不好,你不大可能被提拔到架構師的位置,或者較長時間待在這個位置上。類似地,如果你沒有必需的個人技能,商務技能也會無從談起。最後,盡管所有這些領域都很重要,但從優先次序來看,假如你沒有首先掌握必備的關係技能,商務技能便不會達到你期望的效果。我將這些技能看做一個金字塔,正如下圖所錶達的那樣。
架構師的必備技能
希望你喜歡閱讀本書,並且學到能使你成為架構師的新知識,這些新知識還供你成為架構師後改進技能,或者更好地理解架構師的本質和角色。如果你有任何問題或評論,盡管給我寫郵件好瞭,我的郵箱是。
祝你過得愉快!
—Dave
深入探索係統之魂:構建堅不可摧的軟件基石 在瞬息萬變的數字時代,軟件不再僅僅是代碼的堆砌,更是驅動業務增長、革新用戶體驗、乃至重塑行業格局的核心引擎。而在這場激烈的技術競賽中,軟件架構師扮演著至關重要的角色,他們是構建復雜係統、規劃未來發展、平衡技術取捨的掌舵者。本書並非一本教你如何“修煉”成為軟件架構師的指南,更不是對某種特定技術或方法的簡單羅列。它旨在引領讀者深入理解軟件架構的本質,探尋那些能夠幫助我們構建齣真正具備韌性、可擴展性、可維護性,並能長久適應變化的優秀軟件係統的深層智慧與核心原則。 破譯復雜性:係統思維的基石 現代軟件係統日益龐大、復雜,涉及的技術棧也愈發多樣。在這種環境下,僅僅掌握孤立的技術知識已不足以應對挑戰。本書將從“係統思維”這一根本齣發,引導讀者學會如何將龐雜的軟件視為一個相互關聯、動態變化的有機整體。我們將剖析理解係統邊界、識彆關鍵組件、洞察組件間交互、以及預見係統演進的思維模式。這並非抽象的概念,而是通過大量實際案例,展示如何運用係統思維來分解復雜問題,找齣瓶頸,並做齣更明智的架構決策。我們將探討“全景視角”的重要性,即如何超越局部優化,從整體效益齣發,權衡利弊,做齣對整個係統最有益的選擇。 堅實的地基:質量屬性的優先級排序 優秀的軟件架構並非一蹴而就,它需要對“質量屬性”有著深刻的理解和精妙的平衡。性能、安全性、可維護性、可伸縮性、可用性……這些並非獨立存在的概念,它們之間常常存在著此消彼長的博弈。本書將深入探討如何識彆並定義項目的關鍵質量屬性,並教授讀者如何根據業務需求和技術限製,對這些屬性進行優先級排序。我們將分析不同質量屬性之間的權衡關係,以及在設計決策中如何巧妙地妥協與取捨。例如,為瞭極緻的性能,我們可能需要犧牲一部分代碼的可讀性;為瞭更高的安全性,我們可能需要增加額外的驗證流程,從而影響用戶體驗。本書將提供一套框架,幫助您在這些復雜的權衡中找到最優解。 設計的藝術:模式與原則的融會貫通 軟件架構設計並非憑空想象,而是建立在無數前人經驗總結齣的設計模式和原則之上。本書將迴顧並深入解析那些曆久彌新、在各種場景下都展現齣強大生命力的設計模式,例如微服務架構、事件驅動架構、領域驅動設計等。但我們不會止步於簡單的“套用模式”,而是強調對這些模式背後意圖和適用場景的理解。更重要的是,本書將重點探討“設計原則”的重要性,如“單一職責原則”、“開閉原則”、“依賴倒置原則”等。我們將闡述這些原則如何指導我們編寫更清晰、更靈活、更易於擴展的代碼,以及它們如何成為構建高質量軟件的基石。理解這些原則,能夠幫助我們在麵對新問題時,能夠靈活運用,創造齣最適閤的解決方案,而非僅僅照搬已知模式。 應對變化:架構演進與生命周期管理 軟件的生命周期是一個持續演進的過程,需求會變化,技術會迭代,業務會拓展。一個僵化的架構注定會被時代淘汰。本書將重點關注架構的演進和生命周期管理。我們將探討如何設計齣具備“彈性”的架構,能夠輕鬆地適應未來的變化,而無需進行顛覆性的重構。這包括模塊化設計、接口定義、技術選型策略,以及如何通過版本管理、灰度發布等方式,平滑地引入新的功能和技術。我們將深入分析“技術債務”的概念,以及如何識彆、管理和償還技術債務,以防止其侵蝕係統的健康。同時,本書還將討論如何製定有效的架構治理策略,確保整個開發團隊在一緻的架構願景下協同工作,並能夠及時響應外部環境的變化。 溝通的橋梁:跨職能協作與影響力構建 軟件架構師並非孤軍奮戰,他們的工作需要與産品經理、開發團隊、測試團隊、運維團隊,甚至是業務部門的領導進行頻繁而有效的溝通。本書將強調“溝通”這一被低估但至關重要的能力。我們將探討如何用清晰、準確的語言嚮不同背景的聽眾解釋復雜的架構概念,如何通過可視化工具(如架構圖、流程圖)來傳達設計意圖,以及如何建立信任、爭取支持,並在團隊中推廣架構理念。我們將學習如何有效地參與需求討論,理解業務的真正痛點,並將其轉化為可落地的技術方案。此外,本書還將探討如何構建個人影響力,成為團隊中值得信賴的架構決策者和技術引領者。 未來的視野:趨勢洞察與持續學習 軟件技術的發展日新月異,新的概念、工具和範式層齣不窮。本書並非止步於當前的技術現狀,而是鼓勵讀者保持對未來趨勢的敏銳洞察。我們將探討雲計算、容器化、Serverless、人工智能等新興技術對軟件架構的影響,並分析它們可能帶來的機遇與挑戰。更重要的是,本書將強調“持續學習”的重要性,鼓勵讀者建立終身學習的習慣,不斷吸收新的知識,更新自己的技術視野,並保持對技術演進的積極探索精神。我們將提供一些方法,幫助讀者建立有效的學習路徑,並從海量的信息中篩選齣真正有價值的內容。 總結: 本書旨在為每一位渴望在軟件開發領域取得更深層次成就的工程師,提供一種超越具體技術細節的、更具戰略性和前瞻性的視角。它不是一本速成手冊,而是一次對軟件架構本質的深度探索,一次對構建卓越係統的智慧沉澱。通過本書,您將不僅僅學會“做什麼”,更會理解“為什麼這麼做”,並獲得一套強大的思維工具和方法論,以應對未來軟件係統設計與演進中的種種挑戰,最終成為那個能夠塑造堅實、靈活、且充滿生命力的軟件基石的創造者。