前言
前段時間跟一位前輩聊到前端職業發展該怎麼去規劃這個問題。他說到的其中幾個點我覺得非常好:
- 第一是要有清晰的自我認知,知道自己在一個團隊或者在一個專案中能發揮怎樣的價值,不驕傲自大也不要妄自菲薄;
- 第二點是無論做什麼都需要勇於承擔,不要害怕任務艱鉅自己無法完成,做得越多你收穫的也將越多。當然不是指一些機械重複的完成任務,要帶著自己的思考;
- 第三點是任何事情都需要規劃,任何的能力和價值的養成都是階段性的積累,在正確的階段做正確的事,計劃對應階段,每個階段做每個階段該做的事,你的提升和成長才是最快的。
第三點我尤為認同,也跟他深入聊了一下關於前端開發的職業生涯分哪些階段,在每個階段應該做什麼樣的努力。
第一個階段:入門階段(1-3年)
階段目標:這個階段我們的目標就是對純前端的內容能有一個清晰的認知。能夠無障礙找工作,四五次面試能拿到2-3個offer。
入門階段,就是剛剛入行不久,對前端開發有一點認識,會用基礎的前端技術和簡單使用前端框架。這時候也能開發業務,但也僅限於開發業務 —— 俗稱“頁面仔”、cv工程師。這個階段初期開發的大部分時間在面向搜尋引擎。
這個階段對前端的認識很不全面,技術上既沒有廣度也沒有深度。前端相關的東西都知道一些,但是如果真正深入去聊的話會發現是一知半解。去面試時什麼都能說上兩句,但是一旦面試官多問兩句就會變得支支吾吾。技術棧不夠完善和系統,學到的和用到的知識沒有整合起來,學的東西大多隻是為了當前工作開發去學,工作過程中也只是完成就行,不會想為什麼這麼做,或者不會想更好的解決方式去完成業務。
那麼處於這個階段該做些什麼呢?
- 從任何地方汲取前端相關的知識,包括但不限於:影片教程、技術書籍、部落格;
- 把前端的相關技術和基礎詳細瞭解清楚,垂直方向深入。搞清楚前端是做什麼的,完成不同的前端工作有哪些方案可以選;
- 瞭解各種框架的本質區別,不要求全部框架都精通。做到“一專多熟”,選一個自己常用或者自己感興趣的框架深入學習,深入一點了解某個框架,做到這個框架無障礙使用,有條件最好能瞭解一點框架原始碼;
- 瞭解http協議相關知識、瀏覽器相關知識。
第二個階段:全面發展階段(3-5年)
階段目標:擴充套件自己的知識面,對專案結構、專案的週期、研發週期等這些上層的東西有一定了解,慢慢了解接觸管理工作。
這個階段業務已經寫得很熟練了,對自己工作的行業有了一定認識,再去同行業得公司工作時,積累的行業知識開始發揮作用,能結合自己對行業的瞭解和業務去進行開發,也有一定的技術廣度和深度,能獨立完成專案的構建和一些基本架構,對業務需要用到技術能進行一定的選型。
在這個階段我們有應該做哪些努力呢?
- 擴充套件知識面,比如:後端、伺服器、開發工具等方面的知識;
- 學習webpack、docker、Linux等,能夠對整個專案的構建過程有一個比較清晰的認識,能從零獨立搭建專案;
- 提升自己的一些軟技能,比如:表達溝通、時間管理等;
- 對於自己工作的行業,可以做一些深入瞭解,瞭解自己工作的行業中,前端開發有哪些共性和特點,怎麼結合行業特點和業務去完成開發工作。
第三個階段:高階前端開發 / 前端leader(5-7年)
這個階段你已經屬於高階前端開發工程師了,這時候一般有兩個方向:
- 對於喜歡搞技術,不喜歡管理掰扯的人,你是團隊中的主程,前端團隊中的主力開發,負責團隊專案的架構方面的東西,或者一些開發難點的攻堅;
- 另一個方向就是,團隊的管理者,管理一個前端開發團隊,負責專案的整體規劃和開發進度的把控。
到這個階段的前端各方面都已經非常成熟了,有完善的前端知識體系,整體專案中,不管是前端部分、後端部分或者一些部署運維的東西,都有比較好的瞭解,能夠同各個環節同事進行對接協調。
那麼到了這個階段,我們還要做些什麼呢?
- 這個階段,你應該對整體的前端有比較系統的認知,這時候你工作基本都是管理,管理專案或者團隊;
- 應該有自己的作品或者產出:不論是開源作品、部落格或者外掛等都可以;
- 收入不單單依靠工作薪資,你對前端開發或者你工作的行業都有自己比較清晰系統的認知,這時候你可能會有自己的相關副業(這個因人而異)。
第四個階段:前端架構 / 團隊領導(7-10年)
到了這個階段,如果你還在前端行業,那麼你要麼是一個行業大牛,要麼是團隊領導。這個階段的工作方向就是管理和架構方向。當然如果你只是想有份工作,隨便做做前端有點收入,保持躺平狀態那就不在這些範疇了。
一些建議
- 學好JavaScript原生的知識。如果你想長期從事前端工作的話,掌握好JavaScript是一切的基礎,不管是對於你學習其他技術還是框架來說都是這樣;
- 養成多看原始碼的習慣。看不同框架、庫等的原始碼可以讓我們更多地瞭解別人是怎麼寫程式碼的,學習別人寫的思想和方法,這些思想和方法你會發現在很多地方都是通用的;
- 可以的話參與一些開源專案,或者自己做一些開源的東西,再或者可以保持寫部落格的習慣,這些都能更好的幫助自己更好的掌握和梳理自己的技術棧;
- 避免做重複的事,多封裝和抽離,不管是方法還是元件。長期保持你後邊做專案會非常有效率。
寫在後面
那麼我們怎麼判斷自己當前階段是否做得還不錯呢?
- 去面試,看自己在面試對應階段的崗位過程中是否順利,能否比較高比例地拿到offer。
你覺得自己屬於哪個階段?
你覺得每個階段我們有沒有更好的方法去提升自己?