Facebook前工程總監黃易山撰寫了一系列文章,很好地總結了Facebook卓越研發文化中的寶貴經驗。本文是這一系列文章的第五篇,也是最後一篇。
何謂技術型領導
所有從外部聘用的管理人員包括技術部門負責人,都必須能夠編寫程式碼,並且要達到爐火純青的地步。如果是一家技術公司,CEO也應如此。
現在有個誤區就是認為程式設計不是高管或者經理的必備能力,彷彿只是一種花哨的打字形式。但其他專業化行業都不這樣認為:銀行業高管必須能夠閱讀資產負債表;汽車業高管則需要了解催化轉換器等。
有人可能會說,技術的精通程度無法檢驗,因為一個傑出的管理候選人最近幾年可能只關注於管理,與技術已無直接的接觸。而且,一個傑出的經理可以管理一切事情。顯然,這是不真實的。
當然,並不是希望候選人能用當前有限的擴充套件性技術建立一個大規模系統,或者在晶片集這種底層進行優化,或者能記住特定語言或框架的詳細語法。但檢驗一個經理候選人是否具有較強的個人技術背景是合理並且可取的。當然我指的是基本技能測試,如果候選人曾經是一個稱職的技術人員,他肯定能通過程式設計測試,包含某些簡單迭代或遞迴演算法,以及計算機基礎學科中指標、雜湊和作業系統原理等概念題。
即使是一些門檻很低、許多人可能認為任何一個程式設計師都會的問題,還是有很多程式設計師搞不定(我並不是說能夠做到這一點就意味著是一個優秀的程式設計師,但做不到這一點則意味著你肯定不是一個優秀的程式設計師)。在其職業生涯早期,他們發現自己不是優秀的程式設計師,但又恰好處在一個技術要求沒那麼嚴謹的組織中,因此他們能夠被提拔,完全是因為他們碰巧很擅長與人打交道(或善於用人)。現在,他們中的許多人已經進入了技術管理和高管候選人的行列。此外,他們通常非常善於談論一場精彩的比賽,聽起來就像他們知道自己在做什麼(否則他們也不會到那個位置)。
檢驗一個候選人是否具備技術實力的唯一方法是:給他們出一些簡單的程式碼題目進行測試,或者找一些他們寫過的開原始碼直接評估檢驗。不能通過測試或者沒有可供驗證的公開技術記錄的候選人將不會被僱用。
原因是顯而易見的——那就是管理者需要縱觀大勢,以便作出明智的決定。一個有經驗但無技術背景的經理可能會有好想法,但在同等情況下,一個有類似技術背景的經理則可能有更突出的表現。換句話說,前者肯定提供不了技術領導力,如果希望你的公司成為行業的技術領導者,你的領導者首先需要具備技術。
為什麼需要技術型領導?
一個沒有技術型領導的“技術”公司往往會失敗,原因可以歸咎於以下兩者或者其中之一。
領導無法分辨技術人員執行的工作是否符合標準,因為在面臨技術挑戰時他們無法區分是技術人員執行力太差還是確實遇到了技術瓶頸。進而,也就無法實行績效管理,這會導致業績平庸,並將最終導致徹底甚至反覆的失敗。
業務需求導致領導不顧技術人員的建議或者想法。當今嚴酷的商業環境要求企業領導推進企業不停地超越舊邊界,這意味著領導不僅要告訴他的員工警惕“該死的魚雷”,還要能夠深化擴充,不能僅求安逸。不幸的是,非技術型領導人沒有個人能力來衡量首要技術問題的實際風險狀況(例如:某些特殊情況下已經非常過時的限制),並往往會推翻那些不應該被推翻的建議。
在Facebook之外,我見證了不止一個由於管理層缺乏核心技術力而導致的大型公司的失敗。而在Facebook,個人技術能力恰巧是所有工程管理人員所必需的,甚至包括部門領導及CEO(是的,Mark Zuckerberg還在繼續參與Hackathon程式設計活動)。這使得該公司敢於多次進行技術冒險,以達到更大的產品創新目標並實現一貫快速的前進步伐,正所謂越瞭解遊戲規則,玩得就好。
作者介紹:黃易山,1997年畢業於卡內基-梅隆大學。2001年加入PayPal,曾任高階工程總監。2005-2010年在Facebook領導研發,在公司研發環境的建設上發揮了重要作用。
原文:程式設計師