英文原文:Engineering Managers Should Code 30% of Their Time程序員
在一個科技公司裏,軟件技術經理用在編程上的時間應該不低於總工做時間的30%。不管是管理一個團隊,仍是一個分部,仍是整個公司,當技術經理用在編程上的時間低於30%時,他執行職責的能力就會發生嚴重退化。面試
個人這個斷言可能跟那些我看到的想成爲團隊首領的軟件程序員們指望的狀況徹底相反。每次晉升,程序員們都期待花在編碼上的時間會大幅度減小,當從「leader」爬到「經理」職位時,就應該完全脫離編碼活動。並且,他們指望以一種「動口動眼不動手」的方式來保持對代碼庫的熟悉。再上級的領導就跟編碼徹底不要緊了(若是有的話)。編程
大概一年前,當時個人時間被愈來愈多的其它事情佔用,例如招聘,管理,開會等。我就發現,做爲一個技術首領,當花在編程上的時間低於某個比例後,管理效果和工做效率就會出現問題。以前我寫過一篇短博客闡述過這種體驗和觀點,但沒有展開具體的描述。這裏,我將會對這個觀點展開更詳細的論述。學習
爲何要堅持編程活動測試
不少人認爲,做爲管理者,應該退出戰鬥第一線,專一於大戰略和管理工做。固然,管理者把大部分的時間用在這種事情上是應該的。可是,在咱們這樣一個行業裏,由於咱們容許或要求管理者幾乎再也不去編程,現實讓咱們付出了沉重的代價。一旦一我的中止編碼,他和程序員們關心的事物之間的重要聯繫就會退化。當這種狀況發生時,決策、計劃和幹羣關係就會出問題,從而瓦解了將技術人員提高到管理職位的良好願望基礎。優化
項目開發評估能力編碼
程序員的百寶箱中最重要的一個絕活就是估計工期。若是沒有準確預估的能力,總體計劃是不可能正確的出臺的。你們也知道,作爲一個族羣,程序員們對工期的估計是臭名昭著的——糟糕的不能再糟,事實上,當從程序員口中獲得一個預估的數字後,公認的方法是將它乘以二。一般,程序員都會對開發工做抱有很是樂觀的態度,但若是咱們使用「estimate traction」理論,就會發現,編程活動表現出特別易變的特徵。由於我能夠用不少方法實現一個功能,當咱們在尚未深刻細節以前,咱們的估計就是不可靠的。code
技術債務進程
另一個事情是,對於技術債務給項目形成的影響,技術經理必須掌握第一手的資料。現在,技術債務這個術語很是流行,常被用來看成爭論的彈藥——優先開發新功能仍是先重構老代碼。對「技術債務」這個詞的內涵熟悉的人一般最容易發起論戰。做爲技術經理,你不只僅要熟悉這個概念,並且它們會在你判斷什麼時候償還技術債務的決策中起直接做用。常常寫代碼的經理擁有更多更有價值的信息來判斷什麼時候/如何作出這樣的決策。事務
知情的連續性
我並非隨意選擇30%的比率的。我是基於本身的經驗,將足夠的時間參與到開發活動中,你很容易就能時刻掌握代碼庫的任何變化。若是時間太少,你對開發動態的掌握就是斷斷續續,沒法連成線。一旦斷了線,我就須要從新理順脈絡,由此獲得的懲罰就是浪費了額外的時間。
分擔責任
做爲負責人,你不可能讓全部決策都由你制定或由你批准。但你須要瞭解全部決策的來龍去脈和背景知識,來輔助這些決策。最終,你要爲這些決策的後果負責,你對項目狀況的掌控能力要能匹配你的這份責任。
積極參與編程贏得團隊尊敬
你們須要明白:要想成爲一個成功的經理,你須要爲團隊成員提供服務,促進開發,確保他們完成任務。我曾在一篇博客裏寫過如何診斷和修復經理們有問題的幹羣關係。可是對於的管理程序員來講,你須要熱愛編程。由於你的團隊在編程,若是你在編程上作榜樣,他們都會對你肅然起敬。
達到30%的障礙
儘管付出了最大努力,我仍然在保持30%的編碼時間上遇到了不少的阻礙。包括下面這些:
工做繁多:在一個創業公司裏,你總有忙不完的工做須要去作,即便在公司有規模、壯大後,如何對衆多都很重要的事情排優先級也是一種考驗。技術經理有不少職責,徹底會佔滿他的70%的時間。下面就是一些:
奪回時間:上面我說的這些活動都是一個技術經理應該投入時間的事情。下面要說的是我從經驗中發現的一些陷阱,是它們在阻擋我努力保持20%最低限度的編碼時間,至今仍站在我面前,妨礙我重回30%的目標。
失敗的策略
當在探索如何奪回個人編碼時間時,有不少的方法並不奏效。
成功的策略
儘管走了不少死衚衕,我仍是發現了一些成功的方法:
最後幾招
下面是一些經驗建議,送給那些發現本身試圖達到30%但沒法接近的技術經理們:
我但願這些方法對大家有用。若是你有其它更好的技巧,請在評論裏告訴我。謝謝。