嗨嗨大家,歡迎閱讀上週因為加了許多班之不小心變成雙週報的的第 23 期 CodeFarmer 技術週報。
近期有感於上班後工作量漸增,從這期開始之後會改成雙週報的形式更新,也就是下一期如果沒拖稿會在下下週三釋出,期待能盡可能提高質量一些。
前言
這篇原本是想來寫最近在初學的 Java Spring Batch 筆記,但看了幾篇相關中文文章後發現很多 AI 產的內容。實際把一些想了解的知識點問題像是「什麼是 Spring Batch」、「JdbcCursorItemReader 與 JdbcPagingItemReader 的差別」丟進 ChatGPT 發現寫得又快又好,再搭配官方文件或一些 Youtube 教學影片,甚至更有系統的 Udemy 課程做學習其實已經很夠用了,順便還能練英文呢。
不禁感嘆這年頭純手工寫技術文章不知道是不是價值漸減,只好這週先來寫一篇 AI 無法取代可能稍微有人味一點的職涯雜談了。下一篇主題可能會著重在 DB 方面的學習,因為最近有感自己資料庫相關的知識需要補強一下。
學習的界線
這幾天在 threads 上滑到這篇串文在討論「前端工程師該不該學 K8s」的話題,看完討論的脈絡後我能理解作者想表達的意思,如果市儈一點去思考的話,確實拿多少錢做多少事是個我以前會接受的觀點,但我比較不認同的是「就算會也要說不會」這句話。
當了幾年的碼農後,輾轉換過幾間公司接觸過各種厲害的、不厲害的同事後,我現在的觀點是在工作上能多學一點是一點,短期看似吃虧但長期有益處。
當然這觀點看起來好像蠻奴的,表達的不好容易成為資方打手,以下就盡可能闡述一下為什麼這樣想。
每個人甚至是不同年紀或生活型態適合的學習方式不一樣,有些人可能有辦法下班閒暇之餘興趣使然地做出有深度,或各種有社群話題的 side project。有些人可能下班之餘更想發展其他面向的技能,為了求職需求只能勉強做一些不太成熟或深度不夠的 side project。
以我自己為例子,下班閒暇時間拿來做技術 side project、兼差、運動、打電動、看劇耍廢等等這類的事似乎存在一種週期性,每隔多久就大概會遇上特別某一段時期熱衷於其中一項,可能在職涯早期做 side project 的頻率高蠻多,所以也曾經花一兩個月從零學 Three.js 做一個好像還蠻酷的網頁遊戲,但後期工作忙或是生活上需要處理的雜事變多,這個週期變低,甚至蠻多 side project idea 都是淺嚐即止因此強度不高。
對於後者的情況,如果對於硬實力的加強上還有企圖心,這時候勇於在工作上接受挑戰是一種不錯的選擇,因為工作上的需求大多時候不是看不懂學不會就能略過不做,只能摸摸鼻子卡個兩三天榨乾腦袋,撐過撞牆期發現自己又學會一項新技能了,這是沒辦法自律做深度 side project 的人成長的一種途徑。
儘管薪水上可能暫時心委屈了,但這終究是雞生蛋蛋生雞的問題,以前年輕不懂事有時會認為「一定是薪水不夠我才學不會」,但更多時候其實職涯發展順利的人的思維都是「我再多學一點就能增加自己求職上的話語權」或「雖然目前的環境不好但至少還有許多可以學習的挑戰」。
記得以前同團隊中有個同事,說他一開始實習加入公司時只是個會寫 CRUD 的 API 工程師,但剛好那個團隊只有兩三個人的編制,且工作內容比較偏向接案與混亂的環境,基本上觀察他後來的工作就是個雜食性軟體工程師,從後端、前端、CI/CD、監控、甚至智能合約都自己學自己搞,遇到不懂的去找技術長或資深架構師討論方向。他常跟我說:「雖然有時候會想離職,但至少這裡給了蠻多空間去學東西,而且我都會想著這裡每個人一定都有比我厲害的地方,所以可以跟他討教些什麼。」
雖然我根本忘了問他後來去了哪,但當時覺得以他的實力早就能挑戰規模更大的產品與團隊。
況且前面講的都還只是硬實力的加強,但在資深以上的世界中這只能算得上是基本內功,在部份企業的職涯框架中還期待更資深的開發者能在工作上去理解相關產業的領域知識、商業敏銳度、探索新技術趨勢、跟需求方溝通、輔導 junior 工程師、能白話地把艱澀的技術解釋給非技術團隊成員……等等軟實力,這也可以說是老生常談了。
總之對這個話題我的觀點是能在工作上多接受挑戰,是一種適合我這種下班之餘想好好生活打工仔的方式,但如果接受的挑戰多到需要加班的話那只能靠自己去權衡與溝通了。
本期推薦內容
本期週報的最後也來整理一些分享在社群上,你可能錯過的技術筆記。
AI Search
之前一直有點好奇在 AI Search 會怎麼影響 SEO 的設計,是不是真的有所謂 LLM SEO、AI SEO、GEO (Generative Engine Optimization) 的之類的新概念出來。
這週讀完 Vercel 的 How we’re adapting SEO for LLMs and AI search 這篇文章後覺得醍醐灌頂,尤其喜歡他的結論觀點:「你不只是在為人類現在看到什麼而優化,也同時在為未來人類看到什麼樣的模型而優化」。
以下分享幾個摘要重點:
為什麼 AI 搜尋重要?
使用者習慣正在改變,像是開始會透過 ChatGPT Search、Perplexity,甚至近期的 Google AI 摘要來查資料
對於 LLM 搜尋系統來說,閱讀與理解內容的方式是靠編碼後的向量資料以及 RAG,所以內容的易讀性、深度、原創性會比以往關鍵字堆疊、反向連結等重要
Vercel 目前實驗後認為可行的方向:
成為某個主題的原創者,如果沒辦法就寫出這個主題的深度內容成為權威性內容
許多人寫過的淺談、摘要型內容會比較容易被忽略,LLM 更偏好有實質內容、觀點、引述等有根據的內容
為人熟知的一些好的 SEO 實踐還是很重要,像是清楚的標題結構、JSON-LD、語義化標籤、SSG 或 SSR 渲染網頁等
定期更新過時內容,保持內容的相關性 (不要像我偷懶很久都不回去更新部落格文章 😆)
初學 SQL 練習工具
最近有感於自己純 SQL 能力不足,覺得 vibe coding 之餘還是需要抽空內化成肌肉記憶。因為開發上為了開發方便大多會採用像是各種語言或框架的 ORM library,但偶爾會碰到進到一些雲端環境時支援度沒那麼高的 DB GUI 時,就只能靠純 SQL 撈資料,這時就是展現真實力的時候了 🥹
後來找到一個好像初學很經典的網站是 SQLBolt,練起來感覺比 SQL leetcode 平易近人一點,也推薦給有需要的讀者。
How I got here
最後分享一篇今天讀到的特別的小品 — Working on databases from prison: How I got here, part 2.。
作者 Preston Thorpe 之前曾寫過一篇在 Hacker News 上爆紅的文章 — How I got here,描述他曾因年少輕狂的毒品事件需服刑 10 多年,後來因為在監獄大學中自學程式後找到興趣,並透過每天 15 小時的 side project 與開源貢獻,在監獄裡取得一份全遠端軟體工作機會,甚至在一年後成為資深工程師並管理他們的開發團隊。最近更因為在一個 SQLite 翻新的新專案 Limbo 持續活躍地開源貢獻而得到了新的工作機會。
看完這個故事又莫名地被打了雞血因此寫完了本期的電子報 😆
以上就是這期週報的所有內容了。若內容有什麼問題與討論也都歡迎透過以下管道與我交流,或直接留言與回覆這封電子信我也能收到:
Email:codefarmer.tw@gmail.com