Launch Atlas logoLaunch.Atlas
#28Design架構師開發者

Tech Spike · 技術探索

用最小成本買回最大不確定性

Tech Spike · 技術探索 · 卡片插圖
CHOOSE YOUR MODE

先決定你現在是要學,還是要在專案裡做

網站負責解釋與分發工作包;真正的 Repository 掃描、缺口判斷與文件產出交給 Coding Agent。

SDLC 實作課 · 交付物練習

先理解這份文件替你消除什麼不確定

用最小成本買回最大不確定性

ADR 寫不下去,因為關鍵變數沒人量過。Spike 是時間盒住的實驗,只為了輸出「決策所需的數字或失敗證據」,不是寫產品代碼。

OWNER & HANDOFF

誰負責、交給誰

主責: Architect 或資深 Dev

協作: SA 對齊問題定義、DevOps 提供環境

下游收件: ADR 撰寫者、Dev Lead

WHEN TO USE

何時值得做

REQUIRED

必要時機: 跨系統整合風險、效能假設、第三方 SDK 邊界

SKIP

不需要時: 答案線上搜尋 30 分鐘可得、團隊已有經驗

CAUTION

常見誤用: Spike 變成偷渡正式功能;沒有時間盒;產出 demo 而非結論

看懂6 段骨架知道每段要留下哪一種判斷
看會雙版本範本先用輕量版練習,再讀完整版
做出自己的草稿手動貼到 Claude Code、Codex 或其他 Agent
  1. 01讀大綱
  2. 02比範本
  3. 03填素材
  4. 04貼提示詞
  5. 05對照驗收

Anatomy · 文件解剖

輕量版先回答 6 個核心章節

章節名稱可以因團隊調整,但每一段要求的判斷不能被省略。先讀問題,再看格式。

  1. 01

    Executive Summary

    範本必要章節

    3-5 行:決策問題、候選方案數、time-box、為何延後決策更貴

  2. 02

    Spike Goal & Hypothesis

    範本必要章節

    goal 必為一句話決策問題;hypothesis 必為可被推翻的形式 + null hypothesis

  3. 05

    Candidate Options & Evaluation Criteria

    範本必要章節

    ≤ 3 個候選(含「維持現狀」如適用);evaluation 指標必含至少 1 個 NFR (latency / throughput / availability / cost)

  4. 06

    Time-box & Exit Criteria

    範本必要章節

    time-box 必含硬截止日;exit criteria 必為布林條件

  5. 10

    Decision Log(key 2-3 條)

    範本必要章節

    每條必含 chosen + 至少 1 個 rejected + 拒絕原因

  6. 12

    Confidence & Sources & TODO

    範本必要章節

    把已確認的內容、判斷依據與仍待補充的資訊清楚分開。

Study · 對照學習

同一份交付物,先練核心,再看完整深度

輕量範本適合第一次練習與 MVP;完整範本保留跨職能交棒需要的細節。兩者都要求未知事項保持可見。

SmartTrip 實例待補

這張卡目前提供已審定的輕量與完整範本;不以 AI 臨時生成的內容冒充實際案例。

LIGHT TEMPLATE

30 分鐘內先完成核心章節。

---
doc_type: "tech-spike"
variant: "light"
status: "draft"
owner: "<your-name>"
last_updated: "YYYY-MM-DD"
upstream:
  required: ["problem-statement", "constraints"]
  optional: ["candidate-source"]
---

# Tech Spike Plan: <spike-name>

**Status:** Draft v0.X · **Owner:** <Architect / Senior Dev> · **Last updated:** YYYY-MM-DD

> [!IMPORTANT]
> **AI 填寫規則:** 本範本 6 段(編號 1, 2, 5, 6, 10, 12),全部必填——刻意沿用完整版章節編號讓兩版可對照。Spike goal 必為「決策問題」非「實作問題」;exit criteria **必為布林條件**(如「p95 < 200ms 且 cost < $X/月」)不能寫「感覺夠快」;time-box 必含 hard_stop 日期;缺資料寫 `_TODO_` **不編造 benchmark 數字**;每量化欄位 `[H/M/L]` badge。

---

## 1. Executive Summary

<!-- ai-fill: 3-5 行:決策問題、候選方案數、time-box、為何延後決策更貴 -->

<3-5 行說明>

> **TL;DR:** <一句話:本 spike 要在 N person-days 內回答什麼決策問題>

---

## 2. Spike Goal & Hypothesis

<!-- ai-rule: goal 必為一句話決策問題;hypothesis 必為可被推翻的形式 + null hypothesis -->

- **Decision question:** <例:Kafka 在我們的 throughput / latency / cost 條件下是否優於 RabbitMQ>
- **Decision owner:** <role>
- **Primary hypothesis:** <主要假設,可被推翻>
- **Null hypothesis:** <反例:若 X 則 Kafka 不優>
- **Confidence:** **[M]** — **Source:** problem §1

---

## 5. Candidate Options & Evaluation Criteria

<!-- ai-rule: ≤ 3 個候選(含「維持現狀」如適用);evaluation 指標必含至少 1 個 NFR (latency / throughput / availability / cost) -->

### Candidates

| Option | Core assumption | Expected failure mode | Setup cost |
|---|---|---|---|
| A: Kafka | 高 throughput 可處理 burst | ops 複雜度高 | 1.5 day |
| B: RabbitMQ | 既有經驗 + 操作簡單 | throughput 上限可能不夠 | 0.5 day |
| C: 維持現狀 | 不引入新依賴 | 業務需求被卡 | 0 |

### Evaluation criteria

| Metric | Target | Measurement |
|---|---|---|
| p95 latency | < 200ms | k6 / wrk 模擬 |
| cost / million msg | < $X | vendor pricing + 自管 ops 估 |

---

## 6. Time-box & Exit Criteria

<!-- ai-rule: time-box 必含硬截止日;exit criteria 必為布林條件 -->

- **Duration:** 3 person-days
- **Hard stop:** YYYY-MM-DD(**不可延**)
- **Exit (success):** 所有候選跑完 + 至少 1 個達 evaluation 全部 target
- **Exit (abort):** time-box 到 / 第三方 SDK 不可用 / 主要假設已被推翻

---

## 10. Decision Log(key 2-3 條)

<!-- ai-rule: 每條必含 chosen + 至少 1 個 rejected + 拒絕原因 -->

| Date | Decision | Options | Chosen | Rejected why | Confidence |
|---|---|---|---|---|---|
| YYYY-MM-DD | 候選清單範圍 | A+B+C / A+B / A+B+NATS | A+B+C | NATS (社群討論不足,跨第三方學習成本) | **[H]** |

---

## 12. Confidence & Sources & TODO

- **整份文件最低 confidence 欄位:** <列出所有 [L] 與 [M]>
- **Fabricated assumptions:**
  - <例:假設 staging 環境 ≈ production 規格>
- **Highest-value next input:** <例:production 流量 sample / vendor pricing 確認>

### TODO(缺資料)

- _TODO: 需 DevOps 提供 staging 環境配置_

---

> [!CAUTION]
> **輸出前 AI 自檢:**
> - [ ] 6 段 H2 章節齊全(編號 1, 2, 5, 6, 10, 12)
> - [ ] Spike goal 是「決策問題」非「實作問題」
> - [ ] Hypothesis 含 primary + null(可被推翻形式)
> - [ ] 候選 ≤ 3 個,每個含 core assumption + failure mode
> - [ ] Evaluation 至少 1 個 NFR metric
> - [ ] Exit criteria 是**布林條件**(沒「感覺夠快」這類詞)
> - [ ] Time-box 含 hard_stop 日期
> - [ ] 沒編造 benchmark 數字(缺者 `_TODO_`)
> - [ ] 無 YAML / JSON schema 輸出(spike plan 是給人讀的 markdown)

Practice · 換你試做

先用自己的話交代素材,不需要先學會工程術語

確定的就寫,不確定的留白。下一步要做的是請 Agent 找缺口,不是讓它替你猜一套合理答案。

可以先留白;複製提示詞後再到 Coding Agent 裡補充。

AI Practice · 手動三步

先問、再寫、最後審,不把整條流程鎖死

每一步都是獨立工作包。你可以停下補資料、修改限制或重做某一步,不需要服從固定的 Agent 接力流程。

STEP 01

只找阻擋文件成立的未知

先補會改變範圍、判斷或驗收結果的資訊,不急著寫文件。

我要製作「Tech Spike · 技術探索」。先不要產出文件。

請根據我的素材,找出會影響這份文件正確性或可執行性的未知事項,一次最多問 5 題。

每題請包含:
1. 問題
2. 為什麼現在必須知道
3. 它會影響哪個章節或決定

已經回答的事不要重問;可以延後的事標成「待決策」;不要替我猜答案。

本文件的核心章節:Executive Summary、Spike Goal & Hypothesis、Candidate Options & Evaluation Criteria、Time-box & Exit Criteria、Decision Log(key 2-3 條)、Confidence & Sources & TODO

複製後,請在標示位置貼上自己的素材。

Review · 自己驗收

文件存在,不代表下一個角色真的能使用

逐條檢查 Agent 的輸出。人類負責需求、限制與驗收,也必須能說明重要結論從哪裡來。

CHECKED0 / 6
NEXT HANDOFF

帶著這份文件,繼續到「Threat Model · 威脅建模」

下一張卡會接住新的決策問題;不用一次把整條 SDLC 全做完。

前往下一張卡