l

2014年3月11日 星期二

談談XP(3a):Primary Practice

Mar. 04 11:00~12:40

Agile workspace[3]

敏捷開發工作空間,當我們坐在一起XD。

 

二月份介紹了XP的Value(價值)與Principle(原則):

接下來幾天來談談XP的Practice(實務做法)。在XP第二版當中,Practice分為Primary Practice(主要實務做法)與Corollary Practice(配套實務做法)。Kent Beck建議先修煉Primary Practice再考慮Corollary Practice,比較不會「走火入魔」。

***

Primary Practice一共有13個,今天介紹前2個:

  • Sit Together(坐在一起):這一條實務做法包含兩個部分,首先,將開發團隊成員全部集中到一個夠大的空間一起工作。接著,為了滿足個人對於「私密性」的要求,在開放空間附近準備一些小的私密空間(例如小會議室、凹室或小隔間),或是限制工作時數,讓團隊成員可以有時間處理私人事務。

很多人以為敏捷開發把人全部都擺在一個開放空間工作,沒有考慮到個人獨處思考或是處理一些私人事務的需求。雖然XP的這一條實務做法有提到需要平衡「開放」與「私密」這兩個互相衝突的力量,但實務上在實踐這條作法的時候,可能是因為空間與經費的限制,在台灣絕大部分的敏捷團隊(公司)都只做到了前半部。

其實Teddy覺得幫開發團隊準備開放與私人空間是很合理的要求,Teddy以前待過硬體公司,針對某些特定的工作,就幫研發人員準備了「開放」與「私密」工作空間。首先,「私密空間」是每位員工都有的座位(cubicle,辦公室隔間)。而「開放空間」是一個實驗室,裡面擺滿了很多昂貴的儀器設備。這些研發人員大部分的「工作時間」都是待在實驗室裡面,因為裡面才有他們「工作」所需的設備。雖說如此,但是公司並不會把他們的「私密空間」給沒收。

但是,要是軟體開發團隊提出需要一個「開發實驗室」的需求,或是長期預約一間足夠大的會議室作為開發之用,有很大的機會是會被公司打回票。老闆曰:「寫程式不是只要一台筆電,隨便找個位子就可以工作了嗎?」。別小看「Sit Together」這麼簡單的實務做法,在實務上要「做到位」說真的還不是很容易啊。

  • Whole Team(完整團隊):這一點就是Scrum所稱的「cross-functional team(跨職能團隊、全功能團隊)」,也就是將完成專案所需的人全部拉到同一個團隊裡面。為了完成專案,團隊成員需要密集溝通。完整團隊可以讓絕大部份的溝通發生在團隊之內,而非「跨部門」或「跨專長」的溝通。例如,傳統的軟體專案分工方式,可能會組織一個以「程式設計師」為主的開發團隊,當開發人員有UI(使用者介面)設計的問題,就要跑去跟UI團隊的人溝通。這種以「職能(專長)」區分團隊的做法,除了導致專案進行時發生很多「跨團隊、跨部門」的「不良溝通」甚至是「無效溝通」以外,不同團隊、部門的相關人員,對於專案的成敗也是不痛不癢,難以形成向心力與激發士氣。

完整團隊的組成是一種「動態關係」,有時候因為加入一個具備多重能力的人,便可形成完整團隊。在專案進行過程中,有些能力可能不在被需要,此時具備這種能力的人便可離開團隊到其他地方貢獻自己所長。

關於團隊大小,Scrum的說法是7加減2,也就是5~9人。Kent Beck在書中則是參考《The Tipping Point》這本書的說法,提出兩個數字:12和150。當一個團隊大於12人時,將其拆成兩個團隊。150這個數字可以想像成約12~13個小團隊一起合力完成一個案子。《The Tipping Point》這本書Teddy幾年前有讀過,書中提到有些公司會讓一個部門或是一個工廠維持在150人以內,因為這是一般人可以記住同事姓名和面貌的上限,超過這個數字將有害於組織內部的溝通。12則是一個人一天之內可以方便、舒適、較無壓力密切互動的人數。當過兵的鄉民應該對這兩個數字有點熟悉, 所謂「九條好漢在一班」,軍隊的編制一個班約7-13之間(參考維基百科),一個連的編制約在120人左右,和《The Tipping Point》所說的12和150這兩個數字很接近。

最後一點,Kent Beck提到原則上不要將人的時間切割分配處理多個工作,因為這樣會導致task-switching(工作切換)的浪費。

***

講到XP大家最有印象的實務做法可能是Pair Programming、TDD、CI,其實很多敏捷團隊所採用的實務做法,都和XP有關。今天介紹的Sit Together與Whole Team,也適用於Scrum。繼續往下看,鄉民們可以發現XP已經滲透到不同的敏捷方法之中不要告訴別人

***

友藏內心獨白:這就是所謂的英雄所見略同吧。

沒有留言:

張貼留言