對于提供IT專業服務的公司來說,具備專業服務能力的人才和團隊是企業的核心資產,直接決定企業提供服務的能力,進而影響企業的盈利能力。當企業處于快速發展階段,人員規模迅速擴張,每個團隊都充斥著許多新人。在這種團隊杠桿(Leverage)非常高的場景下,如何保持原有的專業服務能力,不被稀釋,并為企業的持續盈利做好人才儲備,是擺在所有團隊面前的一道考題。
背景
過去的一年半是ThoughtWorks西安辦公室迅速發展壯大的一年,其人數規模從不到十個人發展到目前的七十多個人。在此期間,我們和一家國外的客戶展開了長期的戰略合作。面對大量新招聘的人員,特別是畢業生的加入,順利實現交付并且與客戶維持良好的合作關系給團隊的能力建設帶來很大的挑戰。下面我會以Home Ideas團隊為例談談我們在這方面的經驗。
一年前Home Ideas項目的開發工作正式啟動時,初的五個開發人員中有四個是新人,其中兩個新人雖然有幾年工作經驗,但是卻沒有與該項目相關的技術背景,還有兩個新人是剛入職的女畢業生,技術基礎非常薄弱。在隨后的日子里,又陸續有新人加入,一個十人左右規模的團隊內,多時一共有五個畢業生,開發人員中只有一個已經通過了試用期。不僅如此,團隊的人員流動還非常頻繁,項目開始后的半年內,先后有兩個有經驗的新人和一個畢業生離職,并且平均每個月都有一至兩次的人員變動。為了應對這樣的人員結構和能力狀況,Home Ideas團隊進行了如下嘗試。
編程作業
緊迫的莫過于培養畢業生基本的讀代碼和寫代碼的能力。一般認為結對編程是好的培養畢業生的方式,但是在實際中,和畢業生結對的效率太低,講 授的很多內容都很難讓畢業生在結對的時候接受并消化了,主要原因是畢業生不熟悉項目的代碼和技術。Home Ideas團隊每天讓有經驗的同事給他們布置一些作業,主要是讓他們去理解和掌握項目中的代碼和技術,并且這部分代碼通常和他們正在做的用戶故事相關,第二天要求畢業生給布置作業的人講述他對那部分代碼的理解。通過這種方式,能讓畢業生迅速熟悉項目的代碼和技術,使得他們在結對編程中的學習更有效率。
另一種作業是基本編程能力的練習,我們通常用一些典型的面向對象編程練習題。通過和畢業生一起對題目分析,將解決方案拆分成一個任務列表,要求畢業生必須用TDD的方式,每次完成一兩個任務,并提交代碼到Github上,布置作業的人會檢查并提出重構的建議,然后畢業生修改后提交,通過檢查后,再做下一個任務。我們將這種“小步前進”式的編程作業稱之為“持續提交”(Continuous Commits)。經過一段時間反復的練習,能夠提高畢業生的基本的面向對象編程、TDD、重構、任務分解等方面的能力。需要注意的是,布置的作業一定要檢查,否則,相當于沒有布置,只有這樣才能形成一個完整的戴明環。