原文:Generalists and specialists: thoughts on hiring
作者:Nicholas C. Zakas
我的職業生涯經歷過各種規模的公司,從非常小的五人創業團隊到 13000 人的大公司雅虎,再到約 1000 人規模的 Box(我目前所在),這些公司有著迥異的組織文化和招聘哲學,我也面試和聘請過眾多的應聘者,在挑選優秀同事方面有著出色的成績。
在這些經歷里,我發現招聘策略的最大差異最終歸結為一點:公司更青睞專家還是通才。我并不認為搭建工程師團隊有唯一正確的方法,但我相信公司的規模和和它所處的階段是招聘策略中重要的影響因素。
通才和年輕公司
通才是這樣的人,從定義上來說,是指沒有特定專長的人。他們大多畢業于計算機專業,擅長各種服務器端的工作,如數據庫、基礎設施、構建、部署、數據操作和處理等等。通才的人員在工作中并不介意從 C++ 轉向 Python 再到 Java,眾多編程語言對他們而言差別不大,轉換起來也沒有什么負擔。他們是真正的戰馬,能夠承擔交給他們的任何任務。
對大多數任務來說,通才傾向于完成到良好,但可能不會到優秀的水平,而且在需要完全不同思維模式的事情上不會太順利。比如大多數通才都會在前端或移動端的任務上比較糾結,這兩個領域的模式和后端的開發哲學有著很大差異,這部分產品在通才的手上也時不時會碰到點小問題。
一家公司的早期階段總是起步于異常緊張的資源,即便你成功融資,也很難迅速招募到滿足需求的全部人力資源。因此這個階段任何加入公司的人都應該盡可能戴更多頭銜,完成各種事情。我以前端的身份加入 WellFurnished 而最終搭建起了整個基礎架構、源碼控制、構建和部署系統,當碰到問題我通常會向公司里的通才尋求幫助,只要他們能抽出時間在任何地方給到一點幫助。
年輕公司沒有奢侈的資金可以雇人來只做一件事情或者一小部分事情,事情太多而人員太少。通才能夠讓業務起步運轉起來,所有人的所有時間都要投入在推進計劃上,否則你就是在浪費你非常有限的資源:錢。
在這個階段,還有個相當實用的技術策略。因為整個系統規模很小,每個工程師都可以(也應該)理解系統的每個部分。腦中有整個系統的圖景很重要,因為每個人都可能需要做任何事情。
引入專家
相對而言,專家是那些在部分領域有突出專長的人。他們對這些領域有深入的理解,為此,有必要忘記(有意或者無意)一些通才會格外注意的東西。專家提供的是在特定領域里的高級能力,他們把職業生涯聚焦在有限的領域里,以此達到通才所不能達到的高度。
在公司的早期階段,通才創造了大量“足夠好”的方案。這不是什么壞事,只是公司成長的正常步調。“足夠好”的方案正如它的名字所示,足夠支持公司發展到它的下一階段,有時候甚至好到能支撐公司接下來兩三個階段的成長。但最終,“足夠好”的方案終會變得不再夠好,這就是你需要聘請專家的時候了。
不再夠好會有多種表現,最顯著的就是前端部分:我工作過的每家專注于聘請通才的公司都有一段時間受困于糟糕的前端質量。設計師很苦惱,因為工程師無法實現他們的設計方案,產品經理也很不滿因為前端是面向最終用戶的關鍵環節。這個時候,終于有人開始考慮是不是該招個“真正懂這坨東西”的人。
在小公司成長為大公司的過程中,總會碰到這個富有爭議的問題。對于聘請專家的主要爭論會是:
- 我們不知道如何招聘這樣的人。
面試流程是為招聘通才而設計的,所以面試問題大部分都圍繞通用的計算機科學知識,以便考察候選人是否足夠“聰明”。面試會有很多算法問題、數據結構問題以及關于復雜度的討論——所有這些都不是為了考察特定領域的能力,而是為了考察那些適用于任何編程語言的通用概念。這些對于通才是應該的,畢竟他們要熟練操作任何工具面對各種問題。一旦公司適應了以此來衡量候選人是否足夠“聰明”,就很難做出改變。事實上,“聰明”是個非常靈活的詞,并不能拿來整齊劃一地衡量每個人。然而如果公司里沒有專家的話,又該如何評估專家的能力水平?
- 這會導致資源分配問題。
通才招聘策略背后的的一個理論是,你會有一個小而全能的資源可以隨時酌情分配到任何項目中。如果所有人都能做所有事情,你就有了無限靈活分配的項目資源。不需要等 Jim 空下來或者 Mary 完成她的項目,只要有工程師空下來你就能安排他開展下一步驟。而專家,照稱謂來說,你應該安排給他們特定領域的事情。這從根本上改變了工程師團隊分配資源的方式:突然有一個人只能做一些特定的任務,因為這個差異,整個組織都會因此被推到一個不穩定的狀態。
如果正在看此文的你是一位專家,你肯定會想:“這些理由都是狗屁”;如果你是一位通才,你肯定會想,“對啊,顯然的”。接下來我會分別解釋,這些想法都是真實并且合理的,不過絕不是無法解決的。許多公司都踩過這個坑并成功地跳出來,解決問題的關鍵總是招進來第一個專家,并且證明團隊依然可以順暢工作。
我們真的需要專家么?
是否真的需要一個專家加入的問題總是歸結于公司的狀況有多緊迫,通常會使這兩種情況:
- 有東西真的壞了。
不幸的是,這種情況最為常見。經過數月數年的修改和補丁,曾經是“足夠好”的東西現在變成了“一團糟”,你需要真正懂這塊的人來解決問題。
- 進入新的領域。
很多公司在進入新的業務領域又想快速推進的時候,就會想要招聘專家。例如推出一個 Web Application 的移動版,或者反之,這是專家加入的好機會,因為有機會從零開始充分展示他們所能。可惜的是,這種機會并不常見。
第一種情況,事情已經相當糟糕,在我的職業生涯里不論是作為員工還是作為顧問,都見過無數。第二種情況則主要是移動開發者們會碰到的,近年來所有公司都迫不及待地推出移動應用。
是否真的需要專家的問題,也可以根據當前的資源分配狀況來判斷。如果你發現系統的某一部分總是需要投入大量關注,很可能就是通才已經快要搞不定了。
聘請專家
最終,每個成功的公司都會開始聘請它們的第一個專家——這是必然的。第一步自然是搞清楚如何聘請專家。你需要認識到現行的面試流程很可能并不適用;此外,專家對于跟他擅長的領域毫無關聯的問題也沒有好感。那么,當你的公司沒有此領域專家的時候如何面試這位專家呢?
當你的公司沒有這類專家的時候,你們總有人是在做這個領域里的工作內容的,這些人就是你應該安排面試評估的人。最簡單的方法就是直接討論當前碰到的問題,詢問候選人會如何解決。這并非隨便拉個人來做免費工作,短暫的面試過程也不大會真正解決問題,詢問的要義在于向候選人請教問題的狀況以及理解他們的思路。好的專家能夠和你厘清問題的范疇,闡述他們會審查哪些細節以及可能的解決方案。
和非專業人士能夠明白流暢地溝通,對他們來說是非常重要的技能,他們會需要做大量這類的工作,因為沒有其他人能完全了解他在做的事情,你需要確保這個專家能以大家都聽得懂的方式和大家溝通。最后,理解候選人如何定位問題以及認可他的解決方式,是做出聘請決定的最佳途徑。
問題的第二部分是資源分配,這個問題通常也會自愈。很多有通才意識的工程副總裁會擔心沒有足夠多的工作安排給專家,導致資源浪費。實際上,在初期階段總是會有足夠多的事情需要處理所以不是什么問題,無論解決問題還是創造全新產品都夠專家忙一陣子的。在這之后,通常是工程師團隊已經開發完成了一個階段性產品,總會有更多特性需求接踵而來。通常在一到兩年之內,你就會發現一個專家已經不夠用了。
專家拐點
公司發展到一定階段,沒有專家是很難繼續下去的,甚至你的通才都要開始專注于產品的部分領域中。產品和基礎架構都變得更大,產生了一個有趣的問題。
你最初一直是聘請能做任何事情的通才的,得益于基礎架構很小,把整個系統都捻熟于心并不困難,所以這是行得通的。到了某個時刻,基礎架構必然會成長到足夠大,大到不可能要求每個人都熟悉整個產品架構,人們將會不可避免地開始專業化。
在這個階段的專業化意味著對系統關注的更少,釋放精力會提高工程師的效率,而最終他們將只需要掌握系統的特定部分及其邊界。如果他們需要知道其他部分的內容,就去找負責那個方向的工程師即可。
當工程師開始主動要求在某個方向投入更多精力的時候,你就知道公司到了這個階段了。這時候聘請專家會更加容易,因為你已經擁有專家了;而繼續聘請通才則不再合時宜。在公司高速成長的時候去培訓每個工程師或者希望他們自學一個新領域的技能,就是拖慢公司的腳步。在我曾經待過的一個公司,工程師平均要入職六個月之后才達到正常的生產力水平,原因就是堅持聘請通才,并且招聘評估也主要著眼于潛力而非現有能力。這意味著我們無法聘請成熟專家,而總是寄希望于培養候選人。這樣造成拖延完全沒有必要。
當然也偶爾會有工程師對自己的領域感到乏味,想要跳到另一個全新領域。這種事情是難免的,但是應該不會太多。在這個階段公司可以支持少數人轉換領域,但不能是所有人都不停地切換到新領域,然后從零開始學習如何高效地產出。
只聘請最強員工如何?
另一個反對聘請專家的觀點是公司只想要雇用最聰明最強大的員工。我稱之為“Google 理念”,因為 Google 曾經就是這么做的。大約是 2006 年,我曾經前往 Google 做過一次面試,當時它是最火熱的公司,所有人都渴望加入,只是一次面試機會也足夠令人激動。有趣的是,他們似乎并不特別在意你的專長有多突出,你也不能申請特定的職位。所有人得到聘請之后會進入一個資源池,你第一天的任務就是找到想要參與的項目。Google 的整個思路就是聘請最優秀的人,然后找事情給他們做,簡單來說,這就是終極的通才招聘策略。
不知道 Google 現在是否仍采用這種招聘策略,不過我認為這有點像是職業體育運動中專注于招募最頂級運動員。如果你不是個體育愛好者的話我簡單介紹一下,美國的職業運動隊每年度都會例行選拔業余或者職業運動員加入。拿籃球運動來舉例,在一場比賽中場上總是有五名運動員,兩個后衛,兩個前鋒,一個中鋒,他們有不同的職責和戰術。在選拔的時候,很多球隊會尋找填補他們短板的專長球員(也就是專家),然而也有少數球隊傾向于尋找“天才球員”,也就是說他們并不是為特定角色尋找隊員,或者他們也不確定招募的球員將來會打什么位置,總的來說他們希望是一個最天才的球員(也就是通才)。
無論球隊選了誰,他們在場上只能擺五個人,因此要想勝利就要派出最好的中鋒,加兩個最好的前鋒,還有兩個最好的后衛,無視各個職責之間的能力需求差異會讓整個球隊都吃苦頭。大多數籃球隊都懂這個道理,所以他們有時甚至會放棄不錯的球員,如果球隊在這個角色上已經有了出色球員的話。
以個人看法,我堅信在公司規模允許的情況下應該盡量招聘專家。堅持聘請通才再按業務需求來培養,會顯著拖累公司的發展,而你的團隊最終將會失衡,無法承擔涌現的各種新工作內容。
總結
我相信這本質上是人類的專業化趨勢。我們整個人生的教育流程就是這樣安排的,一開始都是通用知識(數學、語文、科學、歷史),逐步到了大學就需要選擇方向和專注的領域。自然而然的你會在這個過程中發現你有興趣做的事情,你想在這方面做的更多,而其他事情則不那么有趣和享受。
早期的公司毫無疑問需要通才,而且很可能會持續相當一段時間,直到它有能力聘請更多員工。通才非常適合這種情景,或者任何需要隨時切換任務的場景。代價是你能夠得到大量“足夠好”的解決方案,而非少量最好的方案。
當“足夠好”的方案不再夠好的時候,你會引入專家。有時候是因為遇到了無法解決的困難,有時候是因為產品線的自然擴張。在這些情況下,你需要有對相關領域有成熟經驗的人加入,聘請專家不是為了他們有潛力應付各種問題,而是為了他們解決當前的需求,馬上交付產品。
隨著公司和員工的發展,通才逐步轉變為專家也很常見,系統和架構規模的增長自然會導致這一現象。支持員工專業化能提高所有人的效率,每個人都能釋放一部分精力而更加專注自己負責的問題。
知曉在何時以及如何從通才團隊轉向專家團隊更多是一門藝術,而非科學。我希望本文能對此有所幫助。