# 🗺️ SDD 開發技術 - 完整學習路線圖

## 📚 教材總覽

### 已完成內容

✅ **理論教材**（開發大綱.md）
- 模組 0：規格驅動思維 ⭐⭐⭐⭐⭐
- 模組 1：開發者工具包 ⭐⭐⭐⭐⭐
- 模組 2：SDD 核心循環實戰 ⭐⭐⭐⭐⭐
- 模組 3：軟體架構入門 ⭐⭐⭐⭐⭐
- 模組 4：進階 AI 協作 ⭐⭐⭐⭐⭐

✅ **實戰專案**（sdd-practice-project/）
- 風格特徵提取器（基礎範例）
- 新聞轉教案生成器（進階實作）
- 個人知識庫管理器（綜合應用）
- Google Colab 環境

✅ **輔助文件**
- README_實戰專案說明.md
- QUICK_START.md（快速開始指南）
- 本學習路線圖

---

## 🎯 學習目標分級

### 🥉 青銅級（入門者）- 2 週

**目標：** 理解 SDD 基本概念，完成環境設定

**學習內容：**
1. 模組 0：規格驅動思維（前半部）
   - User Story 撰寫
   - Acceptance Criteria 基礎
   
2. 模組 1：開發者工具包（全部）
   - VS Code 安裝設定
   - Git 基本操作
   - npm 與 Jest 入門

**實作練習：**
- ✅ 安裝所有開發工具
- ✅ 撰寫 3 個 User Story
- ✅ 執行第一個測試
- ✅ 提交第一個 Git commit

**驗收標準：**
- [ ] 環境設定完成
- [ ] 能看懂基本規格
- [ ] 理解 Git 基本流程
- [ ] 測試能成功執行

**預計時間：** 每週 5-7 小時，共 2 週

---

### 🥈 白銀級（初學者）- 2 週

**目標：** 理解完整 SDD 流程，能看懂測試和程式碼

**學習內容：**
1. 模組 0：規格驅動思維（完整）
   - AI 規格審查
   - 完整場景撰寫
   
2. 模組 2：SDD 核心循環（前半部）
   - TDD 三部曲
   - 紅綠重構循環

**實作練習：**
- ✅ 研究風格特徵提取器範例
- ✅ 理解規格→測試→實作流程
- ✅ 修改分析功能並觀察測試
- ✅ 嘗試用 AI 審查規格

**驗收標準：**
- [ ] 能獨立撰寫完整規格
- [ ] 看懂測試程式碼結構
- [ ] 理解測試與規格的對應
- [ ] 能使用 AI 輔助撰寫規格

**預計時間：** 每週 6-8 小時，共 2 週

---

### 🥇 黃金級（中級者）- 2 週

**目標：** 能獨立完成 TDD 開發，實作通過測試的程式碼

**學習內容：**
1. 模組 2：SDD 核心循環（完整）
   - 撰寫測試
   - 實作功能
   - 重構優化

**實作練習：**
- ✅ 完成風格分析基礎功能
- ✅ 實作讓測試通過的程式碼
- ✅ 達到 60% 測試覆蓋率
- ✅ 嘗試重構並保持測試通過

**驗收標準：**
- [ ] 能將規格轉為測試
- [ ] 能實作通過測試的程式碼
- [ ] 理解 Red-Green-Refactor
- [ ] 測試覆蓋率 > 60%

**預計時間：** 每週 8-10 小時，共 2 週

---

### 💎 鑽石級（進階者）- 2 週

**目標：** 完整實作複雜功能，掌握模組化設計

**學習內容：**
1. 模組 3：軟體架構入門
   - 模組化設計
   - 關注點分離
   - API 設計

2. 模組 4：進階 AI 協作（前半部）
   - System Prompt 設計
   - 分階段協作

**實作練習：**
- ✅ 完成新聞轉教案生成器
- ✅ 整合 AI API（OpenAI/Anthropic）
- ✅ 達到 80% 測試覆蓋率
- ✅ 設計知識庫管理器架構

**驗收標準：**
- [ ] 獨立完成完整功能
- [ ] 測試覆蓋率 > 80%
- [ ] 程式碼遵循 Clean Code
- [ ] 能設計模組架構

**預計時間：** 每週 10-12 小時，共 2 週

---

### 👑 大師級（專家）- 持續

**目標：** 精通 SDD，能指導他人，應用於實際專案

**學習內容：**
1. 模組 4：進階 AI 協作（完整）
   - IDE 整合協作
   - 持續對話優化

2. 實際專案應用

**實作練習：**
- ✅ 設計完整專案架構
- ✅ 在工作專案中導入 SDD
- ✅ 建立團隊規格範本
- ✅ 指導他人學習 SDD

**驗收標準：**
- [ ] 能獨立設計大型專案
- [ ] 測試覆蓋率 > 90%
- [ ] 高效使用 AI 協作
- [ ] 能進行技術分享

**預計時間：** 持續學習與實踐

---

## 📅 8 週學習計劃

### Week 1-2: 基礎建立（青銅→白銀）

| 天數 | 學習內容 | 時間 | 產出 |
|-----|---------|------|------|
| Day 1-2 | 模組 0（User Story） | 3h | 3個User Story |
| Day 3-4 | 模組 0（AC + Gherkin） | 4h | 5個場景 |
| Day 5-6 | 模組 1（VS Code + Git） | 4h | 環境設定完成 |
| Day 7-8 | 模組 1（Node.js + Jest） | 3h | 第一個測試 |
| Day 9-10 | AI 規格審查練習 | 3h | 審查報告 |
| Day 11-12 | 研究風格分析範例 | 4h | 學習筆記 |
| Day 13-14 | 整合複習與檢核 | 3h | 完成檢核表 |

**週末任務：** 完成青銅級和白銀級檢核表

---

### Week 3-4: 核心技能（黃金級）

| 天數 | 學習內容 | 時間 | 產出 |
|-----|---------|------|------|
| Day 15-16 | 模組 2（TDD 理論） | 3h | TDD 流程圖 |
| Day 17-18 | 實作風格分析測試 | 5h | 測試程式碼 |
| Day 19-20 | 實作風格分析功能 | 6h | 實作程式碼 |
| Day 21-22 | 紅綠循環實戰 | 4h | 通過測試 |
| Day 23-24 | 重構與優化 | 4h | 重構後程式碼 |
| Day 25-26 | 達到 60% 覆蓋率 | 5h | 覆蓋率報告 |
| Day 27-28 | 整合複習與檢核 | 3h | 完成檢核表 |

**週末任務：** 完成黃金級檢核表，覆蓋率 > 60%

---

### Week 5-6: 進階應用（鑽石級）

| 天數 | 學習內容 | 時間 | 產出 |
|-----|---------|------|------|
| Day 29-30 | 模組 3（模組化設計） | 4h | 架構設計圖 |
| Day 31-32 | 實作新聞轉教案測試 | 6h | 完整測試 |
| Day 33-34 | 整合 AI API 功能 | 8h | API 整合 |
| Day 35-36 | 達到 90% 覆蓋率 | 5h | 覆蓋率報告 |
| Day 37-38 | 設計新功能架構 | 4h | 架構文件 |
| Day 39-40 | Code Review 與優化 | 4h | 優化後程式碼 |
| Day 41-42 | 整合複習與檢核 | 3h | 完成檢核表 |

**週末任務：** 完成鑽石級檢核表，專案完整運作

---

### Week 7-8: 整合實踐（大師級）

| 天數 | 學習內容 | 時間 | 產出 |
|-----|---------|------|------|
| Day 43-44 | 模組 4（AI 協作） | 4h | System Prompt |
| Day 45-46 | 設計完整專案 | 8h | 專案規格 |
| Day 47-48 | 實作新專案 | 10h | 專案程式碼 |
| Day 49-50 | 整合所有技能 | 8h | 完整專案 |
| Day 51-52 | 撰寫技術文件 | 4h | 技術文件 |
| Day 53-54 | 準備技術分享 | 4h | 分享簡報 |
| Day 55-56 | 總複習與未來規劃 | 4h | 學習總結 |

**週末任務：** 完成個人專案，準備技術分享

---

## 🎯 每日學習建議

### 學習節奏（每天 1-2 小時）

**🌅 早晨（30 分鐘）**
- 複習前一天內容
- 閱讀理論章節

**🌆 晚上（60-90 分鐘）**
- 實作練習
- 完成檢核項目
- 記錄學習筆記

**🌙 睡前（10 分鐘）**
- 反思今日學習
- 規劃明日任務

### 週末加強（3-4 小時）

**週六**
- 完成本週練習
- 整理學習筆記
- 檢查進度

**週日**
- 複習重點內容
- 預習下週內容
- 與他人討論

---

## 🚀 快速開始指南

### 第一天該做什麼？

**選項 A：從零開始（推薦新手）**
```bash
# 1. 閱讀課程簡介
open 開發大綱.md  # 閱讀前面的課程簡介部分

# 2. 開始模組 0
# 閱讀「規格驅動思維」章節

# 3. 完成第一個練習
# 撰寫一個簡單的 User Story
```

**選項 B：快速體驗（已有基礎）**
```bash
# 1. 進入實戰專案
cd sdd-practice-project

# 2. 安裝依賴
npm install

# 3. 執行測試看範例
npm test tests/login.test.js

# 4. 閱讀快速開始指南
open QUICK_START.md
```

---

## 📊 進度追蹤表

### 模組完成度

| 模組 | 理論 | 練習 | 檢核 | 狀態 |
|-----|------|------|------|------|
| 模組 0 | ⬜ | ⬜ | ⬜ | 未開始 |
| 模組 1 | ⬜ | ⬜ | ⬜ | 未開始 |
| 模組 2 | ⬜ | ⬜ | ⬜ | 未開始 |
| 模組 3 | ⬜ | ⬜ | ⬜ | 未開始 |
| 模組 4 | ⬜ | ⬜ | ⬜ | 未開始 |

複製這個表格到你的學習筆記，完成後打勾 ✅

### 技能樹

```
規格撰寫技能
├─ ⬜ User Story 撰寫
├─ ⬜ Gherkin 場景撰寫
├─ ⬜ AI 規格審查
└─ ⬜ 完整規格產出

測試開發技能
├─ ⬜ 閱讀測試程式碼
├─ ⬜ 撰寫基本測試
├─ ⬜ 撰寫完整測試套件
└─ ⬜ 測試覆蓋率 > 90%

程式開發技能
├─ ⬜ 理解現有程式碼
├─ ⬜ 實作簡單功能
├─ ⬜ 實作複雜功能
└─ ⬜ 重構與優化

架構設計技能
├─ ⬜ 識別功能模組
├─ ⬜ 設計模組架構
├─ ⬜ 定義 API 介面
└─ ⬜ 整合系統設計

AI 協作技能
├─ ⬜ 基本 Prompt 使用
├─ ⬜ System Prompt 設計
├─ ⬜ 分階段協作
└─ ⬜ IDE 整合使用
```

---

## 💡 學習技巧

### Do's（應該做的）

✅ **每天固定時間學習**
- 建立學習習慣
- 持續穩定進步

✅ **動手實作**
- 不要只看不做
- 每個範例都要打一遍

✅ **記錄筆記**
- 記錄重點概念
- 記錄遇到的問題

✅ **利用 AI 輔助**
- 遇到問題問 AI
- 但要理解答案

✅ **參與社群**
- 分享學習心得
- 與他人討論交流

### Don'ts（不該做的）

❌ **不要跳過基礎**
- 基礎不牢，地動山搖

❌ **不要只看不練**
- 看懂不等於會做

❌ **不要完美主義**
- 先完成，再完美

❌ **不要單打獨鬥**
- 善用資源和社群

❌ **不要放棄**
- 困難是暫時的

---

## 🎓 畢業專題建議

完成 8 週學習後，選擇一個專題實踐：

### 專題 1：個人部落格系統
- 文章管理（CRUD）
- 評論系統
- 標籤分類
- 搜尋功能

### 專題 2：待辦事項應用
- 任務管理
- 分類與標籤
- 優先級排序
- 提醒功能

### 專題 3：AI 內容助手
- 多平台內容生成
- 風格一致性檢查
- 自動摘要功能
- 知識圖譜視覺化

### 專題 4：自選主題
- 根據興趣選擇
- 應用所學技能
- 完整實作

---

## 📞 獲取協助

### 遇到問題時

1. **查閱文件**
   - README_實戰專案說明.md
   - QUICK_START.md
   - 開發大綱.md

2. **使用 AI**
   - ChatGPT / Claude
   - GitHub Copilot
   - 參考模組 4 的 Prompt 範本

3. **查看範例**
   - 風格分析器是最佳參考
   - 對照規格、測試、實作

4. **搜尋資源**
   - Google / Stack Overflow
   - 官方文件
   - 技術部落格

---

## 🎉 完成認證

當你完成所有檢核項目，恭喜你成為 SDD 開發者！

### 認證檢核表

#### 知識層面
- [ ] 理解 SDD 的核心概念
- [ ] 理解 TDD 的紅綠循環
- [ ] 理解模組化設計原則
- [ ] 理解 AI 協作技巧

#### 技能層面
- [ ] 能撰寫清晰的規格
- [ ] 能將規格轉為測試
- [ ] 能實作通過測試的程式碼
- [ ] 能設計模組架構
- [ ] 能有效使用 AI 輔助

#### 實作層面
- [ ] 完成風格分析器學習
- [ ] 完成新聞轉教案生成器
- [ ] 完成知識庫管理器
- [ ] 完成畢業專題（AI 應用）
- [ ] 撰寫技術文件

#### 分享層面
- [ ] 撰寫學習心得
- [ ] 進行技術分享
- [ ] 協助他人學習
- [ ] 貢獻開源專案

---

## 🚀 下一步

完成這套教材後，你可以：

1. **應用到工作專案**
   - 在團隊中推廣 SDD
   - 提升程式碼品質

2. **深入學習**
   - 學習進階測試技巧
   - 研究架構設計模式
   - 探索 CI/CD 自動化

3. **參與社群**
   - 加入技術社群
   - 分享學習經驗
   - 貢獻開源專案

4. **持續成長**
   - 訂閱技術資源
   - 參加研討會
   - 保持學習熱情

---

**祝你學習愉快，成為優秀的 SDD 開發者！** 🎓✨
