跳轉到主要內容
Category: 法則
Type: 組織理論
Origin: 程式設計, 1957, 梅爾文·康威
Also known as: 康威推論
Quick Answer — 康威定律指出,設計系統的組織受限於產生與其溝通結構相似的設計。由梅爾文·康威於1957年提出,這一原理解釋了為何軟體架構通常反映團隊結構,為何孤島組織會產生孤島系統,以及為何跨職能團隊可以產生更整合的解決方案。

什麼是康威定律?

康威定律是軟體工程和組織設計中的一項基本原則,描述了組織的溝通結構與其建立的系統之間的關係。該定律指出,任何系統都受限於反映建立它的組織的溝通模式。
「設計系統的組織受限於產生與其溝通結構相似的設計。」—— 梅爾文·康威
直覺很簡單:人們能夠溝通什麼,就能夠建構什麼。如果你的工程團隊組織成獨立的 前端和後端組,溝通很少,那麼你的系統很可能會產生相應的分離——在兩者之間有定義的API邊界。如果團隊圍繞業務能力組織,系統也會傾向於反映這種結構。 這一定律對於我們如何設計組織、架構系統以及思考組織變革具有深遠的意義。

康威定律的三層理解

  • 入門: 認識到團隊邊界往往成為系統邊界。如果你想改變系統邊界,就需要不同的團隊結構。
  • 實務: 有意識地運用康威定律——建立與所需系統架構匹配的團隊結構。這有時被稱為「逆康威策略」。
  • 進階: 理解康威定律在多個層面起作用——部門、團隊,甚至個人開發者都有其個人「架構」體現在程式碼中。

起源

梅爾文·康威(出生於1934年)是一位美國電腦科學家和程式設計師,於1957年透過一篇名為「委員會如何發明?」的論文提出了這一概念。該論文後來被精簡並於1967年重新發布為「康威定律」。 康威的洞察來自於觀察委員會和組織如何設計系統。他注意到,最終系統的結構不可避免地反映了建立它的群體的結構。這一觀察此後在各個行業和數十年中得到了無數次驗證。 「康威定律」一詞是由作者諾曼·F·內曼於1968年在一篇出版物中首創的,儘管這一原則完全是康威的原創。

核心要點

1

團隊結構成為系統結構

團隊之間的邊界往往成為系統元件之間的邊界。如果你想改變系統架構,首先從改變團隊組織方式開始。
2

溝通瓶頸成為系統瓶頸

如果兩個團隊很少溝通,它們系統元件之間的介面設計會很差、文件不足且難以更改。
3

跨職能團隊能夠實現整合解決方案

包含多元專業(設計、後端、前端、維運)的團隊比孤島式小組能夠產生更全面的系統。
4

該定律反向也適用

系統架構可以限制組織選擇。既有系統往往在其早已過時之後仍延續舊的組織結構。

應用場景

組織設計

在設計新系統或重組時,將團隊邊界與所需的系統邊界對齊。這就是「逆康威策略」。

架構規劃

在設計系統架構之前,考慮組織架構。存在哪些團隊?他們如何溝通?這揭示了實際可實現什麼架構。

併購整合

在合併或收購之後,意識到系統整合首先需要組織整合。舊的團隊結構會抵制新的系統架構。

維運開關轉型

維運開關和平台工程計劃經常因為忽視康威定律而失敗。你不能在與維運和開發分離的報告鏈中擁有維運開關文化。

經典案例

MIME協議

1974年,梅爾文·康威寫了一篇著名的備忘錄(後來稱為「康威推論」),預測一個聯邦資料共享標準會發生什麼。他寫道:「如果一個聯邦機構的資料處理專案足夠重要,產生的系統將具有聯邦機構式的結構。」 這一預測在IETF開發MIME電子郵件標準時得到了著名的驗證。盡管是一個技術標準,但MIME實際上反映了建立它的公司的組織結構。每家公司的電子郵件系統都有自己的怪癖,標準將這些組織差異編碼到技術協議中。 教訓:當多個組織協作開發一個系統時,最終設計反映了所有組織的溝通結構——這往往是一系列既有模式的拼湊。

邊界與失效場景

法則不适用的場景:
  • 強大的架構領導力: 一位非常有影響力的架構師或技術長有時可以強加一個與組織結構不同的系統結構,至少是暫時的。
  • 外部約束: 監管要求、客戶指令或既有系統整合可以超越組織對架構的影響。
  • 小團隊: 非常小的團隊(不到5-8人)可以保持非正式的溝通,不會施加僵化的結構約束。
常見誤用:
  • 用康威定律作為藉口: 一些團隊聲稱由於團隊結構「無法」建立某些架構——而不嘗試改變結構。
  • 在重組期間忽視它: 組織經常在不考虑對現有系統影響的情況下進行重組,導致架構與團隊不對齊。
  • 過度應用該定律: 並非每個程式碼模組都反映特定的人;有些程式碼確實是通用的。

常見誤區

**錯誤。**該定律描述了一個基本的組織現象,適用於由團體設計的任何系統——建築、流程、政策甚至社會結構。
**錯誤。**它是關於溝通模式,而非匯報路線。兩個向同一經理匯報但不相互交談的團隊仍然會建立孤島系統。
**錯誤。**該定律是描述性的,不是規定性的。如果你有正確的團隊結構,康威定律幫助你建立連貫的系統。關鍵是有意識地設計組織和系統。

相關概念

微服務

一種系統架構風格,系統被分解成小型獨立服務——通常反映小型獨立團隊。

團隊拓撲

一種圍繞系統架構組織團隊的框架,明確有意識地運用康威定律。

跨職能團隊

包含交付價值所需的所有技能的團隊——減少交接並實現整合解決方案。

API設計

系統元件之間的介面往往反映團隊之間的溝通邊界。

有界上下文

在領域驅動設計中,劃分領域模型的邊界——通常與團隊所有權對齊。

架構治理

確保系統架構與組織目標和技術標準一致的機制。

一句話總結

記住:你的系統架構將反映組織的溝通結構——如果你想要特定的系統架構,就要有意識地設計你的團隊。