> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/zh-hant/2021/w22-prototypes-and-tracers.md).

# W22-原型與曳光彈

在《程序員修煉之道》裡看到一對關於項目落地的概念，原型與曳光彈，對於正在做的重新架構有一些指導意義。

原型就像是投入生產線之前做的一個模具，就是一個小demo，生成的是一次性代碼。當使用原型時，目標是探索最終系統的特定方面。屬於可行性評估，方案驗證的過程，最終會將驗證時構造的整個原型丟掉，留下經驗教訓，用來指引正式的項目開發。比如怎樣的構建部署方案可以支撐這次重新架構，如何通過依賴管理來更好的提升基建代碼的複用率。

重新架構必定是一個持續幾個月的大動作，在變化的環境中，會產生很多不可預知的相互作用力。比如會對團隊內的工作流產生一定程度的變更，對業務上某些流量入口產生一些影響。曳光彈式的開發是一個可靠的應對之策。

什麼是曳光彈？

> 曳光彈和普通彈藥間隔著一起被壓入彈夾。當曳光彈發射時，上面的磷就會被點燃，在槍和擊中物之間留下一道煙火軌跡。如果曳光彈擊中了目標，那麼之後的常規子彈也會擊中。士兵們使用這些曳光彈來調整他們的瞄準：這是一種務實的方法，可以在真實條件下提供實時反饋。

我理解曳光彈式和絞殺式、精益式的理念類似。曳光彈與普通子彈最大的不同就是實時反饋，曳光彈式開發就是在實施一些以前從未做過的東西的時候，不斷的重複瞄準、發射、反饋、調整這個閉環，通過多個週期一點點向真實的目標移動。實際上，曳光彈和普通子彈應該是穿插著發射的，曳光彈用來確定軌跡，形成一個框架，做好留白，讓協作者清楚如何通過普通子彈來填補留白。

面對陌生且極富變化的環境，將原型+曳光彈作為推進項目落地的組合拳是一個不錯的選擇。可以將原型製作看作是在發射一顆曳光彈之前進行的偵察和情報收集工作。通過曳光彈代碼構建最終系統框架的組成部分，它雖然簡單但是完整。最後用一個個普通子彈提供縱深，進而擊穿目標。

<br>
