資深工程師之路(一)
之前的專欄文章都是偏技術(shù)介紹方向的,比如之前的《算法工程師的技術(shù)路線圖》,受到了不少同學(xué)的關(guān)注。不過作為工程師的職業(yè)發(fā)展,顯然不僅僅是只有技術(shù)的部分,尤其是發(fā)展到工作五年后逐漸成為資深工程師后,會(huì)碰到進(jìn)一步職業(yè)晉升的路線選擇問題。在 management track 方向,我們有很多極其優(yōu)秀的管理方面的著作可以參考學(xué)習(xí),也有一些針對(duì)技術(shù)管理的書例如《知行[1]》也是相當(dāng)上乘。但對(duì)于另一個(gè) technical track 的方向,卻很少能找到相應(yīng)的參考資料來學(xué)習(xí)。個(gè)人在平時(shí)工作中也花了一些時(shí)間對(duì)這方面做了一些思考,所以接下來打算挖一個(gè)新坑,跟大家聊聊這些偏“務(wù)虛”的思考,歡迎大家來一起交流探討。
開篇故事
最近有一個(gè)比較火的新聞,說的是著名的 Infra 軟件公司 Hashicorp 的創(chuàng)始人和 CTO Hashimoto,在推特和 公司博客[2] 上宣布他將退出公司的 executive 團(tuán)隊(duì),不再擔(dān)任 CTO,而轉(zhuǎn)成一名全職的 Individual Contributor(下文簡(jiǎn)稱 IC)。你或許沒有聽過 Hashicorp,不過你一定用過他們開發(fā)的軟件,比如 Vagrant,Consul,Terraform 等……這些耳熟能詳?shù)能浖际怯蓛晌粍?chuàng)始人主導(dǎo)開發(fā)的。Hashimoto 在 2012 年創(chuàng)辦公司后,先后擔(dān)任過公司的 CEO 和 CTO,而現(xiàn)在,他終于決定卸任 CTO,回歸自己最為熱愛的產(chǎn)品和軟件開發(fā)工作。
從這個(gè)故事中,我們可以發(fā)現(xiàn)幾個(gè)有啟發(fā)的點(diǎn):
如何選擇你想要從事的方向?最重要的永遠(yuǎn)是跟隨你的激情和興趣,找到那些能帶給你無比的成就感,讓你找到生活的非凡意義,能真正驅(qū)動(dòng)你每天早上起來充滿能量投入的事情中去。這跟 喬布斯當(dāng)年演講[3] 中的建議也非常類似,keep looking,don't settle。 Management track 跟 technical track 并不是完全隔離的兩條路。一位工程師完全可以在兩條道路之間切換,而且后面我們還會(huì)討論到,這兩條道路在很多方面都是極其相似的,我們需要從兩方都吸取有用的知識(shí),才能走得更遠(yuǎn)。 Management 并不是天然就高出一等的工作,更多是職責(zé)分工的不同。尤其在國內(nèi)會(huì)有很多根深蒂固的思想,感覺做管理就等同于升職。我覺得大家需要更理性的來看待和分析這兩條路線。
職業(yè)發(fā)展路線
接下來我們先簡(jiǎn)單介紹一下 management track 和 technical track 的內(nèi)容。
Management Track
從 title 上來看,management track 一般是 manager -> director -> VP -> CXO 的晉級(jí)序列,大家應(yīng)該都比較熟悉了。從人類社會(huì)誕生之日開始,管理就以各種形式滲入到社會(huì)的運(yùn)作中。對(duì)于企業(yè)組織的管理,從工業(yè)時(shí)代開始就受到了極大的關(guān)注,并形成了專門的研究學(xué)科。快進(jìn)到現(xiàn)代化時(shí)代知識(shí)工作者的出現(xiàn),對(duì)傳統(tǒng)體力工作者的管理方法提出了更多的挑戰(zhàn)。而技術(shù)型科技公司,是當(dāng)前知識(shí)型工作者密集型組織的典型代表,因此也出現(xiàn)了非常多的專著來討論“技術(shù)管理者”相關(guān)的話題。德魯克在他著名的《卓有成效的管理者[4]》一書中甚至對(duì)管理者做了更寬泛的定義:
在一個(gè)現(xiàn)代組織里,如果一位知識(shí)工作者能夠憑借其職位和知識(shí),對(duì)該組織負(fù)有貢獻(xiàn)的責(zé)任,因而能實(shí)質(zhì)地影響該組織的經(jīng)營(yíng)能力及達(dá)成的成果,那么他就是一位管理者。
看這個(gè)描述,是不是覺得資深工程師天然就是一名“管理者”?后續(xù)我們也會(huì)多次來印證這兩個(gè) track 有所融合的部分。
不過話說回來,只要我們?nèi)匀恍枰藖磉\(yùn)作組織,溝通協(xié)作,執(zhí)行任務(wù),那么對(duì)于“人”的管理,仍然是一個(gè)極其重要的話題。在我的理解中,management track 跟 technical track 中最大的側(cè)重點(diǎn)的不同,就在于經(jīng)理們一般會(huì)更關(guān)注人相關(guān)的問題,而資深工程師在這方面的要求會(huì)相對(duì)較低。
Technical Track
Technical track 的 title 名稱可能在不同公司會(huì)比較多變,比較常見的是 senior -> staff -> principal -> distinguished -> fellow。對(duì)于每個(gè)技術(shù)職級(jí)所需要達(dá)到的要求,各個(gè)公司都會(huì)進(jìn)行詳細(xì)的定義。一般會(huì)包括技術(shù),執(zhí)行(拿結(jié)果),溝通協(xié)作,影響力和領(lǐng)導(dǎo)力等幾個(gè)方面。不過今天我們暫時(shí)不涉及這塊的細(xì)節(jié),或許在后續(xù)講晉升這塊時(shí)再詳聊。
一般以工程師身份加入到一家公司后,在 senior 到 staff 這個(gè)階段(對(duì)應(yīng)國內(nèi)可能是阿里的 P7~P8),會(huì)出現(xiàn)第一次選擇發(fā)展 track 的機(jī)會(huì),也就是人們常說的“要不要轉(zhuǎn)管理”。這里很多個(gè)人,組織都會(huì)有些糾結(jié),出現(xiàn)各種踩坑現(xiàn)象,例如迫使讓技術(shù)最強(qiáng)的工程師去當(dāng) manager 之類。我覺得這里有個(gè)比較大的問題是很多人其實(shí)并不了解從 staff 級(jí)別開始,資深工程師所做的工作到底是什么樣子的,跟經(jīng)理路線有什么區(qū)別?所以我們這個(gè)系列文章主要的思考內(nèi)容會(huì)關(guān)注于在 staff 級(jí)別之上所面臨的具體問題和挑戰(zhàn)。
資深工程師的類型
從畢業(yè)進(jìn)入職場(chǎng)成為一名工程師開始,我們平時(shí)主要的工作職責(zé)還是比較明確的,高效高質(zhì)的完成各種開發(fā)任務(wù),把軟件交付上線,并持續(xù)維護(hù)和迭代。大多數(shù)人都會(huì)逐漸在這個(gè)時(shí)期積累更多的技術(shù)知識(shí),不斷提升技能熟練度,當(dāng)你已經(jīng)能達(dá)到 senior 工程師的平均水平,獨(dú)立負(fù)責(zé)一些較為復(fù)雜的開發(fā)設(shè)計(jì)任務(wù)時(shí),一般就能很自然的晉升到 senior engineer。截止到這里,我們的職業(yè)發(fā)展路線還是相當(dāng)清晰的,大部分的精力只需要投入在技術(shù)導(dǎo)向的工作上就可以。在很多成熟公司,也是允許員工在整個(gè)職業(yè)生涯都停留在 senior level,貢獻(xiàn)自己的開發(fā)成果即可。
但當(dāng)你想要往下一個(gè) level 晉級(jí)時(shí),把代碼寫的更快更好,debug 更強(qiáng),可能就不一定夠用了。這一節(jié)我們先來看看 staff 級(jí)別以上的工程師有哪幾種典型類型,一般會(huì)具體做一些什么樣的工作。
技術(shù)主管
這個(gè)類型的資深工程師是最常見的一類,在作為有經(jīng)驗(yàn)的開發(fā)者基礎(chǔ)上,需要進(jìn)一步負(fù)責(zé)一個(gè)小組的技術(shù)路線和執(zhí)行。例如與產(chǎn)品和其它研發(fā)團(tuán)隊(duì)的溝通協(xié)作,方向探討,拆解復(fù)雜項(xiàng)目的 timeline 和需要達(dá)成的 milestone,設(shè)定團(tuán)隊(duì)的工作規(guī)范和流程,參與各類評(píng)審/復(fù)盤會(huì)議,mentor 新人解答問題等。有一個(gè)很形象的比喻就是會(huì)有很多 glue work(打雜),技術(shù)主管的目標(biāo)不再是個(gè)人具體的代碼貢獻(xiàn)量,而是要幫助整個(gè)團(tuán)隊(duì)來更高效的工作和產(chǎn)出,以實(shí)現(xiàn)組織目標(biāo)的最終達(dá)成。
看到這里你可能會(huì)覺得,這不就是技術(shù)經(jīng)理嗎?的確,在很多 10 人以內(nèi)的小團(tuán)隊(duì)中,這兩個(gè)角色很可能就是同一個(gè)人。但當(dāng)團(tuán)隊(duì)規(guī)模大了之后,一個(gè)人就很難做到比較好的兼顧,會(huì)出現(xiàn)經(jīng)理和技術(shù)主管的雙核組合。對(duì)于經(jīng)理來說,會(huì)有更多人事管理上的側(cè)重,例如定期的 one on one 會(huì)議與激勵(lì)反饋,團(tuán)隊(duì)結(jié)構(gòu)和人才資源的規(guī)劃,招聘,績(jī)效考評(píng),職業(yè)發(fā)展規(guī)劃,培訓(xùn)等等。而對(duì)技術(shù)主管來說,更大的團(tuán)隊(duì)一般也會(huì)在技術(shù)領(lǐng)域會(huì)有更大的復(fù)雜性和挑戰(zhàn),在經(jīng)理的幫助下可以花更多的時(shí)間在技術(shù)方面的思考上,例如技術(shù)債管理,創(chuàng)新方向探索,架構(gòu)規(guī)劃,工程師文化建設(shè),領(lǐng)域知識(shí)的增強(qiáng)等。
技術(shù)專家
這類資深工程師是技術(shù)深度優(yōu)先路線的典型,他們一般會(huì)在某個(gè)領(lǐng)域達(dá)到非常精深的掌握程度,幫助公司解決關(guān)鍵的技術(shù)難點(diǎn)問題。舉個(gè)例子比如微軟的 tech fellow,C#之父 Hejlsberg 就是一位典型的此類 IC。憑借他在編程語言領(lǐng)域的世界級(jí)大師能力,幫助微軟在 dotnet 和 TypeScript 等開發(fā)者生態(tài)都取得了巨大的成功。另外像阿里的多隆也有些類似,與之不同的是多隆解決問題的方向會(huì)更多樣一些。但他們都是能夠?yàn)楣镜膽?zhàn)略規(guī)劃執(zhí)行進(jìn)行前沿探索和掃清技術(shù)路障的“掃地僧”,其 impact 也是顯而易見的。
咋一看感覺這個(gè)類型的資深工程師就是 senior level 的自然延伸嘛,是不是埋頭做技術(shù)就可以了?曾經(jīng)我也有類似的想法,但后來發(fā)現(xiàn)想要成長(zhǎng)為大師,想要以大師的能力來創(chuàng)造足夠的影響力,溝通等方面的軟技能仍然是必不可少的。你需要與公司的管理層或其它部門密切的溝通,才能明確我們共同的目標(biāo)方向是什么,閉門造車的技術(shù)是沒有用的。你也要和整個(gè)研發(fā)組織進(jìn)行溝通,讓大家在一些大的技術(shù)方向,技術(shù)架構(gòu)上達(dá)成共識(shí),才能真正推動(dòng)落地,光靠一個(gè)人就能寫出來的項(xiàng)目,很可能只是個(gè) toy project。你還需要跟類似方向的技術(shù)同僚持續(xù)交流,吸取行業(yè)的先進(jìn)經(jīng)驗(yàn)知識(shí),并輸出你的思考和實(shí)踐,才能樹立起足夠的行業(yè)影響力,推動(dòng)行業(yè)的進(jìn)步。這里有另一個(gè)例子就是算法領(lǐng)域的李飛飛,她主導(dǎo)構(gòu)建的 ImageNet 并不是在技術(shù)上多么復(fù)雜的一件事,但她提出了正確的問題,進(jìn)行了良好的執(zhí)行,并推廣影響了整個(gè)社區(qū)。
架構(gòu)師
這類角色與技術(shù)專家有些類似,不同的是架構(gòu)師是技術(shù)廣度優(yōu)先的方向。他們或許沒有技術(shù)專家在某個(gè)領(lǐng)域做到那么深入的了解,但會(huì)對(duì)公司某個(gè)方向的技術(shù)棧,架構(gòu)設(shè)計(jì),業(yè)界的整體趨勢(shì)有更廣泛的了解。而與技術(shù)主管的不同之處在于他們一般不會(huì)附屬于某個(gè)具體的小組,而是跨越更多的組,持續(xù)投入在公司戰(zhàn)略路徑中較為關(guān)鍵的技術(shù)創(chuàng)新焦點(diǎn)上,負(fù)責(zé)各種架構(gòu)的設(shè)計(jì),推廣與執(zhí)行。
這里自然要給我司的首席架構(gòu)師寶哥打個(gè)廣告了。寶哥就是持續(xù)在數(shù)據(jù)分析,云原生,分布式系統(tǒng)等方向深耕與開拓,為我司設(shè)計(jì)和打造了一系列行業(yè)領(lǐng)先的系統(tǒng)架構(gòu),支撐我們服務(wù)了數(shù)百家客戶超大規(guī)模的數(shù)據(jù)分析與智能決策業(yè)務(wù)應(yīng)用,對(duì)于公司整體的戰(zhàn)略方向也起到了很大的影響作用。寶哥也經(jīng)常在他的公眾號(hào)上分享一些他的技術(shù)思考,感興趣的同學(xué)可以點(diǎn)擊下方鏈接直達(dá),一鍵三連一下 :)
技術(shù)顧問
最后一個(gè)類型是技術(shù)顧問,一般只有在比較大型的公司才會(huì)有。常見的形式是會(huì)有一個(gè)類似 CTO Office 的組織,其中就會(huì)有一些資深工程師擔(dān)任技術(shù)顧問。他們一般沒有直接的管理方面的職責(zé),主要是給 CTO,技術(shù) VP 的決策提供一些技術(shù)視角的信息輸入,同時(shí)在執(zhí)行過程中,也會(huì)幫助這些技術(shù)高管擴(kuò)大感知范圍,例如參與各種業(yè)務(wù),技術(shù),管理,流程,企業(yè)文化等相關(guān)的會(huì)議或協(xié)同過程,確保整體執(zhí)行的上下一致,以公司高層的視角和思路來幫助一些決策的發(fā)生。
這種類型的角色我個(gè)人也了解的不多,也就不展開討論了。值得注意的是這里提到的公司上下戰(zhàn)略思考方面的 alignment 在前面幾個(gè)類型的介紹中也有反復(fù)提到,也是資深工程師在思想上非常需要重視的一點(diǎn)。后續(xù)我們或許也會(huì)單獨(dú)寫一篇來進(jìn)行討論。
小結(jié)
總體來看,資深工程師相比初級(jí)工程師,會(huì)需要很多思維方式的轉(zhuǎn)變。例如從個(gè)人的執(zhí)行落地,轉(zhuǎn)向關(guān)注整體組織的執(zhí)行。從完全技術(shù)導(dǎo)向,轉(zhuǎn)向客戶視角,業(yè)務(wù)目標(biāo)導(dǎo)向。所以他們具體的工作內(nèi)容和形式跟之前相比會(huì)發(fā)生不小的變化。
資深工程師的很多思考和行動(dòng)方式上,都會(huì)很接近經(jīng)理路線。如果我們簡(jiǎn)單概括兩者的職責(zé)內(nèi)容為技術(shù)+業(yè)務(wù)(產(chǎn)品,項(xiàng)目等)+人(組織,協(xié)同,文化等),那么資深工程師一般在前兩者會(huì)有所側(cè)重,而經(jīng)理則會(huì)在后兩者擔(dān)起更多責(zé)任。
如何選擇路線
看完這幾種類型介紹,大家可能會(huì)想了解自己該選擇哪一種作為努力的方向呢?
首要的原則還是開頭提到的,哪種類型的工作最能夠激發(fā)你,就應(yīng)該是最優(yōu)先考慮的方向。不過資深工程師有一個(gè)比較共通的特點(diǎn)是工作中的正反饋其實(shí)相對(duì)初級(jí)工程師來說會(huì)少得多,且反饋回路也會(huì)長(zhǎng)得多。如果一直覺得能把代碼提交就很爽,其實(shí)會(huì)有一直處在自己舒適區(qū)的問題。很多時(shí)候,挫折與挑戰(zhàn),和最后的成就感的回饋是相輔相成的,還是需要把自己的目標(biāo)定的高一些,才能看到更廣闊的世界,更壯麗的景觀。 其次需要思考所在公司最需要什么類型的人才,做什么樣的工作最能給公司帶來提升。比如初創(chuàng)階段的公司很可能不需要技術(shù)專家或技術(shù)顧問的角色。另外有一點(diǎn),很多初級(jí)工程師會(huì)傾向于把個(gè)人成長(zhǎng)跟公司成長(zhǎng)分開來看,會(huì)覺得工作的內(nèi)容好像沒有給自己的能力帶來什么提升。但是越資深的工程師,越應(yīng)該意識(shí)到自身發(fā)展跟公司發(fā)展的綁定關(guān)系其實(shí)是很強(qiáng)的。只有通過實(shí)際檢驗(yàn),真正給客戶帶來價(jià)值的技術(shù),才是你真正學(xué)會(huì)的最有價(jià)值的本領(lǐng),也是你在這家公司最能獲得成長(zhǎng)的部分。 最后實(shí)在拿不定主意的話,其實(shí)也跟 management track 跟 technical track 的選擇類似,你完全可以都嘗試一下。一方面,大家的職業(yè)生涯長(zhǎng)達(dá) 30-40 年,時(shí)間上綽綽有余,不用著急。另一方面,各種類型角色的技能點(diǎn)有很多也是共通的,比如前面提到的溝通能力。多嘗試一下說不定還能互相汲取經(jīng)驗(yàn),幫助你更好的做其它類型的工作。
今天先聊到這里,感謝閱讀!大家如果有什么想法和問題歡迎評(píng)論留言,一同探討。如果有什么想要了解的話題也可以提出,可以作為我們后面幾篇文章的內(nèi)容儲(chǔ)備 :)
參考資料
知行: https://book.douban.com/subject/33463986/
[2]公司博客: https://www.hashicorp.com/blog/mitchell-s-new-role-at-hashicorp
[3]喬布斯當(dāng)年演講: https://www.bilibili.com/video/av17203668/
[4]卓有成效的管理者: https://book.douban.com/subject/1322025/
