【美國留學】Google Software Engineer 實習經驗

分享在 Google 的實習經驗,以及我是如何拿到 Return Offer,成為 Full-time Googler!

I-No Liao
工程師小夫妻
9 min readNov 14, 2020

--

Picture from Unsplash

自從 2019 秋天拿到 Google Intern Offer 以後,一直期待 2020 夏天的到來,常幻想著在 Google 邊吃邊喝邊 Coding 的實習生活。不幸地,COVID-19 疫情在三月爆發,Google 發出 2020 暑期實習更改為 Remote Mode 的通知,對於想體驗 Google 辦公室文化的我而言,實為一大打擊。然而,在聽說許多公司因為疫情的爆發,撤回已經發出的 Offer 後,又覺得自己是個幸運兒:至少我還保住了能夠跟 Googler 一起做 Project 的機會!

本文共分為四段:

  • 實習生的生活
  • 實習生工作中的重要元素
  • 如何從 Intern 轉成 Full-time Googler
  • 結論

實習生的生活

作為 Software Engineer Intern,每天生活的重心當然就是寫程式啦!每天早上第一件事情是參加 Stand-up Meeting,把昨天的進度以及今天的目標簡短地用口頭報告,會議結束後就一路 Coding 到下班。因為 Remote 的關係,唯一的約束只有開會時人要出現在電腦前,其餘時間都非常彈性,甚至工作時數都沒有硬性要求。我的作息相當規律,白天上班,晚上刷題,週末放鬆,比起在學校上課要輕鬆不少,整個夏天過得既充實又愉悅!

除了日常工作之外,Google 也很用心地為實習生準備各種講座,這些講座通常都會找在 Computer Science 領域有傑出貢獻的 Googler 主講,每次去查這些大師的背景,都會驚嘆不已,也格外珍惜自己有接觸這些人的機會。當然,在 Google 娛樂活動可少不了,像是找知名 DJ 來舉辦一場線上的 Friday Night 音樂會,找超正的美國超模 Karlie Kloss 分享她創辦 Code Camp (Kode With Klossy) 的經驗,甚至實習生集體玩桌遊等等,活動多到來不及參加。另外,組內也時常會舉辦 Lunch Chat 和桌遊,有一陣子每個禮拜都在打桌遊,差點忘記自己是來領錢上班的。正因為有這些活動,讓我的實習變得更加多元,也能深刻地感受到 Google 自由開放的企業文化以及追求創新的精神。

實習生工作中的重要元素

Intern Manager

通常實習生會由兩個組員來帶,一位稱為 Host,一位稱為 Co-host,這兩位對實習生來說是最關鍵的人物,因為最終的考績將會由他們決定,而考績是能否轉正最重要的依據。實習一開始,Host 很清楚地將我的 Project Scope 告訴我,並且把預期的 Deadline 列出來,讓我能夠更快速地進入狀況。我大概花了一週左右把 Coding 環境設定好,然後開始一項一項地完成任務。在與 Host 的 Weekly Meeting 和與 Co-host 的 Bi-weekly Meeting 中,以報告進度和討論遇到的困難為主,也可藉由這兩個會議,確認自己的方向是否正確以及表現是否符合期待。

Midterm & Final Evaluation

整個實習的過程會有兩次績效考核,Midterm Evaluation 及 Final Evaluation。 Midterm 結果並不影響是否能轉正職,但卻是一個重要的指標,透過 Midterm 績效能夠瞭解 Host 及 Co-host 對我的滿意程度,藉此可知道實習的下半場該如何調整,更加提升自我表現。Final Evaluation 則直接影響最後是否能夠轉正,重要程度排第一,必須好好把握!

Code Review

若從學習的角度出發,實習中最重要也最有價值的一環非 Code Review 莫屬。 Google 對於 Code 要求相當高,初期我一小段 Code 都得來回修改五六次才能夠符合要求並通過 Review。 Review 的內容無所不包:Code Structure,Algorithms,Testing,Readability,Naming Convention 等等,都需要符合要求才能 Submit 上去。如此精實的訓練讓我的 Coding 能力大幅進步,受用無窮!

Sprint Review

組內兩週會舉辦一次 Sprint Review,這個會議 PM 和較高層的長官都會來參與,通常會在這個會議中 Demo 我們組內兩週以來的成果。雖然我只是個實習生,Manager 仍鼓勵我積極參與 Demo,所以我爭取每次的 Sprint Review 中都拿出成果來展現,也因為自己設定的這個目標,我能夠一直保持良好的產出,並持續曝光自己,讓大家知道我是個對產品能夠作出貢獻的工程師。

如何從 Intern 轉成 Full-time Googler

Google 的實習生轉正職的過程與其他軟體大廠最不同的地方,在於除了考核 Intern Project 的績效之外,還必須通過非常硬的 Conversion Interview。這也是 Google 實習生的 Full-time Conversion Rate 相比於 Facebook、Amazon、Microsoft 等大廠來得低的主要原因。因此,實習期間不僅要把 Project 做好,還得在下班時間持續練習面試,一點都鬆懈不得。以下將著重於 Intern Project 與 Conversion Interview 兩點來討論。

Intern Project

毫無疑問地,在 Intern Project 上取得優異的表現,絕對是轉正最基本的要求。我個人認為 Google 在評量一位實習生時,放在 Project 表現的比重,應該比 Conversion Interview 要來得高。畢竟長達 3 個月的考核過程,比短短的面試更能檢視一位工程師的能力是否符合公司的需求,以及該工程師是否與公司的文化相符 (Culture Fit)。

因此,我在 Intern Project 上毫不馬虎,從 Day 1 就用最快的速度理解 Project Scope,並盡己所能地提前完成所有被指派的任務。也因為如此,我能夠提前 4 週完成所有 Main Objectives,提前 2 週完成所有 Stretch Goals,並在所剩的時間裡主動地認領並解決組內的 Issue。為了增加效率,我在卡關時,如果花一整個下午還是無法自己解決的話,就會尋求組員們的幫助,勇於發問不僅能更快解決難題,也往往能從強大的組員們身上學到許多寶貴的經驗。

另外,日常上班時,珍惜每次的會議時間,儘管是最輕鬆的 Daily Stand-up Meeting,我都還是會事先把想要報告的那五六句話寫下來,思考如何能有效表達 1) 目前進度,2) 遇到什麼困難,3) 解決困難的方案。更別說那最重要的 Bi-weekly Sprint Review,肯定要爭取每兩週都有成果可以 Demo,把存在感刷到爆表。

最後,Final Presentation 也是實習生能夠向更高層的長官展現成果的最佳機會,而且我認為如果能取得更高層長官的讚賞,肯定會影響兩位負責幫我評量考績的同事 (Host & Co-host) 對我的評價。因此,我當時全力以赴的準備,練習口頭報告不下數十次,並且把自己的貢獻盡量用 Demo 的方式呈現,讓整個報告生動活潑。

Conversion Interview

Google 的 Coding Interview 是出了名的難,除非絕頂聰明否則我認為一般人無法靠投機取巧過關,而且出現 LeetCode 原題的機率接近於 0。所以最好的方法就是穩紮穩打,進行大量的練習,而且不僅要廣也得透徹理解每一道練習過的題目。我自己的做法是將 LeetCode 上有 Google Tag 的題目,從高頻題開始往低頻題寫,目的並非猜題,而是熟悉 Google 題目的難度。若遇到能一題多解的題目,就把所有解法都練習過,並且將該題衍伸的變化題,也都寫過一遍。

此外,我覺得透過 Mock Interview 累積實戰經驗是不可或缺的一環。說到 Mock Interview,這時 Google Intern 的優勢就體現出來了,由於實習期間人已經在公司裡面,所以能利用的資源也更多,而最有幫助的資源就是 Mock Interview。我在整個短短的 14 週實習過程中,總共與 5 位不同的 Googler 進行了 10 場 Mock Interview,透過質與量兼具的勤奮練習,使我在真正的 Conversion Interview 中表現優異。

最後針對這個段落來畫個重點:

  • 盡自己 200% 的努力把 Project 做到最好
  • 卡關時勇於發問,才能最有效率地解決困難
  • 珍惜每次報告的機會,這是展現自己能力的最佳場合
  • 下班再累都要好好刷題
  • 把握任何 Mock Interview 的機會

結論

非常慶幸自己能夠進入 Google 實習,認識一群經驗豐富且智力超群的工程師。今年夏天對我來說意義非凡,這是我第一次踏入美國職場,接觸到許多新的事物和觀點,也學習到一線大廠的軟體開發流程。最開心的是,我能夠將 Project 的所有任務盡數完成,取得好的績效,並且通過最後的 Conversion Interview,順利拿到 Return Offer,正式成為一位 Googler!

--

--