🎯 什麼情境該想到我
當你面對一個大又不確定的系統,不知從何下手、擔心各部分兜不起來時。
⚙️ 怎麼用
「曳光彈」是先射一發能看見軌跡的子彈來校準——在軟體上就是先打通一條最細的端到端路徑(能跑、能驗證),再逐步長肉。
- 做一個 walking skeleton:從 UI → 邏輯 → DB 的最小可運作骨架,貫穿所有層與整合點。
- 及早暴露整合風險:端到端先通,最難的「各部分兜不兜得起來」提前驗證。
- 在骨架上增量長出功能。
曳光彈 ≠ 原型:曳光彈是保留並持續發展的真實骨架;原型是探索用、用完即丟。
★ 為什麼「端到端先通」比「單元完整」重要
❌ 分層開發:先把 DB 層做完 → 再做邏輯層 → 再做 API → 最後接前端
★ 最大的風險(各層接不接得起來、需求對不對)留到最後才暴露
★ 而且前三個月沒有任何「能跑的東西」可以展示或驗證
✅ 曳光彈:先打通一條「最細但完整」的路徑
前端一個按鈕 → API → 一條業務邏輯 → 一張表 → 回傳 → 畫面顯示
★ 第一週就知道:技術選型行不行、各層接得起來嗎、部署流程通嗎
★ 核心價值是「把最大的不確定性提前」,而不是「快速做出東西」。
它是風險管理工具,不是開發速度工具。
★ 骨架該包含什麼(判準很明確)
□ ★ 貫穿「所有層」:UI → API → 業務邏輯 → 資料存取 → 資料庫
□ ★ 貫穿「所有整合點」:認證、第三方 API、訊息佇列、快取
□ ★ 包含「部署」:能真的部署到一個環境並被存取
□ ★ 包含「測試」:至少一個端到端測試跑得起來
□ ★ 包含「可觀測性」:log、metric、trace 從第一天就接上
★ 最後兩項最常被跳過,但它們是骨架價值的一半——
能跑但無法測試、無法觀測的骨架,不是可以長肉的骨架。
★ 曳光彈 vs 原型(這個區分是實質的)
| ★ 曳光彈 | 原型 Prototype | |
|---|---|---|
| 目的 | ★ 驗證「架構可行」並成為正式基礎 | ★ 探索「這個想法對不對」 |
| 品質 | ★ 正式品質(只是功能少) | 可以很髒 |
| 之後 | ★ 保留並持續長肉 | ★ 丟棄 |
| 範圍 | 很窄但很深(貫穿所有層) | 可能很寬但很淺 |
| 測試 | ★ 有 | 通常沒有 |
★★ 最危險的錯誤:把原型當曳光彈用。
「這個 demo 看起來能跑,就直接接著做下去吧」——
那些為了 demo 而走的捷徑(寫死的資料、沒有錯誤處理、沒有測試)會永遠留在系統裡。
決定一個東西是原型還是曳光彈,要在「開始寫之前」就講清楚。
★ 怎麼選第一條路徑
| 選 | 不選 |
|---|---|
| ★ 技術風險最高的那條(用了沒經驗的技術、整合最複雜的) | 最簡單的那條 |
| ★ 能驗證核心假設的那條 | 最有商業價值的那條(那是第二優先) |
| 貫穿層數最多的 | 只在單層內的 |
★ 例:做一個 AI 客服系統
第一條曳光彈不該是「登入功能」,而該是
「使用者問一句話 → 檢索 → LLM → 回應 → 顯示 → 記一筆 trace」——
因為那條路徑上有所有的未知數。
★ 之後怎麼長肉
骨架通了之後:
① 在骨架上「加寬」——同一層再加功能(第二個 API、第三個查詢)
② 需要時「加深」——把某一層做紮實(快取、批次、最佳化)
★ 每一次都保持「隨時可部署、隨時可 demo」
★ 這正是 保持可以發布 與持續交付的思路:
系統永遠處在「能動」的狀態,只是功能多寡不同。
★ 它解決的三個真實問題
| 問題 | 怎麼解 |
|---|---|
| 整合地獄 | 整合從第一天就存在,而不是最後才發生 |
| ★ 回饋太慢 | 使用者/PM 第一週就看得到東西,需求誤解提早被發現 |
| 團隊不知道進度 | 「骨架通了」是一個明確的里程碑 |
🧪 我實際套用的紀錄
- 2026-07-15:(待填)
⚠️ 注意 / 什麼時候不適用
- ★★ 不要讓它變成原型。骨架的每一行都是正式程式碼,捷徑會留下來。
→ 有測試、有錯誤處理、有 code review。 - ★ 骨架必須「窄」。貫穿所有層,但每一層只做最少的事。
骨架太寬 = 你其實是在做完整功能,失去了「快速驗證」的價值。 - 不要跳過部署。「在我機器上能跑」的骨架沒有驗證到最大的風險之一。
- 需求極度不明確時,原型才是對的。曳光彈假設你知道要做什麼、不確定的是「做不做得出來」;
如果不確定的是「該做什麼」,先做丟棄式原型。 - 既有系統不適用。曳光彈是新專案的手法;既有系統要用 工具-接縫 與絞殺者模式。
- ★ 骨架通了不代表風險沒了。規模、效能、邊界情況的風險還在——它驗證的是「可行性」不是「可用性」。
🔗 相關工具
- 保持可以發布 —— 從第一天就維持可部署
- 增量式編程、使用短迭代增量發布 —— 骨架上長肉的節奏
- 提早集成頻繁集成 —— 整合風險提前
- 使用演示獲得頻繁反饋 —— 骨架讓 demo 從第一週就可能
- 工具-部署管線與持續交付 —— 骨架該包含部署
- 工具-接縫 —— 既有系統的對應手法
- 程式設計師修煉之道