《前端工程師職業規劃》轉自小爝分享

《前端工程師職業規劃》轉自小爝分享

5 人贊了文章

大家好,今天的live主題是分享一下《前端工程師職業規劃》這個主題,主講人是我,但是我還是把主演寫成了芋頭和jasin yip,jasin yip真名叫葉俊星,芋頭是在杭州大搜車擔任前端leader,架構師,葉俊星則是在美團擔任資深前端開發工程師,他們兩位都是知乎比較活躍的前端領域問題回答者,也有著豐富的職場經驗,相信在我分享完畢後,通過我們的QA和問答,他們能給大家帶來非常多的職場啟發。

ok,那麼我就正式開始我們今天的主題,第一部分,我給大家簡單說說我感性和理性上對前端工程師的職場規劃的一些見解。

大綱:

開始之前我們回顧一下,我們這次live的一個大綱,能夠幫助大家解決什麼問題。

一共6個部分,循序漸進的把我的一些對前端職業的理解一一道來。

在第一個部分,我會講解一下前端工程師目前的一個職業現狀和前景,前端開發本來就是一個比較新的職業,他的發展非常快,而且技術更新迭代也非常快,從2010年之後才開始有的這個崗位名稱,我印象里還是淘寶第一次有了這個崗位分工,在很久以前,前端崗位其實都是由後端開發和設計師一起完成的,早些時候,前端的工作也非常簡單,頁面交互也不複雜,web1.0的時代前端經歷了幾個階段,從css1.0到2.0,從table布局到div+css,後來經過標準和瀏覽器的升級進化,js經歷了幾個utils類型的框架庫的演變,從prototype,moontools,dojo,yui時代到jquery1.0,2.0時代,再到css2.0到3.0,再到javascript的es3升級es4,甚至後來的es5到es6,每一個工程師的技能樹都是跟隨著瀏覽器和標準的進化而進化,設計模式和前端模塊化還有前端工程化從2012年開始步入歷史舞台,requirejs,seajs等,還有grunt,gulp,到後來browserify,rollup,webpack等等,而從2013年開始興起的mvc,mvvm,從最開始的backbone到angularjs到react,再到現在國內非常火爆的vue,前端工程師這個崗位每天,每周,每個月的技術都更新迭代的非常快。這就是目前前端開發工程師面臨的一個職業窘境,包括對前端人員的全棧技術要求,用戶體驗,甚至審美要求都是越來越高的,前端開發行業未來的前景到底如何,在這一部分會給大家一個引導。

第二個部分,前端工程師的專業能力差距在哪,為什麼我是初級前端,你就是中級前端,我是架構師,他就是資深開發,當然除了公司不同,分級不同之外,是否有統一的行業標準來規範這些專業能力層級呢?如何彌補這些差距呢?一個前端工程師到底需要掌握什麼才算是合格的前端工程師?在這一個章節我會給大家帶來我的一些看法。

第三個部分,從我入行以來,前端工程師的學歷,專業背景都是一個迷,學校沒人教,單位沒人帶,完全靠野生路線自由發展,我身邊有設計師轉的,有學法律的,有學語言的,有學醫的,也有學管理的,也有計算機專業的,基本上是各種你能想到的專業都有成功轉型前端開發工程師的案例,不同背景的人,應該如何入行,他們對自己每個階段的定位又有什麼差別?在這一章節會給大家帶來幾個我身邊的案例,和我自身的一些經驗。

第四個部分,前端如何少走彎路,說白了還是要有學習方法論,針對前端開發行業,什麼樣的方法論最適合你自己,肯定都要結合每個人不同的背景和經驗,但是還是會有一些可以抽象出來通用的方法,我在這個章節會給大家分享一下我學習的方法論和經驗,以及幫助大家找幾個典型的例子或者我每一個階段學習的方法論給大家舉例。

第五個部分,職場晉陞,我們分2個部分來說,第一部分就是那些不正規的小公司,沒有職級評審,如何在這種環境下晉陞自己,還有一個就是在大廠中,有標準的職級體系,給大家揭秘大廠中職級晉陞的套路和標準以及方法論,還有我也有幸參與過一些公司內部的評審,也會以我個人經歷來給大家分享一些經驗。

第六部分,我會給大家分享一下,我是如何給自己進行職業規劃的,這也是面試時很多面試官會問的問題,最後還會邀請芋頭和葉俊星進行他們的職業規劃分享。

最後,我還給芋頭和葉俊星每個人準備了5個題目,讓大神們給我們解答一些,我認為對大家幫助較大的問題,當然也包括回答大家開始前後的一些QA。

part 01:

現在開始第一部分啦,說到職業,那麼肯定是以公司為單位,公司里又以團隊為單位,那麼一個前端團隊就是前端工程師的職場,在團隊中團隊的階梯決定了你的職位高低,薪酬高低,包括專業能力的高低,負責的業務和技術的偏向,這對於做過team leader的人來說還是比較好了解的,發展瓶頸也很簡單理解,當你處在一個前端團隊中的時候,不同階梯中的工程師如何跨域當前層次,就是你的發展瓶頸。

第二頁:

從團隊的角度來劃分,一般的團隊分為初中高,資深專家,架構師,項目負責人這幾個通用的階梯吧。

每一個階段的開發人員,很多公司劃分起來都是不一樣的,有些公司硬性規定工作年限,有些公司可能放寬工作年限,更多以在公司內部的貢獻來分層,俗話說的拿苦勞來堆,還有的公司比較隨意,老闆說你是什麼就是什麼,一般這是在小團隊,還有一些大廠,無法人治的時候,則會使用技術委員會的方式進行職級評審,或者在面試的時候就決定了你的職級。基本工程師的分級機制的由來就是這幾個手段。

所以不難看出,在技術紮實的前提下,工程師在一家公司的職級和職業發展好壞,技術能力僅僅只是係數之一,而不是100%。更多的人可能是靠運氣,或者耐心,或者影響力得到的高職位,或者說,一些人更喜歡錶現自己,領導更能發現自己,才得以晉陞步步高升。這是職場現狀,其實不僅僅在前端,任何團隊,技術的非技術的,都會是這樣,但是技術崗位,技術能力是准入門檻,門檻相對高而已。

而具體每個崗位的能力模型,我會在第二個部分,詳細講解,這一部分只說職業現狀相關。

從階梯角度來看,發展瓶頸我個人認為分幾個維度的評判標準,前端的技術能力可能是50%,後端能力可能25%,業務綜合素質能力可能又是25%。這也是為什麼,有些人會很困惑,這哥們某一方面的技術深度並不如我,但是為什麼他管理我,而不是我管理他,因為團隊屬性決定了,你要和外部團隊交流,有技術,有運維,有產品,有運營,如果只是在前端某個技術領域專精,比如性能優化,比如前端模塊化,比如代碼抽象,設計模式,甚至說我對nodejs的每個API都非常熟悉,團隊里沒人比我還厲害了,我做運營活動頁又快又bug少,我在team中最會和產品撕逼,再或者說我對代碼重構非常了解,或者我對如何編寫一個視頻播放器,尤其是編解碼部分的細節實現原理無人能及,再比如說我是架構組的核心人員,我專門給大家提供抽象的web組件或者插件。

每一項專精領域的能力只是你立足團隊中的基石,甚至說,leader對你的預期就是這樣,T字形人才的發展,都是深度和廣度並重的,這也是為什麼新人,專精了某些技術後,浮躁的表現之一,但是把你換一個領域,你就歇菜了,初中級別可能這樣就算ok,但是中高級和資深前端,一定都是T字型的,在某一領域專精,其他領域和綜合素質又非常優秀,把他扔到一個沒接觸過的行業中,也能快速給出解決方案的人,這些能力可以鍛煉嗎?肯定是可以的,比如後端能力,業務能力,通過看書自學,或者和兄弟部門進行交流甚至啟一些業餘項目都是可以鍛煉自身能力廣度的方式。

目前前端職業現狀就是,精通一門的人少,精通多門的人更少,有業務能力的那就更更少了。所以這也是為啥初級前端不好找工作,中高級前端又迷茫自己無法晉陞,高級前端根本招不到的一個現狀。

很多公司在招聘的時候,軟技能和項目經驗可以快速幫你建立職場優勢,比如你在linux下可以無阻礙開發,比如你之前有過相關領域項目經驗,很多業務是之前上一家公司都做過的業務,上手起來領會需求非常快,一些名詞不需要給你再科普。再還有就是溝通能力,無論是團隊還是朋友,或者情侶,也沒人願意找一個悶葫蘆一起工作。回想一下,你的領導比較信賴的下屬或者重點提拔的下屬,哪一個是半天打不出一個屁的主?

最後說一下前景,前景分兩個吧,有些人覺得前景就是錢景,money,有些人覺得做自己喜歡的事,能夠鍛煉自身技能,錢不錢無所謂,我是個富二代。每個人對前景的定義都不相同。我分2個層次來理解,想獲得職位,money的人,性格不保守,可以選擇創業公司的一些崗位,性格保守的可以選擇在大公司走正常晉陞路線,技術管理都可以。而想獲得改變世界能力的這部分工程師,性格保守的可以選擇自己業餘維護開源項目或者個人項目保持自己的成就感,激勵自己前行,性格偏激點的可以找人合夥創業,技術創業等。

回到一開始說的,如何突破瓶頸決定了你能夠接觸和看到的前景到底是什麼樣,每個人階段不一致,看事情和做決定都會千差萬別。我舉個實際的例子,你先畫一個圓,代表你的所有能力,類似一個餅圖(我可以拿紙筆畫一下,反正直播),然後你想你的這個圓原來越大,那肯定要在你所有能力下,先有一個點的突破,這也就是叫 深度優先,當這個深度突破了你之前的深度時,你就會發現新的世界,那麼瓶頸也就自然突破了,整體能力就會有一個對應的提升方向。

還是拿前端舉例,我們對代碼重構非常感興趣,買了幾本重構的書,代碼大全,設計模式,函數編程,深雕細琢的系統學習之後,我突破了我之前代碼組織的能力,那麼我可能就像手裡拿了一個鎚子,看什麼代碼都想重構釘一下,釘完了會發現,哎,我對整個代碼的流程又有了新的認識,在重構的基礎上完成了幾個性能上的優化,哎?好像貌似我在重構的時候還可以重構一些測試用例?代碼注釋,哎,代碼注釋是否可以拿工具生成?順便又了解了一下jsdoc相關的內容,重構了幾個同事的模塊或者自己以前的模塊,發現有不好的地方,又是一次學習。可能你會說,那你的意思就是去學重構唄?當然不是,我再舉個例子,比如說一個前端從來沒寫過curd的後端介面,他可能就不太會理解,為什麼要做前端靜態化,因為他不知道介面背後的邏輯是要去拿緩存,緩存不命中的時候,要去讀資料庫,資料庫nosql和關係型數據怎麼選型等等一系列知識,他可能看後端,就是一個黑盒,那麼肯定不理解靜態化和非靜態化本質的好處,減少消耗最好的辦法就是什麼數據都緩存起來,當數據有變化的時候通知到緩存做更新。如果理解了這些,那麼前端的什麼自定義事件啊,全局廣播啊,不都是換湯不換藥么,反之你理解了前端的通知,理解起來後端的通知,就會更好理解一些。

說了這麼多還是,突破技術瓶頸,能力瓶頸的方法,就是深度優先,當深度深入到一定程度,廣度自然出現在你眼前。

對前端工程師的職業現狀分析和前景,以及如何突破瓶頸部分我就先說這麼多。

part 02

前端工程師的專業能力差距,其實說白了,就是專業能力模型,上面說了現狀和如何突破瓶頸的問題,下面說一下具體的前端能力模型,素質模型。

第二頁:

前端工程師的能力和素質模型我分了4個部分,其中包含了前後端的能力關鍵點,再一個一個說明之前,我先看一下,之前我給我自己部門的同學指定的一個分級要求:(見項目兩個xlsx)

我們過完這2個對工程師的一些能力模型的標準要求後,應該就對我所說的這4個方面,前端,後端的開發能力,運維能力,協作能力,軟技能,以及對行業的影響力,有一定的理解了。不同的公司和團隊,能力模型要求都不一致,但是我列舉的這2個例子,希望大家能夠理解其中公司對人才的要求,以及大家專業能力最後產生的價值,對公司的體現,以及公司對你能力的認可,結果反饋是在什麼地方,有一個初步的思路了。

part 03:

不同背景下的前端工程師如何自我定位和成長,這是一個非常有意思的話題,我簡單歸類了幾個角色給大家看一下:

1,非科班的初學者,或者跨行業想進入前端領域的人,沒什麼計算機背景,沒接觸過編程的人。

其實我也算是這一類人的一個典型,我大學是學藝術的,雖然專業是平面設計,也有設立網頁設計這門課程,但是其實和現在定義的前端開發工程師來說,那時候學的東西簡直什麼都不是。

這一類的人如何給自己一個正確的定位呢?我覺得通用性的我們分析下來,如果把前端當成自己的一門吃飯手藝,那快速切入這個領域的還是css+html,我不建議上來就學javascript,後端語言這一類的東西,雖然很多人說,這樣你根本找不到工作,但是我沒什麼太好的辦法,這一類人從一開始就輸在起跑線上了,無論你是去培訓機構,還是自學看教程,這是必須認清的一個現實,通過學習簡單的css和html,可以快速的在文本編輯器里開發出在網頁里現實的各種內容,通過不同的標籤和樣式,實現之前從來沒接觸過網頁製作的人看來非常有意思的效果,比如一個表單,比如圖文展示,比如簡單的一個靜態的個人介紹,甚至個人網站。如果覺得自己對這個有興趣,喜歡,愛好,那麼下一步才是開始深入的學習,如果不感興趣,快速止損也是不錯的。

接下來就是正式入門,看了一些html和css的簡單教程,搞定了開發環境,或者說裝好了subline或者dreamwear這一類工具後,我建議沒基礎的初學者幾個取巧的學習方法。

1,找帶入門教程字樣的視頻,培訓課程,書籍等,只看目錄。看上7 8個之後,找到他們的並集,確認真正的入門目標。

2,去招聘網站,看用人單位的招聘需求,記住只看初級崗位,只看小公司,甚至只看二三線城市的公司(不是人人都在北上廣),看一下美工,網頁製作,或者前端初級程序員的招聘要求,找到他們的並集,確認真正的求職要求你掌握的技能樹。

3,確定了要學習的目標和求職目標,開始把每一個不懂的名詞,全部匯總起來,一個一個的通過搜索引擎,了解掌握他們的意思,也許一時半會理解不了,但是看個大概應該可以,切記,搜索的時候帶上,入門,新手,深入淺出,等字樣,這樣搜到的內容多半你都能看懂。

4,買書,紙質的,我這裡推薦一些實戰型較強的書,當然,選書之前也要記得看書評,看目錄,對比不同入門書籍的目錄,找到並集最多的那一本,買來看。

5,通過概念和名詞解釋上的第一印象,結合書,教程,視頻進行demo練習。

6,學習photoshop的使用方法,下載一些網頁psd的素材,進行『網頁製作』的練習,從靜態網站開始。

7,下載主流瀏覽器,測試兼容性,掌握css hack的用法,看一些css布局的教程,看見一個網頁就琢磨他是怎麼布局的,f12打開看看實現原理。 大概經過這麼一系列的練習,我相信一個非科班,初學者,哪怕不報培訓班,也能夠在短時間內掌握網頁製作這一項技能(大概1-4周)看天分了,也許有人2星期就能達到這個程度。

然後呢,我建議有精力的同學,學習一下javascript的基本語法和jquery的用法,然後就可以去試著投簡歷了,我這裡需要說明的是,簡歷投遞的技巧。

如果你是應屆生或者在讀學生,直接去找實習就好了,我不推薦大家去bat投實習,因為既然你是一點基礎都沒有學習前端開發,以臨時抱佛腳的方式學習,面試上bat的實習生崗位基本沒戲,我當年也是,根本想都沒想過能進百度,阿里。那些單位只是傳說,我非常實際的給自己一個定位,找到一個工作先干著。

我覺得以我個人的經歷來說,這是最優的方案了。我相信在2-3線城市,一個能夠快速實現靜態頁面切換成html的應屆生找一份實習或者兼職或者頁面重構的職位是不難的。如果你還會一點js的基礎外加一些jquery的用法,我相信只要姿態低,找一份糊口的工作是可行的。

以上的方法我在這裡強調下,只適用於非科班,沒計算機編程基礎,完全跨行業轉行的同學,算是一項保底的方案。

然後我們來說一下非應屆的跨行業轉型的一些入門方法論。

真是不湊巧,我剛畢業的時候實習確實是網頁製作,切頁面,但是我做了幾個月就不幹了,回了老家我還是做了學校教的專業,一個做印刷的小公司做傳統廣告美工。

所以到這裡,基本上可以開始下一類人的玩法了,我當初ps玩的非常6,我相信設計師這些肯定都是基本功,網頁設計和平面設計的區別其實非常簡單,1是字體的使用,2是排版的方式,這些互相轉換起來是非常快的。只不過可能設計師不知道,如何把ps里的圖和字,線轉換成代碼而已。

這裡不重複,重複上面的1-7步驟,他同樣適合UI設計師,平面設計人員,我當時也是,在老家做了一個月的廣告設計工作後,投的第一家公司是一個做企業外包站的公司,面試題目非常簡單,給了我一個需求,1小時做一個詳情頁,拿ps畫,然後再1小時製作成靜態網頁。

我相信如果是做設計的,第一步非常簡單可以做到,第二部的話,通過之前說的明確目標練習,也是非常容易達到的。

所以說,在某些公司,頁面設計和靜態頁面開發還是會集合在一個工種上的,當然我說的這是一些小城市,小作坊公司。

如果是正規點的公司的話,只需要掌握常見的一些效果插件用法和css布局技巧,切圖技巧,找個待遇低,沒什麼發展前景的工作還是可以的。

ok,後端開發和科班計算機的同學再往後放一放,他們的定位和成長路線和上面說的野路子完全不一樣。

當你找到了一份真正的實際的前端工作時,無論是美工也好,頁面開發也好,還是初級前端開發工作也好,這是你其實才是你職業生涯的第一站。

後續的你會非常的痛苦,這個陣痛過程可能持續1-6個月不等,到什麼時候結束呢,說白了,當你覺得你製作頁面的時候基本不用過腦子,現成的網上常見效果都能找到js插件實現,瀏覽器兼容經過正式線上產品檢測,移動端和pc端都有過開發經驗後,感覺自己需要開始javascript的學習時,基本你就從一個美工入門到目前大家嘴裡說的,入門級前端開發工程師了,或者說初級前端開發工程師。

熬到這一階段的人,一般是2級分化的,我見過切頁面切上5 6年的,我也見過js一學就學好幾年,也入不了門的人,我相信大家身邊也有這樣的人,而且其實不在少數,我怎麼評價他們呢,其實也不能怪他們,畢竟不是每個人都適合這個行業,他們被淘汰只是時間問題,可能5年,可能10年,網頁製作,我認為,遲早會成為一門像excel或者ppt製作一樣的技能。

好了,不說這麼悲傷的話題了,當你度過了學習javascript的初級階段時,我覺得這時候,這個定位的人,他既有實際的工作經驗(切頁面經驗),職場溝通技巧(團隊配合),常見的代碼管理工具和一些css壓縮性能優化的常識,一些基礎的javascript知識,會使用jquery或者vue開發簡單的業務模塊,對瀏覽器一些新特性,移動端新特性有所了解。

好了,這時候基本就是一個準標準職場初級前端開發工程師了,這時候可能需要1年或者一半年的時間,但是蛻變一定是非常明顯的。

師父領進門,修行在個人,從初級到中級到高級,這些等我說完後端入門前端的一些套路之後,我統一一起講解。

ok,我們回到起點,你現在是一個有過4年科班經驗的計算機專業的學生,或者有過1-2年後端開發經驗的後端語言程序員。

我們分析,你擁有的優勢是什麼,相比較小白來說,你可以直接跳過HTML和CSS的入門學習部分。可以直接跳過javascript的基本使用方法上,只需要關注語法糖部分和瀏覽器API上,而且你的學習能力應該是非科班的至少3-4倍以上。

相比較UI設計師來說,你的ps功底,或者說藝術細菌可能低到令人髮指,當然也有藝術細胞好的計算機系同學,掌握ps這個軟體我覺得肯定是分分鐘的事,找幾篇教程,下載一些psd模板,對著書苦練幾天,我覺得也不是一個非常難的事情。

在校學生應該大概在個把星期的時間就可以徹底掌握上面我說的非科班學生可能需要半個學期掌握的東西,然後你還會佔據數據結構,演算法,計算機原理,高等數學的專業優勢。

所以和非科班同學來相比,科班同學只要大學不天天王者榮耀,真的是太幸福了,畢業可以直接碾壓很多非科班同學,如果你身邊有很多非科班的前端工程師,一定替我抱抱他們。。哈哈。

所以總結一句話,科班生找it行業工作,優勢很大,是必須直面的一件實事。如果你夠努力,夠有興趣,大三,或者大二的你,可以嘗試去衝刺bat或者一二線互聯網公司的校招崗位,面過了是好事,面不過也可以輕鬆進入一些較正規的企業,縮短在那些不專業的公司和團隊浪費的時間。

後端工程師就更吃香呢,因為相比較學生來說,項目經驗和實戰經驗你最大的優勢,你需要的只是在公司內部,協調和一個前端開發工程師,進行工作內容的稍許交換即可。經過幾次實戰的洗禮,完全可以快速在公司內部轉崗或者去面試新的崗位。

但是還是會有許多的坑,比如對photoshop的練習需要下一些功夫,對javascript的原型理解需要下一些特殊的功夫,對於第一語言不是js的同學來說,其他語言的直觀面向對象的寫法,到了js會比較繞,需要多跟專業前端交流和code review。最後就是對細節的把控能力,我不是臉譜化各位,只是我見過很多理科生,後端工程師對前端交互的細節,兼容性,一像素的執著,等這些點不夠有把控能力,或者不care,導致去做了後端開發。

好,現在不同背景的同學,我們現在都站到了同一起跑線了,我們都是初級前端開發工程師。

我們如何從初級晉級到中級?從中級晉級到高級,甚至資深呢?

下面我們可以開始我們下一個章節了,找到最適合自己的技術學習路徑。

part 04:

找到適合自己的學習路徑,明確路徑方向,什麼是明確路徑方向呢?

我也準備一些方法論教給大家,主要是4個明確,我逐一講解。

明確領域:

根據自身所在的領域或者自己感興趣的行業領域,進行技能和成長的抽象提煉。

我舉例子,電商行業,可能需要你掌握支付相關的前端流程實現,購物車,購物詳情頁(評論組件,商家端的富文本編輯器,sku面板,放大鏡,web版IM),商品多級關聯搜索,搜索提示,商品訂單正反向流程。

除了這些可能你還需要知道,大量的促銷活動,前端如何支持那麼多的活動頁面,一些促銷或者活動的cms相關的開發,甚至(cms本身的開發),或者靜態活動頁面的通用組件管理方式。

廣告相關的前端技術,埋點收集統計相關的前端技術等等和電商相關的一些必備的屬於電商行業比較獨有的一些技術解決方案,尤其是前端的。

再舉例子,社交相關的,對圖片,圖床相關的功能開發,比如瀑布流的實現,比如圖片查看器的實現,比如長文微博的實現,當然也包括富文本編輯器的實現,各種評論組件加feed流的實現,同樣通用的,廣告投放,數據收集,用戶識別追蹤,多圖上傳的實現,sso的實現等。

當然有些技術點,並不是某個行業領域中特有的,但是我舉例來說,就是在你所在的公司的行業領域中,和你部門的業務里,自己學會抽象技術點,把這些功能和技術實現總結抽象出來一套方案,當然很多已經是業界統一的標準了,這樣自己短期近期的學習路徑就一目了然了。

明確技能:

這個從2個方面來說,一個端來說,有些公司前端可能是做殼內的工作,比如electron,比如webview內的開發,比如c++做端上的開發,那麼可能你需要就掌握除了前端開發之外一些端上的語言和開發學習了,比如學習c++,學習ios開發和android開發,或者nodejs開發,選對自己工作幫助最大的去學。

除了端相關的還有就是目前團隊的技術棧,如果你不熟悉一定要在儘快短的時間內熟悉團隊所用的技術棧,我這裡不是說會開發,而是說,如果新開一個項目讓你負責,你能否快速把團隊現在的技術棧進行優化,復用,甚至升級的能力。如何快速在團隊中脫穎而出的一個辦法就是快速找到目前系統的缺陷,並快速幫助修復。這也是提升前端架構和工程化能力的一個階段。

深度學習指的是什麼?其實就是對目前已有的工作技能進行深入加強的一個過程,比如我們的架構目前是由許多第三方開源庫進行拼湊組裝的,閱讀他們的源碼,進行bug fix或者升級,製造一些輪子進行局部替換,開發新項目的時候,改變之前的一些架構。這些都算是深度學習,對已有框架做升級我覺得是最有意思的一件事,如果一旦做成,是非常對個人技能點出彩的一筆。

參見面試經典題目:你對團隊最大的貢獻or簡述一個你覺得最自豪的技術成功或者技術實現。

明確目標:

長期目標和短期目標,其實結合上面的領域和技能2個方面來說,已經足夠一些初中高級別的程序員自我進行總結歸納的了。我在這裡特別說一下長期目標的指定吧,我拿我個舉例子,我2013-14年的目標是成為一個業務線的前端負責人,或者技術負責人。2014-16年的目標是在前端領域做出一定的個人知名度。當然,指定完計劃肯定是需要分解目標,把大目標拆分成小目標一步一步迭代的。比如成為前端負責人,首先你得技術能服眾,二來,公司有新業務一定要第一時間去響應和支持,因為只有有了新業務才會有新負責人。。哈哈。比如在公司內部產生影響力,這個套用我大學的做法,就是不斷的加強外接對你的標籤化,大學時候大家對我的標籤就是做私活,做網站找小爝,工作後我的標籤就是,有搞不定的找我,我一直是致力於做一個問題終結者,這在我知乎回答的問題上也可以看出來。比如說要在前端領域做個人知名度,回答問題,寫專欄,加技術群做管理,做live,做外部分享等等,其實都是短期目標,這些短期目標組合到一起長久積累就能幫你實現長期目標了。

我也建議大家前端開發工程師都給自己訂一些1-2年的長期目標,比如學習全棧,自己做出一個獨立web站點,比如學習app開發,自己在一年時間內做一款獨立app,比如說做專業的前端技術博客,公號等等可能對於目前階段來說非常難做到的一個目標制定。

不好意思的說,很長一段時間我的目標都是,今年月薪要超過XXX,明年月薪要超過XXX。如果達不到,我就會選擇決策和指定計劃來達到,總之目標感非常重要,除了公司的,一定要自己明確的長短期目標激勵。

明確定位:

一個前端工程師在自己團隊的定位,其實之前我們過的職級和能力模型已經說明了常見的一些階梯職責,這裡有一個小技巧,我相信很多leader,都是希望自己的team的人能夠自主進步的,所以首先要先跟自己的leader明確自己在團隊里的定位,職責,分工。

在團隊對你的預期上,做到超出預期,可能很多人說,怎麼超出預期啊,這個很難做啊。其實簡單也困難,超出預期確實非常難,但是也不是沒有辦法。首先,我們先定義什麼是超出預期,超出預期就是你的工作結果和表現超出了你目前團隊對你的定位。

很好,如果是一個業務性團隊,承接更多的業務和項目管理,時間管理工作,是不是就超出了leader對一個普通開發的預期?

如果是一個技術型團隊,打造團隊品牌,提升團隊技術氛圍,主動進行創新和已有項目優化,算不算超出預期?

如果這些都有人在負責了,那很好,你有了目標和榜樣,跟他們交流,參與進去是否也算超出預期?

初級工程師的職責是完成業務模塊的簡單開發,那麼獨立負責一個模塊開發算不算超出預期?幫助中高級工程師帶其他初級工程師進行開發和技術攻關也算是超出預期。

其實超出預期很簡單,就是多做,少推諉,手裡,眼裡有活而已,相信我,我這麼多年工作的經驗和秘訣其實也就是這個。

搞定自己的定位,明確下一個定位的要求,不斷的超出預期,即可。

ok,說完了這4個明確的具體方法論,我相信,初中高級的工程師都能找到適合自己的成長學習路徑了。我不懷疑每一個工程師的自學能力,如果自學能力不合格,是不可能走到這一步的,但是如何突破自我,確實是真的需要人來點破和指導的。

part 05:

有點啰嗦了,下邊我們進入前端職場晉陞環節,這個我其實也比較有發言權,我面試的單位大大小小也有10幾家了,在公司參與晉陞也有3,4次,幫助團隊程序員晉陞培訓和ppt review也有好幾年了,最近也進場參加公司內部的職級評審工作,當然現在評審的不僅僅包括前端,也開始包括後端開發,數據推薦搜索等其他技術崗位了。

我相信在這一章里,能夠幫助大家看透,看明白到底什麼是職級晉陞,晉陞的策略以及原則,還有如何增加通過率的方法。

我總結了個5個點來進行說明,述職技巧,述職材料的通用組織結構,答疑技巧,評審標準以及評委視角,當然這都是我的一些個人經驗哈,大家選擇性參考。

首先說一下述職的技巧部分:

首先述職的時間,有些高級崗位是在30-40分鐘,有些初中級崗位可能是在10-15分鐘,這個不同規定不一樣,但是大體上的原則都是越重要的崗位給你的述職時間就越多。

然後是演講技巧,對於演講者來說,首先最重要的是你的氣場,尤其是技術崗位的述職者,一定要非常有自信的展示自己的材料和工作成果,如果自己都磕磕巴巴,說不明白自己要說的,這個是最要命的,我遇到不止一個工程師,明明是高級水平,就因為最笨,導致評不上。非常吃虧。

這裡提幾個建議,如果你是teamleader,一定要定期鍛煉大家在公開場合說話的機會,組內的分享和溝通,項目協調等安排每一個開發都參與進來,輪流有機會嘗試,在眾人面前說話的膽量,甚至包括在陌生人面前說話的膽量。

不是危言聳聽,很多程序員這一關的能力差到令人髮指。。

還有就是演講前,一定要做逐字稿,非常重要的述職,需要自己提前一到兩周做試演練,找組內,組外的人來進行預演評審,自己在家對著鏡子練。我就遇到過不負責的teamleader,在開始評審2天告訴大家要準備ppt進行述職,大家只有周末準備的時間,周一來了,練也沒練就去評,能評過就見鬼了。適當的包裝和演講練習非常非常重要。非常重要。

選題方面,也有技巧,選擇的項目一定要是能夠代表你技術實力的項目,如果當前公司的項目不夠高大上,說自己業餘的開源項目也不是不可以,甚至說上一家公司的項目也是可以的。

準備的時候,一定要對項目的技術難點,攻關難點,行業標準,你選擇這個方案的理由,競標過程,一一說明,通過流程圖或者腦圖來進行講解,做到技術人員和非技術人員都能通俗易懂又覺得技術深度夠。(評委可能跨專業,甚至是測試,甚至是hr)。

選題一定要說自己的見解,而不是羅列開源組件,或者直接上code review,雖然有時候偶爾的code review有加分作用,但是千萬不要通篇的code review,聽起來評委非常累,還浪費自己的寶貴時間。

然後我說一下一般的通用述職組織結構和格式:

1,述職人的部門和要晉陞或者評選的職級。 2,個人介紹,包括職業履歷,技術能力的概括,業界內外的影響力,甚至一些出彩項目的羅列,總之就像面試一樣的介紹自己,拿最出彩的說,不要謙虛,不要說什麼我是新入職的,我是什麼職場新人,我工作時間不久,什麼掌握的不是特別熟練,要不別說,要說就說自己的過人之處,切記切記。 3,主要項目介紹。

一般是2-3個人項目的介紹,每個項目應該包含簡單的項目背景,技術棧,團隊組成,是否跨部門,項目相關的數據,你在項目的角色,你的作用,突出你自己,然後開始進行你自己所負責部分的技術講解。

一般講解都是需要配圖輔助的,uml或者腦圖或者流程圖最佳,如果是說架構,就把架構抽象出來畫清楚每一部分的關係,如果是說代碼,一定要把類的生命周期,初始化過程,核心方法,調用以及API等關鍵特性點用圖的方式展示出來。如果說組件或者自動化工程化,性能優化的,一定要把數據,結果,前後方案對比,優缺點分析明白,而且一定要有競品分析。

最後總結和QA,不要說什麼展望未來一類的廢話,直接抓重點,我除了以上的項目,個人的能力之外,我還有其他什麼軟素質,比如跨部門協作,比如參加過什麼技術攻關,創新大賽,內外部技術交流分享,得過什麼公司的獎,拿過什麼個人獎金,團隊獎金,或者專利等,總之總結部分是讓你說自己的其他除了項目外的能展示你軟實力和素質的環節,而不是說什麼未來規劃和甚至個人缺點什麼的。不加分只能扣分。

再然後說一下答疑技巧:

為什麼我們要提前寫逐字稿呢,因為有時候評委可能會打斷你,質疑你,甚至問你部分項目的數據或者一些技術概念問題,為什麼這麼選型問題不那樣選型等各種問題。

所以寫逐字稿的作用就是避免在被別人打斷的時候,自己的思路被打斷,雖然有ppt,但是有時候ppt寫的不一定多,主要是以自己說配合圖來講解,所以如果有了逐字稿,在多次練習後基本是可以做到不短片,不漏核心內容的。

再一個是在回答問題的時候,如果明確的技術點,你非常確信,評委和你爭論時,注意措辭和技巧,適當給評委台階,前提是你能把這個技術原理解釋的非常非常深入和細節,如果你不確信或者說不明白時,可以選擇虛心反問或者認慫然後台下交流的方式來避免尷尬,前提是也要答出自己的一定思路,然後再補充上一個想交流的態度。這樣好處是一來,確實答不對,但是你答出了自己的思路,而來讓評委之後也不要瞎問你他自己不會的問題,因為有的評委可能自己也不知道瞎問你的,那麼下次他再問你的時候就會掂量一下自己到底會不會了,當然這個方法慎用……

如果你的答辯非常有理有據,邏輯清楚,講解的難點讓人明白又覺得有技術難度,一般評委則會轉為問你一些非技術問題,比如你帶幾個人,管理能力如何?跨部門協作或者說你的項目數據,性能指標方面的,所以這些我認為可以當做備選(除了數據部分)其他部分不寫到ppt里,評委問了,你就直接補上,評委不問,在最後的總結部分,自己說出來。

這裡我也給大家分享一下,我15年,應該是2年前在新浪職級晉陞的ppt吧,給大家一些啟發。

(過一遍我之前的html的ppt)當時是在新浪評l3-b和l4-a的2份ppt。

然後我說一下評審標準:

? 仔細分析下,其實一個公司對一個人才的評審機制還是不單純只在技術層面的,你的貢獻,你的技術深度廣度,架構組織以及額外貢獻,說白了就是超出預期的部分,都在評審標準之內。

知道一些評審的標準之後,再對應準備資料可能會更有一些優勢,評審不是小事,有些公司一年一次機會還不是每個人都能輪上,基本屬於上學時候答辯的重要程度了。

說完一般的評審標準,最後說一下評委的視角,通過幾次參加公司內部評審,學習了和看到了一些提問技巧:

1,關注你個人在技術中的重要性。 2,關注你個人在業界的影響力,突出成就。 3,數據,指標,前端的話可能不像後端,那麼性能方面的指標比如首屏,白屏時間,cdn的使用峰值,平均訪問速度,bug率,數等都可以,團隊人數,模塊數,類數,方法數等。 4,是否有架構選型能力,說白了就是對比框架和創造框架的能力。 5,技術價值,為公司節約了什麼,生成率還是開發效率還是帶寬,還是伺服器。 6,溝通還有組織帶人的能力。 7,某一項領域的深入度。

ok,就職級評審的話題其實非常多,這裡點到為止,後邊看是否可以讓芋頭和葉俊星進行補充和分享吧。

part 06:

我個人的職業規劃。

這塊就當我個人的一個總結吧,畢竟每個人的職業規劃都不一樣,我把我的規劃制定方法論分享給大家。

首先通過剛才我說的一堆,其實不難看出,職業規劃都是從小到大一步一步根據目標完成的,說到我未來的規劃肯定要先講一下我的現狀,我個人的從業經歷來說,最開始就是個普通的小前端,從小公司到大公司,是一個我畢業時的長期規劃,大概用了1年左右時間,當時的準備主要是了解大公司的用人機制,技術棧,以及思考問題的方式,看技術問題的角度,這個我一直非常受用。

從小公司到大公司,規劃也很簡單,從初級晉陞到中高級,從中高級晉陞到資深。這個歷程,也是大家一般前端工程師的做法。但是很多人會有個誤區,初級,中級,高級,不是一家公司定義的,而是相對你自己來定義的,行業來定義的,比如如果我在一個小公司,我可能是這個公司的前端專家,去了bat,我可能就是個資深工程師。所以眼光一定要放大到整個行業。所以晉陞這件事,並不只是在公司內部的晉陞,跳槽,換工作也是一種晉陞,換部門也是,換行業也是。

所以也驗證了之前我說的,晉陞等同於一次技術面試。

到目前我這個階段,我也說不好自己到底是什麼級別的前端,可能在某些大佬面前是一個小學生,所以一定要學會,找到行業內的技術標杆目標,和自己不斷做對比,這也是做技術規劃的一個我的根本原則。

到目前為止,我還是比較偏向技術的,但是這1年來我個人更傾向於技術管理,主要原因還是公司需求決定,還有個人的規劃導致。

我在上一家找工作的時候,就面臨了,技術管理還是技術專家的這個抉擇,我後來選擇了技術管理,其實並不是說專家路線不好,不適合技術人員,而是我個人在那個時間段,需要一個管理的機會來嘗試鍛煉自己到底適合不適合,如果不嘗試,說白了,管理和溝通能力也是人素質的一部分,我想突破一下,突破後,視野會更開闊,突破不了,也不會後悔。

實戰證明,我還是比較能夠做技術管理的,當然這些不是我自己說了算的,公司和企業對你的認可才是最重要的,所以既然現在我的狀態就是一個偏向技術管理的程序員。

那麼我下一步的職業規劃呢?其實也比較清晰,人生就像下棋一樣,如果你明確了最終的目標,那麼下幾步就很容易去規劃。我會在管理,或者技術管理的領域找到合適的標杆,這裡就不黑別人了,然後嘗試去做,成功了就更進一步,不成功自己和自己對比,也算是沒有白忙活。

說白了,我的職業規劃,就是不同的時間段,找到自己所在領域的標杆,如果實在突破不了,就換一個領域,深度挖掘一下,總有一條職場的路是適合各位的。

ok,我的職業規劃原則就是這樣。

part 07:

QA環節,我們下面開始進行視頻連線兩位大佬。開始之前先說一下安排。

首先是芋頭,然後是葉俊星,不過我們三個都是同時在線。

然後,芋頭先分享他的個人職業規劃,然後葉俊星再分享他的。

之後我準備了幾個通用問題問兩位大咖:

1,芋頭:

1,是什麼原因促使你進入前端開發行業 2,前端開發領域那些職業路徑未來會更受重視 3,行業經驗能否為求職加分 4,如何給自己的團隊成員進行職業規劃計劃

2,葉俊星:

1,剛畢業的或者初級前端如何能夠進入美團這樣的大廠 2,前端開發哪些技能偏向未來會更有潛力 3,如果下次換工作會選擇什麼樣的行業? 4,還記得第一次公開技術分享的內容嗎?簡單聊聊

最後是我們一起回答一下聊天室里大家的QA。


推薦閱讀:

H5新特性分享
2018年最新,從零基礎到精通的前端學習路線
零基礎如何系統地學習web前端開發?

TAG:前端開發 | 前端入門 |