# 技術選型方法論

::: tip 前言
**React 還是 Vue？MySQL 還是 PostgreSQL？** 技術選型是每個專案開始時最重要的決策之一。選錯了，可能要花幾個月重寫；選對了，團隊效率翻倍。

本章帶你建立系統化的技術選型思維，不再憑感覺選技術。
:::

**這篇文章會帶你學什麼？**

| 章節 | 內容 | 核心概念 |
|-----|------|---------|
| **第 1 章** | 技術雷達 | 了解技術的成熟度 |
| **第 2 章** | 選型維度 | 從哪些角度評估技術 |
| **第 3 章** | 決策矩陣 | 量化對比做決策 |
| **第 4 章** | 常見陷阱 | 避免選型中的坑 |

學完本章，你將掌握一套系統化的技術選型方法，能為專案做出理性的技術決策。

---

## 0. 全景圖：技術選型的本質

技術選型不是「哪個技術最好」的問題，而是「哪個技術最適合當前場景」的問題。就像選交通工具——飛機最快，但去隔壁社區不需要坐飛機。

::: tip 選型的核心原則
- **沒有銀彈**：沒有一種技術適合所有場景
- **場景驅動**：先明確需求，再選技術
- **團隊優先**：團隊熟悉的技術往往是最好的選擇
- **可逆性**：優先選擇容易替換的方案
:::

透過下面的互動元件，了解目前技術生態的全景：

<TechRadarDemo />

---

## 1. 選型維度

### 1.1 核心評估維度

| 維度 | 關注點 | 權重建議 |
|------|--------|---------|
| **團隊能力** | 團隊是否熟悉？學習成本多高？ | 高 |
| **社群生態** | 文件品質、第三方函式庫、Stack Overflow 答案數 | 高 |
| **效能需求** | 是否滿足效能要求？ | 中-高 |
| **維護狀態** | 是否活躍維護？最近一次發布是什麼時候？ | 中 |
| **授權條款** | 是否與專案的商業模式相容？ | 中 |
| **招募市場** | 能否招募到熟悉這個技術的人？ | 中 |

### 1.2 實際案例：前端框架選型

```
專案：企業內部管理系統
團隊：5 人，3 人熟悉 Vue，1 人熟悉 React，1 人新手
需求：表單密集、權限複雜、不需要 SEO

分析：
- 團隊 60% 熟悉 Vue → Vue 優先
- 表單密集 → Element Plus 生態成熟
- 不需要 SSR → 不需要 Next.js/Nuxt
- 結論：Vue 3 + Element Plus
```

---

## 2. 決策矩陣

當多個選項難以直覺判斷時，用決策矩陣量化對比。

透過下面的互動元件，體驗決策矩陣的使用方法：

<DecisionMatrixDemo />

### 2.1 決策矩陣使用方法

1. **列出候選方案**：比如 React vs Vue vs Svelte
2. **確定評估維度**：團隊能力、生態、效能、學習曲線
3. **分配權重**：根據專案需求，給每個維度打權重（總和 100%）
4. **逐項打分**：每個方案在每個維度上打 1-5 分
5. **加權求和**：得出最終得分

### 2.2 範例

| 維度 | 權重 | React | Vue | Svelte |
|------|------|-------|-----|--------|
| 團隊能力 | 30% | 3 | 5 | 1 |
| 社群生態 | 25% | 5 | 4 | 2 |
| 學習曲線 | 20% | 3 | 4 | 5 |
| 效能 | 15% | 4 | 4 | 5 |
| 招募市場 | 10% | 5 | 4 | 2 |
| **加權總分** | | **3.75** | **4.35** | **2.75** |

---

## 3. 常見陷阱

### 3.1 履歷驅動開發

> 「用這個新技術，我履歷上又能多寫一條」

選技術應該基於專案需求，而不是個人履歷。新技術意味著更多的未知風險和更少的社群支援。

### 3.2 盲目追新

| 心態 | 現實 |
|------|------|
| 「新的一定比舊的好」 | 新技術可能有未發現的 Bug |
| 「大廠在用，我們也該用」 | 大廠的場景和你的可能完全不同 |
| 「這個技術 Star 數最多」 | Star 數不等於適合你的專案 |

### 3.3 忽視遷移成本

選型時不僅要看「用起來怎麼樣」，還要看「如果要換，代價多大」。優先選擇：
- 遵循標準協定的方案（如 SQL vs 私有查詢語言）
- 有清晰遷移路徑的方案
- 不會深度鎖定的方案

---

## 4. AI 助力：用大模型輔助技術選型

大模型可以幫你快速調研技術方案、對比優劣、產生決策報告。

### 4.1 技術方案對比

> **提示詞**：
> ```
> 我需要為一個電商專案選擇資料庫，候選方案：
> MySQL、PostgreSQL、MongoDB。
> 專案特點：讀多寫少、需要複雜查詢、資料量預計千萬級。
>
> 請從以下維度對比三個方案：
> 效能、生態、學習曲線、維運成本、擴展性。
> 用表格形式呈現，並給出最終推薦和理由。
> ```

### 4.2 產生架構決策記錄（ADR）

> **提示詞**：
> ```
> 幫我寫一份架構決策記錄（ADR），格式如下：
> - 標題：選擇 Vue 3 作為前端框架
> - 背景：[專案背景和需求]
> - 候選方案：React, Vue 3, Svelte
> - 決策：Vue 3
> - 理由：[基於團隊能力、生態、效能等維度]
> - 後果：[選擇後的影響和風險]
> ```

### 4.3 調研新技術

> **提示詞**：
> ```
> 我在考慮是否在專案中引入 Bun 替代 Node.js，請幫我分析：
> 1. Bun 相比 Node.js 的核心優勢和劣勢
> 2. 目前生態成熟度（npm 相容性、主流框架支援）
> 3. 正式環境使用的風險點
> 4. 適合和不適合使用 Bun 的場景
> 給出客觀評估，不要只說優點。
> ```

::: tip AI 使用建議
AI 的知識有時效性——它可能不了解最新版本的變化。對於快速迭代的技術，用 AI 做初步調研後，務必查閱官方文件確認最新資訊。
:::

---

## 5. 總結

1. **技術雷達**：了解技術的成熟度，區分採用/試驗/評估/暫緩
2. **選型維度**：團隊能力 > 社群生態 > 效能需求 > 維護狀態
3. **決策矩陣**：量化對比，減少主觀偏見
4. **避免陷阱**：不追新、不跟風、考慮遷移成本

::: tip 終極思考
最好的技術選型往往是**最無聊的選型**。選擇成熟、穩定、團隊熟悉的技術，把創新的精力留給業務本身。記住：**技術是手段，不是目的。使用者不關心你用了什麼框架，他們只關心產品好不好用。**
:::

---

## 延伸閱讀

- **ThoughtWorks 技術雷達**：每半年發布一次，是了解技術趨勢的權威參考。
- **實踐建議**：下次選型時，試著用決策矩陣做一次量化對比。
- **架構決策記錄（ADR）**：用文件記錄每次技術選型的理由和權衡。
- **反面教材**：了解一些因技術選型失誤導致專案失敗的案例。
