> ## Documentation Index
> Fetch the complete documentation index at: https://meta.niceshare.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 蓋爾定律

> 蓋爾定律指出每個有效的複雜系統都是從有效的簡單系統演化而來。了解這一原則如何應用於技術、組織和系統設計。

<Info>
  **類別**：定律<br />
  **類型**：系統設計定律<br />
  **起源**：系統論，1975年，約翰·蓋爾<br />
  **別名**：蓋爾法則、複雜系統演化
</Info>

<Note>
  **快速回答** —
  蓋爾定律是一個原則，指出每個有效的複雜系統都是從有效的簡單系統演化而來。這一定律由約翰·蓋爾於1975年提出，表明複雜的系統最終是脆弱的並傾向於失敗，而已被證明有效的簡單系統為開發提供了更可靠的基礎。
</Note>

## 什麼是蓋爾定律？

蓋爾定律提出，複雜的、全功能的系統不能從零開始設計或開發——它們必須從更簡單的有效系統演化而來。核心洞察是，成功的複雜系統不是透過全面的規劃做到這一步的，而是透過迭代開發實現的，在每一階段都建立在已經工作的基礎之上。

> 「一個有效的複雜系統總是被發現從之前是一個有效的簡單系統演化而來的。」

這一原則挑戰了試圖預先設計完美系統的方法。相反，它表明通往複雜、有效系統的道路需要經過經過驗證的簡單性。每個成功的複雜系統都是更簡單祖先的後代，這些祖先已經解決了核心問題。

### 蓋爾定律的三層理解

* **入門**：在構建新東西時，從解決核心問題的最簡單版本開始。不要試圖立即構建完整解決方案——首先證明基本概念有效。
* **實踐**：在評估提出的解決方案時，評估它們是否從有效的更簡單版本演化而來。「設計」出來的複雜系統而非演化出來的往往以意想不到的方式失敗。
* **進階**：理解演化需要選擇壓力。簡單系統透過在現實條件下的迭代成為複雜系統——而非透過假設規劃。

## 起源

**蓋爾定律**歸功於**約翰·蓋爾**（John Gall），一位系統論作者，在其1975年出版的《系統論：系統如何真正運作及如何失敗》一書中提出。蓋爾正在分析大規模系統——無論是技術還是組織——為何如此頻繁地失敗，他觀察到成功的複雜系統背後總是有效簡單性的歷史。

這一定律來自蓋爾對各個領域系統失敗的研究，包括軍事、政府和企業組織。他的關鍵洞察是，架構師和設計師經常認為他們可以計劃所有意外，但最終現實世界的複雜性擊敗了這種全面設計。唯一生存下來的系統是那些透過實際使用被測試、改進和擴展的系統。

## 核心要點

<Steps>
  <Step title="複雜系統需要經過驗證的基礎">
    你不能從概念跳到複雜的實現。每一層複雜性必須建立在已經工作的一層之上。沒有這個基礎，你就是在沙子上建房子。
  </Step>

  <Step title="在複雜領域演化勝過設計">
    在具有許多相互依賴變量的系統中，演化開發優於預先設計。真實使用的選擇壓力揭示了規劃無法預見的問題。
  </Step>

  <Step title="簡單不是階段，而是基礎">
    簡單的版本不僅僅是原型——它是必須工作的核心。所有附加的複雜性必須服務而不是破壞這個經過驗證的基礎。
  </Step>

  <Step title="失敗是資訊性的">
    當複雜系統失敗時，問題通常不是複雜性本身，而是缺乏一個被適當測試的有效簡單前體。
  </Step>
</Steps>

## 應用場景

<CardGroup cols={2}>
  <Card title="產品開發" icon="box">
    成功的產品通常從一個解決一個問題的最小可行產品（MVP）開始。在證明核心之前添加功能會產生在負載下失敗的脆弱產品。
  </Card>

  <Card title="軟體架構" icon="code">
    在設計軟體系統時，從滿足當前需求的最簡單架構開始。只有在实际使用模式證明必要時才添加複雜性。
  </Card>

  <Card title="組織設計" icon="sitemap">
    當組織建立在已經工作的結構上時，組織演化得更成功。重大重組經常失敗，因為它拋棄了經過驗證的模式，轉而支持未經測試的設計。
  </Card>

  <Card title="創業策略" icon="rocket">
    新創公司首先找到簡單、經過驗證的商業模式，然後擴大複雜性，從而取得成功。那些在產品-市場匹配之前籌集大量資金來構建複雜系統的公司經常失敗。
  </Card>
</CardGroup>

## 經典案例

### 萬維網的演化

萬維網提供了一個引人注目的蓋爾定律實際例證。蒂姆·伯納斯-李在1989年的原始設計非常簡單：一個由超連結連接的文檔系統，透過一個基本瀏覽器訪問。

這種簡單性——文檔和連結——是「有效的簡單系統」。它解決了一個特定問題：在 CERN 的不同電腦之間共享資訊。這個系統非常簡單，以至於可以在一個研究機構內實現、測試和證明。

從這個簡單的基礎，萬維網演化 了。添加了額外的層：JavaScript 的圖像和互動性、伺服器端編程的動態內容、用戶身份驗證、電子商務、社交功能和行動訪問。每一層都建立在有效的基礎之上。

關鍵的是，如果原始萬維網從一開始就想包含所有這些功能，它就會失敗。複雜性將是無法管理的，設計決策將在沒有現實世界反饋的情況下做出，系統將因自身重量而崩潰。相反，萬維網一層一層地演化，每一添加在嘗試下一層之前都被證明是有效的。

今天，萬維網比伯納斯-李最初的願景複雜得無法想象——但這種複雜性是透過演化獲得的，而非預先設計的。

## 邊界與失效場景

蓋爾定律有重要的局限性：

1. **並非適用於所有領域**：有些系統可以從零開始成功設計——尤其是當需求被很好地理解且領域受到限制時。

2. **演化需要正確的條件**：驅動演化的「選擇壓力」必須是真實的和有資訊的。在快速變化的環境中，演化可能沒有時間在工作之前條件就發生變化。

3. **簡單可能是不夠的**：有些問題真正需要從一開始就使用複雜的解決方案。關鍵在於區分過早的複雜性和必要的複雜性。

4. **路徑依賴很重要**：一旦系統以特定方向演化，改變該方向變得越來越困難。早期決策約束未來選項。

## 常見誤區

<AccordionGroup>
  <Accordion title="誤區：簡單意味著原始">
    蓋爾定律不是說簡單更好——而是說簡單必須首先出現。目標是最終達到有用的複雜性，但只有在證明基礎之後。
  </Accordion>

  <Accordion title="演化總是很慢">
    雖然演化需要時間，但數位系統可以透過迭代快速演化。關鍵是現實世界的反饋，而非日曆時間。
  </Accordion>

  <Accordion title="規劃是無用的">
    蓋爾定律並不拒絕規劃——它建議規劃應該專注於創造演化的條件，而非全面設計。你規劃基礎，而非大教堂。
  </Accordion>
</AccordionGroup>

## 相關概念

<CardGroup cols={3}>
  <Card title="最小可行產品" icon="crop-simple">
    [最小可行產品](https://meta.niceshare.site/methods/minimum-viable-product) —
    構建可以驗證假設的最簡單版本的概念——直接應用蓋爾定律到產品開發。
  </Card>

  <Card title="迭代開發" icon="rotate-ccw">
    [迭代開發](https://meta.niceshare.site/methods/iterative-development) —
    透過重複週期構建產品，每個週期都建立在前一個週期之上——體現了蓋爾定律描述的演化方法。
  </Card>

  <Card title="康威定律" icon="network">
    [康威定律](/zh-hant/laws/conways-law) —
    系統設計反映組織溝通結構的洞察——補充了蓋爾定律，解釋了為什麼演化走特定的
    路徑。
  </Card>
</CardGroup>

## 一句話總結

<Tip>
  首先構建一個有效的簡單系統——然後演化它。成功的複雜系統是一層一層建立在經過驗證的基礎之上的。
</Tip>
