關於 投稿 分類 全部文章
EN 简中 繁中

UWC 之後的日子 · 台灣繁體

關於 Computer Science

發布於 2026年5月10日 更新於 2026年6月17日

從學科分支到 career path,一份關於 CS 的學科綜述。

前言

這是專業篇的第一篇文章,這個系列的初衷是希望透過科普的形式向大家介紹不同學科在本科階段作為一個專業究竟是什麼樣的,有哪些細分領域以及哪些常見的 career path。第一篇我想先講一講 CS,帶著大家從大學的視角來看我對這個學科的理解究竟是什麼樣的,和我高中時候的認識有什麼不同。

我最開始對 CS 的興趣是小時候玩機器人的時候培養起來的,那時候會寫一些簡單的程式碼控制機器人完成一些 deterministic 的任務,我記得最開始就是樂高機器人的那種;後來我參加過一些演算法競賽,學習了一些 competitive programming 的技巧。接著在高中的時候又做過一兩個 AI 相關的小項目,這大概就是我上大學以前對 CS 這個學科的 mental model。但是上了大學以後我發現這個 mental model 立刻就 fall apart 了。現在回想起來那時候接觸的這些東西真的只是一些皮毛而已,CS 作為一個學科還是有很多不同的領域和值得研究的問題的。但這正是這個學科的最讓我欽佩的地方所在:它不像一些學科高高在上拒人於千里之外;恰恰相反,CS 透過自己不同層級的 abstraction 可以讓不同知識背景的人都參與其中,感受到它的魅力。比方說我相信本文的大部分讀者不一定懂得大模型的原理,但每天都在 benefit from it。然後對於稍微 advanced 一點的人來說可以 dive deeper,比如使用 coding agent 來寫程式做項目,或者是呼叫一個 LLM 的 API 來完成一些任務。接著有更多知識儲備的人可以在大模型這條線上繼續深挖,比方說對特定任務做微調,甚至是預訓練,開發相關演算法,研究相關數學理論等等。對於每個人來說都可以在大模型這個領域內有自己的一席之地。但其實大模型這條線只是目前比較 popular 的 AI 方向的一個子領域而已,除此之外這門學科還有很多其他分支和領域,比如系統、理論等。這也就是為什麼 CS 同時具有 vertical accessibility 和 horizontal heterogeneity。

說實話,CS 這門學科之所以具有 horizontal heterogeneity 是因為它本身就是數學、ECE、物理、語言學、認知科學等等很多學科高度耦合的產物。也正因為如此,它內部不同的細分領域之間的界限往往是模糊的。對於具體怎麼分類,不同的視角會有不同的分類方法,但不同方法之間差距不會太大。在這裡我會參考 CSRankings 這個網站上面的分類方法,從做 research 的角度來進行分析。

關於 CSRankings

在正式開始之前我想先簡單介紹一下 CSRankings。這個網站在 CS 圈子裡被公認是衡量學校科研實力的一個不錯參考,它的排名是完全按照每個學校的 faculty 在每個領域的頂會裡面發表文章的數量來進行加權計算的。這個計算方法相對公平,但也會有對應的問題。首先是它沒法區分 groundbreaking work 和 incremental work(這兩種在它的統計裡都算是一篇文章,也就是 publication += 1,但實際影響力可能差了好幾個數量級);其次,它統計的是 conference 而不是 journal(順便提一下,CS 的 convention 是把文章優先發表在會議而不是期刊,因為 CS 技術迭代太快,期刊審稿週期往往是會議的幾倍,所以完全沒法跟上),但這種統計方式對個別偏好 journal 的教授和子領域(比如 biocomputing)來說就是一個巨大的 disadvantage;此外還有一點就是 faculty 數量多的學校天然佔優勢,因為假設兩個學校的教授的平均水平相同,那教授多的學校自然數值就會更高。但這一點也不完全是 bias,因為 faculty 多確實意味著 ecosystem 更厚。對於這些具體的問題我會留到之後的選校部分再慢慢展開,這裡只是先請讀者注意一下 CSRankings 並不是完美的排名,但它對了解每個學校的實力還是有重要參考價值的,而且它本身也是一個不錯的領域劃分指南。

好了現在言歸正傳。在 CSRankings 上 CS 這個學科大致被分成了四個大類:AI、Systems、Theory,以及一些 Interdisciplinary 的領域。雖說每個領域是相對自成一體的,對於每個領域甚至是內部的子領域的細分方向都會有各自的 community,但我一直覺得這四個 cluster 之間有一個邏輯上的附屬關係:Theory 是最 foundational 的部分,提供 algorithm 和 computation 本身的數學基礎;Systems 則是在 Theory 之上建立起了實際能運行的硬體和軟體 infrastructure;AI 又在 Systems 之上延伸出能從資料中學習的應用;Interdisciplinary 則是 CS 和其他學科(生物、經濟、藝術等)的交叉,一般來說會更加偏向應用一些。當然這些也都不是絕對的,像是 AI 這個領域裡面其實也存在著大量的理論研究方向,比如 learning theory 之類的。下面我會按照剛剛提出的這個邏輯順序依次介紹。

Theory:CS 的數學基礎

Theory 這個領域大致在做的事情是研究 computation 本身的數學性質,也就是什麼問題能算、什麼問題算不出來、能算的問題需要多少 resource、怎麼 prove 一個 algorithm 是 optimal 的。這些都是 CS 這個學科的基石,為談論 computation 提供了具體的語言和工具。而在 CSRankings 上 theory 又被進一步分成三個子方向:Algorithms & Complexity、Cryptography 以及 Logic & Verification。

Algorithms & Complexity

Algorithms & Complexity 是 theory 裡最經典的方向。我記得原來打演算法競賽的時候做每道題之前最重要的一件事就是先看資料規模和題目的 constraint 來挑選合適的演算法,這樣才能保證在題目規定的時間複雜度以內解決問題。對於 research 而言這個 spirit 是一樣的,只不過要解決的問題會複雜很多:algorithm 研究的是怎麼設計更快的演算法解決具體問題,比如圖演算法、近似演算法、線上演算法、隨機演算法這些;complexity 則是反過來,研究的是某一類問題至少需要多少 resource(時間、空間、隨機性等等)才能被解決,給演算法設計畫一條理論上的下界。兩條線一個在往下推上界、一個在往上推下界,最終目標是把它們對齊。比如基於比較的排序的下界已經被證明是 $\Omega(n \log n)$,而 merge sortheap sort 這些演算法剛好都打到這個下界,那麼排序在比較模型下就算是有定論了。但很多更難的問題,比如矩陣乘法全源最短路徑,它們的上下界之間到現在還有不小的 gap,這就是 algorithm 和 complexity 這個領域一直在研究的東西。著名的 P vs NP 問題就屬於 complexity 的範疇,而這道題懸而未決已經五十多年,被 Clay 數學研究所列為七個 Millennium Prize Problems 之一。

Cryptography

Cryptography 表面上像是 algorithm 的一個應用,但其實它有自己一整套獨立的理論框架。它研究的是怎麼在有對手存在的環境下保證資訊的機密性、完整性和真實性。這個方向特殊的地方在於 security 的定義都是建立在某個 complexity 假設之上的,比如 RSA 的安全性建立在大整數分解很難這一假設之上。所以 cryptography 和 complexity 是天然糾纏在一起的:你必須先有一個 hardness assumption,才能在它之上搭建 crypto scheme。近幾年這個領域比較火的方向有 post-quantum cryptography(擔心未來的量子電腦會破掉現在主流的 crypto,所以提前設計能抵抗量子攻擊的方案)、zero-knowledge proof(讓一方在不洩露任何額外資訊的前提下證明自己知道某個秘密,是很多 blockchain 系統的底層),以及 multi-party computation 等等。

Logic & Verification

Logic & Verification 這條線相對小眾一些,但解決的問題非常實在:怎麼用 formal method 在數學層面證明一段程式、或者一個系統是正確的?比如一個 OS kernel、一個編譯器、一個分散式協定,怎麼保證它在所有輸入下都不會 crash、不會洩露資料、不會出現 race condition?這就是 verification 要回答的問題。這個方向和 systems 領域內的 PL(programming languages)社群有很深的交集,因為很多 verification 工具本身就建立在類型系統、operational semantics 這些 PL 概念之上。

這一段對沒接觸過 verification 的讀者來說可能有點抽象,但可以拿軟體開發來打個比方:在日常軟體開發裡,驗證一段程式碼正不正確,靠的基本都是寫大量測試案例去跑一遍,而不是去做 formal verification。所謂測試案例其實很好理解,比方說我手上有一個函式 $f(x) = x^2$,那輸入 $2$ 就應該輸出 $4$,輸入 $3$ 就應該輸出 $9$,以此類推。所以只要寫大量測試案例來檢驗一個輸入是否能得到對應的輸出就可以了,成本相對 formal verification 來說很低。因為測試案例本質上只檢查有限 specific input 是否得到正確 output,而不是像 formal verification 那樣在數學上證明對所有可能的 input 程式都滿足要求。但現實裡的問題往往要複雜很多的,總會有測試案例沒覆蓋到的 corner case;對大部分軟體開發來說這些遺漏其實無傷大雅,我們每天在用的 Chrome 這類產品裡其實就存在著大量已知和未知的 bug,做這種產品的核心邏輯是快速迭代而不是萬無一失。這是一種 tradeoff,使用者可以忍一忍小毛病,下一版更新裡修一下就行了,但放到航空航太、加密貨幣這些場景裡,一個沒考慮到的 corner case 可能就直接出人命或者虧掉一大筆錢,這種時候才值得花成倍的成本去做 formal verification。

晶片設計其實也是同一個道理。一顆晶片一旦流片就沒法再打補丁了,做出來的幾百萬顆裡只要有一個 corner case 被觸發,可能就是整批召回的損失。一個經典的例子是 1994 年 Intel Pentium 的 FDIV bug,因為浮點除法在某些極端輸入下會算錯,最後 Intel 花了將近五億美元做召回。所以現代晶片在 tape out 之前一般都會用大量 formal method 去證明設計在所有合法輸入下都滿足規約。

Theory 整體對數學背景的要求很高,平時的工作大多發生在白板上而不是在 IDE 裡,論文裡也幾乎全是證明而不是實驗。所以如果不是發自內心喜歡推理和證明,在這個方向上孤軍奮戰會比較辛苦。但反過來說,theory 的成果壽命也是 CS 裡最長的,一篇好的演算法論文常常會被引用幾十年,而 systems 和 AI 那邊因為技術迭代實在太快,五年前的 SOTA 現在可能已經無人問津了。

Systems:讓 computation 真正跑起來

Systems 這個 cluster 是 CS 裡 footprint 最大的一塊,它涵蓋了幾乎所有讓 computation 真正能在硬體上跑起來所需要的基礎設施,從最底層的晶片設計一路往上到 OS、網路、資料庫、PL、SE 等等。systems 的研究風格和 theory 幾乎完全相反:theory 是在紙上推公式證定理,systems 則非常 hands-on,幾乎每篇論文都要做出一個真實的原型,再去測它的性能(延遲、吞吐量、功耗這些),用實測資料來支撐自己的結論。所以 systems 的論文經常會附帶很大體量的程式碼。

如果從演算法競賽的角度來看的話,algorithm 做的就是如何降低時間複雜度,而 systems 當然也做讓演算法跑得更快這件事(也就是優化常數),但實際上它負責的事情要比這個雜得多,還包括怎麼讓多執行緒不出 race condition、機器掛掉怎麼不丟資料、給上層什麼樣的介面才好用等等。這些大多都跟跑得快不快沒什麼關係,但都是 systems 這條線要負責的事情。

CSRankings 把 systems 拆成了大約十幾個子方向,下面挑幾個比較有代表性的簡單聊聊。

Computer Architecture

Computer Architecture 是 systems 裡最貼近硬體的方向,研究的是 CPU、GPU、TPU 這些晶片內部應該怎麼設計:cache 層級怎麼組織、指令集是 RISC 還是 CISC、流水線怎麼排、怎麼處理分支預測和記憶體一致性等等。最近幾年隨著 Moore’s Law 慢慢失速,單純堆電晶體的紅利已經幾乎沒有了,所以 architecture 這條線的精力大量轉向了為特定 workload(比如深度學習、圖計算、cryptography)設計專門的加速器。GoogleTPUNVIDIATensor Core 都是這個趨勢的產物。

Operating Systems

Operating Systems 主要研究 OS kernel 應該怎麼設計:怎麼調度行程、怎麼管理記憶體、怎麼處理 I/O、怎麼實現檔案系統等等。這個領域近些年比較活躍的幾個方向包括 unikernel(把應用和核心合併成一個單一目的的二進位檔來榨乾性能)、verified microkernel(在 microkernel 拆分架構的基礎上用 formal method 證明 kernel 核心實現的正確性),以及針對新硬體(比如 persistent memory、SmartNIC、disaggregated memory)做的 OS 改造。

Networking

Networking 研究的是資料怎麼在機器之間高效可靠地傳輸:從區域網路內部的交換機設計,到跨資料中心的廣域網路,再到 Internet 上的路由協定,都屬於這個領域。這兩年這條線上很多研究都聚焦在資料中心網路上,因為雲端運算和大模型訓練的需求,大家越來越關心怎麼在資料中心內部做到極低延遲、不堵塞的通訊。

High-Performance Computing

High-Performance Computing 研究的是怎麼把一份計算 scale 到上萬個節點上高效跑完。這條線傳統的 application 是解決科學問題,比如氣候模擬、流體力學、第一性原理材料計算等。這些都是國家級超算每天在做的事,背後的數學本質是 PDE 求解、大規模線性代數這一類 numerical methods 的工作。說實話,我感覺 HPC 更像是 systems 領域裡集大成者於一身的方向,既和 architecture、network 這些方向高度交叉,又要特別關注應用數學裡的 numerical stability 這些細節。另外值得一提的是,這兩年大模型訓練其實就直接建立在 HPC 幾十年攢下來的基礎設施上。GPU 叢集、節點間高速互連、collective communication 這些本來就是 HPC 一直在做的事,整個大模型的訓練棧基本就是在這上面發展出來的。

這裡順帶提一下 numerical methods。它本質上是應用數學的一個分支,當放在 CS 裡面討論的時候它一般被歸納在 scientific computing 這個更大的領域內。一般來說 scientific computing 除了 numerical methods 之外還包括了 HPC 實現、計算物理/化學/生物這些領域科學,以及科學軟體的研發和工程優化。因為 numerical methods 最常落地的平台就是 HPC,所以這兩個 community 有不少交集,甚至很多時候就是同一群人。其實 numerical methods 在做的事情很簡單,那就是解決數學和電腦本質上的錯位。這個錯位主要有兩個不同的來源,一個是連續和離散之間的差異:數學裡很多對象本質上是連續的,比如導數、積分、PDE 的解、矩陣的特徵值,但電腦只能處理離散、有限步的運算,所以導數得變成差分、積分得變成求和、PDE 得變成網格上的代數方程、特徵值得靠迭代去逼近;另一個錯位是 floating point 本身:電腦用浮點數近似實數,每一步都會丟一點 roundoff,規模一大就一路累積下去導致最後的計算結果可能就不能用了。Numerical methods 這個領域做的事就是要解決這兩個問題,讓演算法既能保證收斂性、效率上也不至於太離譜。

到了大模型時代,在訓練模型的時候連續和離散這一層其實基本不影響,因為訓練本身已經是離散的矩陣乘法,沒有什麼需要做離散化的連續對象,但 floating point 這一層是真正的核心問題。大模型訓練本質上就是海量浮點運算的累加,numerical stability 一旦沒處理好,loss 就會突然 spike、模型直接訓崩,動輒上千萬美元的損失。這也是為什麼 mixed precision(用 FP16 / BF16 / FP8 這些低精度格式提性能,但 FP16 自己就會帶來 stability 問題)、loss scaling(用來補 FP16 的 gradient underflow,BF16 因為指數位和 FP32 一樣寬通常用不上)、以及更精細的 scaling 策略這些 numerical-systems 交叉方向會是大模型訓練的重頭戲。

Database

Database 研究的是怎麼存、怎麼索引、怎麼查詢大量資料。一個現代的資料庫系統要解決的問題非常多:怎麼在保證 ACID 的前提下做並行事務、怎麼把查詢分發到多台機器上、怎麼優化 SQL 查詢計劃、怎麼處理串流資料等等。這兩年比較火的方向有記憶體資料庫、雲端原生資料庫(像 SnowflakeBigQuery 這種),以及專門為大模型 retrieval 設計的向量資料庫。

Programming Languages

Programming Languages 研究的是程式語言本身:語言怎麼設計、類型系統怎麼搭、編譯器怎麼把高階程式碼翻譯成機器碼。不同語言其實代表著不同的設計 tradeoff,比如演算法競賽和高頻交易常用的 C++ 給了使用者完全的記憶體控制,速度很快但很容易 use-after-free、buffer overflow;Java、Python 這些用 garbage collector 接管記憶體,安全但有執行開銷;Rust 這幾年很火,靠 ownership 和 borrow checker 在編譯期就把記憶體安全檢查掉了,讓使用者既不用 GC 又能避開 C++ 那些最折磨人的錯誤。PL 這個領域和上面提到的 formal verification 有很深的交集,所以兩邊的社群有不少交流。

Security

Security 這個子方向橫跨的層次很廣,從底層的硬體安全(比如 SpectreMeltdown 這種側通道攻擊)到作業系統安全、網路安全,再到應用層的 web security 和 ML security,幾乎每一層都有自己的攻擊模型和防禦機制。

Software Engineering

Software Engineering 研究的是大規模程式碼庫應該怎麼組織、怎麼測試、怎麼維護。這個領域因為 AI 的興起也變得非常活躍,比如程式合成、自動修 bug、自動寫測試案例都是當下挺熱的話題。需要說明的是,作為學術研究的 Software Engineering 和大廠裡我們常說的 SWE(軟體工程師)這個職業其實關係不大,只是名字一樣而已。而 SWE 究竟是什麼則會放在之後 career path 部分詳談。

Systems 研究的問題大多來自真實的工程痛點,所以這個領域的學術界和工業界關係特別緊密。當然這也不是絕對的,像是剛才提到的 software engineering 就是一個反例:它作為 research topic 所關心的大規模程式碼庫應該怎麼組織、code review 怎麼 scale、CI/CD pipeline 怎麼設計這些問題,對於 Google 等大廠而言,因為自身 codebase 體量極大,早就 accumulate 了遠超學術界的一手經驗,相關 best practice 也往往是工業界先開發出來的。學術界裡 software engineering researcher 的獨特 contribution 是把這些 industry pattern 系統化,但最原始的 problem-solving frontier 確實往往都在工業界。

Systems 對人的要求和 theory 方向恰恰相反:它整體對工程能力的要求很高,平時的工作大多發生在終端和 profiler 裡而不是在白板上,論文裡也幾乎全是 benchmark 和實測資料而不是數學證明。所以如果沒有真的享受寫程式、和真實硬體死磕的過程,這個方向會顯得比較枯燥乏味。但從另一個角度來說,systems 的成果落地速度也是 CS 裡最快的之一,一篇有分量的 paper 幾年之內就有可能被工業界吸收成為標準實踐,在博士期間就有可能看到自己親手搭出來的系統真的被部署。

AI:讓電腦從感知到決策

AI 是 CS 裡這幾年發展最快、關注度最高的方向,幾乎不用過多介紹。但 AI 內部其實也分了很多不同的子方向,下面簡單展開一下。

CSRankings 把 AI 大致分成 AI(general)、Computer Vision、Machine Learning & Data Mining、Natural Language Processing、Web & Information Retrieval 這幾個方向。但說實話,自從 transformer 在 2017 年橫空出世、之後又催生出 GenAI 這一波浪潮以來,這些子方向之間的界限已經越來越模糊。以前 vision 和 NLP 是兩個相對獨立的社群,現在大家都用同一套 backbone(transformer)和同一套範式(pretrain + finetune),多模態模型也開始一統天下。所以下面我會按照現在實際的研究 landscape 來講,而不嚴格遵循 CSRankings 的分類。

Foundation Model

Foundation Model 是這兩年最熱的方向。它的核心問題是怎麼訓練一個能在很多任務上泛化的模型,具體研究的子問題包括架構設計(attention 機制怎麼改、怎麼處理長上下文)、訓練(pretraining 的資料配比、scaling law、RLHF 這些)、推理(怎麼加速、怎麼量化、怎麼做 speculative decoding)以及評測(怎麼設計真正能衡量模型能力的 benchmark)等等。這個方向非常依賴算力,很多最前沿工作只能在 industry lab(OpenAIAnthropicGoogle DeepMind 等)裡做,因為學術界很難擁有訓練一個前沿模型所需要的那種規模的 GPU 叢集。

Computer Vision

Computer Vision 研究模型怎麼理解圖像和影片,具體任務包括分類、檢測、分割、生成等等。在大模型時代之前,CV 是一個相對自洽的方向,有自己的 backbone(ResNetViT 這些)和自己的任務集;但現在 vision 越來越多地被合併到多模態模型裡去了。生成這條線目前也很活躍,diffusion model、影片生成都是當下的熱點。

Natural Language Processing

Natural Language Processing 研究模型怎麼理解和生成自然語言。這個領域基本已經被 LLM 重塑了。以前的 NLP 任務(翻譯、摘要、問答這些)現在都成了 LLM 的下游應用,所以 NLP 的研究重心也很大程度上轉移到了 LLM 本身的能力和對齊上。

Reinforcement Learning

Reinforcement Learning 研究的是 agent 怎麼透過和環境互動學到一個最優策略。RL 在過去十年走過一段挺有意思的路:曾經它最有名的應用是下棋打遊戲(AlphaGoAlphaStar),後來一度被認為不太實用;但近兩年 RLHF 讓它在 LLM 訓練裡成了不可或缺的一環,又重新回到了聚光燈下。這兩年的 reasoning model(OpenAI 的 o 系列、DeepSeek 的 R 系列)更是把 RL 推到了 LLM 訓練流水線的中心位置。

ML Theory

ML Theory 研究的是 ML 的數學性質:為什麼深度網路能泛化、optimization landscape 長什麼樣、為什麼過參數化的模型不會過擬合等等。這個方向和前面 theory 那部分其實有挺深的交集,需要很強的數學功底。

AI for Science

AI for Science 是這幾年才崛起的一個交叉方向,主要把 ML 用在具體的科學問題上。最有名的例子是 DeepMind 的 AlphaFold,它基本解決了 protein structure prediction 這個生物學界懸而未決五十年的問題,並因此拿到了 2024 年的諾貝爾化學獎。除此之外 AI for math、AI for materials science 這些也都是越來越受關注的方向。順帶提一句,如何使用 AI 做前面在理論方向中提到的 formal verification 從而降低其成本其實就是現在 AI for math 這個領域內最重要的研究問題之一。

說實話我覺得 AI 這個方向更像是 theory 和 systems 融合的產物,跨度非常之廣。這個領域的研究既可以非常偏向理論又可以非常偏向系統。所以這也就對人的要求特別高。最頂尖的 AI researcher 往往都是數學和工程兩手都過硬的 full-stack researcher,既能推 scaling law 這些理論分析,又能在幾千張 GPU 上把一整套訓練流程穩定跑起來。這種 profile 在任何其他 CS 子領域裡都不算多見,但在 AI 領域幾乎已經成了頂級 lab 的標配。

此外,從個人發展的角度來說,AI 大概是目前 CS 裡錢最多、就業最好的方向之一,但與此同時也極度內捲、迭代極快,一篇 paper 掛到 arxiv 上,三個月之後可能就過時了。所以在這個方向待下去需要一種特別的心態:既要跟得上社群的節奏,又要在各種 hype 裡保持判斷力,不被裹挾。

The Bitter Lesson

最後我想再簡單講講 The Bitter Lesson 這個話題。這個概念由電腦科學家 Richard Sutton 在一篇短文中提出,其核心觀點其實很簡單:通用方法配合算力的 scale up 長期來看永遠會碾壓那些依賴人類先驗、精心設計的 specialized 方法。這個規律在過去 70 年的 AI 研究裡已經被反覆證明、屢試不爽。其實我覺得這個觀點最 “苦澀” 也最諷刺的一點在於,在不少傳統觀念裡大家都認為努力一定有用,但根據 The Bitter Lesson,那些 specialized 的努力最後都會被更通用的方法所取代——NLP 裡 parse tree 和各種 linguistic feature 是如此,CV 裡 SIFTHOG 這些 hand-crafted descriptor 是如此,我們人生裡很多事情其實亦是如此:我們從小被教育要做的那些勤奮的動作——背一篇文章、刷一套題、讀一本書——本質上都是在某個預設的評估框架裡做 specialized 優化。這些努力作為對外部評估框架的精細優化是有效的,但一旦框架變了,它們的 transfer value 就會立刻塌縮。所以真正能跨越框架持續有效的,往往是那些看起來不怎麼具體的 general capability,比如怎麼從原始觀察裡更新自己的判斷、怎麼在沒有現成答案的問題裡慢慢得出自己的思路等等。這些能力當然也要透過讀書、刷題等勤奮的動作來獲得,但它們更強調的是透過現象看本質的泛化能力而不是努力本身;所以並不是讀了越多的書、越努力的人就能力越強,其實挺令人唏噓的。這大概就是 The Bitter Lesson 中 “苦澀” 一詞的由來吧。當然,泛化能力的培養在短期內必然顯得效率低下,但長期來看這種品質才是真正值得 scale 的方向。而這也正是我想在本文的最後一節〈從 feature engineering 到 representation learning〉裡和大家分享的一個小感悟。

Interdisciplinary:CS 和其他學科的交叉

最後一個 cluster 是 interdisciplinary,也就是 CS 和別的學科之間的交叉地帶。這部分的子方向大多是把 CS 的方法和工具用到某個具體領域的問題上,所以做這條線一般需要雙重背景。下面挑幾個有代表性的方向簡單展開。

Computational Biology / Bioinformatics

Computational Biology / Bioinformatics 是把 CS 用在生物學問題上的方向。具體的任務包括基因測序、蛋白質結構預測、藥物發現、單細胞分析這些,前面提到的 AlphaFold 也算這個領域的標誌性成果。這條線因為生物學本身的資料規模和複雜度都在飛速增長,加上 ML 工具又越來越強,未來很長一段時間大概率都會是一個增長方向。

Computer Graphics

Computer Graphics 研究的是怎麼用電腦生成、表示、操作視覺內容,像電影特效、遊戲渲染、3D 建模、物理模擬都屬於這個範疇。近些年隨著 VR/AR 的發展和 generative model 的進步,這個領域也變得越來越活躍,比如 NeRFGaussian Splatting 這些技術就是把傳統 graphics 和現代 ML 結合起來的成功案例。

Human-Computer Interaction

Human-Computer Interaction 研究的是人和電腦之間的互動:UI/UX 怎麼設計、accessibility 怎麼處理、AR/VR 怎麼做、新型輸入裝置怎麼設計。HCI 是 CS 裡最 user-facing 的方向之一,所以它的研究經常會涉及使用者研究、心理學這些傳統上不算 CS 的方法論。當然現在隨著 GenAI 的爆發也有不少人開始研究 AI 和人的互動以及對社會的影響,這些也都屬於 HCI 的範疇。

Robotics

Robotics 研究的是怎麼讓物理 agent 在真實世界裡感知、推理、行動。這個領域天然橫跨 ML、控制理論、機械工程等好幾個學科。最近隨著 LLM 的進步,把 LLM 當作機器人的高層規劃器也成了一個挺活躍的研究方向。

Economics & Computation

Economics & Computation 是 CS 和經濟學的交叉,某種程度上和 Operations Research 挺像的,研究的問題包括機制設計(比如一場拍賣怎麼設計才能讓大家誠實出價)、algorithmic game theory、市場設計這些。這條線和工業界的關係也挺緊密,Google、Meta 這些公司的廣告競價系統背後就有大量這方面的研究在支撐。

Visualization

Visualization 研究的是怎麼把高維或者複雜的資料用人能看懂的方式展示出來。這個方向雖然小眾,但在資料科學、科學計算這些場景裡非常重要。

CS Education

CS Education 研究的是 CS 應該怎麼教。具體研究的問題包括語言設計(怎麼設計一種對初學者友好的程式語言)、教學法(怎麼教抽象、怎麼教遞迴)以及 access equity(怎麼讓更多 underrepresented group 進入這個學科)等等。

Interdisciplinary 這個 cluster 整體的選擇面非常廣,適合那些除了 CS 還對某個具體領域有興趣的人。它另外一個好處是:因為問題來源比較多樣,funding 也比較分散,所以受單一領域 hype 週期的影響相對小一些。

回到文章開頭的問題:上了大學以後會發現 CS 是一門什麼樣的學科?對我自己來說最大的體會就是:CS 比高中階段接觸的 coding 和演算法競賽要廣得多。它既可以是一門極其數學的學科(比如 theory 的部分),也可以是一門極其工程的學科(比如 systems 的部分),還可以是一門和幾乎任何其他學科交叉的學科(甚至包括法律、哲學等等)。每個人都能在裡面找到一個適合自己背景和興趣的方向,這也是我開頭提到的 horizontal heterogeneity 的真正含義。

對於學弟學妹們來說這裡還有一點值得注意:上面對每個方向的介紹只是想讓大家對這個學科的 landscape 有一個基本的認識,並不是讓大家現在就想好 commit 到哪一個領域。其實我見過很多人即使到本科快結束了都還沒有一個特別 concrete 的想法,這完全沒問題。大部分人最後的 commitment 也只是因為覺得某個方向有前途,或者恰好收到了某個特定方向的教授或者公司崗位的 offer,就這麼定下來了。我介紹了這麼多只是希望大家對 CS 這門學科多一些了解,看看裡面有沒有哪個小角落讓自己 feel right,而不是要現在就給大家施加什麼壓力。

CS 選校

在正式進入這章之前,我推薦讀者先行閱讀〈關於選校〉一篇,因為在這裡會使用到不少那一篇裡面已經介紹過的分析方法和結論。此外需要說明的一點是,這個 section 會延續之前 research 視角的領域分類方法,主要從做本科教學和學術研究的角度來分析各個學校。而就業導向的分析則會留到下一個 section。

教學風格 spectrum

首先是我個人覺得對於本科生而言不同學校的 CS program 大致可以放在一個 spectrum 上,一端是 math-heavy 的教學風格,另一端則是 engineering-heavy 的教學風格。當然不同的教學風格其實某種程度上也反映了這個學校的 research 風格。

Math-heavy 的項目最典型的特徵是 math prerequisite 重。典型代表是 PrincetonCaltech 等學校,必修課會要求學生有很強的讀和寫 proof 的能力。這一類學校比較適合想做 ML theory、cryptography、formal methods 這種 math-heavy 方向的人。

Engineering-heavy 項目的典型特徵則是必修課 project load 重、hands-on training 多。典型代表是 CMUUIUC 等學校。雖然這些學校也有硬核 theory 必修(如 CMU 15-251、UIUC CS 374),但整體文化和畢業生的 muscle memory 更偏 systems engineering。此外很多 mid-tier R1 在 systems 方向做得也非常深,比如 UTK 的 engineering 文化重,而且在 HPC 方向也是最頂尖的。這些學校比較適合想做 systems、industry-bound SWE、applied ML 的人。

二者的中間地帶則是像 MITStanford 等沒有明顯的單邊 cultural skew 的項目。

對於大部分文理學院來說這個情況又會有所不同,他們的風格一般不會有這麼大的差異。正如我在〈關於選校〉一文中所提到的,因為文理學院的 lab 資源有限,所以他們 default 重視理論;但 Harvey Mudd 是個例外,他們的整個 program 是出名的 engineering-heavy。

從就業的角度來看,math-heavy 的訓練理論基礎更扎實、更接近 computation 的本質;而 engineering-heavy 的訓練所適配的工作崗位對本科生來說更多,對本科畢業直接就業也更友好。具體情況會放在後面的 career path 部分具體分析。

從學習知識的角度來看,我個人覺得 math-heavy 和 engineering-heavy 這兩端本身並沒有高下之分,關鍵始終是在於你能不能在所選的方向上發展出真正的泛化能力(詳見前文的 The Bitter Lesson)。Math-heavy 的訓練不等於只是在紙上推公式、做毫無意義的抽象,engineering-heavy 的訓練也不等於只是在刷題、調 bug、做機械的重複;對一個只會按部就班努力的人來說,無論在 spectrum 的哪一端都不會真的變強,而對一個真正具備泛化能力的人來說,在這兩端都可以走出自己的路。所以這個 spectrum 裡其實並沒有一個永遠正確的選項,我覺得它更像是一個 self-auditing tool,你需要問自己: “我喜歡的是 proof 還是 implementation?是理論還是 applied science?是 mathematical clarity 還是 engineering elegance?” 然後選 spectrum 上適合自己的位置。

當然對於比較好的 R1 CS program 而言,不論學校本身是 math-heavy 還是 engineering-heavy,在每個領域裡都會有世界級的教授,所以即使現在 commit 了一個教學重心沒那麼契合的學校,在之後也完全可以多上一點自己感興趣方向的選修課或者去找對應領域的專家一起做 research。這其實就是 faculty 數量多的學校的一個非常大的好處。

CSRankings 的局限性與各校強項

在這裡順帶說一下 CSRankings 的一個 known limitation——一個學校的排名很大程度上反映的是 institutional total output 而不是 per-faculty quality,所以 faculty 數量少但人均水平高的 department 在排名上會被顯著 understate。這一點在之前介紹 CSRankings 時就 promise 過會在選校部分展開。Caltech 是這個 limitation 最典型的受害者:這個學校本身就非常小,一屆大概就 200 多個本科生;CS department 也是很小的,faculty 數量很少,所以就導致了他們雖然有著不少很厲害的教授,但是在 CSRankings 上的排名卻非常低。那有什麼辦法能稍微 hedge 一下這個 bias 呢?其實非常簡單:實際操作上,在 CSRankings 裡面點開每個學校名字就會展開該校所有 faculty 的 count 列表,大家可以把每個學校頭部 faculty 的水平和學校總體排名結合起來一起看而不只是看 institutional 總分。當然,之前就提過 faculty 數量少導致排名低也不完全是 bias。因為 faculty 少的學校的課程開設以及研究方向的多樣性必然就低,這也是一個需要重要考慮的 tradeoff。這一點在文理學院裡最為明顯。前面提到導致 LAC 的教學 default 重視理論、課程多樣性不夠的一部分原因是 lab 資源有限,而另一部分原因正是 faculty 數量少限制了選修課的覆蓋面。

接下來我想給對 research 感興趣的同學大概介紹一下每個學校的強勢領域。首先 Top 4 的 CMU、MIT、Stanford 和 UC Berkeley 就不用多說了,這四所學校在大部分主流方向都是最厲害的,基本不需要 audit specific subarea。對於除此之外的其他學校,AI 方向 University of Washington 是最好的,systems 方向最強的是 UIUC,而 theory 方向最好的則是 Princeton。但我們真的可以做這樣的排序嗎?這種 single-label 的描述當然是舒服的,因為它為讀者用最少的 cognitive cost 建立起來了一個 mental model,但實際上這是一個很不負責任的簡化。 “在這個領域內某學校特別強” 這句話的意思實際上更接近 “這個學校在這個領域裡的 visibility 特別高 / historically 出名”,但絕不是 “這個學校只在這個領域內強”,也不是 “這個領域只有這一所強校”,更不是 “排名比較一般的學校就不存在最頂尖的教授”。所以假如各位讀者有一個自己具體感興趣的方向,建議直接上 CSRankings 選 specific subarea filter 來看看這個領域內的生態究竟是什麼樣的,而不是只憑這種粗略的 label。

當然 CSRankings 也不絕對,它反映的是一個學校歷史上的 publication record,沒法體現一個 program 當前的 trajectory,更沒法體現出每個 faculty 在社區裡實際的影響力。比如最近新招進來的 rising star 潛力無限但無法在資料裡體現,已經退休的 senior faculty 反而可能還在 count,而一個圖靈獎得主可能整個職業生涯都沒發過太多論文。所以一個比較 practical 的補充辦法是去看一個學校裡 faculty 拿到的 peer-reviewed recognition。對於 early-career 的年輕教授可以看 Sloan Research FellowshipNSF CAREER Award 這一類獎項,反映的是業內同行對這群人未來幾年潛力的判斷;對於 senior faculty 可以看 ACM FellowIEEE FellowNAE / NAS 院士等 bar 更高的榮譽,這些反映的是同行對一個學者長期 sustained impact 的認可;除此之外,對於單篇 paper 而言的頂會 Best Paper 和 Test of Time Award 也很有 signal 價值,前者反映一項 single work 的 immediate impact,後者則反映一項工作經過時間檢驗依然 holds up 的長期價值。除此之外,一個教授組裡博士生的 placement 也是一個重要參考指標。

這些榮譽往往會比任何排名都更能反映出一個學校的真實水平,但調研起來也會很麻煩。好在隨著現在各類 AI 工具的普及,在具體操作上同學們其實不需要自己一個一個去翻系裡的網站,直接讓 AI agent(比如 Claude 或 ChatGPT 的 deep research 模式)幫你列出來就行,這種查找類的任務 AI 往往比人快得多也準得多。

不過歸根結底,這些榮譽的評審過程和任何排名的評分過程一樣,都不是完美的。在〈關於選校〉中我大概提了一下 faculty hiring 的隨機性,但其實這些榮譽評審過程中的隨機性一點也不比 faculty hiring 少。所以我希望同學們在不唯排名論的同時也盡量做到不唯榮譽論。我在〈關於選校〉裡提到的“愛馬仕還是帆布袋” 理論在這裡同樣適用。因為榮譽本就應該被看作是 capacity 的間接 signal 之一,而不是 capacity 本身;任何 metric 的本質其實都是把一個活生生的人壓縮成了一個沒有靈魂的低維向量。(詳情請見本文最後一章:〈從 feature engineering 到 representation learning〉

Sweet spot framework

此外,對於想做 research 的同學來說,〈關於選校〉一文裡的 ceiling × demand framework 在這裡直接適用。比如 UIC 的資料探勘、猶他大學的圖形學這些 field-specific 頂尖的 mid-tier R1 就是 CS sweet spot 的典型樣例。這樣 sweet spot 的例子在 CS 裡還有很多;而且每個人的實力不同,因此 sweet spot 自然也就不同,所以在這裡就不一一列舉了。需要注意的是好學校裡 Sloan Research Fellowship 等頗有含金量的獎項的得主可能會多一些,但這並不意味著這些人在 mid-tier R1 就不存在,所以就像我在〈關於選校〉中提到的,只要去一個還不錯的學校一樣可以有很好的發展。

National lab 與算力優勢

這裡還有一個值得一提的 mechanism 是國家實驗室帶來的算力優勢。美國能源部旗下有多家國家實驗室,頭部的幾家都 host 了頂級的 supercomputing facility,有著遠超一般學術界的算力資源。地理上鄰近這些實驗室的學校自然就近水樓臺先得月,透過 joint appointment、collaborative project 等 channel 在合作研究時有結構性的優勢。這是一個和學校排名幾乎正交的維度。具體來講,位於加州的 Lawrence Berkeley National Laboratory host 了 Perlmutter,而 UC Berkeley 就在山下;位於伊利諾伊的 Argonne National Laboratory host 了 Aurora 這台全球排名第三的 supercomputer,附近有 UChicago,UIC,UIUC 和 Northwestern 等;全球排名第二的超算 Frontier 位於田納西的 Oak Ridge National Laboratory,附近有 UTK 和南方各校;全球排名第一的超算 El Capitan 則位於加州的 Lawrence Livermore National Laboratory,附近有 UC system 各校和其他加州學校。除此之外還有加州的 SLAC(附近的 Stanford)、紐約州的 Brookhaven(附近 NYC 一帶的 Stony BrookColumbiaNYU 等)以及其他很多例子。這種 partnership 在做 systems(尤其是 HPC)、AI for science、大規模 ML 等方向的研究時往往是 complete game-changer。所以對應方向的同學選校時除了看前面介紹的那些指標,也建議看一看學校附近有沒有這種 national lab。一般來說具備這種地緣優勢的 R1 都會至少有幾個和國家實驗室有合作的 faculty,而 partnership 深厚的學校(比如 UC Berkeley、UTK 這種)合作 faculty 數量則會多得多。

CS Career Path

註:以下內容截至 2026 年 5 月。CS 求職市場變動很快,熱門方向輪轉、薪資水平浮動、入行門檻變化都是常態,這裡給的是一個大致的 landscape,目的是幫助讀者建立一個可靠的 mental model,但具體崗位的最新行情還請以最新資訊為準。

最後我想再聊一聊對於本科畢業想直接就業的同學們來說,比較常見的 CS career path 有哪些。說實話我覺得對於本科生來說專業對口的基本上就是 SWE 和 quant 這兩個。當然其他還有一些像是創業、product management 和 consulting 之類的,但我都沒太了解過,而且這些也都不是 CS specific 的,所以在這裡就不多做討論了。

我一直覺得不少公司的 SWE 就是一個筐,什麼都可以往裡裝。所以這個崗位實際上囊括的工作範圍遠比聽上去要大。根據公司業務和技術棧的不同,SWE 內部的生態非常多元,下面挑幾個比較有代表性的分支簡單聊聊。

Product Engineer

首先最常見的是 Product Engineer,根據具體業務還會進一步分成 App、Web 和 Backend 幾類。他們工作的重心是實現 product manager 設計的業務邏輯,比如給某個 App 加一個新的 feature、把網頁載入速度從 800ms 壓到 400ms 以下,或者為高併發業務設計能撐住峰值千萬級 QPS 的後端架構。這一線更強調對業務的理解、對分散式系統的熟練度,以及在大型 monorepo 裡能高效迭代的工程能力。大廠裡 product 這條線的 headcount 是最大的,對應屆畢業生也最友好——Meta、Google、Amazon 這些公司每年招的應屆 SWE 絕大多數都會先加入到 product 團隊裡。除了這些 FAANG 傳統大廠之外,StripeNotionFigmaCloudflare 這種正在高速擴張的大公司招的 SWE 主力也是 product engineer,這些公司體量比大廠小、單人能 own 的業務範圍反而更大,對工程獨立性的要求往往不低,近幾年也成了不少應屆生很傾向的選擇。

Systems/Infrastructure Engineer

然後偏向 systems 的是 Systems/Infrastructure Engineer。這一類 SWE 的工作更接近之前提到的 systems research 的範疇,但和 researcher 相比關心的問題不太一樣:researcher 關心怎麼把一個 idea 寫成一篇 paper,而 infra engineer 關心怎麼把這個論文裡的 idea 真正落實到生產環境裡穩定跑起來。具體工作包括自研資料庫(比如 Google 的 Spanner、Meta 的 MyRocks)、分散式儲存、CI/CD 流水線、自研編譯器和工具鏈,甚至包括 kernel patch。這類崗位在 Databricks、Snowflake 這種以底層基礎設施為核心業務的公司裡 headcount 佔比特別高,大廠裡也都有專門的 infra org。但這條線對 systems 底層理解的要求很高,所以對大部分本科生沒那麼友好。

Machine Learning Engineer

最後是偏向 AI 的 Machine Learning Engineer(MLE)。這個崗位和 systems engineer 一樣,本質上還是工程師,他們的工作不是推導公式,而是怎麼把 researcher 訓練出的模型真正部署到生產當中。每天要做的事情包括處理海量訓練資料、寫訓練 pipeline、把模型在手機端做低功耗運行、保證大規模推理的低延遲、做 model serving 的擴縮容等等。具體落地上,OpenAI、Anthropic、Google DeepMind 這種 frontier lab 的 MLE 更多是和 researcher 一起把模型訓練跑起來;而 Meta、Google 內部業務驅動的團隊的 MLE 則主要是把 ranking model、recommendation system 這類東西做落地調優。這個崗位不僅需要對常用的 AI 模型有理論上的理解,更要能熟練使用 PyTorch、CUDA 這些技術棧。過去兩三年隨著 GenAI 的爆發,這條線也成了 SWE 裡對本科生而言增長最快、薪水也最高的方向之一,但與此同時它對 candidate 的要求也很高。

S&P 500 SWE

以上三類都是科技行業內部的 SWE 分支,但 SWE 這個崗位的 footprint 其實遠不止科技公司。S&P 500 裡相當一部分公司雖然不是純科技公司,但內部都有規模可觀的 engineering 團隊,而且前面提到的 product、infra、MLE 三條支線在這些公司裡基本都齊全:比如 WalmartTarget 內部的電商業務線主要對應 product engineering、VisaMastercard 的支付系統是典型的大規模 infra 工程、而 Disney 的串流媒體推薦系統和 UnitedHealth 的 risk modeling 都越來越依賴 MLE。這些傳統行業裡的 SWE 崗位的特點是 compensation 比大廠低一檔、工作節奏相對溫和、business 也更穩定,對想要 work-life balance 或者積累特定行業 domain knowledge 的同學是一個很不錯的選擇。

其他傳統行業 SWE

除了 S&P 500 這些巨頭之外,還有幾條傳統行業 SWE 業務線也很值得一提。其中會計與諮詢基本是規模最大的一塊。Big 4DeloittePwCEYKPMG)內部都有相當規模的 engineering org,主要做審計自動化、稅務軟體以及諮詢專案裡的 tech delivery;策略諮詢裡 McKinsey(McKinsey Digital)、BCG(BCG X)、Bain(Bain Vector)這幾年也都在大力擴張自己的 digital arm;而 IT 諮詢 / outsourcing 行業內的 AccentureIBM ConsultingCognizantInfosysTCS 等更是有數十萬人規模的 SWE pool。除此之外 biotech / hospital system(VertexModernaBiogenRegeneron 這些 biotech 加上 Mass General BrighamCleveland Clinic 這樣的大型醫院系統)也是一個體量很大的 domain-specific SWE cluster,主要做 clinical data pipeline、電子病歷、生信分析這一類工作。上面提到的這幾類 SWE 整體的 compensation 和 WLB 大致和 S&P 500 差不多,對想做 generalist 或者有生物 / 醫學背景的同學都是不錯的方向。

傳統金融業 SWE

傳統行業裡稍微特別一點的一條線是金融業 SWE,主要包括投行(Goldman SachsMorgan StanleyJP Morgan 等)和 asset management(BlackRockVanguardFidelityState StreetWellington 等)兩塊。兩邊內部的不少公司都有數千甚至上萬人規模的 engineering org,工作內容也相當類似——前面提到的 product / infra / MLE 三條支線在這裡一應俱全:面向客戶和內部用戶的 trading platform / 業務 portal 屬於 product engineering,自研的低延遲交易系統和 market data 系統是典型的 infra engineering,而 portfolio analytics、risk system、fraud detection、credit risk、algorithmic execution 這些則越來越依賴 MLE。金融業 SWE 整體的 compensation 介於大廠和傳統 S&P 500 之間,文化也比純科技公司更正式;投行的工作節奏會明顯比科技行業更緊、hours 也更長,asset management 則相對接近 S&P 500 的水平。這兩個行業對想接觸金融領域工程問題的同學都是一個不錯的選擇。

Quant

其實傳統金融業裡一部分 SWE 崗位的工作內容其實已經很接近 quant 了,但對 candidate 的要求一般來說比 quant 要低一些。所以 quant 究竟是幹什麼的呢?在回答這個問題之前我覺得先要把 quant 分為兩類:一類是高頻做市商,另一類則是對沖基金。

做市商就是一個在市場裡提供流動性的角色,簡單理解的話就是 “二道販子”,負責在市場上同時報一個買價(bid)和一個賣價(ask),從中賺取這個差價(bid-ask spread)。當然現在絕大多數交易都已經電子化了,所以做市商大多是在線上進行高頻做市(不過至今仍有少量交易是通過電話等方式完成的,比如養老基金這類機構的部分大額 ETF 交易)。這條線上最有名的幾家公司包括 Jane StreetCitadel SecuritiesHudson River TradingJump TradingOptiver 等等。做市商策略的核心 challenge 是低延遲——很多策略的盈虧就取決於微秒甚至納秒級別的延遲差距,所以這類公司內部對 systems 工程能力的要求其實極高,相當一部分 quant developer 幹的事情和頂級 infra engineer 沒什麼本質區別,只是 stack 是為了 ultra-low-latency 專門定製的(比如 kernel bypass、FPGA 加速、熱路徑上手寫組合語言等等)。一般來說這類公司裡的崗位可以分成三類:quant trader 負責即時決策和策略調參,quant researcher 負責設計新策略和挖新的 signal,quant developer 則負責搭建和優化整個 trading infra。三類崗位的 compensation 都非常高,最頂尖幾家公司的應屆生 base salary 一般在 \$200-300k 區間,加上 sign-on 和 bonus,total compensation 通常能到 \$400k 以上。

不同於做市商那樣用自有資金做 “二道販子”,對沖基金這條線的業務邏輯主要是幫客戶理財。從資金來源角度看這其實跟銀行理財差不多,只不過客戶群體更窄,策略也更激進。他們的交易頻率相比做市商會慢很多,但策略空間也更大。最有名的幾家包括 CitadelTwo SigmaD.E. ShawRenaissance TechnologiesMillenniumPoint72 等等,每家公司內部又會進一步分出不同的業務線,每個業務線都對應不同的策略思路和投資哲學。整體上他們的策略持倉週期可以從幾分鐘到幾個月不等,所以低延遲不像做市商那麼 critical,但對 statistical modeling、time-series analysis、machine learning 這些數學建模工具的要求會很高。

對 CS 本科生來說,對沖基金這條線上能觸及到的崗位會比做市商少一些。一方面,除了個別幾個純量化基金(如 Renaissance Technologies)之外,絕大部分對沖基金仍然採用的是主觀交易而不是 systematic trading,即使是在上面列出的幾家 quant 做得最好的基金內部依然會存在不少主觀交易的部分,而相較於其他專業 CS 對於主觀交易基本沒有明顯優勢;另一方面,所有基金的 systematic 業務線內部最 heavy 的崗位一般都是 quant researcher,而對於這種崗位他們更傾向於直接 hire 數學、統計、物理等學科的 PhD,應屆本科生想直接進去是比較困難的。但不少基金的 systematic business 裡依然會有相當一部分面向 CS 本科生的 quant developer 崗位,比如 Citadel 旗下的 GQS(Global Quantitative Strategies)。GQS 的 quant developer 主要負責給 quant researcher 搭建研究與回測平台、維護 production 上的 trading infra、以及做策略落地時所需要的各種工具鏈開發,本質上和做市商裡的 quant developer 幹的事情非常接近,但主要區別在於 stack 服務的策略不同:對沖基金主要是中低頻交易,而做市商主要是高頻做市。另外,Two Sigma 和 D.E. Shaw 有非常多策略也都是 systematic 的,所以內部也都有很大的 quant developer pipeline。這類崗位在頂級 fund 裡的 base salary 基本和頂級做市商的 quant developer 持平。兩邊獎金其實都和盈虧掛鉤,只是 fund 的 pod 會把獎金和單個 pod 的 PnL 綁得更緊,所以上限更高、波動也更大。

近幾年另一個值得一提的趨勢是,無論是做市商還是對沖基金,對 ML 的依賴都在明顯加深——做市商主要用 ML 挖 short-horizon signal 和優化 execution,對沖基金則直接把 ML 當成系統化策略的核心引擎。從工程角度看,這其實和前面提到的 frontier lab 的 AI researcher 以及 MLE 在做的事情非常類似,只不過把具體落地場景換成了金融市場。因此目前 frontier lab 和 quant 也都在互挖牆腳。

整體來說,無論是做市商還是對沖基金,進 quant 這行的門檻都是 CS career path 裡最高的之一,基本和 frontier lab 持平。做市商的 trading 崗位往往更看重數理直覺和反應速度,所以非常偏愛有數學、物理或者演算法競賽背景的本科生;而 systematic fund 最核心、門檻最高的崗位是 quant researcher,所以更看重獨立做研究的能力,本科直接拿 offer 難度更大。當然對於一些最強本科生來說這兩種 qualification 在很多時候是重疊的。不過對於普通 CS 本科生而言,無論是想進做市商還是對沖基金,最 accessible 的入口其實都是 quant developer,因為這個崗位對純 trading 或 research 能力的要求相對低一些。但需要注意的是這類崗位對工程能力的要求和頂級大廠 infra engineer 持平甚至更高,所以對願意在 systems 領域內深耕的同學來說反而是個不錯的目標。

CS 產業分布

註:以下內容截至 2026 年 5 月。CS 產業變動很快,開 office、搬遷、裁員都是常態,這裡給的是一個大致的 landscape,目的是幫助讀者建立一個可靠的 mental model,但具體公司的具體情況還請以最新資訊為準。

剛剛聊完了幾條主流 career path,最後我想再換個視角,從地理上簡單看一下美國 CS 產業的 hub 分布。這一點經常容易被忽略,但實際上對實習機會和畢業 placement 都有不少影響。

大廠

大廠的核心 hub 是舊金山灣區Bay Area,包括 SF 市區以及 Mountain View / Palo Alto / Cupertino 一帶的 South Bay),Meta、Google、Apple、Nvidia 的總部都在這裡;Seattle 都會區是第二大 hub,Microsoft 總部在湖東的 Redmond,Amazon 總部在 Seattle 市區;NYC 也有不少大廠的辦公室,主要做 fintech、廣告、媒體相關的 product。近幾年 Austin 也逐漸變成了一個新興的大廠集群——Apple 在那裡有 Cupertino 之外最大的園區,Tesla 也因為稅收和政策原因把總部搬到了 AustinOracle 2020 年也曾把總部從 Bay Area 搬到 Austin,但 2024 年又把全球總部移到了 Nashville),Meta、Google 等也都在 Austin 開了規模可觀的 satellite office。

其他科技公司與 AI lab

除了大廠之外剩下的 tech firm 大概還分為兩類:一類是已經上市的成熟中型科技公司,比如 Snowflake、Cloudflare、DatadogMongoDBTwilio、Figma 等,這一檔公司在 SF 之外的分布要比大廠均勻得多——NYC(Datadog、MongoDB 等)、BostonHubSpot 等)、AustinChicago(一些 enterprise SaaS)、Bozeman MT(Snowflake)都有不小的 footprint。另一類則是高速增長但還沒上市的 private firm,尤其是這兩年起來的 AI lab 和 AI infra 公司:OpenAI、Anthropic、Databricks、Stripe、Notion、Vercel 等等,他們的總部幾乎清一色集中在 SF 市區。

S&P 500

S&P 500 裡的傳統行業公司分布最廣,SWE 團隊基本跟著公司總部走,所以 hub 跨越了幾乎整個美國。Retail 行業裡的 Walmart 在 Arkansas Bentonville(Walmart Global Tech 這個 sub-org 在 Bay AreaSunnyvale 也有規模可觀的 site),Target 在 MinneapolisBay Area 也有 tech hub),Home DepotAtlantaAustin Technology Center 也是規模可觀的 tech site),CostcoSeattle 東邊的 Issaquah;healthcare 和 pharma 方面 UnitedHealth 在 MinneapolisCVS HealthRhode IslandAetna(已被 CVS 收購)在 HartfordPfizerNYC(R&D 重心在 Cambridge MAGroton CT),MerckJ&J 都在 New Jersey;金融服務公司分布更廣,Visa 在 PeninsulaFoster CityAustin 也有大型 tech office),Mastercard 在 NYC 北郊的 PurchaseBank of AmericaCharlotteNYCDallasChicago 也都有大型 engineering team),Capital OneDC 郊外的 McLeanNYCSFPlano TXRichmond 也都有規模可觀的 tech office),American ExpressNYCPhoenixSalt Lake City 是另外兩個大型 tech hub);汽車方面 FordGM 都在 Detroit 周邊;aerospace / defense 方面 Boeing 把總部從 Chicago 搬到了 Arlington 但 Commercial Airplanes 主力依然在 Seattle 一帶,Lockheed Martin 總部在 BethesdaFort WorthSunnyvaleDenverOrlando 都有大型 site),Northrop GrummanFalls Church;媒體方面 Disney 在洛杉磯 BurbankBay AreaSeattle 也是 Disney Streaming 的 tech site),ComcastPhiladelphia。這一檔崗位最大的特點就是分布廣——一方面公司總部本身就遍布全美各地,另一方面這些公司大多還在 Salt Lake CityPhoenixPlanoColumbusTampa 這種二線城市開了規模可觀的 tech / delivery center,所以如果畢業後不想留在 Bay Area / Seattle / NYC 這幾個核心 tech hub 而希望去美國其他城市發展,S&P 500 這一檔基本是覆蓋面最廣、最容易找到 SWE 崗位的方向。另外值得一提的是這些公司近年也都在大力升級自己的 engineering org,像是 Walmart Global Tech、Capital One Tech 這種 sub-org 在內部基本已經按現代科技公司的標準來運營,對求職者來說體驗和大廠 SWE 不會差太多。

其他傳統行業

會計與諮詢這一類公司在地理上的特點是總部多數集中在 NYCBoston,但 office network 覆蓋全美幾乎每一個 metro,因為諮詢業務本身就以貼近客戶為主。Big 4 美國總部清一色在 NYC,但他們在 ChicagoDCAtlantaDallasLASFHoustonBoston 這些大都市基本都有數千人規模的 office;策略諮詢裡 McKinsey 美國總部在 NYC,BCG 和 Bain 這兩家從 Boston 起家的公司則繼續把總部留在 Boston,三家在主要 metro 也都各有 office。在 IT 諮詢和 outsourcing 這行,Accenture 美國主力在 Chicago,但 office network 在全美極度分散;IBM Consulting 跟著 IBM 總部在 NYC 北郊的 ArmonkRaleigh-Durham 是 IBM 最大的非 HQ campus,AustinAtlanta 也都是大型 site);Cognizant 總部在 NJTeaneckDallasPhoenixTampa 是幾個大型 delivery center);Infosys 美國主力 office 在 Indianapolis,那裡有一個非常大的 tech / training 園區;TCS 美國總部在 NYC,主要 delivery center 則分布在 Cincinnati(最大的 Seven Hills Park 園區在 Milford OH)、ColumbusEdison NJPhoenix 等地。

Biotech firms 主要都集中在 BostonBay AreaNYC metro。我相信對於 Boston 就不需要多說了,像是 Moderna 和 Biogen 總部都在 Kendall Square,Vertex 則在 SeaportBay Area 最有代表性的是 South SFGenentechFoster CityGileadNYC metro 這邊 Pfizer 總部在 ManhattanBristol Myers Squibb 總部在 Princeton NJNYC 有大型 office)、Regeneron 在 NYC 北郊的 TarrytownMerck 總部則在 NJ 的 Rahway

與 biotech 相對的則是 hospital system——不同於 biotech 的高度集中,美國頂級醫院系統的分布其實相當分散,幾乎每個 metro 都有自己的核心 medical center,比如 Mass General Brigham 在 Boston、Cleveland Clinic 在 ClevelandMayo ClinicMinnesotaRochesterJohns Hopkins MedicineBaltimoreNYU LangoneNYCKaiser PermanenteBay AreaUPMCPittsburgh 等等,對應的 health IT engineering team 也自然跟著分散在全美各地。

傳統金融業

投行的總部幾乎清一色在 NYC 曼哈頓——Goldman Sachs、Morgan Stanley、JP Morgan、Citi 等等。但這幾家的 engineering team 實際的地理分布要廣得多。Goldman Sachs 在 Salt Lake CityDallas 都有美國僅次於 NYC 的大型 site,engineering team 佔了相當比例,其中 Dallas 近幾年還在大力擴張新園區;JP Morgan 的 tech 重心其實分布在 Columbus OHPlano TXWilmington DE 等幾個非 NYC 的 hub;Citi 在 TampaIrving TX 都有大型 tech site;Morgan Stanley 則在 Salt Lake CityWestchester NY 都有規模可觀的 office。在 asset management firm 中,BlackRock 總部在 NYCAtlanta 是 NYC 之外最重要的 engineering hub,Princeton NJWilmington DESF 也都有大型 office),Vanguard 總部在 Philadelphia 西郊的 Valley Forge / MalvernCharlotteDallas 也都有大型 office),Fidelity、State Street、Wellington 幾家總部都在 Boston,其中 Fidelity 在 Smithfield RISalt Lake CityRaleigh-DurhamWestlake TX 都有大型 tech site。綜合 biotech 和 asset management 這兩條線,Boston 其實是除 NYC / Bay Area 之外少有的能涵蓋多條 career path 的產業 hub;而 Salt Lake City 因為同時承載著 Goldman、Morgan Stanley、Fidelity、American Express 這些公司的大型 tech site,再加上 AdobeLehi 的園區和其他很多大公司的駐紮,那一帶在近幾年也已經發展成一個相當成熟的 tech hub,所以又被稱為 Silicon Slopes

Quant

Quant 這條線上的兩類公司分布略有差異。做市商方面,Chicago 是衍生品做市商的傳統重鎮,Jump Trading、DRW 等的總部都在這裡;NYC 則是 Jane Street、Hudson River Trading、Virtu 這些 ETF / 期權 / 股票做市商的所在地;Houston 是 commodity 和能源交易的中心,Citadel、DRW 等大型 trading firm 都在那裡設有規模可觀的 commodity / 能源 desk,純能源 trading 公司比如 VitolMercuriaTrafigura 也都把美國主力 office 設在 HoustonMiami 則是近幾年新興的 quant 聚集地,Citadel Securities 在 2022 年把總部從 Chicago 搬到了這裡(芝加哥那邊依舊保留有規模可觀的 office)。對沖基金則主要集中在 NYC 和隔壁康州,Two Sigma、D.E. Shaw、Millennium、Point72 等的總部都在這裡。近幾年除了 Citadel / Citadel Securities 把總部搬到了 Miami 之外,Millennium、Point72、SchonfeldBalyasnyExodusPointD1 Capital 等也都陸續在 Miami 或附近的 West Palm Beach 開設了規模可觀的 office;加上 Florida 沒有州個人所得稅,這一帶的 quant footprint 還在持續擴張。

產業集群與選校的聯繫

上面梳理的這些產業集群其實和本科選校之間有一層非常直接的關係——CS 的產業分布是高度地理化的,學校所在地的產業集群往往會對找工作有特別大的幫助。加州的學校和矽谷的關係最緊密,FAANG、中廠、SF 的 unicorn 對這些學校的招聘都非常 aggressive;UW 憑藉自身過硬的 CS program 以及和 Microsoft、Amazon 同處 Seattle 的地理優勢,在 PNW 一帶有幾乎壟斷地位的招聘 pipeline;UIUC 離 Chicago 比較近,本身又是 systems 重鎮,所以是 Chicago trading firm 最大的 feeder 之一;UChicago 因為本身就在 Chicago 而且有很強的數學系,所以也特別受 Chicago trading firm 的青睞;UT Austin 本身就在 Austin,加上 CS program 也很強,所以是 Austin 大廠集群(Apple、Tesla、Meta、Google 等)最直接的本科 pipeline;Georgia Tech 在 Atlanta,CS program 本身就是 top tier,對 Atlanta 幾家 S&P 500 巨頭(Home Depot、DeltaCoca-ColaUPS 等)以及 FAANG 都有很強的 pipeline;Rice 因為本身就在 Houston,是前面提到的 Houston 能源 trading 圈最自然的本科 feeder;NYC 區域內的 Columbia、NYU、Princeton 和 Stony Brook 則天然貼近華爾街,往 NYC trading firm 和對沖基金的 pipeline 就更不用說了。但其實這些被列舉出來的案例還只是冰山一角。

除此之外還有一類比較容易被忽視的 alignment 是很多傳統巨頭在招聘員工(包括 SWE)時其實非常 favor 總部附近的州立大學,所以一些緊鄰傳統巨頭總部的州立學校往往就是這些公司最主要的本科 pipeline——比如 University of Arkansas 之於 Walmart、University of Minnesota 之於 Target / UnitedHealth / 3MMichigan / Michigan State 之於 Ford / GM、NC State / UNC 之於 Bank of America、UMD / Virginia Tech / UVA 之於 DC 一帶的 defense(Lockheed、Northrop)和 Capital One、Purdue 之於 IndianapolisEli LillyArizona State 之於 Intel 在 Chandler 的園區、University of Utah 之於 Adobe 等等。這裡還有太多太多其他的例子就不一一贅述了。

所以對於想本科畢業直接工作的同學而言,以就業為導向的選校真正值得關注的是上面這種學校所在地和產業 hub 的 alignment,而不是 US News 或 CSRankings 上前後差幾個名次這種 superficial 的因素。當然這裡需要注意的是這種鄰近產業集群的優勢對於一些本來就比較難錄取的公司和崗位而言只是不小的好處和便利,但不是 guarantee,最終順利與否其實還是要看個人的實力究竟如何,和我們 UWC 的同學相較於其他高中生在申請美國大學時候的 institutional advantage 有異曲同工之妙。這其實就和我在〈關於選校〉裡提到的「MBA 錯覺」有一點像:對於比較好的公司和崗位,是他們有不小比例的員工來自附近的學校,而不是附近的學校中有不小比例的學生能進這樣的公司。當然與「MBA 錯覺」不同的是這裡只包含了統計錯位而不像「MBA 錯覺」還包含了因果倒置。

從 feature engineering 到 representation learning

在開始這一章之前我想先介紹一個機器學習裡面的小概念:在傳統機器學習時代,訓練一個模型最關鍵的一步往往都是 feature engineering。在這一步裡工程師需要先手動劃分出一些特徵,比如告訴一個用於識別小貓照片的模型 “貓通常有四條腿”、”貓腿上通常有毛” 等等。然後模型只會在這套預先設計好的 feature space 裡做訓練和學習。這一步往往最考驗工程師對具體問題的 domain knowledge,這也是一個模型能不能訓練好的關鍵。但到了之後的 deep learning 時代,大家發現了一個更有效也更簡潔的範式:我們不需要再手工設計複雜的 feature,相反我們唯一要做的就是把原始資料直接餵給一個足夠強大的模型,讓它自己從資料裡學習出一套 internal representation。這就是 representation learning——一套無法用任何自然語言描述、卻往往遠比任何人工設計的 feature 都更精確的對資料的表示。從 ImageNet 那一波 CNN 革命到今天的 foundation model,這套範式幾乎貫穿了過去十幾年 AI 領域內所有的 breakthrough。這也就是前文中所提到的 The Bitter Lesson

但這套 paradigm shift 最有意思的地方其實不在機器學習的模型訓練而在它本身的泛化性:對學校、對人、對自己,我們都可以做 representation learning 而不是 feature engineering。對學校的 representation learning 就是不把學校的價值用 US News 或者 CSRankings 這種 hand-crafted feature 來定義,而是從最原始的觀察裡,比如具體哪些 faculty 在做什麼 research、附近有什麼產業 hub、本科教育的文化是 math-heavy 還是 engineering-heavy 等等,來慢慢學出對一個 program 的 internal representation。這其實就是這整篇文章以及之前那篇〈關於選校〉裡面一直在做的事。對人的 representation learning 也是一樣的:對一個人真正的水平和人品的判斷,從來都不應該從 title、薪資、獎項這些 surface feature 裡直接讀出來;相反,我們應該讓這個判斷從這個人做事的方式、做人的態度中來慢慢 emerge。而對自己的自我價值也是同樣的道理——這一點我在〈體制的犧牲者〉裡已經聊過了:把自我價值錨定在 GPA、ranking、offer 這些外部 metric 上,本質就是在用一組別人 hand-craft 好的 feature 來定義我們自己的價值。

當然 representation learning 在技術上從來不是 free lunch,它往往需要海量的資料和長時間的 pretraining,而且通過這種方式訓練的模型的早期 performance 經常還不如那些精心 feature-engineered 的傳統模型。這個問題換到 cognitive 層面其實也是一樣的。假如我們不去使用現成的 metric,而是讓自己對事物的判斷從最原始的觀察裡慢慢湧現,那我們往往就很容易在那些按部就班 optimize 外部 metric 的同齡人面前顯得低效率,然後甚至也開始想要通過 feature engineering 的方式來走捷徑。這其實就是 representation learning 必經的代價。因為那些從原始觀察裡湧現出來的判斷,一定是要等到我們處理了足夠多的 raw data 之後才會真正比任何 hand-crafted feature 都更精確也更穩健。

所以我也不敢說自己在 representation learning 上學得有多好,現在應該還處於需要大量資料來持續做 pretraining 的階段。但 anyway,這算是我學了 CS 這麼久之後自己的一點小感悟,在這裡分享給同樣在路上的你們。

同語言的更多指南

繼續閱讀同一語言的其他內容,不必在不同版本之間來回切換。

大學申請術語介紹

UWC 之後的日子

透過專業術語理解大學申請中的角色、系統與流程。

關於選校

UWC 之後的日子

從資金流動到學術生態,重新認識美國大學選校。

體制的犧牲者

隨想

關於 metric 至上的一些反思,以及這份生存指南的初心。

IB 物理指南

學業

這篇指南分享了我學習和備考 IB 物理的經驗,包括學習資源、複習方法、刷題思路和考試技巧。希望它能幫助大家更高效地理解物理,並更輕鬆地通關 IB 物理。

所謂名校

UWC 之後的日子

從個人成長的驅動力出發,重新理解名校、菁英身份與選校的意義。

關於 IB Film

學業

關於 IB Film

IB 音樂指南

學業

對於有樂器基礎的學生來說,IB 音樂要拿到 7 分的關鍵在於精通 DAW 以實現高效製作,並主動向老師尋求回饋,以便在最終提交前精修你的作品集。