概述#

成為架構師需要大量的時間和努力,但成為架構師之後,管理職涯發展同樣具有挑戰性。技術世界變化極快——Neal 的前同事曾是世界級的 Clipper 專家,但當 Clipper 消亡時,那些龐大的知識也變得毫無用處。

每位架構師都應該:

  • 持續關注技術和業務相關的資源
  • 向同事和專家詢問他們用什麼管道保持與時俱進
  • 每天撥出時間利用這些資源維持技術廣度(technical breadth)

20 分鐘法則(The 20-Minute Rule)#

如第 2 章所述,技術廣度對架構師比技術深度更重要。但維持廣度需要投入時間和精力。作者提出 20-minute rule

  • 每天至少花 20 分鐘學習新事物或深入了解某個技術主題
  • 利用 InfoQ、DZone Refcardz、ThoughtWorks Technology Radar 等資源
  • 花 20 分鐘去搜尋那些你不熟悉的術語和概念——將「things you don’t know you don’t know」轉變為「things you know you don’t know」

何時執行?#

  • 強烈建議在早晨第一件事就做 — 拿了咖啡後、查看 email 之前
  • 午餐時間或下班後往往行不通——午餐越來越短,晚上有家庭和個人事務
  • 一旦開始查看 email,就會被各種事情分心,20 分鐘就永遠不會發生
  • 提早到辦公室,比其他人先開始這 20 分鐘的學習

20 分鐘看似不多,但持之以恆的效果驚人。每天 20 分鐘,一年就是 120 多小時的學習時間,足以讓你對技術趨勢保持敏銳。

Figure 24.1: The 20-minute rule

建立個人技術雷達(Developing a Personal Radar)#

技術泡泡的危險#

當一個開發者深度投入某項技術時,會活在一個技術泡泡(technology bubble)中——一個 memetic bubble(模因泡泡),同時也是一個 echo chamber(迴聲室)。由供應商創造的泡泡特別危險,因為你在泡泡內部永遠聽不到誠實的評價。泡泡最大的危險是當它開始崩塌時,身在其中的人往往到太遲才察覺

ThoughtWorks Technology Radar#

ThoughtWorks Technology Advisory Board(TAB)定期發布 Technology Radar,這是一個評估技術風險和機會的工具。

四個象限(Quadrants):

  • Tools — 軟體開發工具,從 IDE 到企業級整合工具
  • Languages and Frameworks — 程式語言、函式庫和框架
  • Techniques — 軟體開發實踐,包括流程、工程實踐和建議
  • Platforms — 技術平台,包括資料庫、雲端供應商和作業系統

四個環(Rings),由外到內:

  • Hold — 暫緩使用。最初的含義是「太新、無法評估」,但已演變為「不建議在新開發中使用」的意思。現有專案可以繼續用,但新專案應三思
  • Assess — 值得探索。投入一些精力(如 spike、研究專案、conference session)了解它是否對組織有影響
  • Trial — 值得嘗試。在低風險專案中試用,讓架構師和開發者真正理解這項技術
  • Adopt — 強烈推薦採用。ThoughtWorks 認為業界應該擁抱這些技術

Figure 24.2: A sample ThoughtWorks Technology Radar

建立個人版 Radar#

將 ThoughtWorks Radar 的概念應用到個人層面時,建議調整四個環的含義:

  • Hold — 不僅是要避免的技術,也包括你試圖戒掉的習慣(例如:持續瀏覽低價值的論壇八卦)
  • Assess — 你聽說過但還沒時間深入了解的技術,作為未來研究的暫存區
  • Trial — 正在積極研究和開發的技術,例如在程式碼庫中進行 spike experiment
  • Adopt — 你最感興趣、最想用來解決問題的技術和最佳實踐

架構師應該像管理金融投資組合一樣管理自己的技術組合——多元化!選擇一些市場需求大的主流技術,同時也嘗試一些有潛力的新技術。不要把所有雞蛋放在同一個籃子裡。

Open Source Visualization Bits#

ThoughtWorks 在 2016 年釋出了一個開源工具,讓技術人員可以使用 Google Spreadsheet 作為輸入,自動產生 radar 的 HTML 5 視覺化。建立 radar 最重要的不是產出的圖,而是過程中引發的思考和對話

使用社群媒體(Using Social Media)#

Andrew McAfee 在 Enterprise 2.0 一書中提出了關於社交網路的有趣觀察。人際關係網絡可分為三層:

  • Strong Links(強連結) — 家人、同事、密友。你知道他們昨天午餐吃了什麼
  • Weak Links(弱連結) — 偶爾見面的人、遠親、點頭之交。社群媒體出現前很難維持聯繫
  • Potential Links(潛在連結) — 你還沒認識的人

McAfee 最有趣的發現是:一個人的下一份工作機會更可能來自弱連結而非強連結。因為強連結群體內的資訊高度重疊,而弱連結能提供超出你日常經驗的建議和機會。

Figure 24.3: Social circles of a person's relationships

架構師應該利用社群媒體來:

  • 在社群媒體上找到你敬佩的技術專家並追蹤他們
  • 建立一個關於新技術和趨勢的資訊網絡
  • 透過弱連結擴展技術視野

參加技術研討會與持續練習(Conferences and Practice)#

參加研討會#

技術研討會是了解新趨勢、建立人脈的好機會。即使無法親自出席,許多研討會也有線上影片可供觀看。

練習與資源#

How do we get great designers? Great designers design, of course.

— Fred Brooks

So how are we supposed to get great architects, if they only get the chance to architect fewer than a half-dozen times in their career?

— Ted Neward

練習是精進任何技能的不二法門,架構也不例外。作者鼓勵架構師:

  • 使用本書配套網站上的 architecture katas 來練習架構設計
  • 同時磨練個別技術的廣度和架構設計的能力
  • 關於 kata 的常見問題「有沒有標準答案?」——答案是沒有

There are not right or wrong answers in architecture — only trade-offs.

架構中沒有對錯,只有取捨。重要的不是畫出了什麼拓樸圖(how),而是為什麼做出這些選擇(why)以及考慮了哪些取捨。

作者的最後忠告:持續學習、持續練習,然後——go do some architecture!