軟體開發團隊的成員,能夠盡可能保持穩定,當然是最理想的。可是,團隊成員的變化很多時候在所難免。

例如,為了得到更多的生產力,所以團隊有時候會擴編,引入新的成員進來。當然,也有可能是因為有特定的工作目標,必須讓具備特定技能的成員加入。另一方面,團隊中的成員也有可能基於種種因素,而離開團隊。

無論是成員的加入或是離開,都會對團隊帶來額外的負擔。但是,此種成員的變化,不論是增加或是減少,卻又是在所難免。如何盡可能避免成員的異動以減少額外負擔,或是在此類異動免不了發生時,如何降低因此所產生的衝擊,其實是團隊經營上的重要議題。

當你的團隊中出現新成員
成員的增加,乍看之下是好事,因為它應該意謂著資源充份,所以團隊才有機會增加成員。但很多時候,團隊的成員增加,往往是反映著一些不利的情況。

怎麼說呢?通常在一個開發專案中突然插入新的人手進來,目的常常都是為了救火,為什麼需要救火,當然就是有了比較危急的情況發生。例如,突然發現專案的重要時程無法趕上,所以希望藉由增加人力來到額外的生產力。

當然,在專案中途突然插進人力,不會像寫數學式子裡做加減那樣容易地,就突然增加了真正可用的生產力。

通常,新的成員必須先花時間,了解專案的目標、內容、進行中的工作、甚至是已經完成的程式碼,這些都會耗去不少新成員的時間,更別提他們能真正的上戰線提供正面的協助了。

而在此同時,他甚至會影響現有成員的生產力,因為現有成員必須耗費時間和心力,帶著新成員適應、了解整個專案。更別提新成員或許得花上更長的一段時間,才有可能在文化上和原有的成員融合在一起。因此,在專案進行中才加入人力,通常需要一段時間,才可以把新增的人力從負的效應轉成正的效應。

有一些情況,在專案的進行過程中為團隊增加成員所造成的負面影響可能不會太大,像是,新加入的成員和現有成員原本就有合作的經驗,彼此之間有默契,而且也熟悉現有成員所使用的工具、應用程式框架、平臺。對於要解決的特定問題,也沒有存在太多的相依性,那麼,擴增成員的負面效應就會低許多。

如果非得為團隊加上新成員,最好的時機當然是新的專案開始之際,這麼一來,新成員便可以省去適應專案背景及既有程式碼及架構的力氣。當然,除非萬不得已,還是盡量不要在專案的進行過程中,擴增團隊的成員。

新成員融入團隊的困難
相較於專案背景及既有程式碼的熟悉,對新成員來說,有時候不見得是最難的,最難的有時候是讓他融入團隊的工作模式及文化。

團隊的工作模式或文化的重要性時常被忽略,因為它們的作用通常不那麼直接,實質的影響力不像是直接可以產出程式碼,或是直接接手他人的程式碼開始維護、編寫。然而,這些影響雖然不直接,但卻深遠。

舉例來說,對於一個採用敏捷開發方法的團隊,若是有一個新的成員並不熟悉敏捷開發的模式和文化,那麼他或許花上一些時間可以了解既有的程式碼和系統架構,但他可能要花上更多的時間才能真正融入團隊的模式、文化,才能真正和團隊原有的價值觀達成一致。

一個不習慣pair programming(結對程式設計)的新成員來說,若要他習慣pair programming的工作模式、熟悉pair programming時的技巧和方法,同時認可pair programming所帶來的價值,都會需要花上很多時間。而這對像「單元測試」、「重構」、甚至像「測試先行」等等相關的方法、觀念、技巧、和價值觀,都是一樣的。

他需要花時間明白觀念、學習技巧、知道如何運用方法,同時更重要的是,他得認可背後的價值觀——他相信這麼做,的確可以帶來好處,而且很清楚的知道可以帶來什麼好處。他也明白究竟基於什麼樣的原因,團隊需要採用這樣的做法,包括團隊的成員的背景、能力屬性、開發產品或專案的特性、團隊的規模等等要素,而採用這樣的做法,也真的可以帶來好處。

要明白觀念、學習技巧和方法或許比較簡單,相對比較難的,是讓一個人認可這些觀念、技巧、方法背後的價值觀,而且相信這套價值觀的確是有正面助益的。

就像有些人覺得,他所負責的程式碼是屬於私人在團隊中的資產,除非他把工作交接出來,否則他也不希望別人碰觸到這塊程式碼,甚至是看到其內容。而這樣的價值觀,就會和「知識共享」、「程式碼共有」的價值信仰相衝突。不同價值觀的人或許可以在同一個團隊中一起工作,但是相信會很容易發生各種衝突,而這些衝突,就會抵消掉大家一起協力合作所帶來的好處。

開發團隊中的認同與文化

許許多多團隊中共有的價值觀綜合在一塊,就會構成團隊的文化,對一個新成員來說,所面臨的最大挑戰,往往是認同這些價值觀,並且融入團隊的文化中。我們常常談技巧、談方法,但很少談價值觀、談文化。技巧方法的習得通常相對容易,而價值觀的認同、文化的融入卻相對難。但價值觀的認同或文化的融入,其影響力通常更為深遠。

一個人就算有單元測試的觀念,懂得利用自動測試框架來編寫測試案例,但是,他本身如果不認同單元測試所能帶來的效益,也不認同測試先行或測試驅動式開發的理念,那麼要他融入一個力行單元測試、以測試來驅動開發的團隊,就會遇到相當的困難。

所以說,文化的感染,以及建立價值觀的認同,有些時候才是一個團隊有新成員加入時最困難,但也最重要的議題。身為一個團隊的領導者,最重要的議題之一,無非是思考你希望你的團隊的重要價值觀是什麼、你希望團隊能夠建立什麼樣的文化?舉例來說,如果你希望團隊能夠建立「知識分享」的價值觀,那麼就應該讓每個加入的成員都明白為什麼你希望這麼做,讓他們明白這麼做可以帶來什麼好處,而且讓他們可以認同。有些團隊不講究價值觀的一致,所以大家不容易用相同的步調或互動的模式來工作。

讓他們認同的過程或許不見得那麼順利,就跟傳教一樣。基於不同的背景,有時候新成員一下子就可以接受,有時候一開始得透過一些半強迫性,甚至是強迫性的手法,但你終究得在這半強迫性或強迫性的過程中,讓他透過實際操演後的實質回饋,體會到的確可以帶來好處。如此一來,就不只是你單方向的傳教,而是他能透過實務體會到你所傳的「教」是「真實不虛」。這更能讓他信服,也更能加深他對於價值的認同。

讓所有的人踏著相同的步伐,往相同的目標前進,對開發來說是很重要的一件事,尤其當隊伍中有新人加入時,更要確定他的步伐能和其他人一致。因此,對一個開發團隊來說,那不只是能力的問題,更多時候,那是價值觀和文化的問題。讓每個人都能有相同價值觀,無疑是團隊領導者的重要工作之一。

專欄作者

熱門新聞

Advertisement