嗨~歡迎閱讀第 57 期 ExplainThis 全端開發雙週報!
在進到本期的主題文之前,想與讀者們分享,ExplainThis 製作的《給工程師的 Cursor 工作流與 MCP 實戰》線上課程在上個月新增了新的章節,包含「使用 AI 要小心與注意的事項」、「使用 AI 時需要調整的心態與思維」等單元,回答了許多工程師們會問的熱門問題。
對這門線上課程感興趣的讀者,歡迎加入 E+ 成長計畫觀看 (連結)。除了線上課程,E+ 的每週主題文,涵蓋前端、後端、AI 工程的熱門主題,有比雙週報更深入的內容,推薦給想在職涯持續成長的你。
以上,讓我們進到這期的主題文《做一個有意義的個人專案》。
做一個有意義的個人專案
過去收到讀者來信諮詢職涯成長議題時,我們總會說「如果有時間餘裕,投入做個人專案是很不錯的選擇」。然而,當談了這點後,多半會遇到一個接續的問題「個人專案該做什麼?」
希望透過這期的主題文,來與讀者們談談三項做個人專案時可以切入的角度,讓讀者們能夠有效利用個人專案,獲得最大的價值。
在決定投入時間做個人專案之前,最重要的問題是問「為什麼要花時間做個人專案」,以這個為終來思考,才能確保花的時間有獲得對應的價值。畢竟假如想讓自己的職涯加分,有很多不同的途徑,例如可以貢獻開源專案、可以參與社群讀書會,也可以在工作上投入多一點來加速升遷。
由於時間可以被用在很多不同地方,在實際投入前應該反過來問「個人專案可以帶來什麼獨特的價值?」,而基於不同的潛在價值,個人專案在題目選擇上也會有所不同。
在我們過去的經驗中,個人專案主要能帶來三種不同價值 (當然可能還有其他的,但這邊主要談我們的經驗)。
要讓個人專案有意義,可以從以下這三個角度切入
解決自己想解決的問題
獲得工作上無法獲得的技術成長
讓自己的履歷上加分
以下讓我們分別來討論這三種角度。
解決自己想解決的問題
解決自己的問題之所以是個有意義的切入角度,是因為做這類題目的個人專案,先不論最終專案規模能長到多大,最起碼自己的問題能夠被解決,換句話說該專案本身就能帶給自己價值。
因為是解決自己有的問題,所以對於選定的題目,也會有比較具體且深刻的理解,實際做起來也會比較有動力。
事實上,當初決定要做 ExplainThis 這個專案的主要原因,就是為了解決我們自己的問題。當時我們遇到的問題是,身為工程師在工作三五年後要找新的工作時,就得花很多時間準備面試。
而準備面試時花最多時間的地方,莫過於找題目、整理回答。當初我們為了免去每當要換工作時,就得找面試題目、整理解答的麻煩,開了共筆把這些內容整理進去。而當初想說除了我們自己,應該還有許多其他工程師有相關的困擾,因此把這些共筆公開,成了第一個版本的 ExplainThis。
而假如你解決的某個問題,剛好也是其他人有的問題,那麼你做出的成果,也會能帶給其他人價值,這是很有意義的事。
ExplainThis 團隊之所以能夠到現在連續三年,持續用下班與週末的時間投入這個專案,也是因為透過這個專案,一直能獲得讀者們的正面回饋。「帶給其他人價值」的成就感,就是一個讓人能堅持的動力。
總的來說,挑一個自己有痛點的題目,解決該問題後分享出來,能在正職的職涯外,獲得很多意想不到的收穫。
獲得工作上無法獲得的技術成長
第二個推薦選個人專案題目的切入角度,是挑一個讓自己能獲得「工作上無法獲得的技術成長」的題目。
最近在 ExplainThis 經營的 E+ 成長計畫 (連結),讀者 Benson 分享了自己做的個人專案,就屬於這類例子。
Benson 分享了自己做的 VibeGDoc 專案 (連結),實作類似 Google Doc 的功能,在當中就用到了許多進階前端的相關技術,同時也串接了生成式 AI 的功能;這讓 Benson 在做這個專案的過程,大幅提升了自己在前端深度、新技術探索的能力。
很多前端工程師可能會抱怨,自己在的公司開發的前端功能都很基本,所以無法獲得技術成長;有另一些人會抱怨自己待的公司比較保守,所以沒機會去探索最新的技術。
但上面這些抱怨,完全可能透過個人專案來解決。以 Benson 的 VibeGDoc 個人專案為例,有鑑別度、有亮點的前端功能就包含
即時共編 (real-time)
版本控制 (versioning)
富文本編輯器 (rich text editor)
除此之外,在生成式 AI 的功能上有
AI 自動補全 (auto-complete)
語音轉文字 (voice to speech)
MCP 客戶端與伺服器端實作
從這個案例中可以看到,不論你目前在什麼類型的公司,不論你待的公司是否有在跟上技術的新趨勢,如果有心想要跟上新的技術 (例如實作出串接各類 AI 的功能),完全可以透過個人專案做到。
以 MCP 客戶端與伺服器端開發來說,在 MCP 推出後,很多人可能只是讀相關的內容,雖然這樣做已經比起完全沒接觸來得好;但假如真的要比較深入理解 MCP,自己動手開發 MCP 客戶端與伺服器端,會是更有效的方式。
總的來說,假如在目前的工作,覺得有某些想要探索的技術沒辦法碰到,透過個人專案來深入理解,會是很推薦的做法。
讓自己的履歷上加分
最後想談個人專案在求職上的幫助,假如是想要提高自己求職時履歷的通過率,很多時候一個完整且高品質的個人專案,能夠加不少分。
有兩種常見的狀況,是個人專案特別能加到分的,一個是假如缺乏正職或實習經歷時,個人專案能夠用來證明自己有足夠的技術設計與實作能力。
舉例來說,先前一位工程師 Andrew Zheng 在開發 iOS 應用後,將作品分享在 Twitter 上。Apple 的某個工程主管看到後,主動聯繫他並邀請他加入團隊 (詳見 Andrew 寫的 Getting a job at Apple without going to college or doing LeetCode 一文)。
另一個能透過個人專案來為履歷加分的,是假如你過去在某個軟體工程的子領域,但是想要轉換到一個不同的子領域,這時即使你已經有多年經驗,但是因為過去的經驗跟新領域的相關度不高,通常很可能在履歷關卡被刷掉。
具體來說,假如你過去是傳統的前端或後端工程師,在生成式 AI 興起後想要轉去做 AI 工程師,這時就會遇到過去的經驗沒辦法證明自己能勝任 AI 工程師的職位。在這種狀況,假如有做出上面提到的 VibeGDoc 這種個人專案,就能很有效的證明你有相關的實作能力。
閱讀更多
以上我們談了個人專案對職涯成長、求職的幫助。假如讀者們對於職涯成長、求職這個主題感興趣,除了這期雙週報談到的內容外,我們在 E+ 成長計畫有更多深入的內容。
此外,E+ 中也有《軟體工程師求職全攻略》線上課程,完整地談了如何用有效的方式通過求職過程的每一個階段。對 E+ 感興趣的讀者,可以在這個連結看到詳細的介紹。
本期推薦
《Essential Reading for Agentic Engineers》彙整了許多篇使用代理的實用觀點 (連結)。對這個主題感興趣的讀者,也可以參考先前 ExplainThis 彙整的 Cursor 使用教學 (連結)
麻省理工學院 (MIT) 先前把 Foundations of Computer Vision 的線上版免費開放閱讀,非常佛心 (連結)
許多軟體工程師會選擇加入新創公司,然而由於新創的風險高,在加入前,審慎的評估會是非常重要的 PostHog 的執行長 James Hawkins 寫了一篇很精闢的文章叫 Job interview questions engineers should ask (but don't),以自身做為新創公司執行長的經驗,來談有哪些該問,但多數候選人不會問的問題 (連結)。
先前總是做 3 - 5 小時深度直播的Ryan Carniato,最近開使做比較容易消化的短影片 (10 - 20 分鐘),舉例來說 The 3 Ways JavaScript Frameworks Render the DOM 有很精闢的分析,推薦一看 (連結)
雖說 JavaScript 是個單一執行緒 (single-thread) 的程式語言,但是在實作上可以透過 worker 來開不同的執行緒,《Worker Threads in Node.js》一文有很詳細的說明 (連結)
最近看到一個很酷的開源專案 SoundZ,匯集了在使用者與網頁互動時的音效 (例如點擊時的音效),可以用非常簡單的方式加到前端當中 (連結)
近期軟體業界越來越多人談專家通才的重要性,《Expert Generalists》一文詳細地談了專家通才是什麼,與傳統的 T 型人才的區別,以及如何成為一個專家通才 (連結)
文末彩蛋
這週在社群中有一個被廣為轉發的貼文,談了一個非常有趣的觀點 (連結)。該貼文談到,把前公司放在自己的社群自介欄位中,就像在承認自己已經過了巔峰。
Putting ex @ company name in your bio is crazy because you’re admitting you peaked
在職涯類的社群媒體中,總會看到有人提自己是前 XX 公司 (例如前 Google 工程師、前 Apple 工程師),但是當這麼做的時候,意味著用過去定義自己,而不是用現在來定義自己。
畢竟假如現在的自己,是在做一件影響力更大的事、更有意義的事,那為何不把這件事放在自己的社群自介上呢?
當然,這個貼文的觀點只是其中一個思考角度。畢竟,假如是求職的角度來看,如果過去待過的公司有一定的知名度,那肯定是推薦放在履歷上。
只是該篇貼文的切入角度,仍是很值得我們省思,平常究竟是用什麼來定義自己? 以及現在的自己是否有持續邁向比過往更高的山峰?
Andrew 的連結掛了哦