網路上有關 Google Software Engineer (SWE) 的分享很多,
但很少關於 Test Engineer (TE) 面試和工作內容的討論。
因為我的工作經驗包含了半導體 (台積電) 到 Google TE 和 SWE,
希望能分享一路的過程給大家不同的職涯發展選擇。
[背景]
2015 - 2021: tsmc - Engineer in Process Development Kit Department
2021 - 2024: Google - Test Engineer in Pixel
2024 至今: Google - Software Engineer in Pixel
[Google - Test Engineer 面試]
2020 年開始嘗試,經過了兩次面試後才拿到 offer。
面試時我都使用 Python,後面就不贅述。
第一次在 Phone Interview 就被刷掉,
理由是 Coding Style 和 Readability 有待加強。
所以後來針對 Python idioms 和 Google Python Code Style 補強,
間隔六個月後在 21 年又挑戰一次。
第二次面試過程
Phone Interview: Code Interview + Test planning
面試官只問了基本的 Python 、 DS 問題和測試基本概念就過了,
完全出乎意料的輕鬆。
Onsite 1 - Code Interview + Test Planning
一題 leetcode medium 的問題,沒有 follow up。
面試官重點放在 automation tests 的 best practice,
test pyramid 和 test flakiness 的觀念。
Onsite 2 - Code Interview, General DS and Algorithm
1 題 leetcode easy + 2 題 leetcode medium 的題目。
印象深刻的是考了一題偏難的 Dynamic Programming 問題,
需要充分練習,不然很難在 45 分鐘全部實作。
Onsite 3 - Test Design and Planning
類似 SWE 的 System Design。
給定一個情境,要求設計 Test Plan 和 Test Cases。
對於測試規劃和不同測試方法要有一定程度的了解,
常用的專有名詞要記得並能正確的使用在測試計劃中。
Onsite 4 - Googleness behavior question
略
結果: 面試完當天就拿到 Offer 。
[Google - Software Engineer]
工作快兩年後想嘗試不同的挑戰,所以開始準備轉職成 SWE。
在 Google 有兩種方法可以轉換職稱 (Role Transfer):
1. Job Ladder Transfer
和一般面試相同,找到想應徵的內部職缺後進行 2 ~ 3 場的 Onsite Interviews。
TE 算在 Technical Domain Experience,所以只需要 2 場面試。
2. Job Ladder Alignment
不需要面試。只要過去一年工作的內容和 SWE 的職責有高度相關,
並且在主管願意推薦的情況下就可以直接轉職。
第一次面試 - Software Engineer in Android
應徵了在美國東岸合作過的 Android 團隊職缺,順利得到面試機會。
Onsite 1 - Code Interview, General DS & Algorithm
Graph 相關問題,表現得沒有很好。
花了太多時間解第一題後沒有完成所有的 follow ups。
最後拿到了 LH (Leaning Hire) 的評價。
Onsite 2 - Code Interview, General DS & Algorithm
Dynamic programing 相關問題。
基本題為 leetcode medium 的題目,
follow ups 兩題, 一題 medium 一題 hard,都有順利解完。
拿到了 SH (Strong Hire)。
結果:HR 看完成績後,認為兩場的評價落差有點大。
但新團隊願意推薦我,所以還是可以進入下一步 (Hiring Committee)。
不過 22 年底開始大裁員,head count 突然被凍結後 就不了了之。
第二次 - Job Ladder Alignment as SWE in Pixel
由於在 23 年接手了 Test Infrastructure 開發的工作,
累計了約 20,000 行程式碼,並且考績都在平均以上,
在 team leader 的推薦下直接轉成 SWE。
[關於 TE]
Google 的 TE 對於程式能力還是有一定的要求,
onsite interviews 至少要有一場是由 SWE 面試。
因此很常遇到面試者的測試經驗豐富,但在 Code Interview 被刷掉的情況。
但相較於 SWE,TE Code Interview 的難度比較低,
通常只要能在 15 ~ 20 分鐘內解完 Leetcode Midium 的題目都能順利過關。
而測試相關的題目網路上有不少資源可以參考,
所以對於目標是 SWE 的面試者來說準備起來相對容易。
如果目標是加入 Google 的話,TE 不失為一個好選擇。
而 TE 的薪資和 SWE 相當接近,差距應該在 10% 上下。
不過 TE 的缺點是工作上免不了手動測試,
大概只有 40% ~ 50% 左右的時間可以專注在程式開發。
在新功能發佈前,能夠寫程式的時間可能會更少。
但程式碼的貢獻會影響年度考績,如何在工作上取得平衡是 TE 需要面對的挑戰。
另一方面,如果你的目標是朝向 SWE 發展,TE 當作過渡階段還是可以提供不少好處。
例如公司內部免費的 Career Coach 諮詢和 Code Interview 題庫等。
並且 Job Ladder Transfer 僅需要兩場 Code Interview,大大增加了通過面試的機會。
[關於內轉]
Google 內部兩種不同的轉職方式各有優缺點。
Job Ladder Transfer 雖然需要面試,但準備方向簡單並且可以自由選擇想加入的團隊。
不過缺點一樣是需要花費心力練習,不然還是很容易被刷掉。
而 Job Ladder Alignment 雖然不用面試,
但要找到適合的專案並累積足夠多的程式碼需要相當多額外的精力。
並且要有主管的支持,在轉職後短時間內不太容易換團隊。
值得一題的是,在 Google 內部有相當多的資源可以幫助你準備面試。
有很多志願的 Career Coach 願意幫忙免費提供 Mock Interview 並指導你技巧。
我在準備面試期間就至少進行了 3 場 Mock Interviews,比起自己準備的確輕鬆不少。
題外話,個人感覺 Google 台灣和美國面試官的風格差別滿多的。
台灣的面試官多半很要求實作的熟悉度和速度,
45 分鐘內沒有完成含 follow ups 三題左右的題目就很容易被刷掉。
但美國的面試官會花比較多時間在討論問題,就算只完成一題,
只要面試者邏輯清楚、脈絡明確,還是可以拿到不錯的評價。
當然這不是絕對的就是了。
[結語]
就工作來說,Google TE 是一個不錯的選擇。
不過一般會花心力練習 Leetcode 和準備 Code Interview 的面試者,
通常都是將 SWE 當成目標,所以不太會考慮 TE。
我也是因為在台積電工作的背景而被 HR 推薦的情況下才嘗試了 TE 這條路。
如果目標是加入 Google 但還需要更精進程式的話,可以考慮看看 TE。
或許能在求職的過程推你一把。
希望我的經驗能幫助到你,願每個人都可以找到心目中理想的工作。