Hi!這裡是 Jing Tech 前端技術週報!除了 Substack 電子報外,也可以在筆者的部落格 jing-tech.me 與 instagram: jing.tech 關注前端大小事!
本週深度閱讀
不論價值如何:我對於科技業求職的建議
本週看到一篇蠻受用的求職功略,文章內容涵蓋了事前準備、面試技巧、談薪策略與心法,由於作者也是前端工程師,所以主要是針對前端工程師給的求職建議,以下是筆者結合自身經驗整理出覺得印象深刻的部分。
«事前準備»
衡量哪些工作會帶給你滿足感?
寫下你能想到的每個標準 (薪資、福利、自主權、公司規模、聲望、職稱、是否有趣的工作、文化、社會影響、穩定性等),並將它們進行排名。這個列表就是你心中的基準,在之後投遞履歷時,可以透過這個基準與申請公司進行比較。
花時間了解自己
可以透過一些性格測試的方式,讓你能大概了解你適合什麼、能為團隊帶來什麼以及適合你自己的位置。
補強弱點,專注優勢
You’ll be hired for what you’re good at, not for what you’ve avoided being bad at. So don’t leave any gaping holes in your armor, but also: don’t polish your shield when you could be sharpening your sword.
你可以花時間學習未來求職時所需具備的技能,但你不需要到非常精熟,也不需成為能夠完美回答各種面試題的面試者。你只需要熟悉基本概念,並且能夠用 High-level 的方式表達給面試官。
打造屬於自己的行為故事庫 (Behavioral Story Bank)
行為故事庫 (Behavioral Story Bank) 是讓你可以隨時講述關於你的事蹟,內容要能夠突顯你的能力、能夠讓拉高別人對你的分數以及事蹟所帶來的成果。
筆者認為這是所有事前面試準備中最重要的一環,就跟履歷一樣,以每個季度或年度為單位,定期的檢視與更新這個故事庫。可以使用 Google sheet 或是其他工具,將每個事蹟用故事輔以標籤或是 STAR 的方式列出,例如:
做了 A 重構 [disagreement][achievement] 主導 B 專案 [disagreement][leadership][challenge]
這樣好處是可以不用特別去針對每個行為面試題去做準備,例如當面試官問:
當你與同事有意見分歧時,你如何解決?
你面對的最大挑戰是什麼?
你可以根據問題的關鍵字與標籤進行匹配後回答,且這些回答就是真實案例。
這些份故事庫也會在之後的求職信、履歷與行為面試起到非常大的作用,如果不知道怎麼開始寫,不仿可以直接看一些常見的面試題,然後回推你做過的事情。如果還是不知道如何下手,可以透過閱讀一些專業的部落格,像是 GreatFrontend、ExplainThis 都有提供相關的系列文章。
做好在面試時的財務規劃
如果想要裸辭的情況下準備面試,建議先存一筆錢,以現在軟體工程師市場偏冷的情況下,盡量準備足夠的金錢面對這個過程,面試是一場馬拉松不是短跑,有足夠的金錢才能讓你能夠在這個過程更有底氣。
筆者在 2021 年就是辭職後休息一兩個月後才開始找工作的,當時候每天就看著銀行帳戶的存款不斷地減少,確實讓這個過程有種急迫感,所幸那時後求職市場還很熱絡,讓筆者很幸運地在兩個月內就找到理想工作。如果可以,還是盡量以騎驢找馬的方式找,這讓你在財務上有能更多的餘裕。建立人脈
在這個數位化的時代,建立人脈網絡的方式越來越多。只要努力經營自己的人脈網絡,就能在求職市場上佔據有利的位置。人脈網絡不僅限於 LinkedIn,還可以通過參加一些線下的開發者聚會甚至是 FB 群組來拓展。然而,社群並不是慈善機構,不應該在未貢獻和未參與其中的情況下,直接表明自己正在積極尋求新的工作機會。
建立網站
你可以透過寫部落格來分享你正在學習的知識,也可以從簡單的一頁式網站開始。這至少可以讓你在使用相同頭像和頁面佈局的 LinkedIn 求職者中有更多機會能夠脫穎而出。
個人網站的另一個用處是,至少可以讓你有一個 Side Project 可以分享。如果內有可以展示的專案就更好,這不一定要參與什麼開源項目或是寫過很高級的庫,但它應該是你自己建立的東西,能夠展示你的學習動力和技能。
同時,專案的品質勝過數量。一個優秀的小項目比一堆草率的 Demo 作品更有價值,所以盡量獲得其他人的幫助和反饋。面試官可能會查看你的程式碼,因此確保程式碼品質良好,並盡可能讓它易於訪問和高效運行。
求職信與履歷模板
花一些時間來設計求職信以及各類型電子郵件的模板。在一開始準備好這些模板,能夠幫助你在減少實際求職過程中花在這些瑣碎事情的時間。當需要寫感謝信、追問信或求職信時,就可以有個開頭模板,不會花一整天進行研究與起草。
準備一個追蹤列表
可以使用 Google Sheet 或是 Notion 等工具去追蹤你申請的每一個工作,紀錄申請時間、方式、狀態以及任何其他相關筆記。
«面試技巧»
前置搜索
作者提到在美國市場通常你需要寄出 10-20 份簡歷才能夠收到一份回覆 (換算成機率大約 5-10%),但他也提到可以透過海投的方式提高你的成功率。
海投的優點大概是:
當你從申請階段轉變為面試階段時,你可能沒有太多時間進行其他申請。
你想要盡可能多地獲得面試機會。這不僅僅是為了短期內增加你的成功機率,更是為了在面試過程中積累寶貴的經驗。
但對於台灣求職市場來說,情況可能相對好一些,由於筆者沒有海投過,只有在投遞履歷前先列出所有有開缺並且是符合自己標準的公司,並且用 Google Sheet 做 Tier 的分級 (Dream, T1, T2, T3) ,投遞順序大概是 T2 → T1 → Dream → T3, 如果運氣好一點,通常在 Dream 還在面試時,T1 與 T2 可能就已經有 offer 了,這時候可能就可以根據情況用手中有的 offer 跟 Dream 進行議價。如果在面試的公司是獵頭幫你介紹的,那可以保持跟獵頭的良好溝通,通常專業一點的獵頭會幫你爭取更高的薪資,因為也代表成功後他們拿到的抽成會更高。
儘早申請
A company will never offer your dream salary and benefits, so don’t feel like you need to be their dream candidate.
成為最早一批的求職者,可以大幅減少 HR 對審查申請者感到厭煩的可能性。不要因為自己沒有符合所有標準就放棄投遞求職信。如果你符合職位描述約 70% 的要求,你可能已經是他們合理期望中最接近的人選。
成果重要於行動
履歷的重點是要講述你的故事。「我做了這個專案所有事情」並不是一個故事。盡量透過 STAR(情況、任務、行動、結果)簡化成三個故事要點:
設定場景(situation, task)
說出你做了什麼(action)
展示上述最後產生的影響 (result)
並且儘可能地使用具體、量化的數字,來總結你的影響。例如:
“在[情況]中,進行了 a、b 和 c,導致轉換率增加了 15%。”或者,“鑒於[背景],實施了 x、y 和 z,使成本效率提高了 10%。”
談談自己作為一個人,而不是一個技術清單
軟實力與硬實力同時重要,例如同時會 React 跟有良好溝通能力的人一定比只會其中一項的人少,同時具備兩種能力的人可能就是價值所在。
面對失敗,越早越好
面試也是一門技術,越久沒有使用就會越生疏,所以盡量能夠保持固定頻率的面試,或是在面試前透過模擬面試的方式讓自己盡量進入到面試的狀態。
這點對筆者來說起來簡單,但要實際實行會稍微困難,但確實看到一些身邊的例子會每季或是每個月安排面試讓自己保持在可以隨時面試的狀態,畢竟像是美國公司裁員真的是一刀下去快狠準,也盡量避免一開始就投地你非常想要進入的公司,因為在還沒熱身就進入到高強度的面試中,多是沒辦法發揮你該有的實力。
投資你的面試設備
現在許多面試都是在線上進行,將你的面試環境打理整齊與設備準備齊全,這將可以在面試官心裡留下好的印象分數。
如何應付 Live Coding 面試
筆者認為如果你在面試前已經有充分的練習,那就足夠了,畢竟面試題目千奇百怪,不可能所有類型都練習到。但如果在練習時,能夠嘗試充分地將你的思考脈絡寫下並表示清楚那在真實面試時應該多少都可以寫出一些東西。而面試過程中能夠清晰的表達想法與釐清問題,面試官通常也會很樂意地去給你一些提點。作者在這部分也有一個章節去詳細的介紹,有興趣的可以看看 [連結]!
«面試後»
薪資談判
薪資談判又是另一門學問,以下是常見的技巧:
不要揭露自己期望薪資的這張底牌,可以透過反問的方式詢問資方他們能夠提供的薪資範圍是多少。
現在有許多薪資網站可以找到你目前面試公司、職級與該產業大概的薪資範圍,可以透過像是 levels.fyi 或是其他薪資揭露網站找出大概的範圍,這可以減少被 lowball 的機會。
如果像是美商有些公司會給 RSU 或是認股權又或是有些區塊鏈公司會給虛擬貨幣,這些都是可以先釐清他們的發放方式以及分幾期發放。
另外如果對方給的是一個夢想或是承諾,請不要太過於相信。承諾很容易被遺忘。即使是真誠且出於善意的承諾也不例外。因此,如果你依賴任何人的承諾,一定要留下憑證。如果沒有書面記錄,那就等於沒有發生過。
以上是筆者擷取文章的重點並結合自身的經驗,有些資訊可以參考多方的意見,畢竟轉換工作是一個成本,能夠找到滿意並符合標準的工作是需要付出一定的時間,但如果能夠減少雙方的資訊誤差,那就可以站在相對有利的位置,也非常推薦閱讀原文,祝正在求職或是打算換工作的各位讀者,都可以找到屬於自己的 Dream Job!
«推薦連結»
本週熱點與選讀
文章
React 19 and Suspense - A Drama in 3 Acts
在上週的 React 社群中,有人發現 React 19 的 Suspense 從原本 React 18 的平行處理方式變成了瀑布流的方式,這可能導致資料擷取以及依賴該 API 所開發的功能在效能上顯著降低。儘管 React 團隊最後宣布在 React 19 移除這個更改,但想了結來龍去脈的讀者可以看該篇文章。另外,如果想要知道 React Suspese 在 18 跟 19 之間運作上的差別,也可以透過這個視覺化網站對比差異,其作者是 jser,如果有在用 bigfrontend 解題的讀者,應該多少在討論區看過他,同時他也有分享 React 一系列 的內部運作原理,非常推。
How To Compose JavaScript Function That Take Multiple Params
筆者當初在學習函數式編程 (FP) 總是會拿 James Sinclair 部落格的文章來拜讀,從最基礎的函式組合 (Function Composition)、庫里化 (Currying) 到更進階一點的代數結構 (Algebraic Structures) 都可以在他的部落格找到。最近他終於發布新的文章了!如果對 FP 有接觸的讀者,可能知道函式組合無法直接傳入多個參數,必須依靠一些輔助方法才能達成(例如使用
ap
這個代數結構)。這篇詳細的講解這部份的概念,非常推薦。💡 額外補充:
如果想要學習函數式編程,但卻不知道如何開始的讀者,推薦可以從 James Sinclair 的部落格跟 fp-ts 作者 (同時也是 Effect-TS 的核心貢獻者) Giulio Canti 所撰寫的 functional-programming 開始學起。
Visual testing: The greatest trick in UI development
Visual Testing 是近年開始興起的組件測試方案,其能夠更全面地對組件進行測試。相較於單元測試需要針對各種情境寫測試案例,Visual Testing 則是將改動前後的快照進行比對,如果前後 UI 不一致,測試則會失敗。這不僅可以大幅減少需要寫的測試案例,也能檢測 UI 上的外觀變化。如果想要瞭解更多這方面的知識,Storybook 的這篇文章進行了深入的分析。
Drizzle 是最近一年很熱門的 ORM,如果想知道 Drizzle 跟其他 ORM 有什麼不同或是想知道 Drizzle 如何處理複雜的 SQL 查詢,這篇文章都有詳細的介紹。
影片
Building with React 19 (actions + useOptimistic)
Lee Robinson (VP of Product at Vercel) 這週有在 X 上進行直播,用客戶端到伺服器端的範例介紹 React 19 的功能,介紹了 Server action,
useActionState
跟useOptimistic
的使用方式,非常適合開 1.5x 配飯吃!
Podcast
Dev Tool | Naman Goel - StyleX
本週 Dev Tool 邀請到了 StyleX 目前的核心貢獻者 Naman Goel 談 StyleX 當初想要解決什麼問題、特色、目前專案狀況、StyleX 的 Babel 擴充以及未來專案動向,同時也有談到 FB 內部使用的 flow 為什麼在安全性和正確性方面比 TS 還要好。
本週 Jing Tech
這裡會列出近期 Jing Tech 部落格發布的新文章,與 Jing Tech 的技術週報不同,部落格中包含了更多的程式互動範例,讓讀者能夠更容易地理解。非常歡迎讀者反饋與指教!
此系列將前端常見的面試題彙整,從手寫工具函式到各種前端問題都會在近期陸續加入,每篇內容分成上下兩部分,分別為提供範例與練習區先讓讀者先思考,再提供筆者的思路與解答作為參考,希望透過這種模式達到雙向學習。
本期內容就更新到這裡,感謝大家的閱讀,如果有任何問題或想法歡迎一起討論,也歡迎分享給更多人知道!你的每一份支持,都是我持續創作的動力!更多關於我的創作可以點擊這裡。
Happy Coding!