結論:持續地做小投資,總開發時間中投入約 10–20%。

不適合的兩種極端#

  • 一次大規模前置投資(例如打算把整個系統設計完)→ 這是瀑布模型,已知不管用
  • 完全不投資(純粹戰術型)→ 短期看似快,但很快被複雜性反噬

理想的設計傾向「邊累積經驗、邊一點一滴浮現」,所以最佳做法是持續做許多小投資

10–20% 的數學#

戰略型路徑#

  • 初期專案會比純戰術型多花 10–20% 時間
  • 這些額外時間換來更好的設計
  • 數個月內就會開始受益
  • 不久後,你的開發速度會至少比戰術型快 10–20%
  • 此時投資變成免費:過去投資省下的時間,足以支付未來投資的成本
  • 初始投入很快被回收

戰術型路徑#

  • 初期專案快 10–20%
  • 但複雜性累積後,速度會逐漸下降
  • 不久後比戰略型至少慢 10–20%
  • 你會迅速吐回前期省下的時間
  • 在系統剩餘生命週期裡,永遠比走戰略型路徑慢

回報曲線#

Figure 3.1: 起初戰術型進度比較快,但複雜性累積拖低生產力;長期戰略型反而走得更遠(定性示意,非實證測量)

上圖只是定性示意,並非實證測量。

實務佐證#

沒在嚴重劣化的 codebase 工作過?問問經歷過的人——他們會告訴你,糟糕的程式碼品質至少會讓開發速度下降 20%。