ExplainThis 全端開發雙週報 #3
Epic Stack 從零開始一個前端項目的技術棧選擇、前 Google 資深副總領軍的 Neeva 如何設計 AI 搜尋引擎、在亞馬遜 (Amazon) 工作被 PIP 是什麼樣的體驗
[前端技術選擇] Epic Stack
資深前端工程師與初階前端工程師的區別之一,在於是否有能力做技術選擇。試想假如今天你在的公司要開啟一個全新的專案,或做一個全新的產品,你要如何選擇技術棧 (tech stack)?
光是前端套件與框架本身,從最古早的 jQuery,到最熱門的 React,到最新潮的 Svelte 與 Qwik 等等可以選。就算你選了 React,你可以用 CRA,也可以用官方目前推薦的 Next 或 Remix。就算選完框架,你還有很多不同面向要做思考與選擇,例如用什麼元件庫、自動化測試工具。
所以你該怎麼選? 選擇背後的依據又是什麼? 前陣子在 Remix Conf 當中,Kent Dodds 宣布開源了 Epic Stack 分享他會如何選,以及為什麼。非常推薦大家花 20 分鐘聽他的分享。更重要的是,在聽他分享的同時,不要照單全收;試著思考你會不會跟他做同樣的選擇? 為什麼?
多去探索不同的技術選擇 (能的話實際動手用用看不同的技術與工具),多去思考選擇背後的原因,能讓你鍛鍊出更深的技術觀點。
[後端系統設計] — 如何設計 AI 搜尋引擎
在後 ChatGPT 時代,越來越多搜尋引擎把 AI 整合進搜尋的流程中。因此,可以預見未來的系統設計面試題中,會出現如何設計 AI 搜尋引擎。前陣子剛被 Snowflake 收購的 Neeva,是第一家公開把 AI 整合到搜尋引擎的公司。Neeva 是由前 Google 資深副總裁領軍,團隊中有多位前 Google 的技術專家共同開發 (例如 Udi Manber,談搜尋這個技術,業界最先會讓人想到的幾個名字中,他一定榜上有名)。
Neeva 在這系列推文中,分享他們如何設計 NeevaAI 這款整合 AI 的搜尋引擎。首先,會跟一般搜尋引擎一樣先為不同文件上索引,接著在搜尋時會檢索文件,並透過 LLM 來協助排序。接著會用 LLM 去總結每份文件,在這階段會是用針對不同類型文件的專用模型 (例如針對新聞類文件跟論壇類文件,會用不同的模型)。在有了多份文件的總結後,會再由另一個 LLM 做跨文件的總結,然後再把結果輸出給使用者。
除了整合 AI 的搜尋流程外,這系列推文也有提到 Neeva 如何透過使用者的反饋,來進一步優化模型。除了內容外,他們也有把系統的架構圖分享出來。大家可以先試著自己畫畫看,然後再看看跟 Neeva 的版本有什麼異同。
[軟體業職涯] 在亞馬遜工作被 PIP 是什麼體驗
進入 FAANG 公司是許多軟體工程師的職涯目標,然而進到 FAANG 真的有如你想像中的美好與夢幻嗎? 很可能未必。在 YouTube 上的大廠一天生活 (a day in the life) 影片,多半都只拍出讓人欣羨的一面,而比較少談及在大廠工作中的問題。
舉例來說,很多大廠有所謂的 PIP (Performance Improvement Plan) 文化,這種惡名昭彰的制度,讓許多人進了這類大廠,反而是惡夢的開始。先前有個被亞馬遜 PIP 的工程師在《What It Was Like To Code For Amazon》系列文中公開分享了他的經驗。
比起在匿名論壇 Blind 上許多人純粹的抱怨,這系列文很詳細地描繪具體可能會遇到的不理想情境,包含要維護一段早已沒人知道為何這樣寫的歷史程式碼 (legacy code)、用老舊的技術所以開發體驗極差 (每次改動要等 13 分鐘讓程式碼重新編譯) 、相處不來的工程經理。
當然,不是所有大廠都這樣;即使同一間公司,不同組的工作體驗也可能差很多。這邊比較想強調的是,不是進到大廠就代表會有夢幻職涯。在選工作時,不要只以公司名號作為選擇依據。更多時候,選擇適切的文化、對的主管與團隊,會帶給你更美好的職涯。
ExplainThis 文章更新
推薦連結
線上 IDE 服務 Replit 也出了自己的部署服務 Replit Deployments,讓你可以在線上寫完程式碼,一鍵直接部署好。不得不說 Replit 真的越來越強大了!
《Memory Allocation》記憶體的分配與管理,是電腦科學中的必學基礎。這篇作者用生動的圖文,把這主題講得很淺顯易懂 (感謝 theo 大大在 Discord 推薦本篇)。
《Migrating Critical Traffic At Scale with No Downtime — Part 2》上期週報摘要了 Netflix 的遷移系列文,出了第二篇了。在這篇,Netflix 團隊進一步分享了更細節的流程,包含談到他們怎麼做 Sticky Canaries 部署、A/B 測試等等。
假如你想要打造客製化的生成式 AI 應用程式,除了微調 (fine-tuning) 外,也可以嵌入式 (embedding) 技術。而要用嵌入式,則會需要用向量資料庫 (vector database) 來儲存。 向量資料庫也已經是一線軟體大廠在職缺上會寫的工具,假如你過去對嵌入式與向量資料庫不熟,這系列推文是個不錯的入門。
這系列前端效能優化推文,很具體地分享如何透過不同工具,來檢視效能問題,假如你想要優化你的前端應用,但不知如何開始,可以參考這系列的做法。
React 核心團隊的 Dan Abramov,在 GitHub 上發了一篇開源教學,一步步帶你實作出 React Server Component,讀完會對 React 有更深的理解。
《The Interactive Guide to Rendering in React》 透過圖文的方式,解釋 React 的 rendering 流程。假如你剛接觸 React 或是過去一直沒有搞懂 React 的 rendering,非常推薦讀一下這篇。
ExplainThis 出書了!
以上是這期的全端雙週報,感謝閱讀到最後的你。這邊也想跟大家分享,ExplainThis 團隊出書了!我們的新書《ChatGPT 指令大全與創新應用》已經架。目前已經開放預購,假如你有興趣全面性了解 ChatGPT,並且學習如何實作基於 ChatGPT 的應用程式,千萬不要錯過了(購買連結在此)。
如果你喜歡我們的內容,歡迎與可能感興趣的朋友分享: