結論:持續地做小投資,總開發時間中投入約 10–20%。
不適合的兩種極端#
- 一次大規模前置投資(例如打算把整個系統設計完)→ 這是瀑布模型,已知不管用
- 完全不投資(純粹戰術型)→ 短期看似快,但很快被複雜性反噬
理想的設計傾向「邊累積經驗、邊一點一滴浮現」,所以最佳做法是持續做許多小投資。
10–20% 的數學#
戰略型路徑#
- 初期專案會比純戰術型多花 10–20% 時間
- 這些額外時間換來更好的設計
- 數個月內就會開始受益
- 不久後,你的開發速度會至少比戰術型快 10–20%
- 此時投資變成免費:過去投資省下的時間,足以支付未來投資的成本
- 初始投入很快被回收
戰術型路徑#
- 初期專案快 10–20%
- 但複雜性累積後,速度會逐漸下降
- 不久後比戰略型至少慢 10–20%
- 你會迅速吐回前期省下的時間
- 在系統剩餘生命週期裡,永遠比走戰略型路徑慢
回報曲線#

Figure 3.1: 起初戰術型進度比較快,但複雜性累積拖低生產力;長期戰略型反而走得更遠(定性示意,非實證測量)
上圖只是定性示意,並非實證測量。
實務佐證#
沒在嚴重劣化的 codebase 工作過?問問經歷過的人——他們會告訴你,糟糕的程式碼品質至少會讓開發速度下降 20%。