身為在新創公司工作的軟體工程師,總是要面對公司不穩定的風險。終於,在今年 3 月,公司第二次的裁員下被波及,幸好公司有提供資遣費,但如何在科技業裁員潮的 2023 年借助 ChatGPT 的力量與其他技巧,迅速找到下一份工作呢?
我的計畫很簡單,分為以下五步:
- 蒐集職缺情報
- 準備履歷,並請 ChatGPT 幫忙潤飾或翻譯
- 擬定讀書計畫
- 與 ChatGPT 一起精實刷題
- 準備並訓練面試技巧
最後就是上戰場並等候結果。下面一一來分享每步的詳細內容。
目錄
蒐集職缺情報
我個人喜歡從獵頭們取得職缺情報,原因有二:
- 個性化推薦:他們能夠從你的求職需求提供適當的推薦,比自己去各種求職網站刷職缺來的有效率。
- 幫你處理 cover letter:若是自己投遞職缺,除了要準備 cover letter 外,還需要祈禱 HR 有看到。但如果給獵頭處理,他們會幫忙寫好推薦重點給對方公司,並積極與 HR 溝通,可以省下不少時間。
當然獵頭也有分專業和不專業的,詳細可以看我另一篇分享文 如何選擇一個合適的獵頭?軟體工程師的經驗分享。
接下來根據過往有沒有合作的獵頭,分為兩個選項:
- 如果之前有合作過的獵頭,請立刻聯絡他們,詢問目前現有的職缺。
- 如果沒有合作過,請到 Linkdin 或者 CakeResume 等平台更新自己的經歷,並打開「#Open to Work」吸引路過的獵頭上門。
- 有能力的話,寫幾篇不錯的文章或是想法 po 在 Linkdin,增加曝光度
接下來與獵頭討論時,有些問題自己要先想清楚:
基本要點:
- 期待的薪資範圍(很重要也很實際)
- 不想要的領域(如:博奕等)
另外我個人還會看這幾項:
- 公司的文化、風格(如:開放、美式、透明…)
- 產品開發方法(如:迭代、agile、product driven…)
- RD 團隊的風氣(如:鼓勵討論、知識共享…)
每個人想法不同,但事先整理好,屆時與獵頭溝通時會比較有效率。
與多個獵頭合作時,勢必會有非常多機會等著你去嘗試,此時需要有良好的資料管理系統,才能釐清每個公司的優缺點以及聯絡對象。這邊我推薦使用 Notion 搭配其中的 Database,可以良好的追蹤整個面試過程(對,把面試當作是專案追蹤就對了!)
一切準備妥當並蒐集好公司資訊後,我們進入下一步。
準備履歷
與獵頭聊完後,他們會請人選提供履歷。無論是否投遞外商,我建議都以英文撰寫比較專業。2023 年寫英文履歷非常簡單,因為我們有 ChatGPT!但基本上還是需要求職者簡單寫一版作為骨架,然後再請 ChatGPT 幫我們潤飾。以下是我的作法:
準備亮點題材
- 請先回想過往在上一家公司作過哪些專案,或是技術上的改革,不管想到的什麼都先列點下來,蒐集點子。
- 依照每個點子能夠代表個人經歷與「價值」的多寡進行排序。其中「價值」是指「可以給公司帶來的價值」。此時求職者就像商品,如何讓公司願意買入,就看這個求職者能給公司帶來多少價值。
- 完成前一點的換位思考後,留下大約三到四點作為題材,進入下一步
使用 STAR 模型撰寫內容
STAR 模型在網路上有非常多教學內容,這邊僅快速帶過。簡言之,STAR 模型能夠讓「讀者」知道這位求職者在什麼情況下,做了什麼事情,並且得到什麼結果。
以軟體工程師來說,通常會是:
領導 xxx 專案,這個專案是幫助 yyy,提供給 zzz 位使用者使用 領導 xxx 架構改革,使用 yyy,讓系統穩定度增加 zzz
以上是蠻粗略的語句,不是最佳寫法。但重點是,因為讀者可能與你過往的領域無關,所以需要寫出一個情境,讓他能夠理解為什麼要這麼做,以及做完結果如何。
其中結果的部分 zzz 如果能以數字呈現更好,如:
提供給超過 5 萬個使用者使用 讓系統穩定度增加 50%
這樣能讓讀者對你的成果有一個具體概念。
另外請記得用列點的方式來寫,每一個經歷大約寫四到六個重點就可以了,若太多請記得濃縮一下。以我的為例:
請 ChatGPT 幫忙潤飾或翻譯
用英文或中文寫完初版後,接下來請 ChatGPT 幫忙優化,我用以下 Prompt:
你是一個專業的 head hunter ,專精於軟體開發的職缺,請幫我修改履歷以英文呈現,並讓他變得更通順精簡且專業
或是英文 Prompt:
You are a professional head hunter specializing in software development job openings. Please help me revise my resume in English to make it smoother, more concise, and professional.
後面再貼上你的履歷內容即可。記得最後還是要自己看過一遍,ChatGPT 可能會誤會草稿內容,或者遇到字數上限而被中斷,此時需要人工與 ChatGPT 多來回幾次。但速度和品質來說非常不錯,值得使用!
到這邊「公版」的履歷就準備的差不多了,如果心有餘力,可以為每個公司準備「客製化」履歷!
準備客製化履歷
首先需要仔細研讀每家公司的 JD,從中挑出關鍵字,如:
- 硬實力:JD 描述的技術能力,如 Python、Docker、CI/CD 等等
- 軟實力:人格特質、領導能力等等
簡單作一個分析後,修改履歷 highlight 這些關鍵字並調整內容列點順序,某方面有點像 SEO。但切記不要造假!澎風被抓到可是非常尷尬的!
這部份算是 Optional,如果時間來不及僅提供公版也可以。
擬定讀書計畫
履歷交給獵頭後,他們通常會問何時可以開始準備面試?此時要確定好每家公司的關卡內容。通常非管理職的軟體工程師會需要考演算法、系統設計等基本學科,因此好好準備這一塊可以大幅增加挺進下一關的機率。
必須說刷題還是需要的,因為某方面來說考試和實際開發依然有點落差,比如說:
- 有時間壓力
- 有人盯著你寫扣
- 不一定能查網路
- 沒有 copilot 幫你
- 題目可能很學術、很數學、偏技巧
此時需要大量的模擬練習,讓自己「習慣」這個過程。
整個練習所需時間因人而異,我這次是抓大概二到三個禮拜,畢竟平常根本沒在寫這些鬼東西。求速度的話,可以看網友分享的 leetcode 常考 75 題,至少每題寫個兩次增加熟練度。
除了演算法刷題之外,還有系統設計需要準備,推薦看 Design Gurus 的 Grokking the System Design Interview,除了有各大軟體公司的系統架構討論(Facebook、Twitter、Uber、Instagram、Youtube 等等),還有詳細技術名詞解釋。
全英文內容,求快的話可以用 Chrome 翻譯成中文,目前機翻品質不錯,可以試試!
原價 $59 美元,可以終生閱讀(下一次轉職還能看XD),覺得比其他月費形式的還佛。購買時有遇到折扣優惠,僅花 $28 美入手,俗啊!
網站上不定時有優惠,有需要不如先下手屯著?XD
系統設計部份可以安排在第一個面試的前一到兩週開始閱讀,搭配複習演算法刷題,這樣總共約三~四個禮拜速成。
與 ChatGPT 一起精實刷題
每天刷題時間我安排三小時左右(寫太多腦袋會爆)。一開始傻傻的一題撐到一小時才看解答,但後來聽同事分享技巧:第一刷如果超過十到二十分鐘還是卡關,請不要硬撐,立刻看解答!
不過 Leetcode 討厭的地方是不一定每題都有免費解答,就算看網友討論有時候也很混亂。但在 2023 年的我們很幸福,此時把整個題目 copy paste 丟到 ChatGPT,並告訴他用特定語言解題,他都能完美解出!
免費的 GPT 3.5 就能勝任演算法高手(都被 layoff 了能省則省),而且還會附上滿滿的文字說明,實在太棒了!因此可以把 ChatGPT 當作我們陪刷小幫手,不會就問他,可以省下非常多找資料或解答的時間。
有了答案之後,詳細閱讀說明文字了解思路,自己再到 Leetcode 重現一次,直到所有 test case 都過了再進下一題。
Leetcode 會把一刷時的答案存起來,因此二刷時把之前的 code 註解掉往下推,目的是製造出空白區域再寫一次,同時備份之前的答案。若忘記解法需要參考時,只需往下看之前的 code 即可,不用再去問一次 ChatGPT,避免他有時負載過大不能使用的問題。
除了 Leetcode 外,系統設計如果看到不熟悉的關鍵字,也可以透過以下 Prompt 請 ChatGPT 幫忙解釋:
You are a professional software architect, please tell me what is xxx in detail.
這樣就能輕鬆得到詳細的介紹囉!
準備與訓練面試技巧
面試也是需要準備與訓練的!我在圖書館找到這本書不錯:面試一次就上班,因為內容實在太棒了還在讀冊買了二手書回來收藏!大家可以照此書的方法來作。
詳細書中內容分享可參考另一篇文章,這邊摘要一些重點與大家分享。
面試準備
- 列出自我價值觀,找出核心價值列出自己的正向、負向價值觀,延伸出自己五年內的目標,進一步確認自己的核心價值
- 仔細研究 JD,掌握自我獨特賣點和履歷一樣,面試更需要對該家公司客製化。
- JD 中提到的關鍵字,自己過往是否有類似的經歷或成就?有的話請先列出
- 將這些關鍵字「順暢的」塞到自我介紹裡面
- 將這些獨特的經歷或成就,寫出一小段吸引人的故事,被面試官詳細詢問時可以侃侃而談
- 將你的個人經歷成就或核心價值,緊緊環扣住 JD
- 列出關鍵提問,透過提問帶出自己獨特賣點
- 事先準備好問題,避免不知道該問面試官什麼
- 表現出面試前有做功課的態度
- 找出自己有哪些獨特賣點和問題內容有關
- 問問題其實不是重點,而是透過問這個問題,於問題前面「再說一次自己的優勢」,讓面試官能夠記住你的賣點
以上準備過程的產出可以用文字寫成筆記,寫的過程中亦能引導自己作更深入的思考,同時還能成為面試時的小抄。
訓練說話技巧
準備完畢,接下來除了將這些內容印入腦中之外,還有一些說話技巧要訓練,如:
- 不講弱點,講還可以怎麼進步
- 闡述一件經歷或事情,將重點擺在第一句,讓面試官印象深刻
- 遇到不知道怎麼回答的問題,可以請對方再說一次,爭取思考時間
- 遇到為何離職等等相關問題,切記不要說出負面因素,而是提出正面說法,如追求更好的發展、學習更多的技術等等
詳細技巧討論已經超過本文範圍,之後再寫另一篇文來作分享。
這些方式一般軟體工程師工作時可能不常用,一定要多練習讓他內化,屆時才能順暢的回應。練習方式可以自己角色扮演練習,或者找朋友幫忙,一直重複 repeat 到熟練為止。
以上是我準備面試的幾個步驟,以下分享一些我對於面試的其他想法。
軟體工程師專屬面試技巧
軟體工程師面試在進入「閒聊」前,通常會有 live coding 和 system design 的環節。也有蠻大機率遇到自己沒看過的問題,此時應對技巧如下:
冷靜自己的大腦
先深呼吸,讓自己冷靜下來。當情緒上來時,大腦無法正確的處理訊息,此時務必讓自己冷卻才能摸清楚頭緒
多與面試官互動
- 先與面試官討論一下題目,確認題目想要的方向,以及隱藏的邊界條件
- 如果很清楚解法,也不要悶著頭就開始寫,可以先跟面試官討論一下自己的思路,讓他能夠掌握你接下來想怎麼作
- 如果不會寫也沒關係,可以將腦中想到「有可能有關聯」的東西說出來與面試官討論,過程中或許會激盪出想法
以我自己當過面試官的經驗,一般來說 live coding 或 system design 目的不是要找出很會解題的人,而是想要透過這個「模擬」過程,了解這位人選在一般日常開發中的作法。
若人選能夠表現出細心(如:變數名稱命名良好、懂處理邊界條件)、積極溝通(如:透過討論得知系統所需能耐或邊界)等等人格特質,有時就算題目沒解出來也會有過關的機會。因為面試官會覺得這位人選好溝通好理解,「可以讓他進下一關試試看」!(但前提是基本能力不能太差)所以我們務必把握這個機會!
當然大家日常開發時也要記得表現出這種特質,而不是只有在面試時特別裝出來哦XD
準備面試的心態與想法
最後分享一下準備的心態:
技巧只是幫助行銷,內在平常就需要訓練
面試也算是一場「個人行銷活動」,如何推銷自己的賣點讓對方公司願意買進,就像商人如何讓你願意買他的商品一樣。當然「行銷手法」只是畫龍點睛,重點還是在這個「商品」確實有其價值,因此平常還是得多磨練專業能力,後期透過面試技巧提點一下,才能發揮最大效益。
另外,準備過程中可以這麼想:
將面試當作一場自己是主角的表演
也就是說,將「面試」這件事當作一場「個人演出」來排練,前期自然而然會想要多練習,上場時也能因為自己身為主角,心中會有某種主場優勢,能夠降低恐懼或緊張。
亦可以將 agile 的精神用在面試,如善用迭代法:
當面試次數很多時,可以將不重要的面試排在最前面當作試水溫,一方面檢視自己準備的成果,另一方面蒐集對方問過的問題,回來立刻作 retro 與筆記,讓下次面試可以準備更完善!
這點個人認為很重要,此法可以避免自己準備時路線偏離太多,透過前期測試用的面試驗證準備方向,回頭重新調整策略,才能掌握更重要的面試!
以上分享給大家!希望能幫助到各位載浮載沉的軟體工程師們找到下一份工作!
延伸閱讀
如何選擇一個合適的獵頭?軟體工程師的經驗分享
被新創公司裁員後,我學到的五件事