性事務,譬如狀態(tài)的匯報,客戶的管理等;其次是能力所賦予的工作,作為團隊中最有經驗的成員,他們需要參與到需求分析、架構設計、決策的制定、培訓等活動中?;鶎庸芾碚邞斢幸庾R的主動的卸下身上的工作職責,完成到一線角色的轉換,從另一個角度看,這個過程就是整個團隊能力提升的過程。
個人經驗是:
對職位責所賦予的工作,首先做到對團隊的狀態(tài)、開發(fā)的進度等盡量的做到自動化、透明化、可視化,讓所有人都能獲得這些信息,其次通過知識傳遞,把不涉及敏感內容的工作下放,重點培養(yǎng)一、兩名團隊成員參與管理。 對能力所賦予的工作,一是針對團隊急需提升的能力組織培訓,二是通過結對工作(參見結對工作,不止于結對)傳遞知識,提升能力,讓團隊習慣于自行決策,有意識的逐步弱化自己在團隊中的重要程度。 我們的的經驗數(shù)據(jù)是大約需要4個星期,新人可以在指導下正確的進行管理實踐(正確的做事),這已經可以保證基層管理角色一定的參與一線工作的時間;而讓新人具備辨別團隊目前需要什么幫助(作正確的事),進一步將原有的管理角色基本弱化為開發(fā)角色,則需要6個月左右的引導和練習。
結對工作,不止于結對
我完全認可結對工作在知識傳遞、提升工作正確性方面的作用。我們幾乎結對作所有的事情,某種程度上結對工作成為一種文化,成為了思維慣性和一種必然。長期的結對工作讓我發(fā)現(xiàn)目前的結對方式對于培養(yǎng)新人還不夠友好,這里,新人所指代的是廣義的新人概念,不僅僅指畢業(yè)生,剛剛從事測試工作的開發(fā)達人也算是測試新人。目前結對方式的的缺點在于:
培養(yǎng)了思維惰性,心理上依賴于別人的帶領。
無法從失敗中學習。有經驗的人常常會跳過很多陷阱,新人的工作經歷全是各種成功,一旦獨立工作就被這些陷阱打的措不及防。 只見樹木不見森林。譬如在TDD的過程中,新手可以看到一個個的方法是如何被設計的,如何從測試中被驅動出來,但很難從他的搭檔那里學會如何想到要設計這些方法?從下向上驅動還是從上向下,各有什么分別?為什么這個方法要被放在這個類,而不是那個?
我認為結對工作其中一個被忽略的要點在于讓新人在可控的狀態(tài)下經歷失敗,獲取經驗,并且在工作中學會思考問題的方式(如何發(fā)現(xiàn)問題?從何處著手?怎么在不同的方案中取舍?從哪里開從哪里開始分析?),而不僅僅是思考問題本身(寫什么測試?如何讓測試通過?)。從我的觀察看,培養(yǎng)新人比較有效的途徑是從全程結對工作開始,通過對細節(jié)的指導讓新人了解工作的主要方式和職責,進行必要的知識貯備,學會如何正確的做事。接下來應當讓新人逐漸學會什么是正確的事情。我們的做法是:
新人接到任務后,自行思考。
在白板上寫下完成任務的主要步驟
向教練講解主要思路和考慮點,教練通過提問引導他(輸入特殊字符會怎樣?)
自行完善方案 和教練一起確認方案 教練對整個思考過程進行點評,告訴新人這類問題的思考要點
整個過程大致耗時半個小時,這種方式的優(yōu)點是新人對方案非常了解,執(zhí)行起來不容易跑偏;有機會在可控范圍內犯錯,成長更快;
新人可以通過不斷的練習有能力通過多個任務逐漸總結出一套思維方式。教練利用這種方法可以通過代碼檢視和有選擇的結對(譬如針對任務中的難度部分結對)同時幫助多人,更有效率。
結局
在咨詢的過程中,我見過太多的團隊把目標放在交付上,冀希望于工具,外部力量能夠快速的解決問題,往往對小步前進不夠耐心,不關心團隊的成員。在我們這個 90%以上成員沒有.Net經驗,50%是畢業(yè)生的團隊中,那些微不足道的改進,一點點的提升,最終造就了這個9個月中沒有一天加班,幾乎沒有缺陷,提前交付的項目,客戶甚至愿意為他們的滿意額外支付3萬美金作為獎勵。我把全篇總結為一句話:把項目目標放在人員能力提升,讓項目成功成為能力提升的副產物。