我從一個做了將近二十年的individual contributor突然轉成了一個低層的管理人員(雖然職稱上還不是經理),在工作中做了很長時間的掙紮,大概花了一年多的時間,才找到了自己的方向。雖然我還是管理者中的菜鳥,但是我希望通過我的分享,讓大家感受到一個管理者是從哪些角度看問題的,可能會對自己有所幫助。因為有點長,要分成兩部分寫。
要講我如何工作,還要先說說我們組的組織形式。我們大組開發和維護公司的管理軟件,一共有四十多人,包括BA, Developer,DBA,係統管理員等,分屬不同的小組,每個組設一個lead。我是developer組的lead。我們同時會做好幾個項目,人員都是臨時組成的。在一個項目上,一個senior BA做project lead,一個senior developer做technical lead,領導其他的developer。如果這個senior developer有管理項目的能力的話,還可以兼做project lead,就像我最早幾章講到的我曾是technical lead兼project lead。一個項目完成了,上麵的人員就會被打散,新起的項目又會有不同的人。這樣的組織形式很像我以前做過的一個consulting公司,非常鍛煉人。
這種組織形式讓senior developer有很大的成長空間,他們直接對項目的技術質量負責,那麽lead developer的職責定義就很模糊。做得不好的話,就變成了developer加上做一些one-on-one之類的雜事,外加年終總評。這就是為什麽我做項目的technical lead的時候,卻出現了我的lead來我的項目上做developer的怪事。那時候對我來說,我的lead除了每兩個星期和我做一次one-on-one,和一年一次的年終總結,他的存在對我的工作沒有任何影響,這也是我在文章中沒有怎麽提到他的原因。他做了多年的lead也沒有提成經理,最後去了別的組做了senior developer。
我當初申請做lead,就沒打算做一個職稱變了,角色卻沒變的lead。可是這個lead應該怎麽做,卻沒有人告訴我。我的直接老板也沒有對我提出過具體期望。一開始的半年左右,我是完全陷入了一種混亂狀態,要應付各種人的各種需要。BA組的lead好心地告訴我,要了解每個人的知識和能力,這樣老板要確定什麽人做什麽項目的時候,你就能提出合適的建議。
我接受了他的建議,在one-on-one的時候就一個個問組員以前他們都做過哪些項目,對係統的哪些部分了解得多,然後都仔細地記下來。可能有人會有疑問,你在這個組這麽多年,怎麽對誰會什麽都不了解。實際情況是,我過去的精力都花在做項目上了,做過同一個項目的人我會了解,其他的就不太了解了。我把組員會的東西都做了筆記,可是並沒有在頭腦中留下太多的印象。如果有人找我推薦組員幫他們解決某些問題,我還是得把我的筆記一條條看,看看誰會。同時還要知道誰有時間,是不是在忙什麽項目,分身無術。一個看似簡單的用人問題,我卻要花些時間想。當然我還有一個私心,就是想如果我每次都要問組員誰能做的時候,我是不是顯得太無能了。不過有時候信息不全,還是要這樣做的。
在麵對全新工作的混亂狀態中,我還是做了兩件我很滿意的事情。一件事是我決定減輕senior developer對於係統維護方麵的負擔。我們的senior developer不僅在項目上管技術,還要每天處理很多production的問題,有時候甚至占到了他們將近一半的時間。於是在和老板溝通之後,我把每個senior developer要維護的方麵都加了幾個非senior developer,等senior把他們教會後,他們就可以把senior的負擔分走很多。我自己原來負責的方麵,也都慢慢交出去了。這樣這些senior,就可以把大部分精力放在做項目上了,而且非senior也可以學到更多的東西。我覺得這是一個雙贏的結果。
第二件事我覺得做得好的,是我要求組員們要互相做code review。這個在很多IT公司很普遍的事情,我們組卻做得很少。我在這個組這些年裏做的code review,兩隻手都能數得過來。是什麽促使我做了這個決定呢。一是因為有三個新組員問過我為什麽我們不做code review,二是我參加的一個經理級的培訓,聽到一個customer service的經理講他們培訓新員工時一個很有效的方法,就是聽這個員工回答用戶電話的錄音。根據錄音給員工提出改進意見。我知道我們分公司的customer service非常有名,很多用戶用我們的產品很多年,很大原因是我們的customer service極好。
這個經驗對我很有啟發。我想我們程序員的產品就是他的程序,如果有其他程序員對他的程序進行品評,特別是對一個新程序員來說,對他的幫助肯定很大很直接。很多senior寫程序的好的理念,也會在這個過程中灌輸給新人。有了這個想法之後,我就要求項目上的senior developer要review其他人的程序,其他非senior也可以互相review,這樣大家對這個項目也會更了解。
領導老美有一個好處就是,他們絕對服從領導。大家二話沒說,就開始了review。一開始沒有好的工具,我們就用email。後來一個developer把她在以前公司用的軟件介紹給我們,我們使用了幾個月的評估版,覺得非常好用。我就找老板商量,花幾千塊錢把這個軟件買下來。老板非常支持,於是不久之後,我們用上了正版。
開始了review,各種問題又隨之而來。最開始大家還在程序的format上爭論,我就想統一format,不要在這個上麵花時間。我上網找到了一個format標準,和大家討論。意見一致後,老板又支持我們專門做了一個項目,把這個標準用工具實現,並且把所有程序的format都標準化了。
很快到了寫組員的年終總評的時候,我寫得相當痛苦。因為我沒有跟進他們做的項目,從one-on-one聽來的也印象不深,隻能根據其他人對他們的反饋來琢磨他們做得怎麽樣。老美有一個特點,寫反饋的時候都隻寫好話,結果大家都差不多,很難分出誰更好。我花了很多時間讀這些反饋,試圖從些微的用詞區別來分出好和更好。最後我感覺還是不太理想,可是到了年底,大家都休假了,我也沒辦法再找人從頭仔細問。
第一年的管理工作就在各種忙亂和不滿意中過去了。