來源: Alibaba F2E公衆号
作者:黃子毅
不知道你上次思考前端職業規劃是什麼時候?
如果你是一位學生,你肯定對前端這個職業感到陌生,你雖然沒有經驗,但卻對未來充滿好奇,你有大把時間來思考,但可能摸不着方向,有種拳頭打在棉花上的無力感。
如果你已經參加了工作,不論是剛開始實習,還是工作了 3 年、5 年甚至 10 年,一定覺得非常充實,但真正用于思考的時間足夠嗎?如果維持現狀,再過 5 年自己的提升點在哪裡?如果你對這些結論不清晰,很可能是缺乏了對職業規劃的思考。
這篇前端職業規劃是站在我自己角度寫的,你如果也在思考長線發展問題,可以作為參考。
我總結出三個主要思考方向,分别是 知識分類、領域深耕、經濟視角。
知識分類 指的是你對知識的了解是否成體系。現在全球每天新增的知識,一個人窮盡一生也學不完,如果不建立一套你自己的知識篩選标準,長期發展就無從談起。
領域深耕 是實踐,天天學習也是沒有用的,你必須要做出什麼有價值的事情,才能為行業帶來貢獻,或者說将知識轉化為财富。當然不同職業學習與實踐的比例是不同的,比如理論實體可能模糊了學習與實踐的邊界,而在職場環境的工程師,更容易區分什麼是學習,什麼是實踐。
經濟視角 是說你要能夠帶着經濟視角看問題。可以說沒有經濟活動,我們一切學習、生産、職業都沒有任何意義,因為推動我們學習、推動社會生産的動力是交易,沒有經濟活動就沒有需求,需求是推動一切活動的基礎。稍微了解了經濟和生産的關系,就能了解為什麼技術要為商業服務,因為任何技術都要有轉化為商業價值的潛力才值得被研究,大到社會價值,小到産品價值,都一樣。
下面我分别講講自己對每個方向的了解。
知識分類
作為前端,為了保持技術敏銳度,我們會訂閱許多專欄了解新知識。僅我知道的周更專欄就有 30 個,其實根據一些專門整理好的專欄檢索網站,每周甚至可以看到超過 100 種不同的前端專欄。大部分專欄都在做文章聚合,每篇專欄聚合的文章一般有 5 篇到 30 篇不等,這樣即便去除重複,一周至少有幾百篇新的前端技術文章等你去讀,是以有些同學會覺得焦慮,甚至喊出學不動了。
我每周寫前端精讀恰好也要找一些文章閱讀,但幾年下來,我恰恰覺得每周根本找不到有用的素材。就以本周的 javascript weekly 為例,我摘了一些文章标題:
- DOM Events: A Way to Visualize and Experiment with the DOM Event System。
- Introducing WebContainers: Run Node.js Natively in the Browser。
- New & Updated Course: Complete Intro to React v6 with Brian Holt
- Parcel 2 Beta 3: A Wild Rust Appears!
- 2D Optics Demos in JavaScript
- A Complete Beginner's Guide to Next.js
- How to Create Reusable Web Components with Lit and Vue
第二篇是通過可視化幫你了解 DOM 事件的文章,UI 很有意思,但 DOM 事件作為前端基礎,精讀實在不适合拿過來炒冷飯,這個知識點講一遍就行了,沒必要做成 UI 後再講一遍。
第二篇是講一項技術可以讓 Node 運作在浏覽器的,這确實是一個新技術,但現階段我們沒必要為這項技術找場景,隻要知道有這個東西就行了,沒必要仔細閱讀。第三篇是對 React 的完整教程,非常體系化,但沒有新東西,适合前端新人讀,是以也不需要看。
再後面幾篇分别是架構更新帶來的特性介紹、一個有趣的可視化效果、Next.js 新手入門、如何用 Lit 架構開發元件。這些知識從直覺來看屬于可讀可不讀的,讀了吧覺得好像對自己沒什麼成長,不讀又覺得錯過了什麼,真的像雞肋。
如果你看到這些 Feed 流也有猶豫的感覺,我建議你建立一套前端知識分類體系。就像學習武功,如果你不了解什麼是基本功,什麼是花拳繡腿,那麼每天面臨幾百本推送過來的 “武學新聞” 确實是無從學起,而且也學不過來。
在技術領域,知識分類體系是有規可循的,大緻可以講知識分為兩種類型:通用、行業知識。
通用知識是指最為基礎、适用面也最大的知識,比如數理化,這些知識我們上學時都學過,工作中用到的知識都是建立在這些通用知識基礎之上的,比如沒有一定數學基礎就難以學習計算機可視化領域,因為其中會大量運用數學知識。
通用知識最有用,也最保值,是以學校時就安排給我們了,那麼大學其實就在教通用行業知識,是以這個階段如果沒有打牢的基礎,想要彌補也很簡單,隻要按照大學教材溫習一遍就好了,對于計算機領域的通用知識一般有計算機原理、作業系統、設計模式、編譯原理、資料結構、算法等。
領域通用知識看上去比較死闆,而初入工作的同學一般都在做擰螺絲釘的事,往往會忽略行業通用知識的重要性,但當你不斷深入接觸公司核心技術時,會發現大量運用了大學裡教的那些通用知識,等用到的時候再學就遲了。
如果說行業通用知識的保值時間是 30 年,那接下來提到的行業專用知識的保值時間隻有 1 年。行業專用知識就是我們在 Weekly 上看到的大部分内容,也包括教育訓練班幫我們速成的前端架構、API 等知識。這些知識非常有用,接地氣,而且剛接觸工作時第一時間就要用到,但這些知識最大的問題就是太過于上層,以至于同類産品過多,可替代性強,知識點可以随着新版本釋出全變了樣。
就像項目腳手架工具,現在每天都會出一個基于 webpack 或者 rollup 包裝的新品牌,這種腳手架就不值得學習,你也不需要把新出的腳手架當作新知識,因為這些知識的生命周期大部分不到一年,大多沒有人用,最重要的是除了名字以外,組成要素裡沒有任何新知識,是以讀完源碼也學不到新知識。更最重要的是,你無法根據這些知識生産同類産品,是以如果你真的想學腳手架相關知識,認真讀好一個主流腳手架源碼就行了,以後除了工作中用到,不需要看任何使用文檔。
對于架構能力也一樣,我們在工作中通過踩坑甚至把一個項目做失敗得出的經驗,可能隻是設計模式這本書裡提到的一個常見誤區;我們在設計一個非常複雜的系統時,用到的子產品通信設計,可能隻是作業系統設計裡的一種常見通信方法。一個能了解作業系統複雜度的人,基本上可以處理與其等價複雜度的軟體工程問題,而軟體工程的複雜度其實很難超越作業系統,是以與其在項目裡試錯,不如從這些基礎知識裡找答案。
是以如果你想在職業規劃上更進一步,檢查一下自己的基礎是否牢固。如果你通用知識特别紮實,就可以快速學會行業基礎知識,根據行業基礎知識,你甚至可以獨立創造任何一個新的架構,這些架構都會成為别人學習到的行業專用知識,如果另一位同學沒有打基礎,把時間都用在學習你做的架構上,那麼他的職業發展一定程度會被你左右,而他如果隻停留在用的階段,而不了解實作原理,從長期來看,你的職業天花闆一定會更高。
關于哪些是通用基礎知識、行業基礎知識、行業專用知識,這裡不給出具體的建議,相信每個人都會有自己的判斷。
領域深耕
這段思考 不适用于 剛參加工作的前端同學。
前端有一句有名的雞湯 “前端不是因為做互動界面,而是因為站在業務的最前端”,其實這句話是有問題的,我覺得每一位工作經驗超過三年的前端同學都有一種在業務領域的無力感。
其實最核心的業務模型天然在後端,這是因為前端隻是一個使用者與業務系統互動的視窗,沒有前端,使用者也可以和接口直接互動,隻是這麼做成本很大,是以為了降低使用者上手難度,或者帶來更好的使用者體驗,才需要不斷更新 UI 界面,是以 UI 界面和後端往往是多對一的關系,移動端、小程式、網頁對應的接口都是一套,目的就是為了友善任何場景使用者都能輕松觸達業務,是以作為前端,首先要對前端存在的原因有正确的認識。
注意這裡說的是業務模型,沒有提到體驗深度,如果講究體驗深度,自然隻有前端能做到。在任何行業耕耘久了,如果僅僅隻考慮前端,那麼目标永遠是體驗度量、研發提效的事情,很少觸及到業務層,以至于前端在業務價值的展現不直接,比較難解釋體驗度量、研發提效與最終業務增長之間的關系。
是以對于有一定工作經驗的前端同學,想要更進一步,一定要在業務領域深耕。
那麼如何在業務領域深耕呢?首先你要抛開前端視角,用業務眼光看問題,否則還是會陷入無盡的互動細節。首先要了解你所在的領域,比如筆者在的資料領域,要知道行業的曆史、現狀和未來,有哪些産品,每種産品的商業模式是什麼,産品之間有什麼關聯,現在的産品距離頭部産品還有哪些差距,今年産品目标主要解決什麼問題,三年目标是什麼等等。每個同學首先都應該了解産品,其次再産生研發、産品經理的分工。
然後審視一下自己的工作,在産品核心能力裡扮演者什麼角色?比如做 BI 工具,其核心是資料分析能力與報表可視化分析能力,如果你總在做類似報表清單頁、個人中心這種通用中背景的工作,你就要想想,這些工作是不是可以外包出去,如果不行,那就想辦法做一些領域搭建,往通用領域轉吧。
當你審視了自己工作,發現核心産品能力與你工作内容不相符,而你又不想轉到前端中背景通用領域一直做研發提效的事情,這時候你就要想辦法和老闆溝通改變一下工作内容了,你可以找一些前端也能接觸強業務模型的領域,比如 BI 分析,資料可視化等等。其實通用領域也有不少深水區,比如語雀背後的富文本編輯器、流程圖、研發工作台、業務元件庫等等都是可以做深的通用領域,當你想再上一層樓時,就要像玉伯一樣成為語雀整個産品的引領者,這樣你其實又進入了知識協作、生産力工具這個專業領域。
如果你既不想往通用技術領域發展,又無法改變工作内容,就嘗試承擔更多職責吧,如果可能的話,嘗試參與後端業務邏輯的開發,這樣可以幫助你深入、全面了解業務邏輯。其實前端 + 産品的路線也可以很好在專業領域做深,前端 + 後端路線也可以,你需要根據自己團隊實際情況做出調整。
任何産品的研發團隊都要有産品全局觀,這就是剛才說的在技術之外,你對你所在業務領域的了解程度,了解程度越高,技術方向就越明确,但如果你的職業規劃是再繼續攀爬,就要成為整個産品負責人了。現在的年輕人非常上進,許多公司都在嘗試采取活水政策,讓想更進一步的年輕人嘗試新方向開疆拓土,而不是留在一個成熟的團隊裡内卷。
經濟視角
做職業規劃的另一個目的當然是升職加薪了,但是你的薪資并不能無限膨脹,其增長大緻還是符合市場規律的。另外任何工作都是一筆經濟賬,我們要帶着技術、産品和經濟視角看業務,才能做出合理的判斷。
因為去年疫情原因,全球遠端辦公得到了積極實踐,并且在未來依然有增長潛力,是以作為用人機關方,必定會逐漸放眼全球去看人力成本問題,因為在哪都能辦公。從全球軟體開發資料來看,美國的工資水準最高,中國軟體工程師的工資也緊随其後,是以在軟體領域中國已經不存在勞動力成本低廉的優勢了,尤其當你工作經驗豐富後,要競争中進階崗位,中國軟體公司開的薪資放眼全球都不低。
然而國家之間技術發展階段、教育水準仍然存在差距,如果同樣的資深技術專家崗位,國内與國外開的薪資持平,但中國的軟體工程師架構水準完全不及美國的軟體工程師,那麼長期來看,這種錯配會造成企業用人成本浪費,企業會在一定程度想辦法優化一下人員構成的。是以作為前端,或者軟體工程師,你必須清楚長期而言,你要和全球的軟體工程師競争,是以你還要充分了解你的領域在全球範圍的發展階段,人才水準如何。
以上是個人的經濟賬,接下來談談業務的經濟賬。
首先你要了解自己的技術是怎樣轉化為收入,覆寫自己工資的。我們首先看市場競争,市場競争通過價格調節供需關系,我們做的産品成本、售價很清楚,是否值得做一目了然。然而對于複雜産品需要多人協作,如果人與人之間再通過市場化機制合作,往往容易産生低效的結果,比如我做的按鈕按照 3 元一個的價格賣給後端,那為了提升我的價值,我會提價到 5 元一個,然而傾向于給産品加更多的按鈕,這樣都在看短期利益,誰也不會為産品長期發展負責。
是以在公司不要給自己工作定價,大家都盡可能的打磨産品,月底按照合同約定給固定薪酬。這樣做确實解決了産品長期發展的問題,但這套機制成熟後,尤其在大公司,剛畢業就去擰螺絲釘的同學很可能永遠沒有機會了解何為成本,沒有成本概念,就難以想清楚為什麼做事要考慮投入産出比,或者覺得 ROI 這個詞很進階,其實這個詞一點不進階,隻是公司将它屏蔽了,但如果這導緻你做技術完全不考慮成本,隻追求讓你激動的技術細節,或者隻做你感興趣的技術方向,那其實是不成熟的表現,你做的事情可能也難以被業務認可。
如果你想往更高層次發展,成本意識是一定要培養的,可以了解一下人力成本、機器成本、以及接入二方、三方服務的外部成本,了解這些成本後,再算算産品年營收是否能覆寫這些成本,如果想繼續加人,那明年産品營收相應要翻多少,現在市場空間允許産品翻這麼多嗎?如果想提供更好的服務,要加機器,那麼你的業務方是否會因為服務變好變得更多?衡量業務方增多帶來的價值一般從訂單價格,MAU 來看,如果服務外部,直接看價格是否覆寫成本就行了,如果服務内部,就看 MAU 是否值得投入這些機器成本。
然而也不能隻看錢,市場佔有率也很重要。如果 Chrome 對研發投入隻看年營收,那現在 IE 估計還是主流浏覽器。其實 Chrome 在确立霸主地位後,對谷歌産品生态的打通、W3C 的話語權、開發者吸引力有很大提升,這些看不見的影響面難以直接轉化為金錢來統計,是以如果你認為産品市場佔有率的提升可以帶來長線價值,那麼也可以把市場佔有率作為目标之一。
最後經濟視角也不僅僅讓我們停留在算業務帳上,經濟學的邊際收益理論可以指導我們優先做邊際收益更大的事。目前業務産品矩陣中,拓展哪些産品可以快速彌補不足,如果做技術優化,優化哪些子產品帶來産品收益、可維護性收益最大,如果時刻能想清楚這些問題,那每年的産品、技術方向就不會跑偏。
總結
總結一下文中提到的三個思考方向,其實是職業生涯發展中可能遇到的三種問題。
工作時間久了就會發現,哪怕依然有學習的激情,但保持剛畢業那會的學習方式已經難有突破了,你會發現:工作實踐用到的知識不會很多,反複讀或者寫入門技術文章,隻會讓自己停留在校招生的技術水準;自己所處的職業也限制了進一步發展,你需要思考怎麼打破職業天花闆;甚至隻鑽研技術領域都是不夠的,大家都在談成本,你在談技術,天然就不在一個頻道上。
本文也給出了對應的三個解決方案,知識分類 幫助你解決反複學習無用的、入門知識的問題;領域深耕 幫助你解決職業天花闆的問題;經濟視角 幫助你解決技術單一視角的問題。
其實職業有天花闆很正常,沒有哪個職業上升通道是一路無阻的,但人是活的,你可以逐漸改變自己,在适當的時候多看看業務、經濟問題,學習知識也不要僅停留在表面,雖然這些你工作中可能根本用不到,但這其實是悖論,因為你沒掌握某些知識,是以也沒機會接觸那些工作,想打破悖論隻能從痛苦的自我打破邊界開始。
與一般前端職業規劃不同,我并沒有說很多前端領域專有名詞,或者點名要學哪些架構,因為我覺得人之間智商差距并不大,必須掌握的知識工作幾年都能學會,而真正能拉開人之間差距的,不是智商,而是學習方法,或者學習路線,如果你把時間用在錯誤的地方,或者錯誤的階段,終将積累成巨大差距。
希望我的思考可以對你有幫助。
