架構師如何賦能程式設計師團隊? - esilva
本文啟發來自 Gregor Hohpe的一篇文章(關於架構策略的參考,有許多關於此主題的著作和書籍)。
在該文中,Gregor 涉及一個非常重要的主題:我們可以採用的拓撲(模型/形式)來處理我們組織團隊中的架構。
這是許多組織處理不當或採取靜態/極端方法的主題,即:
- 在極端情況下,象牙塔架構師負責指揮和控制團隊內外的所有“重要決策”(格雷戈爾模型中的“仁慈的獨裁者”) ;
- 或者另一個極端,沒有架構師(“因為我們很敏捷”),因此我們不關心團隊中的架構紀律(Gregor 模型中的“隱式架構”)。
非常重要的是,我們在團隊中處理架構的方式也將隨著團隊和周圍環境的變化而發展。
下面我分享一些關於 Gregor 分享的模型的筆記和見解;接近架構的拓撲結構;進化模式;然後是關於架構範圍的一些見解和註釋。
團隊內架構
Gregor 分享的模型特別強調“團隊範圍架構”,即:如何在團隊擁有的系統中處理架構。所呈現的模型具有四種基本拓撲。可能會有變化和組合,但我認為這四種拓撲提供了一個很好的基礎。
- #1:仁慈的獨裁者”
架構師“告訴團隊該做什麼”(與團隊的單向互動)。這是一個相當經典的建築師定義/原型(我什至會說我在談論建築師時從人們那裡聽到的最常見的聯想之一)。正如 Gregor 所說,“應謹慎使用此模型”,並且很可能僅在短時間內對架構成熟度較低的團隊和組織有意義。即使真的需要它,我也會說在儘可能短的時間內保持這種拓撲結構。然後將元素放置到位以移動到#2(以及何時/如果可能的話)#3。當此拓撲用於其他目的時(例如:控制重要決策),
- #2:Primus inter pares(架構師 - 作為功能 - 在團隊中)
架構師成為另一個團隊成員 - 同行 - 在團隊中。該模型修復了模型#1 中存在的單向互動模式。這使得架構活動在團隊中更加明確。這意味著團隊將有更多的能力來應對和解決他們在日常活動中面臨的“重要決策”,這應該會帶來更高的敏捷性和適應性(或者正如Michael Nygard 所說的“更高的機動性”) 對他們的環境做出反應。雖然這個模型確保架構在團隊中得到明確的解決,但它仍然定義了只有團隊中的一個人專注於架構(這裡會有灰色區域——因為大多數時候人們都參與架構,但這個模型定義了一個架構師在團隊中發揮作用,這會產生某些動態,例如團隊中有一個架構決策的守門人)。因此,我們可能也不想“永遠”保持這種模式。
- #3:沒有架構師的架構(多個/所有團隊成員之一的架構師角色)
沒有人具有架構師的功能,多人(甚至團隊中的每個人)扮演架構師的角色。該模型減輕了模型 #2 可能存在的“中心化瓶頸”。這是一個強大的地方,因為團隊可以擴充套件他們處理架構的方式。我之前講過這個並稱之為“每個人的架構師”,雖然這是一個難以實施的模型,但純粹的努力(並確保每個人都關心“重要決策”)能夠建立強大的團隊最終共享架構所有權。
- #4“隱式架構”
(沒有人具有架構師的功能,也沒有架構師的角色):這是一個危險的領域,因為沒有人在看架構(即使顯然有)。這(以及混合模型 #1 的模型)是一個相當普遍的模型,尤其是在錯誤解釋敏捷原則的團隊和組織中。
進化模式
我真正喜歡這篇文章的另一部分是 Gregor 進入“進化模式”這一事實。承認這一點至關重要,因為我們的架構方法取決於許多不斷變化的因素(團隊成熟度、組織文化、周圍系統等)。這對於確保我們的架構方法不斷髮展以更好地支援團隊及其環境中的新條件至關重要(即:我們的架構方法與組織中正在發生變化的其他動態不衝突)。
Gregor 有兩種常見的模式(但可能還有其他模式):
- 右移:當我們從團隊之外的架構師(例如:首席架構師)開始時,例如架構被長期忽視時,就會發生這種情況;但隨後我們採取措施將架構師(職能)整合到團隊中;一旦團隊成熟,多人可以在團隊中扮演架構師的角色。在這種模式中,Gregor 建議停留在模型 #3,即:不要走得太遠,沒有明確地處理團隊中的架構。
- Bounce Back:當“Shift to Right”模式不成功時會發生這種情況,即:我們嘗試在團隊中有一個架構師,或者甚至團隊中有多個人扮演架構師的角色,但效果不佳. 在那些時刻,我們可能會“恢復”讓外部經驗豐富的架構師明確為團隊/與團隊一起解決架構問題。這可能又是一個臨時活動,以解決在先前迭代中不起作用的點。這聽起來像是倒退了一步,但在一個複雜的系統中,您不知道系統將如何反應,因此您必須採取行動來學習(正如Cynefin 框架所提倡的那樣)。
還有其他進化模型,如果我們考慮團隊周圍的範圍,這將變得更加明確。觀察這些演化模式不僅很重要,而且在團隊所屬的系統中“連線範圍”也很重要——這是架構的關鍵。在下一節中,我將提供有關此特定主題的一些意見。
架構作用域
檢視團隊範圍周圍的範圍以全面解決團隊範圍並將其連線到周圍的範圍(和系統)是關鍵。
事實上,這是由 Gregor 在其他關於他的“建築師電梯”比喻的文章中廣泛發展的——即:“將頂層公寓與機房連線起來”。也在文章“系統級架構設計存在意義:極簡主義架構 ”中
賦能架構師
將這個特定的團隊定義為“結構賦能團隊”。原因來自這樣一個事實,即一般來說,這是一個賦能團隊(根據書籍定義)存在的時間有限。另一方面,架構團隊往往會無限期地存在。
這種“架構作為賦能團隊”的定位也意味著我們在組織中有一個架構師網路,具有明確的使命(使能團隊),他們可以在領域知識上進行協作,也可以交流做架構的知識,從而培養架構師的技能。在組織中做架構(在架構師之間,以及與他們合作的團隊)。這將意味著我們處理架構的方式也將不斷髮展(例如:新人加入,新挑戰出現等)並且我們明確關注迎合架構(即使在特定時刻我們有不那麼明確的架構師職能) - 例如:如果這只是文化的一部分,我們需要正式的架構師在場)。
例如,一個人可能具有架構師職能,在多個相關團隊中工作,這些團隊共同構建產品或為客戶的共同價值流做出貢獻(例如:公司產品組合中的產品)。下圖描繪了這個想法(注意:這是一個簡化的表示,旨在展示架構師在此拓撲中的可能定位方式)。
正如我們在圖中看到的,這個人(在這種情況下我稱她為“產品架構師”)在“產品範圍”(圍繞團隊範圍的系統)工作。她將與團隊(以及領域以下範圍)在產品範圍的架構上保持一致。此外,她還可以在指導和支援每個團隊在團隊範圍內(存在不同的應用程式)處理架構方面發揮作用。因此,這成為 Gregor 共享的拓撲 #1 版本的一種升級(具有雙向互動),但同時團隊(應該)負責團隊自己範圍架構(即:使用拓撲#3,或在某些情況下#2)。這種組合可以接近解決架構所需的不同範圍。
相關文章
- 程式設計師團隊如何防止內卷化?程式設計師
- 程式設計師應知——團隊精神程式設計師
- 程式設計師,如何從開發轉型做架構師?程式設計師架構
- Java程式設計師如何成為優秀的架構師Java程式設計師架構
- 人人都是架構師-清晰架構 | 京東物流技術團隊架構
- 程式設計師、技術主管和架構師程式設計師架構
- 架構師與程式設計師的區別架構程式設計師
- 程式設計師與架構師的區別程式設計師架構
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 前豆瓣首席架構師:如何保持團隊的技術氛圍?架構
- 阿里架構師Peter老師講述Java程式設計師→架構師所需要掌握的技能阿里架構Java程式設計師
- 10年資深架構師分享 | 普通程式設計師向架構師進階之路架構程式設計師
- 技術領導力 程式設計師如何才能帶團隊 文摘 (一)程式設計師
- 架構師日記-深入理解軟體設計模式 | 京東雲技術團隊架構設計模式
- 從程式設計師到架構師,有捷徑嗎?程式設計師架構
- 架構師害怕程式設計師知道的十項技能架構程式設計師
- 程式設計師成長路上的團隊修煉之道程式設計師
- Medium開發團隊談架構設計架構
- 架構師日記-從程式碼到設計的效能最佳化指南 | 京東雲技術團隊架構
- 程式設計師如何提升管理思維,從個人到團隊的轉變?程式設計師
- 《程式設計師必讀之軟體架構》作者Simon Brown:架構師與程式設計師的區別(圖靈訪談)程式設計師架構圖靈
- 專業團隊支援、全網流量扶持,《思否程式設計技術講師賦能計劃》啟動 | 首期招募限 20 位^*^程式設計
- Java程式設計師如何高效學習,才能加快成為架構師的步伐Java程式設計師架構
- 架構師給程式設計師的一封信架構程式設計師
- 程式設計師、架構師…,IT職業都有哪些晉升方向?程式設計師架構
- 程式設計師與架構師之間的差距很大嗎?程式設計師架構
- 程式設計師嘛,先做個好架構師再說程式設計師架構
- 每個程式設計師都應該成為架構師程式設計師架構
- 從程式設計師到架構師的方法與邏輯程式設計師架構
- 軟體架構師不等同於資深程式設計師架構程式設計師
- 程式設計師是否加入創業團隊的一點思考程式設計師創業團隊
- 系統架構設計師學習(二)系統架構設計師緒論架構
- 如何提高團隊程式設計水平程式設計
- 從 Etsy 團隊看敏捷架構的設計敏捷架構
- 程式設計師,真有必要了解架構嗎?程式設計師架構
- Java從程式設計師到架構師其實並不難Java程式設計師架構
- java架構師之路:JAVA程式設計師必看的15本書Java架構程式設計師
- Java進階之路——從初級程式設計師到架構師Java程式設計師架構