XP 的完整價值,要等到所有實踐都就位才會出現。 許多實踐可以零星採用,但當它們一起就位時,效果會被相乘

XP 自己也在用這條法則#

軟體程式設計師都熟悉 20–80 法則——80% 的效益來自 20% 的工作。XP 自己就在運用這條法則:

  • 最有價值的 20% 功能放進正式環境
  • 最有價值的 20% 設計
  • 依靠 20–80 法則來延後最佳化

20–80 法則要成立,該系統必須擁有彼此相對獨立的控制點

例如當作者在調校程式效能時,每一個可能調校的位置,通常對其他可能調校的位置影響甚微——他從沒遇過「調完最大的耗時大戶,結果反而調不動下一個」的情況。在控制點彼此獨立的系統中,其中某些必然比其他更重要。

但 XP 本身反而不是這樣#

延伸案例:滑雪靴與那最後 20% 的調整

康寧漢(Ward Cunningham)提到一本讓他登上高階滑雪道的書:《The Athletic Skier》。

書中有一半篇幅在講如何調整你的雪靴,把它設定得恰到好處,好讓你能感受到這座山、並保持平衡。然後這本書說:

但當你做完這些練習的 80% 時,你只會看到 20% 的進步。

書中接著解釋:「在平衡上」與「不在平衡上」之間有巨大的差別。如果你稍微失衡,那和大幅失衡也差不了多少。

而讓你能剛好處在平衡上的,正是一大堆小因素——例如把雪靴調得剛剛好。任何一項沒到位,你就是不到位。 你會一路看到緩慢的進步,但你做的最後那幾項調整,會戲劇性地改善你的滑雪。

作者認為(而這只是一個假設)XP 就像這樣:實踐與原則彼此協同,創造出大於各部分總和的綜效。

事情不只是「你做了測試」——而是你測試的是一套簡單的系統,而它之所以簡單,是因為你有一位結對夥伴挑戰你去重構、提醒你多寫測試,並在你除掉複雜度時拍拍你的背,然後……

那 XP 是全有全無嗎#

這帶來一個兩難:XP 是全有全無嗎?你必須一字不差地遵行這些實踐,否則就別想看到任何改善?

只是作者相信:當你把所有零件都放到位時,能獲得的東西多得多。