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 是全有全無嗎?你必須一字不差地遵行這些實踐,否則就別想看到任何改善?
只是作者相信:當你把所有零件都放到位時,能獲得的東西多得多。