◆人員情況:國內大多數的公司都處于一種為了謀生而存在的狀態下,有很多技術人員都有三五個月就跳槽的經歷。不僅僅是技術人員,往往公司也是這種狀態,很多公司就是為了某一個項目而建立的,老板在招聘技術人員的時候,都是往最低限壓低技術人員的工資,當一個技術人員對項目了解到一定程度的時候,這個時間往往是在三個月到半年時間之間。半年,或者一年,是一個人最容易發生跳槽行為的時候,因為這個人了解了公司的實質情況,如果老板當時騙了人,那么這個人必然要離開公司;如果老板當時過分地壓低了他的收入,那么這時候這個技術人員就希望能夠獲得加薪等等,除此之外,還有很多很多其他的因素,都會給人帶來未知的行為。也可以說,國內很少有 團隊成員能夠合作達到一年以上的時間。這樣的話,第一個項目磨合好了,第二個項目就是在考慮跳槽,第二個項目未結束人就走了,這是我們平時很常見的現象。
這個時候做結對編程,效果就不會那么明顯,因為在人員相對成熟的時候,人的心理發生了較大的變化,工作的積極性和配合程度也遠遠不及剛剛進入公司的時候。那么結對編程在這樣的環境下還能進行下去嗎?估計不用分析就可以知道了。這時有人會說,如果配合不好,那就換人結對,不一定非要這兩個人結對。那這就要從項目組人數說起了。
◆項目組人數:在我所開發過的項目中,大概有不到一半的項目有十個人以上的開發團隊。最大的團隊開發人員是不到三十人,這二十多人還要分成幾個組,每個組也就五六個人而已。在這種情況下,結對的問題就出現了,在組內的你只能和這么三五個人結對,是不是都很容易配合起來呢?這個事情很難說。配合不好怎么辦?換人?換項目?還是換公司?當然,如果配合了三個月還配合不好,站在公司的立場上,是肯定要考慮開除掉某人了,至少也要將他降薪或者調離這個項目組,因為公司承擔不起這么大的 風險。 項目經理更是在擔著風險,因為結對編程的事情老板本來就不太樂意看到,本來老板就有意見,而項目組如果發生了這樣配合力度很差的情況,項目經理的處境可能就非常危險了。
綜合上面這三個方面的情況,我們可以得到如下的結論:
結對編程在中國這些短小項目過多的情況下是不太適合的!結對編程其實更適合一些相對人員較為穩定的開發環境,否則,三個月的低效率配合時間會讓老板將項目經理的腦袋當球踢的。但是,結對編程還是有其好處的,比如,提高項目組的穩定性,當一個人離開后,另外一個人可以很快地將新人帶到位,項目組不會因為人員變動而發生較大的風險問題。同時,結對編程提高了 程序員之間的交流,團結了項目組內成員,同時容易形成人月神話中提到的膠凍團隊的效果。另外,在三個月后還是有效率提高的情況發生,的確能夠帶來很好的效益的。
項目組穩定性提高
◆ 表現
在我前面的例子中可以看到,一個模塊至少有三個人對他它很熟悉,因此在后面的開發過程中,無論哪個人發生變動,都不會影響這個團隊的穩定性,所有的任務都能夠很好的延續下來。每一個系統的模塊都會至少按照階段數量(不同的項目會有不同的開發周期,同時也就有不同數量的人會對這個模塊十分熟悉)分給不同的人來進行開發。如果和結對編程配合起來使用,則將會使得對同一個模塊了解的人數達到一般交換編程的兩倍人數。
◆ 分析
有了這樣的對每一個模塊都很熟悉的人員數量的存在,團隊的穩定性就會表現出來,任何一個人的變動或者少數人員的變動都不會對團隊和開發進度產生較大的影響。因為隨時都可以有其他人來接替這個發生變動的人的全部工作,也很容易培養新人進入到團隊內來進行工作。
更適合沒有絕對高手的團隊
◆ 表現
當團隊內沒有絕對高手存在時,也就是說,系統的架構設計將是更多的人一同討論出來的,并在開發過程中不斷的修改和調整。