Feb. 12 14:50~15:40
為了準備二月份的C. C. Agile,這幾天花了一點時間回頭看《The Timeless Way of Building》全書五個Part之間的關係。讀著、讀著猛然覺得 Kent Beck 在《Extreme Programming Explained, 2nd》所提到的「Value、Principle、Practice」和 Alexander 書中的「Quality、Gate、Way」很像。Teddy一直覺得Kent Beck受到Alexander不少影響,XP(eXtreme Programming)也許是 Kent Beck心中的「The Timeless Way of Programming」XD。
今天來介紹一下XP的「Value、Principle、Practice」三者之間的關係。XP的Value,類似Alexander提到的Quality,或是Quality Without A Name(QWAN,無名特質),是達到「永恆之道」的軟體開發團隊或是方法會具備的特質。這些特質過於抽象、一般化,徒有特質不容易被人們所實踐,因此有了實務做法(Practice)。以XP的Communication(溝通)這個價值為例,有人用寫長篇文件(一種practice)的方式作為達到溝通這種價值的手段,有人用每日例會(daily standup)的方式來溝通,何者較好?不知道,因為溝通這個價值(這個quality)太抽象了,它與實務做法之間有一個鴻溝,因此需要藉由原則(Principle)來串起價值與實務做法。
Humanity(人性)是XP的一條原則,從這條原則告訴我們,面對面的對話可以幫助人們建立起彼此之間的聯繫關係,因此比透過文件來溝通要好。Mutual Benefit(互利)這條原則告訴我們,活動必須要有利於所有相關的當事人。這個當事人可能是今天的你、未來的你,或是你的客戶。從這個原則來看,寫文件可能有利於未來的你(或是會接手你所寫的程式的那個倒楣鬼)或是你的客戶,但是對於今天的你並沒有任何好處,反而拖慢你開發的速度。如果可以用自動化測試、重構、寫出clean code等實務做法,便有可能同時嘉惠今天的你、未來的你、以及你的客戶。
***
10幾年前讀《Extreme Programming Explained, 2nd》,對於書中區分「Value、Principle、Practice」的感受沒有那麼深刻,大部分的人包含Teddy自己,談到XP也都著重在XP Practice (像是 TDD、CI、Pair Programming、Informative Workspace、Sit Together 等)。但如果沒有背後的 Value、Principle支持,光是熟練Practice還是成不了Kent Beck在書中所謂的「大師」(無法關照全局,看出問題背後的 force)。
雖然現在比較少人特別去談XP (這也許是一個好現象,因為已經內化成日常開發活動的一部分…疑,真的嗎?),Scrum、Kanban 正熱門。但敏捷開發要做的好,把XP好好弄懂是很重要的基礎功夫。
***
友藏內心獨白:不知道有多少鄉民認真地把Kent Beck的XP這本書給看完?
沒有留言:
張貼留言