Feb. 12 17:31~18:59
今天接著談一下XP的五個核心價值(value),也可以說XP團隊應具有的特質(quality)。這五個價值不只是對XP有用,基本上對所有敏捷開發團隊都很有幫助(Kent Beck說對他的生活也一體適用XD)。
在介紹這些價值之前,先思考一個問題:為什麼需要確立這些價值?
Kent Beck認為,有些人對於軟體開發的認知,過分強調「個別行為」,這將會對軟體開發造成傷害。例如,一個很常見的例子就是coding style(或稱為coding standard、naming convention)。舉凡像是變數、函數與類別命名、縮排方式、函數長度、迴圈或條件式敘述深度、左右括號擺放位置等,都算是coding style的範圍。
Teddy曾經遇到不少人對於coding style有非常強烈的個人風格與堅持,就算是違反團隊所約定的coding style也在所不辭,執著的程度簡直到了把coding style看得比自己的生命還要重要。為什麼團隊需要訂定coding style?主要的目的應該還是在「溝通」二字,希望不同人寫出的程式,風格不要相差太大,這樣所有團隊成員在閱讀自己或別人所寫的程式碼的時候比較不會那麼吃力。一致性的coding style也有助於除錯並且減少錯誤發生機會。
如果團隊成員都重視「溝通」這個價值,就會發現「個人風格」的重要性微不足道,也沒有什麼好堅持的。換句話說,建立XP團隊的「價值」或「價值觀」,有助於團隊判斷哪些事情是重要的,減少不必要的紛爭。
***
根據Alexander的說法:「quality without a name」,雖然Kent Beck給這個quality列了五個名字,但是要用文字解釋清楚還真是不太容易,以下估且看之。
- Communication(溝通):「Software development is all about communication」,溝通無所不在。軟體開發是一種團隊活動,溝通是最基本也最重要的一項價值。客戶跟開發團隊溝通需求,開發團隊彼此也需要溝通解決方方案。當軟體開發遭遇問題的時候,先問自己:「這個問題是否因為溝通不良所造成?需要何種溝通方式來釐清問題?用何種溝通方法可以避免日後再次遭遇到這類的問題?」
- Simplicity(簡單):簡單這個價值觀的目的在於消除不必要的浪費(怎麼有點精實開發的fu啊),用足以解決目前問題的最簡單設計即可,不必過度設計。簡單是一種相對概念,需要放在特定的context討論。例如,一個懂得design pattern的團隊要處理一個有關狀態的問題,直接套用State模式也許是最簡單的。對於完全不懂design pattern的團隊,寫一個超大的switch敘述也許比較簡單。
- Feedback(回饋):軟體開發唯一不變的事就是改變,因為經常會變,所以需要回饋機制來修正方向,確定軟體與團隊依然在正確的道路上繼續前進。越快、越多的回饋,加上越短的回饋週期,越可以幫助團隊適應與調整。
- Courage(勇氣):面對恐懼與未知,還是願意採取有效的行動這就是勇氣。在軟體開發當中,面對改變進而擁抱改變、承認問題的存在、認識到自己與團隊能力的不足、敢於說出不同的意見,這些都需要很大的勇氣。
- Respect(尊重):以上四個價值之所以可以成立,背後支撐的價值就是尊重。如果團隊成員彼此不互相尊重,不管其他人在做些什麼、團隊成員不管專案狀況、專案經理也不管團隊成員執行工作時是否遭遇困難、老闆不管員工、顧客不管廠商、廠商也不管顧客(迷之音:這是什麼狀況),XP就玩不下去了。團隊中的每個人都很重要,都該被同等重視。
***
以上五個價值是XP的基礎,鄉民們的公司或是團隊也可以挑選屬於自己的價值並將其加入。介紹完XP的五個價值之後,最後回顧一下敏捷軟體開發宣言。
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Individuals可以對應到respect和courage,interaction可以對應到communication。Working software對應到feedback和simplicity。Customer collaboration對應到respect、feedback、communication、courage。Responding to change對應到courage、feedback、communication、simplicity。
感覺起來XP的五個價值抽象程度還比敏捷軟體開發宣言的抽象程度還要高一些啊。「Communication、Simplicity、Feedback、Courage、Respect」,這五字箴言要常記於心啊。
***
友藏內心獨白:Coding style可不是江南style。
沒有留言:
張貼留言