Ch22: 打造有效的團隊
難題:缺乏適當的領導、對系統各種限制的正確認識
團隊界線
架構師的職責:創造、溝通各種限制
架構師劃分界線,讓團隊能在界線裡進行架構實作。
界線的嚴謹 & 鬆散如何拿捏?
架構師的人格特質
- 控制狂架構師
- 只會空談的架構師
- 有效的架構師
控制狂架構師
- 界線太緊
- 想控制每個細節(小至一行程式碼的命名?)
- 角色轉換
只會空談的架構師
- 界線太緊
- 無經驗 or 少許經驗
- 技術實作
- 涉及該領域的深度
- 未考慮架構實作的潛在影響
有效的架構師
- 設置適當的界線
- 跟團隊達到有效共識
控制力道該多大?
拿捏控制狂 & 空談的架構師的比例。
- 團隊熟悉度: 團隊成員彼此之間的熟悉度?是否曾經在同個專案共事過?
- 團隊大小: 團隊規模多大?
- 整體經驗: 資深人員在團隊裡的佔比?
- 專案複雜度: 專案涉及的複雜程度有多深?
- 專案長短: 專案的時長多久?
如何量化控制的程度?
評估各項指標,架構師決定控制力道的大小。
假設:
- 每項因素固定 20 點
- 控制狂架構師偏「正值」
- 空談的架構師偏「負值」
情況一:
情況二:
團隊警告信號
考慮最有效的團隊大小:
- 過程損失(Process Loss)
- 多數無知(Pluralistic Ignorance)
- 責任分散(Diffusion of responsibility)
架構師尋找以上三個訊號,並協助改善。
過程損失(Process Loss)
又作 Brook 法則。
團隊大小會影響實質生產力
集體潛能:團隊成員中所有人的努力的總和
例子:不同成員經常修改相同的程式碼
方法:找出團隊能夠平行工作的部分。
多數無知(Pluralistic Ignorance)
誤以為大多數人都同意某個觀點(可能都在背後訐譙),因此不敢或不願意表達自己的真實觀點,導致集體錯誤。
例子:國王的新衣
責任分散(Diffusion of responsibility)
不清楚誰該為某件事負責、有些事無人看管 → 暗示團隊過大的訊號
利用檢查表
提供團隊一個參考依據,確認已經涵蓋及處理的每件事。
避免做的太過,讓每件事都變成檢查表,拖累團隊成效。
霍桑效應
當人發現自己成為被觀察的對象時,會傾向改變自己的言行舉止。
類型
- 程式碼完成度檢查表
- 單元及功能測試的檢查表
- 軟體發行的檢查表
延伸探討
- 檢查&確認工作每次會花團隊多少 effort?
- 自動化工具: pre-commit, IDE plugin
- 自動化測試: Unit Test, E2E Test
- 檢查表是否與時俱進?
- 是否每次都有「如實」按照檢查表進行
提供指引
提供指引,引導團隊成員檢視設計。
例子:決定程式庫
- 程式庫是否與現行功能有重疊?
- 選擇該程式庫的理由?
分層堆疊的指引
- 特殊目的
- 通用目的
- 框架
總結
打造有效團隊需集結豐富經驗、實務還有處理人際關係的技巧,根據團隊實際情況彈性調整,搭配檢查表及指引,讓團隊協作更順暢。