程式碼整潔之道--讀書筆記(13)

畅知發表於2024-09-19

程式碼整潔之道

image-20240904225436374

簡介:

本書是程式設計大師“Bob 大叔”40餘年程式設計生涯的心得體會的總結,講解要成為真正專業的程式設計師需要具備什麼樣的態度,需要遵循什麼樣的原則,需要採取什麼樣的行動。作者以自己以及身邊的同事走過的彎路、犯過的錯誤為例,意在為後來者引路,助其職業生涯邁上更高臺階。

本書適合所有程式設計師閱讀,也可供所有想成為具備職業素養的職場人士參考。

第十三章 團隊與專案

image-20240919070111183

小專案該如何實施?如何給程式設計師分派?大專案又該如何實施?

13.1 團隊開發僅僅是簡單的混合嗎?

這幾年來,我為許多銀行和保險公司做過諮詢。這些公司看起來有一個共同點,那就是它們都是以一種古怪的方式來分派專案的。

銀行的專案通常相對比較小,只需一到兩名程式設計師工作幾周即可

這樣的專案通常會配備一名專案經理,但他同時還會管理其他若干專案;會配備一名業務分析師,但他同時也為其他專案服務;也會配備幾名程式設計師,他們同樣同時參與其他專案的工作;還會配備一到兩名測試人員,他們也同時測試其他專案。看到其中的模式了吧?這些專案太小,無法把一個人的全部時間完全分配其中。每個人在專案上的投入都是以50%甚至25%的比例來計算的。

但是,不要忘了:事實上並沒有半個人的這種說法。

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

有凝聚力的團隊:

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

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

團隊的人員組成及其比例:

  • 有凝聚力的團隊通常有大約12名成員。最多的可以有20人,最少可以只有3個人,但是12個人是最好的。這個團隊應該配有程式設計師、測試人員和分析師,同時還要有一名專案經理
  • 程式設計師算一組,測試人員和分析師算一組,兩組人數比例沒有固定限制,但2∶1是比較好的組合。
  • 由12個人組成的理想團隊,人員配備情況是這樣的:7名程式設計師、2名測試人員、2名分析師和1名專案經理。

團隊組成人員的分工與職責:

分析師與測試人員:

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

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

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

團隊的發酵期:

  • 成員克服個體差異性,默契配合,彼此信任,形成真正有凝聚力的團隊,是需要一些時間的,可能需要6個月,甚至1年。
  • 凝聚力一旦真正形成,就會產生一種神奇的魔力。團隊的成員會一起做計劃,一起解決問題,一起面對問題,一起搞定一切。
  • 團隊已經有了凝聚力,但卻因為專案結束了就解散這樣的團隊,則是極為荒謬的。最好的做法是不拆散團隊,讓他們繼續合作,只要不斷地把新專案分派給他們就行。

團隊和專案,何者為先?

專業的開發組織會把專案分配給已形成凝聚力的團隊,而不會圍繞著專案來組建團隊。一個有凝聚力的團隊能夠同時承接多個專案,根據成員各自的意願、技能和能力來分配工作,會順利完成專案。

如何管理有凝聚力的團隊?

管理團隊的專案速度:

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

專案承包人的困境:

作為專案承包人,如果有一個專屬團隊完全投入在其專案上,他能夠清楚計算出團隊的投入是多少。他們明白,組建和解散團隊代價高昂,因此公司也不會因為短期原因就調走團隊。

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

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

13.2 結論

團隊比專案更難構建。因此,組建穩健的團隊,讓團隊在一個又一個專案中整體移動共同工作是較好的做法。並且,團隊也可以同時承接多個專案。

在組建團隊時,要給予團隊充足的時間,讓他們形成凝聚力,一直共同工作,成為不斷交付專案的強大引擎。

相關文章