保持系統小而簡單是值得追求的目標,然而多數成功的系統偏偏違背這一點。
複雜度增長是系統的宿命#
雷曼的軟體演化定律(Lehman’s laws of software evolution)——特別是其中的「持續成長」(continuing growth)——描述了一股演化壓力:當系統被使用、當新的需求或機會被察覺,能力就會不斷被追加。
要能承受、甚至駕馭這股不斷升高的複雜度,就必須同時重視兩個設計場域:
- 系統的設計——關於軟體架構與系統設計的著作已相當豐沛,領域驅動設計(domain driven design)與軟體架構的書目持續增加
- 創造並演化系統的那個組織的設計——這正是本書處理的場域
《團隊拓撲》處理的是軟體開發組織的設計,並且始終把康威定律(Conway’s law)放在視野之內。
從康威定律出發#
康威(Mel Conway)經典論文的結論,是本書最貼切的起點:
「其基本論點是:設計系統的組織,受限而只能產出複製其自身溝通結構的設計。我們已看見,這個事實對系統設計的管理具有重要意涵。首先,我們找到了設計組織的一項準則:設計工作應當依照溝通的需要來組織。」
《團隊拓撲》描述的是團隊結構與互動模式的組織型樣式(organizational patterns),並把「組織施加於系統之上的那股力量」當作首要的設計考量。
隨著系統複雜度上升,建造與演化它的組織所承受的認知負荷(cognitive load)通常也隨之上升。透過職責與邊界清晰的團隊來管理認知負荷,是團隊拓撲取徑在團隊設計上的鮮明重點。
為了取得範圍恰當、有明確界線的職責,就必須尋找系統中自然存在、相對獨立的(子)結構,讓團隊對齊其上。這既將康威定律納入考量,也反過來利用它——去維持具內聚性、邊界清楚、鬆散耦合的結構,這就是本書所述的反向康威操作(reverse Conway maneuver)。
不只是康威論文的延伸#
若本書僅止於此,它會是一篇把康威論文放進當代脈絡的有用註解。但《團隊拓撲》遠不止於此——它辨識出四種團隊樣式,說明各自的成果、形態,以及它們所回應與被形塑的力量:
- 流動對齊團隊(stream-aligned team)是主要的團隊形態。這類團隊為流動而最佳化,具備持續交付價值所需的一切,並能完整回應相應的回饋循環。這意味著系統設計追求的不只是鬆散耦合,而是一種能支撐流動、能降低流動對齊團隊之間依賴與協調需求的分解方式。
- 複雜子系統團隊(complicated-subsystem team)與平台團隊(platform team)為流動對齊團隊減負;後者是前者所提供之子系統或平台能力的內部客戶(涵蓋多個流動團隊在開發、交付、維運各階段的需要)。
- 賦能團隊(enabling team)同樣服務其他團隊,但身分是服務提供者——協助流動對齊團隊學習新技術、探索新技術方案,讓流動對齊團隊得以保持專注,同時提升效能。
一本務實的指南#
史凱爾頓(Matthew Skelton)與派斯(Manuel Pais)投入了可觀的實務經驗,不僅描述這些團隊形態要成功需要什麼,也點出情境上的差異、指出隨之而來的設計意涵,以及應當避開的反樣式(anti-patterns)。他們還相當慷慨地織入相關研究的洞見並提供延伸指引,加上一組案例研究,讓本書的層次更為豐富。
《團隊拓撲》透過細膩鋪陳這些關鍵結構樣式、互動模式(或動態),以及演化上的考量,充實並深化我們對「組織架構」的理解。而正因為它清晰且聚焦,無論你是在組建團隊、協助他們迎向挑戰,或是想讓既有團隊在回應式價值交付上更有效能,它都能作為一份務實的指南。
——魯絲・馬蘭(Ruth Malan),Bredemeyer Consulting 架構顧問