小议团队自组织
本文是《敏捷熱點問題的多角度雜議》(首次刊發在程序員雜志2011年9月刊)的一部分,為方便討論,在這里獨立成文。
“自組織”是敏捷中難以把握的一個詞,英文是self-organizing,也有地方是self-organization,還有self-organized,以上三個詞的中文都譯為“自組織”,從英文來看,顯然三者是有區別的。
??? 在敏捷軟件開發宣言中沒有提自組織,在敏捷原則中相關原則的英文原文是:
The bestarchitectures, requirements, and designs emerge from self-organizingteams.?
中譯文是:最好的架構、需求和設計出自自組織團隊。Scrum中用的詞也是self-organizing。
??? 從字面意思上理解,敏捷原則指出了自組織為方向,推薦自組織(self-organizing)團隊,但并沒有強制要求必須自組織。這與現代管理學對待知識工作者的方向是完全一致的。已經有研究結果表明,基于X理論并且很好的適用在體力工作者上的管理方式是不適用在知識工作者的。
??? 通過英文單詞self-organizing和self-organized可以看出,自組織可以分為兩種狀態,1種是正在自組織中,第2種是已經自組織了。self-organizing更像是一種趨勢,當團隊展現出向self-organized的趨勢時,這個團隊就可以算是自組織中的團隊,簡稱自組織團隊。
圖 團隊類型的三角關系
? ??在講到自組織時,常常拿自然界的螞蟻群和蜜蜂群作為自組織的典范,但是同樣在自然界的獅群、狼群和猴群等也是符合自組織的特征:“沒有外部指令,系統按照相互默契的某種規則,各盡其責而又協調地自動地形成有序結構”。所以沒有團隊內部領導者并不是自組織的本質特征,自組織團隊內部不一定沒有領導者。
在Scrum的團隊方案中,取消了項目經理角色,給ScrumMaster加了不少限制,團隊內部沒有指定的領導者,不允許給他人分配任務,如果團隊能夠有效運轉的話,自組織程度必然很高,可以說超越了self-organizing,達到了self-organized。這樣對Scrum團隊就意味著必須強制采用自組織方式。對比XP的理念,好的東西就發揮到極致,Scrum有點這樣的味道:自組織團隊是好的,就要把自組織發揮到極致。一盤散沙、群龍無首的團隊是個極端,自上而下命令與控制的團隊也是個極端,完全已自組織(self-organized)團隊也是個極端,存在一個如上圖所示的團隊類型三角型。
現在已經有多個例子表明,沒有團隊領導者的Scrum團隊是可以獲得很高的團隊績效的,照樣可以形成原來在個別杰出項目經理身上的團隊領導力。當然也有例子說,標準Scrum團隊搞不下去。
如果團隊成員只會做相應報酬的工作量,還可能基本還達不到其相應的報酬,大多數人都在混日子啊;如果給他們自由,他們會只會做他們感興趣的事,要么聊QQ,要么打游戲,看閑書,反正不干正事,那么這個團隊離圖二所示的完全已自組織頂點還很遠,要有效發揮團隊能力的話,一個富有領導力的領導者是最可行、最現實的解決方案。
另據報道,當前這個世界上已經存在一家名為Semco的公司,這家公司的團隊沒有內部領導者,團隊成員的薪酬已經內部公開,并且各團隊成員能夠心平氣和的協商確定各自的薪酬,團隊績效非常好。這樣的團隊真可以算是自組織的巔峰了,讓人不由的聯想到傳說中的共產主義社會。
筆者認為適合的才是最好的,應在三個極端構成的三角型中尋找合適的位置,把握三者之間的平衡,以團隊貢獻目標為導向,不必追求形式上的極端。所以筆者并不贊成僅僅是為了搞Scrum而取消團隊內部領導者。
從傳統軟件工程看,團隊內部領導者的設立似乎是理所當然的。中國政府信產部推出了名為“信息系統集成項目經理”的資格證書。
從CMMI來看,在CMMIfor Dev 1.2中,明確給出了項目經理的名詞解釋:負責計劃、指導、控制、構建、激勵項目的人,項目經理對滿足客戶負責。顯然的,這個解釋就是傳統軟件工程中理所當然的解釋。而在2010年10月發布的CMMIfor Dev 1.3中,項目經理的名詞解釋沒有了,在正文中,說明了項目管理相關目標和實踐,沒有提項目經理。這個改變顯然是敏捷所帶來的。因此最新的CMMI for Dev看,只要滿足項目管理相關目標,沒有團隊內部領導者的團隊能夠符合要求,當然傳統的項目經理也能符合要求。
Scrum關于自組織的高要求在前文已經說明,而從XP及其它敏捷方法流派來看,“自組織中”的團隊是得到推薦的,而且自組織程度需要比較高,但缺省的仍然保留了項目經理或領導者的角色。在敏捷的另一個流派-精益(Lean)當中,就強調經理發揮好教練的作用,并且將此作為精益的基礎。水晶方法集中存在項目協調者或項目經理的角色。總結
- 上一篇: 开发可以复用的构件和利用可以复用的构件进
- 下一篇: ”过程”在敏捷开发中的位置