年底,人才流動的旺季。

這陣子,經手一堆履歷,更面試超過十場,深深覺得,若多一點人懂得面試的遊戲規則,甚至更廣義的職場遊戲規則,將是賓主盡歡的美事。

Bryan 說得好:「求職過程投入越多,越能理解這個遊戲規則,也對自己的目標更清晰!」

我們或許都沒有前衛到像 Netflix《給力》那樣「鼓勵員工經常去面試別家公司的工作」,但說實話,多一些面試與被面試的經歷,的確能夠更掌握遊戲規則,也會衝擊到自己原先的浪漫幻想,降低美麗的錯誤,將自己導向更務實的定位。

面試與被面試都經歷過不少的我,想針對這陣子的所見所聞,分享一些個人的觀點。

刷題

以前我對刷題之舉是很不屑一顧的。總覺得這不是每位軟體工程師都需要去嘗試的。

不過,就如同程天縱在〈自己爬上巨人的肩膀:踏入職場的艱辛旅程〉一文對美國軟體研發界的觀察:

在十年前的 2009 年,只要會寫軟體,甚至不需要經驗,學校一畢業就可以很容易的找到工作。

但近十年來,大量中國和印度的留學生來到了美國,專攻互聯網、軟體開發、算法、人工智慧、大數據分析、雲計算等等領域,使得就業競爭越發激烈。尤其川普總統上任以後,緊縮了綠卡和移民的名額,導致美國留學申請的門檻更加提高了。

因此,過去簡單的、走形式的面試問題和技術測試,難度就越來越高了;尤其網路和社群的普及,考過的題目立刻被分享在網上。因此,各個徵才企業就不斷的更新題庫、甚至提高難度。於是,LeetCode 網站上的題目,幾乎都是要去面試的軟體工程師必「做」、必「背」的。

典型的滾雪球軍備競賽,正增強迴路。

甚至像這篇文章所說,不只是近期內打算求職的人會去刷題:

如今在矽谷的每一天,這個「刷題例行工作」,更是許多不論資深或資淺的工程師,在上班時間外的「必做功課」之一。

每天利用時間刷題,連續這樣刷上幾個月到一兩年,在矽谷是司空見慣的:最近我有兩個同事離職去了 Uber,他們在此之前分別刷了一年和整整兩年的考古題目;另一位同事刷了半年的題,進了 Amazon。

這就是美國軟體研發重鎮的遊戲規則。

台灣,雖然還沒有發展出如此激烈的競爭態勢,但相對低薪太久了,優秀人才思遷外流,精明外商也在台設置研發據點就地搶人,導致刷題風氣也開始在某些小圈子裡盛行。像這次 iT 邦幫忙鐵人賽就有兩位以 LeetCode 為主題的得獎者,其中一位甚至還在別處開設線上課程教人 LeetCode 解題呢。

當然啦,刷題網站不只可拿來操練演算法,據我所知,同溫層當中也有些人拿這類刷題素材做為 TDD kata。最有名的例子就是 91 了。

因此,我開始修正對於刷題網站的觀點。我會視情況,用兩種解題心態來看待它們:

  1. Kata 心態。借用刷題素材,熟悉新的程式語言及標準程式庫,或是磨練 TDD 之類的技法。此時的重點在於「型」的固化與內化,不在於演算法的錙銖必較,因此,要有「可能暫時過不了刷題評分系統」的心理準備。

  2. 演算法複雜度優化心態。我建議,盡量自我要求,不要驟然追求速解,該用類似 How to Solve ItIntroduction to Algorithms: A Creative Approach 之類的逐步推演思路,有系統地闡述,才能鍛鍊出通用的解題思路,不至於淪為「背解法」。

(似乎該拿來練一下了⋯⋯)

Kata 心態

Kata 心態,不只是拿來面對刷題素材,更應該拿來用在更廣泛的地方。

尤其是軟體架構。

雖然我們常說:不要重複造輪子,但這並不代表,我們連造輪子的能力都不去操練。

譬如說,當你學到分散式系統、微服務架構時,會不會試著甩開別人包得好好的現成框架,改而像 Andrew 那樣自我練習,從頭開始構築方案? 1

有興趣的話,趁這次機會,用簡化過的 POC 環境來練習看看吧!POC 的好處是你可以專注在問題本身,盡可能地排除其他環境或是框架帶來的干擾,讓你專心地思考問題本身該怎麼解決。也只有 POC,你才能有機會觀察到實際測試的統計數據與評分,讓你比較與改善的過程可以更加科學。     — 〈後端工程師必備: 排程任務的處理機制練習

譬如說,當你學到最近當紅的 DDD 及 clean architecture,會不會試著甩開別人包得好好的現成框架,改而像這次 iT 邦幫忙鐵人賽的優選作品〈Think in Domain-Driven Design〉那樣,試著從頭開始構築方案?

造輪子的能力,是否曾經刻苦磨練過,在面談時很難隱藏。

身體學會的,誰也帶不走。

行為面談

行為面談法 (behavioral interview) 是許多招募專家推薦的面談策略,搭配 STAR (situation, task, action, result) 問題設計,可以挖掘到很深的層次。2

行為面談,對於「被面談者」來說,挑戰性自不在話下;但是,對於「面試官」來說,也不是很輕鬆的差事。事前的設計要花時間,甚至得客製化;就連面談當下的引導、追溯與記錄,甚至事後的歸納整理與評斷,都非常費神。

這一直困擾著我。

所幸,後來受到《Amazon 的人為什麼這麼厲害?》的啟發,對行為面談法多了些把握。

Amazon 的人為什麼這麼厲害?》作者佐藤將之是日本亞馬遜創始成員,服務了 15 年。他的現身說法,應該頗具代表性。

本書試著以 Amazon 角度,回答一個關鍵問題:

到了面試的時候,面試官會注意應徵者的哪些特質呢?

用一句話來說,就是對象是否具備「我們的領導力準則」(our leadership principles; OLP) 特質。

很多企業的 vision/mission/values 是寫給華爾街看的。漂亮的話人人會說,怎麼知道是不是玩真的?

Amazon 的做法很有趣:在面試當中察驗。

Amazon 14 OLP

Amazon 14 OLP

Amazon 的人為什麼這麼厲害?》解釋 OLP 在面試時扮演吃重的角色:

OLP 也會實際在面試時採用。對亞馬遜來說,徵才面試的目的,是深入探究面試者在過去的工作過程中如何發現 OLP。換句話說,亞馬遜不會只看技能或成績,還會看面試者是否能加速亞馬遜的成長,而重要的判斷基準就是這套領導力準則。

第一關面試會由招募經理進行,人事部也會視情況面試。⋯⋯

負責第二關的面試官,都會事先從招聘經理那裡收到以下請託:「一對一面試時,希望特別針對這個重點提問。」這個重點也是 OLP 中的其中一項。面試官在詳閱履歷表後,便會依照事前收到的要求,思考要發問的問題,與應徵者一對一面試。

具體的 OLP 提問方式,其實就跟行為面談法的精神相同:

亞馬遜的招聘面試非常注重邏輯,應該有不少應徵者在面試過程中覺得「被追問到底」。這是因為在面試過程中,面試官必須具體的詢問「基於什麼樣的想法,做了什麼事,如何成功的⋯⋯」,並將其記錄下來。

不問「這是⋯⋯?」或「是否⋯⋯?」等封閉式問句,而是用 5W1H 來提問。

經常有應徵者在履歷表上過度誇耀自己的實績,這時若能深入發掘:「如何思考,並具體採取了什麼行動?」就能不被對方的職稱所動搖,看出應徵者的實力。

我從這本書學到,要把行為面談法連繫到企業的核心價值觀。

更重要的是,要自己融會出一套,與核心價值聯繫起來的 STAR 架構,不管是面試還是被面試。

譬如說,針對技術領域,我自己發展出一套容易操作的探索察驗程序,並聯想《復仇者聯盟》與四顆無限寶石的情節,以便記憶:

Stones

Stones

這需要操練。

以 DevOps 領域為例

口說無憑,就以最近在 DevOps 社群看到的話題為例吧。

「請問各位在面試 DevOps Engineer 都會問什麼問題」討論串當中,Rick Hwang 提出一則很好的示範:「你過去的經驗,通常用哪一種部署策略?考慮哪些因素?為什麼?怎麼實踐?」不難看出,這已經算是很接近 STAR 精神的行為面談。

我也來稍微示範一下,如何將行為面談法連繫到企業的核心價值觀。

如果我們想聯繫上 OLP 核心價值,該怎麼問呢?

  • 顧客至上:「你過去的經驗,通常用哪一種部署策略?是給哪些人用的?他們對此有什麼看法?你有嘗試過推動其他更好的部署策略嗎?他們對此又有什麼看法?過程中遇到哪些困難?你是如何克服的?」

  • 創新與簡化:「新的部署策略,哪些地方比以前方便,哪些地方反而比以前複雜?當他們抱怨時,你是如何進一步克服這問題的?」

  • 刨根問底:「如果要進行混合雲與多雲的部署,你會怎麼做?」視情況,這議題可以挖得很深很深⋯⋯

如果我們想聯繫上 DevOps 核心價值,該怎麼運用《復仇者聯盟》四顆無限寶石的口訣來提問呢?

  • Reality:「你過去的經驗,通常用哪一種部署策略?」視現場互動情況,再以 5W1H 角度去蒐集具體事實:what? why? why not? for who? with who? when? how? …

  • Space:「以你所知,還有哪些部署策略是業界流行的?你為什麼不採用它們?以你所知,在部署策略上,未來的趨勢是?你對它們的評論是?」

  • Time:「假設有一個像 xxx 這樣的個案,你會如何導入剛剛提到的 yyy 部署策略?」

  • Mind:「這種導入過程,需要哪些人配合?你會如何說服他們配合?」

運用之妙,存乎一心。這需要操練。

馬拉松

程天縱在〈自己爬上巨人的肩膀:踏入職場的艱辛旅程〉一文提到:

在美國最夢幻的僱主就是「FLAG」四家企業:Facebook 、LinkedIn、Amazon、Google。這四家企業招聘軟體工程師都非常慎重,進入門檻也都非常的高。

這些公司的面試,都要經過四、五輪的電話面試、線上技術測試、視訊面試和測驗,最糟糕的是,時間拖得非常長,前後有長到兩、三個月的。

Amazon 的人為什麼這麼厲害?》也自嘲:

人力仲介業界常說亞馬遜的招聘面試會「搞死仲介」,因為他們向亞馬遜推薦的人才都很難被錄用,所以常會抱怨:「已經不知道該推薦誰才好了」。只不過,我們的想法是「寧缺勿濫」,內部有招聘優秀人才的基本思維及穩健機制。

第一關面試會由招聘經理進行。⋯⋯

第二關面試可以說很有亞馬遜的風格。首先是人數,最多會從公司內部召集五名面試官,皆為其他部門的管理者階層。這群面試官之中,肯定會包含一位稱為「抬桿者」(bar raiser) 3 的人物。第二關面試也是一對一,每次約 40~45 分鐘,最多要進行五場。

我並不盲目鼓吹這種過五關斬六將的風格。不過,如果你遇到這樣的機會,請把握,如果這是值得的。

請保持向著標竿直跑的勇氣與耐心吧。


  1. 對於軟體架構 kata 感興趣的,請拿 Andrew 的【架構面試題】系列文章來挑戰看看吧! ↩︎

  2. 對於行為面談法 (behavioral interview) 感興趣的,可讀讀知名獵頭 Lynn 所寫的〈【面試的藝術】行為面試,現正進行中〉一文。 ↩︎

  3. 「抬桿者」(bar raiser) 是 Amazon 很獨特的用人思維。請參考〈亞馬遜如何挑選人才?〉一文。 ↩︎