概述#
當我們想到軟體架構師時,通常首先想到的是他們產出的技術成果。但正如架構遠不只是系統的技術「藍圖」,架構師也遠不只是架構的設計者。本章從更全面的角度探討架構師個人以及架構導向組織必須具備什麼條件才能成功,涵蓋個人能力與組織能力兩個層面。
個人能力:職責、技能與知識#
架構師的能力(competence)建立在三個支柱之上:職責(Duties)、技能(Skills)和知識(Knowledge)。

Figure 25.1: Skills and knowledge support the execution of duties
如 Figure 25.1 所示,技能與知識支持職責的執行。無論架構師多有才華,若無法執行職位所要求的職責,我們不會認為他們是勝任的。具體範例:
- 職責:「設計架構」
- 技能:「抽象思考能力」
- 知識:「模式與戰術(Patterns and Tactics)」
若你想提升個人的架構能力,應遵循三個步驟:(1) 累積執行職責的經驗——學徒制是有效路徑;(2) 提升非技術技能——例如領導力和時間管理;(3) 精通知識體系並保持與時俱進。
技術職責#
架構師的技術職責涵蓋以下主要領域:
架構設計相關:
- 建立架構:設計或選擇架構、建立產品線架構、做出設計決策、識別模式與戰術、分割系統、定義元件的互動方式、建立原型
- 評估與分析架構:評估架構是否滿足使用案例和品質屬性場景、參與設計審查、比較評估技術、執行權衡分析
- 記錄架構:準備對利害關係人有用的架構文件與簡報、記錄軟體介面、制定文件標準
- 維護與轉型現有系統:維護和演進現有系統及其架構、衡量架構債務、將現有系統遷移至新技術平台、檢視 bug 和事件報告
生命週期相關:
- 管理需求:分析功能與品質屬性需求、理解業務與客戶需求、就設計選擇與需求選擇之間的權衡提供建議
- 評估未來技術:分析當前 IT 環境並建議解決方案、與供應商合作影響未來產品
- 選擇工具與技術:進行新技術的可行性研究、從架構角度評估商業工具、制定內部技術標準
非技術職責#
非技術職責的數量之多令人注目。想成為架構師的人必須充分關注教育和專業活動中的非技術面向。
非技術職責分為四大類:
管理相關:
- 支援專案管理:提供專案適當性與困難度的回饋、協助預算與規劃、執行規模估算、識別並安排架構發布、擔任技術團隊與專案經理之間的「橋樑」
- 管理團隊人員:建立「信任顧問」關係、協調、激勵、培訓、分配責任
組織與業務相關:
- 支援組織:培養架構評估能力、參與研發、協助產品行銷、協助招聘
- 支援業務:將業務策略轉化為技術策略、影響業務策略、溝通軟體架構的業務價值
領導與團隊建設:
- 提供技術領導:成為思想領袖、產出技術趨勢分析、指導其他架構師
- 建設團隊:建立開發團隊並使其與架構願景一致、指導開發者和初級架構師、培養團隊成員的專業發展、管理團隊動態
技能#
鑑於職責範圍之廣,架構師需要具備多元的技能:
溝通技能:
- 對外溝通——口頭和書面表達、向不同受眾解釋技術資訊、說服力
- 對內溝通——傾聽、訪談、諮詢和談判能力
人際技能:團隊合作、與上級/下屬/同事/客戶有效協作、啟發創意協作、建立共識、處理和解決衝突
工作技能:
- 領導力:決策能力、主動性和創新能力、獨立判斷力
- 工作量管理:在壓力下工作、同時處理多個複雜任務、有效排定優先順序
- 企業環境中的技能:策略性思考、察覺權力結構與流向、務實地完成工作
- 資訊處理:在保持整體視野的同時注重細節
- 應對突發狀況:容忍模糊性、管理風險、解決問題、適應力和韌性
抽象思考能力:觀察不同事物並找到它們實際上是同一事物的不同實例的能力——這可能是架構師最重要的技能之一
知識#
架構師需要掌握的知識領域包括:
電腦科學知識:
- 架構概念:架構框架、模式、戰術、結構與視圖、參考架構、品質屬性等
- 軟體工程:需求、設計、建構、維護、配置管理、工程管理等
- 設計知識:工具和設計分析技術、物件導向分析與設計、UML 和 SysML
- 程式設計知識:程式語言及其模型、安全/即時/安全等專門程式設計技術
技術與平台知識:硬體/軟體介面、Web 應用、特定作業系統、IT 產業未來方向
組織情境與管理知識:
- 領域知識:最相關的領域和領域特定技術
- 產業知識:最佳實踐和標準、離岸/在岸團隊環境的工作方式
- 業務知識:公司業務實踐、競爭對手的產品和策略、財務模型和預算
- 領導與管理技術:教練、指導和培訓方法、專案管理知識
關於經驗——愛因斯坦說「知識的唯一來源是經驗」,但經驗並非唯一的教師。本書將經驗視為增加架構師知識儲備的途徑,而非獨立維度。如同那個關於如何到達卡內基音樂廳的老笑話——答案是「練習、練習、再練習」。
組織的架構能力#
組織的實踐和結構可以幫助或阻礙架構師執行職責。例如,若組織有架構師的職涯路徑,就能激勵員工成為架構師;若有常設的架構審查委員會,架構師就知道如何安排審查。
組織架構能力的定義#
組織的架構能力是指該組織在個人、團隊和組織層面,培養、使用和維持有效執行以架構為中心的實踐所需的技能和知識的能力,以合理成本產出符合組織業務目標的架構。
組織可以做的事情#
人員相關:
- 聘用有才華的架構師
- 建立架構師的職涯發展路徑
- 透過能見度、獎勵和聲望使架構師職位受到重視
- 建立架構師的認證計劃和導師計劃
- 根據專案成敗獎勵或懲罰架構師
流程相關:
- 建立全組織的架構實踐
- 明確架構師的責任和權限聲明
- 建立架構師溝通和分享資訊與經驗的論壇
- 建立架構審查委員會
- 在專案計畫中包含架構里程碑
- 讓架構師在整個專案生命週期中發揮影響力
技術相關:
- 建立和維護可重用架構及架構相關工件的儲存庫
- 建立和維護設計概念的儲存庫
- 提供集中資源來分析和協助架構工具
成為更好的架構師#
本章以一個建議作結:接受指導,並指導他人。
接受指導(Be Mentored)#
大多數人在一生中不可能獲得成為偉大架構師所需的所有第一手經驗,但可以獲得二手經驗:
- 找到你尊敬的資深架構師,向其學習
- 加入組織的導師計劃,或建立非正式的導師關係
- 加入專業社群——meetup、專業社交網路,不要限制在自己的組織內
指導他人(Mentor Others)#
指導他人不僅是回饋或前付的善意,還有一個「自私」的理由:教授一個概念是檢驗我們是否真正深入理解它的試金石。如果我們教不了它,很可能我們並不真正理解它。好的教師幾乎都會表示,他們從學生的探究性問題和令人驚喜的洞察中學到了很多。
本章小結#
架構師的成功不僅取決於技術能力,還取決於職責的全面執行、技能的持續磨練,以及知識的不斷習得。同樣地,組織的架構能力也深刻影響架構師能否成功。成為好架構師、再成為更好架構師的關鍵在於:持續學習、指導他人,並接受指導。