一天八小時,不能再多了,去年的精力完全被工作奪走。隨著產品即將上線,組裡所有人每天做到半夜還是做不完,週末頻繁加班,各種兩三天內要完成的要求接踵而來,壓力大到看著至少8位同事陸續離職,而我還繼續撐著,因為我想看見產品完成的那一刻。我做到了,可也是從那刻起,突然覺得一切不值得。
代價太大,兩年多來的過勞,身心疾病纏身,幾乎無法恢復。我失去對生活的熱忱,每一天高壓工作下,痛苦大到質疑生活的意義。工作是為了生活,要是忙到沒時間生活,那就不工作了吧!當我這樣想的時候,主管交代下來無法完成的死線,加上想到我在組裡沒有任何留念,就走了。
剛工作的時候,我以為我會待上個十年。換工作,為什麼?軟體工程師面試需要準備,我不覺得面試過程正常人會喜歡,阻力其實蠻大的。我決定離開的那一刻,我有了自己的答案。五年了,產品完成了,累了,仁至義盡了。
走吧,面試去。
這次我面試目標,是拿下資深工程師的職位,大概是 Google L5 的水準。系統設計,我是第一次準備,一開始很擔心準備不完,後來大量練習算是趕在各個onsite 階段前準備好。
我參考一畝三分地上準備方式練習系統設計,先是一天一章讀完綠色 Alex 的書,再上 YouTube 找 Scott Shi 的 DDIA 影片也是一天一部看完。這時候,我大致熟悉系統設計解題步驟和要點。
接下來是最重要的,看·經·典· 論·文。Alex 介紹過影響軟體產業最重要的 25 篇論文,我從裡面挑了大概十篇與存取資料相關的論文詳讀。論文很多時候都是針對某個實際問題催生出解法,習慣論文的思考模式,也幫助我檢視練習系統設計時有沒有漏洞。
一邊看論文的同時,去網路上大量找題目練習。練習的時候,拿出紙筆或網路白板,親手寫,親手畫,親口解釋。要是概念講不清楚,再去資料再查深一點、讀懂,用自己的話說幾遍。另外,各個科技公司的 tech blog 和 infoQ 的文章也是重要學習來源,沒事多看幾篇。上面的案例和解決方法,都比Alex 的書來的更實際。
我自己練習大約 30 道系統設計題才覺得自己掌握解題方法。之後,就是複習自己的筆記和實際面試。面到最後,大概看到各種系統,心中都有一套自己的解法,後來也就平常心了。
這個方式很棒,但是它也只是針對面試而已。我幾場面試遇上 principal 等級的面試官,他們很明顯能看出我有好好準備面試,可是仍然欠缺大量實際經驗。我收過面試官回饋說,我的設計看起來都對,可是太複雜,他覺得有更簡單的方法。我事後分析,他說的沒錯。當然,這已經超出我掌控範圍,短時間內我不可能獲得 3-4 年實際工作經驗。
很不幸,題還是要刷,所以我還是去 LeetCode 找回手感。也許是面試 senior 職缺,我反倒覺得拿到的題目沒那麼像天馬行空競賽題,反倒挺實際。我被問物件設計 message queue、inverted indexing、query parsing、log filtering 、query parameter validation、request handler ,只有 BFS 和 DP 各遇上一次。此外,SQL 的問題也要準備,我雖然沒遇過,但聽說有機會讓你現場寫 query,萬一 keyword 沒想起來,在面試官前卡住,大概也掛定了。
亂七八糟投了上百家,進入面試環節有五家。
- Walmart - offer get
- DoorDash - reject after phone screen
- Eventual - reject after onsite
- Snowflake - reject after onsite
- TikTok - withdrawal after a few rounds of onsite
Walmart 目前好像在廣招,也是最早拿到的 offer。總之,順利上岸。之後我在Walmart AdTech 做些有趣的嘗試,新的 tech stack,新的 business,相信一切都會順利。