他們擁有神奇的魔力 真正具有凝聚力的團隊

袁野發表於2013-01-23

enter image description here

讓一個程式設計師把一半的時間投入在專案A中,把其餘時間投入在專案B中,這並不可行,尤其是當這兩個專案的專案經理不同、業務分析師不同、程式設計師不同、測試人員不同時,更不可行。在《地獄廚房》 中,這種醜陋的組合方式能稱為團隊嗎?這不是團隊,只是從榨汁機中榨出的混合物而已。

有凝聚力的團隊

形成團隊是需要時間的。團隊成員需要首先建立關係。他們需要學習如何互相協作,需要了解彼此的癖好、強項、弱項,最終,才能凝聚成團隊。

有凝聚力的團隊確實有些神奇之處。他們能夠一起創造奇蹟。他們互為知己,能夠替對方著想,互相支援,激勵對方拿出自己最好的表現。他們攻無不克。

有凝聚力的團隊通常有大約12名成員。最多的可以有20人,最少可以只有3個人,但是12個人是最好的。這個團隊應該配有程式設計師、測試人員和分析師,同時還要有一名專案經理。

程式設計師算一組,測試人員和分析師算一組,兩組人數比例沒有固定限制,但2∶1是比較好的組合。所以由12個人組成的理想團隊,人員配備情況是這樣的:7名程式設計師、2名測試人員、2名分析師和1名專案經理。

分析師開發需求,為需求編寫自動化驗收測試。測試人員也會編寫自動化驗收測試,但是他們兩者的視角是不同的。兩者雖然都寫需求,但是分析師關注業務價值,而測試人員關注正確性。分析師編寫成功路徑場景;測試人員要關心的是那些可能出錯的地方,他們編寫的是失敗場景和邊界場景。

專案經理跟蹤專案團隊的進度,確保團隊成員理解專案時間表和優先順序。

其中有一名團隊成員可能會拿出部分時間充任團隊教練或Master 的角色, 負責確保專案進展,監督成員遵守紀律。他們擔負的職責是,如果團隊因為專案壓力太大選擇半途而廢,他們應當充當中流砥柱。

1. 發酵期

成員克服個體差異性,默契配合,彼此信任,形成真正有凝聚力的團隊,是需要一些時間的,可能需要6個月,甚至1年。但是,凝聚力一旦真正形成,就會產生一種神奇的魔力。團隊的成員會一起做計劃,一起解決問題,一起面對問題,一起搞定一切。

一旦團隊有了凝聚力,但卻因為專案結束了便將這樣的團隊解散,則是極為荒謬可笑的。最好的做法是不拆散團隊,讓他們繼續合作,只要不斷地把新專案分派給他們就行。

2. 團隊和專案,何者為先

銀行和保險公司試圖圍繞專案來構建團隊。這是一種愚蠢的做法。按照這種做法,團隊永遠都不可能形成凝聚力。每個人都只在專案中短期停留,只有一部分時間是在為專案工作,因此他們永遠都學不會如何默契配合。 專業的開發組織會把專案分配給已形成凝聚力的團隊,而不會圍繞著專案來組建團隊。一個有凝聚力的團隊能夠同時承接多個專案,根據成員各自的意願、技能和能力來分配工作,會順利完成專案。

如何管理有凝聚力的團隊

每個團隊都有自己的速度。團隊的速度,即是指在一定時間段內團隊能夠完成的工作量。有些團隊使用每週點數來衡量自己的速度,其中“點數”是一種關於複雜度的單位。他們對每個工作專案的特性進行分解,使用點數來估算。然後以每週能完成的點數來衡量速度。

速度是一種統計性的度量。一個團隊可以某一週內完成了38個點,下一週完成42個點,再下一週只完成25個點。隨著時間推移,便可以得到一個平均值。

管理人員可以對分配給團隊的專案設定一個目標值。舉個例子,如果一個團隊的平均速度是每週50個點,而他們同時有3個專案要做,管理人員便可以要求團隊將精力按15、15、20來分配。

除了可以將多個專案分配給一個有凝聚力的團隊這一好處之外,這個方案還有一個優勢,如果出現緊急情況,業務方可以說:“專案B已到了緊要關頭,在後面3周內把100%的團隊精力都先花在那個專案上。”

對於那些隨意拼湊起來的團隊而言,快速重新分配優先順序實際上幾乎不可能,但是同時在2到3個專案上並行工作的有凝聚力的團隊,卻能夠很快地響應這種變化。

專案承包人的困境

對於我所提倡的方法有人提出這樣的反對意見:這會讓專案承包人失去些安全感和權力。作為專案承包人,當有一個專門團隊完全投入在其專案上時,他能夠清楚計算出團隊的投入是多少。他們明白,組建和解散團隊代價高昂,因此公司也不會因為短期原因就調走團隊。

另一方面,如果專案分配給一個有凝聚力的團隊,並且如果那些團隊同時在做多個專案,那麼在公司心血來潮時便可以改變專案的優先順序。這可能會影響專案承包人對未來的安全感。他們所依賴的資源,也可能突然間便被抽走。

坦率地講,我贊同後一種說法。組建和解散團隊只是人為的困難,公司不應受到它的束縛。如果公司在業務上認為一個專案比另外一個專案的優先順序更高,應該要快速重新分配資源。專案承包人的職責所在,便是清晰地定義和陳述專案的價值與意義,讓專案得到公司管理層的認可和支援。

結論

團隊比專案更難構建。因此,組建穩健的團隊,讓團隊在一個又一個專案中整體移動共同工作是較好的做法。並且,團隊也可以同時承接多個專案。在組建團隊時,要給予團隊充足的時間,讓他們形成凝聚力,一直共同工作,成為不斷交付專案的強大引擎。

——本文摘自《程式設計師的職業素養》

相關文章