Member-only story
軟體工程師的修煉與成長 (7) — 如何突破資深工程師的天花板

Manager or Individual Contributor?
前面的文章提過,L5資深工程師是大部分公司的「終端等級」。在這個等級以後,即使年資一直增加,也不會自動就往上升,如果沒有超過這個等級的impact,就會一直停在這。這個等級是公司產出的主力部隊,人數通常最多,年資的範圍也最廣。現在在矽谷平均大概5年就能到資深,但也有很多在這個等級的人年資是超過10年甚至20年的。
不繼續升職並不是什麼罪惡,畢竟這個等級工作有一定的自主性,研究技術可深可廣,薪資待遇也很不錯了。這兩年不少資深工程師在一線公司一年可以拿到400k左右的offer(跟美國總統一樣了),即使在矽谷這個生活成本極高的地方也可以過得挺舒適的。我覺得如果是喜歡寫程式或鑽研技術的人,待在這個等級其實是最適合的,因為再往上升寫程式的時間只會變少,而其他的責任則會大大增加。
那如果真的想突破L5繼續往上升,到底該做些什麼呢?
第一件事,就是先決定「想當manager還是想繼續當IC (Individual Contributor)?」
矽谷公司的工程師職涯是在L5開始分岔的,在這個點可以轉職成Engineering Manager (EM) 開始走manager track,或是待在IC track往上升變成Staff Engineer。這兩個track是平行的,在大公司都可以一路往上升到跟VP同等級(L10)。(如果等級不夠了你又是Jeff Dean,公司甚至還可以幫你定義出新的等級!)
在很多公司裡,不管是哪個track,同一個等級所需要負責的scope是一樣的,所以薪水範圍也是一樣的。也就是說,不管你是L6的EM或是L6的IC,待遇並不會有什麼不同。這點可能是矽谷外的人最常誤會的事,從IC變成manager不是升職,而是在同一個等級平行的轉職,薪水也不會因此就變高。(只有升到下一級會讓薪水跳到下一級的範圍內,但那跟IC或manager無關。)也因此,在矽谷有很多人可以一輩子做IC而不用為了薪水轉職成manager做不喜歡的工作。
至於要走哪一個track比較好?這完全是個人選擇和偏好,沒有一定的答案。
Manager與Leader
以前我還是學生時,對台灣公司的結構有個刻板印象:工程師是底層員工,只能聽命行事;而升職就一定要變成manager,不然就職涯或薪水都不會成長。(但我沒有在台灣做過正職工作,不確定現在還是不是這樣就是了。歡迎讀者分享你們的經驗!)
那為什麼矽谷的公司不是這樣運作的呢?為什麼可以有同等級的EM和IC同時存在拿一樣的薪水呢?
我覺得最大的關鍵是,在矽谷的公司裡,manager和leader是兩個分開的概念。Manager指的是people manager,負責「管人」,在工程團隊中就是EM扮演這個角色。而leader則是於幫團隊指引出方向,帶著團隊往那個方向前進的人,工程團隊中大多是Tech Lead (TL) 在扮演這個角色。如果是很小的團隊可以是TLM (Tech Lead Manager)同時扮演EM和TL的角色,但通常TLM不是一個會持續很久的工作,所以比較適合看成一種例外。
一但把manager和leader分開,IC就可以在不管人的情況下當一個leader,進而擁有更同等級的manager一樣大的scope和impact。
舉例來說,在一個工程團隊裡,常會有個L6的EM加上一個L6的TL,兩個人合作分攤管理「人事」、「預算」、「專案」、「流程」、「技術」五個大領域。其中「人事」 (hiring, firing, performance, career growth) 和「預算」(團隊的錢要用在哪)主是EM在管的,而「技術」方面 (technical direction, strategy, vision) 主要就是TL負責的。剩下的兩個領域「流程」(定義OKR, sprint, oncall rotation等讓團隊日常運作的流程) 和「專案」(追蹤每個專案執行的進度和排除障礙)就是執行層面的事,不一定會怎麼分配,完全看兩個人的專長和興趣自己協調。
當我在L5面臨EM vs IC的選擇時,我很快就決定要待在IC這條路上。我想當個leader,但不想當manager。因為我知道,要做一個好EM,一定要有一個覺悟是「放棄自己寫程式」,甚至把技術方面的決定都交給TL才能做好people manager的工作。也就是說,如果我要走上EM這條路,以後我就沒什麼機會深入研究技術細節,也沒什麼機會在工作中寫程式了。這對我來說會是一個很痛苦的事,畢竟寫程式是我在工作中最能放鬆和充電的時候。如果不能寫程式,那工作就會變成整天開會,不斷消耗我精力和時間,我一定持續不了太久的。