美國軟體巨擘造就科技實力的人才招募手法/程天縱

美國軟體公司招聘畢業生的競爭,已由「畢業前」提早到「暑期實習」。所以在上一篇文章〈從求職的激烈競爭,看產業發展的未來機會〉中,我把申請暑期實習的流程和注意事項,做了挺完整的介紹。本文中則把當事者自己的完整經驗總結出來,分享給各位。

許多讀者希望我也把畢業生的求職流程和注意事項,比照這個方式做個分享。

我在〈自己爬上巨人的肩膀:踏入職場的艱辛旅程〉一文中,分享了我兒Jimmy的艱苦求職歷程,並且用「驚心動魄」來形容,但是並沒有詳細整理流程。在讀者的要求下,我和Jimmy做了一次長談,趁他記憶猶新的時候分享。

美國主要軟體科技公司的正職招募流程,可以分為以下6個階段:

  1. 簡歷審查(Resume Screening)

  2. 線上測試(Online Assessment,OA)

  3. 技術電話面試(Technical Phone Screening)

  4. 經理電話面試(Manager Phone Screening)

  5. 現場面試(On-site Interview)

  6. 決定和選組(Decision and Team Match)


1. 簡歷審查(Resume Screening)

大部分的應屆畢業生,包含學士、碩士、博士,都和Jimmy一樣,不管什麼職位、資格、條件,都「海投」簡歷去應徵,因此招聘的企業會收到海量的簡歷;根據統計,九成以上都不符資格,在這個階段就會被刷掉。

這些大企業不想用龐大的人力資源來審查初級資料,於是紛紛使用電腦和演算法來篩選簡歷。所以應徵者要準備好「機器能看得懂」的簡歷,一頁為準;不要搞創意、分段必須簡單扼要。內容主要包含:

  1. 工作經驗;

  2. 教育背景;

  3. 做過的專案;

  4. 技能。

因為是機器在讀你的簡歷,所以要用清楚的詞彙,讓機器可以很簡單的抓到重點;最好多用關鍵字和數字,例如「暑期實習時,曾經參與應用軟體項目開發,提升管理效率」,就不如「曾參與項目開發,使用SVM分類,來提升30%效率」。

履歷要用清楚的關鍵字和數字,讓機器簡單的抓到重點。

好處是,SVM(Support Vector Machine)是機器學習(Machine Learning)的一種算法,如果是HR人員在審查簡歷,就未必會知道SVM是什麼;但機器在審查時,就會瞬間抓到「SVM」和「30%」這兩個「關鍵字」。

要知道90%以上的簡歷,在這個階段就被機器刷掉了,根本就到不了「人」的手𥚃;所以搞創意、圖文並茂、動之以情等等的簡歷,很抱歉,機器不領情,就永遠不會被人欣賞到。

2. 線上測試(OA,Online Assessment)

如果你接到要你做網路線上測試的email時,恭喜你,你已經打敗了90%的競爭對手,進到了第二階段。

大部分的企業都是使用「HackerRank」電腦題庫、或是類似網站提供的線上程式撰寫測驗題目;頂多考兩三個中等偏簡單的題目,時間限制大約90分鐘。HackerRank為註冊的企業會員提供求職者的Coding評測服務,包含客製化測試題目、評分、排序等等。

有些企業也在這個階段加入一些邏輯、智力測驗,或是性格導向的測驗題目。也有些公司會給應徵者做一個小型軟體項目,允許用一到兩週的時間去完成。

例如Amazon的「Work Simulation」,就是一種電腦模擬的工作場景測驗,也屬於OA這個階段的一種測試。

這一關的目的,是想知道應徵者到底能不能寫程式(Coding)。

說起來很可笑,但是根據很多公司的統計,一大半的電腦系畢業生並不真的會寫程式!有幾篇著名的文章談到這個問題,有興趣的讀者可以參考〈Why Can't Programmers... Program?〉(為什麼程式設計師不會寫程式?)這篇文章。

顯然很多電腦系學生其實不會寫程式,哪怕是「FizzBuzz」這樣的小程式:列印1到100,碰到3的倍數列印「Fizz」,碰到5的倍數則列印「Buzz」,碰到3和5的共同倍數則列印「FizzBuzz」;這麼簡單的程式,甚至也可以考倒他們。

要順利通過線上測試,除了會寫程式以外,還要花時間去瞭解這個企業的面試流程和細節。網上有許多人把他們的經驗分享出來,應試前一定要仔細瞭解才能做好準備。

3. 技術電話面試(Technical Phone Screening)

如果你接到要和你約時間的電話,由工程師和你一對一面試,那麼你已經順利到達第三關;在這一關,你終於可以和一個「活生生的人」對談了。

在這個技術電話面試的過程當中,仍然是做題目;但跟上一個階段的線上測試所做的題目和流程相較,有著很大的不同。

通常工程師打電話過來以後,會花五分鐘的時間做自我介紹,然後給你一個電腦網址,請你登錄上去,然後你就必須當場做線上的測試題目。

通常對方會給你一個小時的時間,要求你解一些算法問題,一般是兩到三題。不同的是,你需要一邊講電話,一邊在電腦上寫程式;題目的難度會是中等偏難,考驗你演算法的功力、以及對資料結構的理解程度。

最好的事前準備方式是,不斷的到Leetcode網站去做題目、複習再複習。

在這裡跟各位分享一個真實故事。

軟體高手Max Howell寫了一個叫做「Homebrew」的軟體管理系統,並且在開源軟體網站GitHub公佈,讓大家免費下載使用。由於這個軟體寫得非常好,所以90%以上的Google工程師都在用、也都知道他的名字。

Max Howell在2015年去Google求職,順利到了技術電話面試這一關;結果因為他沒有準備好,刷題刷的不夠多;而且最重要的是,他的演算法功力並不好,所以被拒絕了。

他在自己的Twitter上面寫道,Google工程師在電話面試完之後告訴他:

「我們有90%工程師在用你寫的軟體,但是你沒辦法在白板上寫出反轉二元樹(invert binary tree)的算法,所以⋯⋯。」

所謂「白板」(Whiteboard)的意思是,在連線的電腦上直接寫算法;當你在你的電腦上寫的時候,負責面試的工程師在他的電腦上也可以同時看到。

就如同面對面的考試,主考官要求你在白板上或是一張白紙上寫程式。這個和一般軟體工程師的實際工作方法是不一樣的。

軟體工程師習慣在電腦上寫程式,一邊寫的時候,一邊可以利用電腦的輔助功能,查詢一些資料,就好像所謂的開卷考試(open-book tests)。如果你突然要求習慣開卷考試的學生不能開卷,只能在一張白紙上、或是在白板上答題,他就完蛋了。

這一關和上一關線上測試不同的地方,除了題目偏向算法以外,還有一個重點:線上測試是由電腦來考你,但是技術電話面試是由現場的資深工程師來主考。

如果你刷題刷的夠多的話,就可以把答案背下來;那麼當電腦主考時,你可以亳不猶豫的把答案寫下來。

但是當主考官是一個活生生的人,你飛快的把答案寫下來,他就會發現你已經做過這個題目了,這反而會影響到他最後讓不讓你過關的決定。

有好的溝通能力,就能幫助你順利過關。

因此,你在寫答案的時候,要慢慢的、一行一行的寫。在你寫的過程當中,要透過電話和主考官保持溝通,告訴他你為什麼這麼寫、你的邏輯是什麼,甚至可以穿插一些問題,向主考官確認你的理解對不對。

在這個技術電話面試階段,你跟主考官的溝通和邏輯表達能力,就變得非常重要了:有好的溝通能力,就能幫助你順利過關。

4. 經理電話面試(Manager Phone Screening)

經理電話面試主要是由產品或是開發經理主持,時間大約一個小時。雖然和你進行電話面試的還是一些技術經理,但在這個階段的面試通常與技術無關。他們會透過電話詢問你一些行為問題(behavior questions)、以及對公司文化的理解程度。

要順利通過這一關,就必須到企業網站去瞭解該企業的價值觀和企業文化;在回答時要多使用關鍵字(Key Words),來體現出和企業相同的價值觀。

例如,當主考官問到你如何面對挫折、困難或失敗的時候,他並不是真的對你的故事有興趣,而是在從你的回答之中,找尋與價值觀有關的關鍵字,看看你能不能融入該企業的文化。

5. 現場面試(On-site Interview)

如果你接到了現場面試或是視訊面試邀約的電話,恭喜你,你已經走到了面試最後一關。最後的這一關時間很長、很累,但是只要不犯錯,你有九成九以上的機會被錄用。

即使只是對一個新手工程師面試,這些大公司通常會派出五、六個面試官,耗時五、六個小時。面試官裡面有一半是經理、一半是工程師,幾人穿插其間、反覆進行技術電話面試和經理電話面試的步驟;只不過這次不是透過電話,是面對面的進行。

由於所耗費的資源巨大,有的企業也以視訊來取代現場面試。這對企業來講也是一種降低成本的做法;因為如果是現場面試,企業還要提供往返機票和食宿的費用。

特別值得一提的是,許多非美國本土的應徵者擔心英文不流利、有口音,其實這些都無所謂。

進行到這個階段,表示他們對你的技術能力和價值觀有很大的信心;但是最後還是要進行面對面的面試,以確保你在壓力下仍然維持很好的表現,這也表示他們對於雇用技術人員非常慎重。

有的企業在現場面試結束之後,還會安排一個員工和你一起用餐,這個額外環節叫做午餐測試(lunch test)。藉由用餐時候比較放鬆的情況,觀察你的行為和日常生活的細節;所以應徵者即使在面試過後的午餐時間,也不能夠鬆懈。

6. 決定和選組(Decision and Team Match)

大部分的公司在這個階段都是內部作業,應徵者不會參與。

所有面試同一個應徵者的主考官和面試官,會成立一個雇用委員會(Hiring Committee),然後聚在一起開會做最後的決定。

順利通過上一個階段現場或視訊面試,應該有九成九以上的機會被錄用;那麼剩下1%的可能會被刷掉,就發生在這個時候了。

參加這個會議的人,首先檢視應徵者的簡歷。說來有趣,應徵者的簡歷到了這個階段才會被「人」檢查和審核;看看簡歷內容和面試過程的觀察是否一致,也順便檢查電腦審核有沒有忽略或疏漏的地方。

如果一切順利,決定錄用這位應徵者,那麼前面過程參與的經理或工程師(大部分來自招聘部門),就要決定是由哪個部門來錄用。這個討論就是所謂的選組(Team Matching)。

結論

這些軟體巨擘在招聘人才上制定這麼複雜的流程,耗費這麼多資源,絕對不是因為「美國時間」太多;相反地,就是希望確保人才的成功率,減少因為用錯人造成的資源浪費。

身為應聘者,Jimmy花了六個月的時間專心求職,包括去摸索出這些流程,找尋網上可用的資源,不斷自我鍛練,不斷闖關,才能夠得出這些寶貴的結論。身為父親,我也等於親身參與了這段艱苦的過程。

若非親身參與,我都不敢相信,美國高科技企業會為雇用一個應屆畢業生耗費這麼大的功夫。我的心得是:

  1. 從招聘軟體技術人才的態度之嚴謹、資源之耗費、以及流程之複雜,就可以看出為什麼美國能夠執高科技的牛耳;因為,人才正是成功的基石。

  2. 台灣要轉型升級發展AI及大數據產業,需要把軟體技術人才的引進與培育,當作最重要的起點。企業和政府在吸引人才上不下功夫、只談期待,是遠遠不夠的。

這篇文章順道也分享給在美國求學的年輕人,希望他們在預備求職的道路上得到指點少些挫折。讓像我這樣的家長,能瞭解孩子們即將面臨的挑戰,進而給他們更好的精神支持。