辛苦學了程式,你一定也想往外飛吧!

不過要在國外的科技找一份工作談何容易,從「心態」開始就要好好調整,除此之外,要去哪裡找面試題庫、要怎麼談薪水,看看過來人的案例,讓你更有信心!

(責任編輯:陳君毅)

文:Kenji Chao

美國軟體工程師面試流程

美國找工作流程相對於台灣複雜許多,每一家公司的流程也不見得一樣,有些會省略一兩個步驟,大致上流程如下:

投履歷 → 跟人資聊天 → Online Assessment (OA) 線上程式測驗一到兩關 → 電話面試一到三關 → Onsite Interview 一天三到六輪 → 發 Offer

整個面試流程其實相當長,其中最難的部分是在投履歷那關,過去幾個月我投了 100 ~ 200 間公司,最後拿到的面試機會不到 20 間,拿到面試可以說是比面試本身還要難。

關於面試最重要的三件事

經歷了大大小小的面試,有成功的有失敗的,找工作的過程中也參考了各種人的面試心得,學習成功的心得,失敗的心得我也引以為戒,我歸納出面試過程中最重要的三件事:心態、溝通以及解題,其中心態 > 溝通 >> 解題,很多人會以為解題是重點,有些人除瞭解題以外也會注意溝通的重要性,但大多數人忽略了擁有良好的心態,或者說是心理素質,才是決定面試成敗的重要關鍵。

心態

這邊的心態不單單指面試的時候,而是指整個找工作的過程,找工作絕對是很艱難的,尤其在還沒有拿到第一個 Offer 之前,這就像是你在跑一場沒有固定終點的馬拉松,你永遠不知道終點在哪裡,但如果你擁有良好的心態以及心理素質,會幫助你更快到達終點。舉個例子來說,很多人在收到公司的面試邀請時,總會覺得自己還沒準備好,然後習慣性地把 OA、電話面試或是 On-site 面試往後延,讓自己有更充足的時間準備該公司的面試,這乍看之下沒什麼問題,但是你很有可能:

  1. 錯過了最佳的時機:從公司的角度來看,絕對不會只發給你一個人面試的邀請,所以同一封信一定也發給了跟你同樣合乎標準的人,公司招人也一定是 First come first serve,有合格的人就會依序發 Offer,時間拖越久,公司的 headcount 只會越來越少,錄取的標準可能也會隨之變高,雖然說我們並不會知道每一間公司投履歷或是面試的最佳時機,但是我們只能把握我們的部分,早點開始總比晚點好。舉例來說,VMware Propel Program,我同學比我晚了一天寫完 OA,就因此沒拿到面試,Indeed 跟 Snapchat 也在今年一月的時候,通知他們 2017 年的 New grad 已經招完了,而以往全年都在招人的 Google,也在三月初的時候,取消所有 New grad 的電話面試以及 On-site Interview,這在往年是從來沒聽說過的,雖然我在一月底的時候要面到 Google,但其實那個時候也已經晚了,要是再早一點面說不定更有機會。
  2. 延後了自己成長學習的時間:面試準備再久,還不如一次正式上戰場來得學習得多,我個人非常提倡 「Fail fast, fail often, and learn more.」的概念,害怕失敗是不會成長,你要經常失敗、擁抱失敗並且從錯誤中不斷讓自己成長,不要糾結於短期的成敗,才是長期來說來自己持續成長的不二法門,我幾乎一拿到 OA 就是馬上做完,一有後續的面試邀約就會馬上安排,一方面讓公司覺得你很積極,一方面讓自己快速地從面試中學習成長,為再下一次的面試做準備,我的哲學是「如果你要花 120% 的時間準備,面試時要發揮 120% 的能力才能拿到 Offer,那代表你現在的能力還不夠,那沒拿到 Offer 也沒什麼好埋怨的」,誠實面對自己的能力,把握每一次面試機會,好好享受面試的過程,隨時隨地都在一個可以面試的狀態,雖然還沒準備好,但其實也準備好了!

另外,要學會平常心面對每一個面試,不要太看重你想去公司的面試,也不要隨意地去面你沒那麼想去的公司,這就跟男女交往一樣,很多人為了追求異性,太過在意對方,失去了自己的形狀,患得患失導致表現不好,而有些公司,或許之前比較沒聽過,對你來說沒那麼大的興趣,但是去了以後才發現整體面試體驗、公司文化很好你很喜歡,所以請放寬心胸去瞭解每一間公司,說不定會有意外的收穫。面試被拒也不要太難過,這只是代表現階段你們不適合而已,未來還是有機會的;拿到 Offer 我們可以開心,但是開心一天就好了,這代表你過去的努力有的回報,明天繼續努力,準備接下來的面試!

溝通

這是面試過程中相當重要的一環,換位思考一下,如果你是面試官,有兩個來面試的人都寫出了最佳解,一個人能夠很清楚的釐清問題、舉一反三,解釋他的思考過程給你聽,另一個則是相對木訥,只等到你問問題的時候才解釋,你會錄取誰呢?面試過程中除了考驗專業能力以外,也是在考驗這個人未來是不是一個適合的同事,我會建議不要把面試當成考試,也不要把面試官當成是由上而下出題目給你的老師,而是要想像你們現在是一起解決一個問題,把他當成同學或同事,你儘量把你的思考流程解釋給他聽,不要覺得面試官是不是什麼都知道了。另外,在面試時請忘掉你過去所做的題,即便是類似的題目,也會有不同的條件,面試官考察的重點也會不一樣,不要一聽到好像以前聽過的題目,就預設面試官一定是要問什麼,稍微釐清一下面試官的問題,完整瞭解他想問的問題,再開始解題,如果遇到你寫過的題目,建議跟面試官坦承你看過這題,這時面試官可能會要你講一下解法換下一題,或是他覺得沒關係就讓你繼續做題。當然,不是每一個面試官都很好溝通的,有一些面試官可能會擺臭臉,或是講的英文很難懂,但沒關係我們就做好我們能做的,面試官要是真的態度這麼差,也是未來你考慮要不要進這間公司的因素之一。

解題

由於近幾年 CS 太火熱了,軟體工程師的競爭者越來越多,導致題目一年比一年多,一年比一年難,在時間內解出題目已經不夠,還必須要寫出最佳解,我準備的方法不免俗的還是刷 LeetCode,但 LeetCode 已經從幾年前的 150 題成長到五百多題了,我自己是覺得不可能全部刷完,切記題目無限,但是觀念有限,不要太在意刷的題數,我的建議是:相同類型的題目一起刷,今天做 LinkedList,明天做 Stack/Queue,後天做 Graph 依此類推,這樣相同觀念集中做吸收效率比較好,時間充裕的話,做題時先自己嘗試寫出一個可以通過的解法,這個按照題目難度可能短則五分鐘,長的話花好幾個小時都有可能,寫出一個解法後再去看討論區的最佳解,理解過後再自己寫一遍,把自己的 code 改到最好這題才算做完;但刷題到後期可能時間越來越緊迫,沒有那麼多時間可以讓你慢慢寫,這時候可以嘗試寫 15 ~ 30 分鐘,如果 30 分鐘內寫不出來,那代表實際在面試時遇到你可能也沒辦法解出來,這時候去看討論區的前三最佳解,找一個適合自己的解法,理解解法背後的原理以後,再自己寫一遍。LeetCode 畢竟比較死板,所以我自己也嘗試找了很多線上 Coding 的網站如 HackerRankInterviewBit 等等,詳細資料可參考底下的「參考資料」。

拿到 Offer 之後:談薪水

很多人在拿到理想公司的 Offer 以後,就覺得好開心找工作結束了,然後就接受了這個 Offer。我個人認為拿到 Offer 以後,下半場才開始!不管公司開給你多高的 package,我的建議是:Always Negotiate!這點真的跟台灣公司很不一樣,我們先來看看這則報導:How one Silicon Valley engineer negotiated a starting salary from $120,000 to $250,000 in just a few weeks,Haseeb Qureshi 在找工作的過程中,一開始拿到 Yelp 的 Offer 年薪 12 萬,後來接連拿到的 Google, Uber, Stripe, and Twitch 的 Offer,最後在他要接受 Google Offer 前 (年薪 16.2 萬),他拿到 Airbnb 年薪 22 萬的 Offer,最後在 Google 跟 Airbnb 之間 Negotiate 到 Airbnb 給他年薪 25 萬的 Job Offer,這聽起來有點難以置信,但仔細想想,公司利用資訊不對稱,發給十個合格的面試者一樣的 Offer,這個 Offer 可能是根據這個職位給出的公定價,如果今天有一個面試者,表現非常好,公司內部的人非常想要他,他的價值其實遠高於這個薪水,他如果沒有談薪水就接受了這個 Offer,對公司來講絕對是賺到!Haseeb Qureshi 也在他的部落格里,寫了這兩篇文章 Ten Rules for Negotiating a Job OfferHow Not to Bomb Your Offer Negotiation 教大家怎麼談薪水,個人覺得有些地方參考就好,畢竟一樣的方法並不一定適用每一個人。

我自己個人的經驗是只跟我自己會想去的公司談薪水,不要玩弄其他公司的感情 XD 我總共跟三間公司談過薪水,他們全部都幫我加薪了,當然不會像上面的文章那麼扯,談薪水當然也不是跟 A 公司說, Hey 我有 B 公司的 Offer,你們能幫我加薪嗎?這樣子顯得太隨便不負責任了,要求加薪是一件很慎重的事情,我的做法是寫一封文情並茂的 E-mail,告訴對方我真的很喜歡你們公司,但是我現在真的沒有辦法做決定,接著講述幾個你值得對方為你加薪的理由,這個每個人狀況不一樣,但是記住這些理由一定要誠懇,最後再度表達很想去這間公司,期望對方開出更高的價碼來讓你更容易做出決定。

如何選擇公司

這也是大多數人常常忽略的一個問題,很多人會直接根據公司的名氣或是錢的多寡來決定自己的下一份工作,這雖然蠻實際的,但也失去了探索自己到底要什麼的機會,好的公司會有爛缺,爛的公司也會有好缺,爛缺也會有好的地方,好缺也會有鳥的點,況且公司是你清醒的時段裡,會花超過一半以上時間待的地方,所以我真心建議大家選公司的時候,問問自己想要在什麼環境跟什麼樣的人工作,想要學什麼技術,五年後的自己會是怎麼樣子的,做出最適合自己的選擇!

我在台灣第一份工作是去了華碩,當時找研替沒想太多,只是想留在台北,對自己未來要進的 Team 也沒好好研究,糊裡糊塗就進去了,但只能說我強運,工作上讓我學到很多,Work Life Balance 也很好不太會加班,又讓我在 2015 年有出差到美國 Google 三個月的機會,真的是不能再好了。

有了第一份工作的經驗,這次我在選擇公司時,相對慎重許多,簡單來說選擇好的部門比好的公司重要,我自己則是考慮三個點,第一,公司的文化以及產品我認不認同/喜不喜歡,第二,我能不能在一個讓我持續成長的環境工作,跟一群聰明而且願意分享知識的工程師們一起工作,打造有意義的產品,第三則是考量薪水以及地點,我做決定時儘量會去考慮前兩項,但因為前兩項比較難量化,所以或多或少還是會受到第三點的影響。當時在我接到 Google Recruiter 通知說要送 Hiring Committee 去審查我的資料時,我有想過萬一拿到 Google Offer 我要怎麼在 Square 跟 Google 之間選,當時的想法是不管結果我都會去 Square,差別只在如果有 Google Offer 的話會更有本錢跟 Square 談薪水,原因是因為 Square 在面試時有一關就是跟我未來的 Manager 聊,我覺得他是個有想法也很有熱忱的人,我預期在他底下做事我會有發揮的空間,再加上 Square 的 Android Team 一直讓我很嚮往,裡面的工程師感覺也都很樂於溝通,另外就是 Google 對 New grad 是先給 Offer 再選組,所以你在決定 Offer 的時候你是不知道你未來會在哪個 Team 的,這點確實讓我很卻步。

美國工作好找嗎?

先講結論:New grad 找工作真的越來越艱難了,大部分的公司還是缺有經驗的!

不管你在台灣有沒有工作經驗,如果你沒有在美國工作的經歷或是你人目前是學生身份,基本上你就會被當成 New grad,即便我們會爭論說,在台灣的工作經驗是真的有用很紮實的,但對公司來講,他沒有必要去冒險或是花時間在沒有美國工作經驗的人身上,所以為了方便起見就會被當成 New grad,換句話說,很多時候跟你競爭的人也是有好幾年工作經驗的,要找到工作真的是一年比一年難。人在美國,常常會聽到哪間公司在裁員,哪間公司最近縮招了,有的時候被裁員的甚至就是自己的同學,真的會明顯感覺到近幾年景氣真的沒有之前好,聽過一些人,直到畢業前都沒找到工作,甚至是直到畢業後快半年,已經決定要回台灣了,才好不容易拿到 Offer;另外我有個同學,我覺得他能力很好,表達能力好英文也比我很多了,但因為他是台灣大學畢業後直接過來念碩班,所以沒有什麼公司給他面試的機會,他總共只拿到兩間公司的 On-site 邀請,最後都拿到 Offer 了,每次看到這些故事,都會明白其實沒有身份的外國人在這邊找工作,壓力確實都很大,我們最後會看到的大部分都是成功的例子,但更多的卻是還在找工作或是失敗或是相當相當艱難的故事,所以不要存有美國就是機會很多找工作就相對容易的幻想,每個機會背後有著是更多的競爭以及更多的努力

結語

感謝有耐心的讀者終於看到了最後,我花了很多時間回憶並且把這些心得記錄下來,我講得不見得都是對的,很多時候只是我個人的心得,畢竟這些心得很有可能只是倖存者偏差,適用於我的不見得適用於另外一個人,不適用於我的也不見得對你沒用。但是有一些經驗是通用的:永遠要誠實面對自己的能力,不斷地讓自己能力進步往更好的方向走,不要被短期的結果影響,要記住人生是長期累積的結果也是一個連續的過程,找到工作也只是個開始,開始工作以後也會有大大小小的挑戰需要我們去面對!最後,希望這篇文章能夠對你有幫助,真的希望能夠在世界的舞台看到更多台灣人,讓更多人知道台灣,讓我們以身為台灣人驕傲,大家加油!

P.S. 如果有關於找工作的任何問題,歡迎大家留言,我會盡我所能回答的!

參考資料

書單

面試準備

投履歷

公司評價、薪資及數據

——

(本文由 Kenji Chao 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為:《2016/17 美國軟體工程師求職心得》,礙於篇幅過長,我們將其切割成兩個部分,本篇為下半部;圖片來源:wiki, CC Licensed 。)

延伸閱讀

面試過 Google、Uber 等 9 家科技公司,台灣軟體工程師美國找工作實例分享
【沒事別想不開去創業公司】創業公司這個坑很大,想清楚再跳
一周 10 小時,你也可以轉職 AI 工程師!fast.ai 的免費課程連 Google 都推