長期以來,很多Team的組合都是隨意的,從創建到穩定, 不經意之間,一個Team就出世了,在項目進行當中,弊端盡現的時候,也沒有人注意到是團隊的組織架構,人員搭配是否出現了問題,Team成長過程,就好像一個樹籽落在地下,然后自生自滅,有的長成了歪脖子,有的則樹倒猢猻散,有一部分,運氣好,成為能經風雨的大樹?! ?br />
幾年來,雖然敏捷管理與開發,深入一些經驗豐富的PM和開發人員之心,但是在推廣時,卻南桔北枳,沒有了味道,
一些優秀的開發與設計思想或技術,如TDD、MDD,大部分只流轉于個別經驗豐富的開發人員之間,在團隊項目開發中,不見了蹤影。
這些都非常不利于個人和團隊開發經驗的積累,更不利于推廣。
雖然這方面的緣由甚多,例如,在大公司,更傾向于按部就班的,流水化作業的形式,大多的領導,希望以文檔驅動的方式,來進行作業。例如在Microsoft,也是個別的團隊首先偷偷摸摸的搞起敏捷,然后才得以向其它團隊推廣,但推廣的方式是思想溝通、培訓多于實際運作。(見CSDN程序員2006年雜志)。
連Adobe這樣有名的技術主導型的公司,,也不過是在2006年開發CS3的時候,才改變以往,吃盡苦頭的,BUG成堆的,瀑布式運作方式,開始轉向迭代增量開發。(雖然雖然迭代,在90年代,就已經開始了)
參見:Adobe edits the development cycle http://www.regdeveloper.co.uk/2007/03/08/adobe_cs3_development/
當時采訪Adobe photoshop團隊時,一個很直接問話:
If it's such a good idea, why did it take so long – and how did you manage to change this time??。ㄈ绻@是一個非常不錯的方法,為什么你們到現在才開始使用?你們是如何在這次項目當中,轉變自己的?)
但是更多的方面,還取決于團隊中的每一個member.首當起沖的是Leader,是否有豐富的開發經驗,是否有執行力,是否有Open的精神,能否堅持不懈的把敏捷這種思想,通過不同的形式,一點一點的展現或灌輸給團隊。
一個自適應的團隊,首先要來自于一個自我調節的Leader,能夠通過溝通、持續改進等方式,來不斷的調整自己的管理方法,不斷的改進開發的過程,并且能不斷的改進團隊的思想,使團隊的成員,不斷的成長。
Leader也需要學習,需要成長,在敏捷的團隊當中,大家都是互補的,不存在junior, senior之分。
所以團隊的精心打造,就在于互補,很多領導寄希望于萬能的Leader, 這往往是失敗的開始,Team Leader往往成為進度的瓶頸,delay的主要因素,為什么?因為他只是扮演了一個救火隊員的角色,到處都是失火,如何能救的過來。
自適應的團隊,就在于人人都是主動的、自發的。問題出現的時候,不在于是你的問題,還是他的問題,而是立即解決,不是積累到失控的時候,才去解決。
所以打造這樣的團隊,不僅僅是對Leader要求高,對于團隊中的每一個人要求都高。例如對于迭代中的一個best practice,就是要求,在每一個周期的,Time-box控制的都是相當嚴格的,要求Leader每天,都要跟緊成員的開發狀態,以求每天都有結果。如果不是一個自適應的團隊,如果一個團隊有幾十個人,那Leader都要累死了,每個人的座位走一遍,都快要下班了。
有人會說,這是太理想化的東西,我想,這是一個思想層面的認識問題,一個推動力,一個唱黑臉,敢于在組織架構上動刀子的問題。
這幾年,我經歷的團隊當中,往往都是開始的,兩三人,不斷膨脹到十人左右,但真正起作用的,不過1/3,砍掉一半,團隊照樣跑的轉。
我想一個3、4人的敏捷小分隊,要勝過10人的團隊,很多PM總是在后期抱怨缺人,領導也一味的滿足他們的要求,不斷的在中后期加人,卻不愿意在團隊成立之初,去好好的考慮團隊的建設問題!
考慮一個團隊的架構,很多人,自然會想到首先從技術方面想,如高級程序員,中級程序員,普通程序員,系統分析員等,一些大的公司,也會設這樣的崗位,不同的崗位,Money不一樣,職責不一樣。這不過是一廂情愿的典型的人事設計方式,非常粗粒度的切割方式。
其實從技術方面,來考慮,是打造Team的一種主要的方式,但也并是說用這種無知的、分級的方式打造,這樣只會損害團隊的合作!
對于技術方面,要結合項目的特性,進行精細化的考慮,如果不知道怎么做,可以看看Microsoft的用戶體驗團隊的組織架構:
另外,也可以看看Google的開發小分隊的組織架構,就像三角洲的小分隊,精悍無比。
一個Team leader, 一個用戶體驗工程師(不僅技術好,人機交互的理念也要到位),一個teser.
??? 目前的開發人員,很多都不滿足不了這樣的要求,很多程序員,除了會寫個Java代碼,其它一無所知,甚至不知道怎么去寫HTML代碼了,怎么可能去做一個解決問題的開發人員?我現在的項目,采用的是原型迭代的方式,項目中的幾百頁的靜態原型,都是我一個人做的,我想交出去,沒有一個人會!
??? 現在的三層開發,誤導了技術走向,很多人以為只會一層就夠了,不會SQL,不會javascript,頁面也不會寫.
其實從管理、自制和思想層面,也是另一種渠道。團隊中人員要考量他的交流、溝通能力,他的思想層面,是否有團隊精神,是否能夠接受新技術,熱愛技術。對于惡劣的磁、破壞性巨大的程序員,要敢于清除出隊伍,避免毒性擴散。
這是不是,還是非常的理想化,也許你們還是接受不了,寧愿十幾人的干活的熱鬧場面,不愿意5個人以內的敏捷團隊?