原文: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 如今是否仍採用這種招聘策略,不過我認爲這有點像是職業體育運動中專一於招募最頂級運動員。若是你不是個體育愛好者的話我簡單介紹一下,美國的職業運動隊每一年度都會例行選拔業餘或者職業運動員加入。拿籃球運動來舉例,在一場比賽中場上老是有五名運動員,兩個後衛,兩個前鋒,一箇中鋒,他們有不一樣的職責和戰術。在選拔的時候,不少球隊會尋找填補他們短板的專長球員(也就是專家),然而也有少數球隊傾向於尋找「天才球員」,也就是說他們並非爲特定角色尋找隊員,或者他們也不肯定招募的球員未來會打什麼位置,總的來講他們但願是一個最天才的球員(也就是通才)。
不管球隊選了誰,他們在場上只能擺五我的,所以要想勝利就要派出最好的中鋒,加兩個最好的前鋒,還有兩個最好的後衛,無視各個職責之間的能力需求差別會讓整個球隊都吃苦頭。大多數籃球隊都懂這個道理,因此他們有時甚至會放棄不錯的球員,若是球隊在這個角色上已經有了出色球員的話。
以我的見解,我堅信在公司規模容許的狀況下應該儘可能招聘專家。堅持聘請通才再按業務需求來培養,會顯著拖累公司的發展,而你的團隊最終將會失衡,沒法承擔涌現的各類新工做內容。
我相信這本質上是人類的專業化趨勢。咱們整我的生的教育流程就是這樣安排的,一開始都是通用知識(數學、語文、科學、歷史),逐步到了大學就須要選擇方向和專一的領域。天然而然的你會在這個過程當中發現你有興趣作的事情,你想在這方面作的更多,而其餘事情則不那麼有趣和享受。
早期的公司毫無疑問須要通才,並且極可能會持續至關一段時間,直到它有能力聘請更多員工。通才很是適合這種情景,或者任何須要隨時切換任務的場景。代價是你可以獲得大量「足夠好」的解決方案,而非少許最好的方案。
當「足夠好」的方案再也不夠好的時候,你會引入專家。有時候是由於遇到了沒法解決的困難,有時候是由於產品線的天然擴張。在這些狀況下,你須要有對相關領域有成熟經驗的人加入,聘請專家不是爲了他們有潛力應付各類問題,而是爲了他們解決當前的需求,立刻交付產品。
隨着公司和員工的發展,通才逐步轉變爲專家也很常見,系統和架構規模的增加天然會致使這一現象。支持員工專業化能提升全部人的效率,每一個人都能釋放一部分精力而更加專一本身負責的問題。
知曉在什麼時候以及如何從通才團隊轉向專家團隊更可能是一門藝術,而非科學。我但願本文能對此有所幫助。