彈指一揮間,畢業已經三年了,昔日的小鮮肉變成上了年紀的小夥子,真是有些猝不及防。站在時間的分岔口,思緒萬千。從事了三年的前端工程師,這一路是如何走來的呢,在此作個總結,也給初入前端的新手一點參考。css
在大學期間,個人技術並不算突出,資質平平。以致於參加百度、360的校招都被刷了。因此畢業後就進入了北大方正這樣的大型國企。但願能從大企業中習得一套軟件開發之法。前端
這期間我完成了從學生到軟件工程師的轉變,知道了標準的軟件開發流程是怎麼回事。簡單說就是「步入社會」了。vue
個人崗位是前端工程師。在2013年,seajs已經小有名氣了,可是咱們並無用,總體開發模式仍是原始的刀耕火種。一個jQuery做爲基礎庫,整站的js都用<script>標籤來引入。當時的後端是PHP,也沒有先後端分離啥的,代碼的目錄結構就按照PHP框架的來組織,模板固然是後端模板。node
至於代碼的壓縮合並,那時候也尚未grunt/gulp,我記得是用了一個客戶端小工具來壓縮過代碼。react
頁面也都是我切的,這個值得說一說,由於當時咱們的項目要同時支持PC訪問和平板電腦訪問。因此就用了當時比較流行的響應式設計,即不一樣設備使用同一套頁面。那個時候就和Android/iOS的webview開始打交道了。踩的坑真是很多。webpack
爲了學習流式佈局,我每晚都抱着張鑫旭的博客看,他css方面的文章不少,我基本都看了不止一遍。根據學到的東西,用百分比單位+inline-block流式佈局+媒體查詢,咱們的項目在我一個新手的嘗試下,成功的兼容了各類設備。那個時間是成長最快的,也是很充實的。web
可是過了新鮮期,我很快就感覺到了與國企的「水土不服」,國企的工做節奏是拖沓的,而我是血氣方剛的,真是水火不容。有段時間我一直爲項目的事情着急上火,可是其餘人卻不爲所動,任憑項目一再延期。要知道在互聯網公司,延期是很嚴重的事情,而在國企,簡直是屢見不鮮。面試
另一方面讓我不爽的就是,我沒有可交流的對象。部門只有我一我的作前端,做爲前端新人的我此時是很渴望汲取知識的,常常跑去參加w3ctech組織的分享會。然而在公司內卻沒有一個能夠交流技術的人。我甚至不知作別人家公司的前端都是如何工做的,我到底算不算一個真正的前端。express
叫你一聲前端你敢答應嗎?我不敢。因此在不滿一年的時候,我就離職了。redux
離職後個人目標很明確,就是互聯網公司,工做強度越高越好。因而就加入了當時正處於虎狼之年的360.
以後個人工做是很充實的,看到了更大的世界,知道了大型互聯網公司的前端都是怎麼搞的。一開始有成銀大神帶着,後來又跟@墨塵頻繁接觸交流,成長很快。尤爲是奇舞團的每週分享,我基本每期不落,吸取到了不少知識。這個時候,我纔敢說本身是一名前端工程師了。
公司有不少大牛,也有不少現成的工具能夠用。而我當時只是業務線上的一名小小前端,沒有機會可以和大牛們一塊兒造輪子。從技術框架上看,我當時開始接觸了angular,requirejs和seajs也有所研究,當時因爲微信H5遊戲開始火爆了一陣,還接觸了一下開發H5小遊戲,學了學cocos2d-js,不事後來H5遊戲的風彷佛是刮過了,我也就沒再深刻cocos2d。
當時也有些需求是要作手機上的頁面的,因此移動端的項目也作了一些,當時也沒有如今比較成熟的rem方案什麼的,切圖須要有些額外的技巧,好比字號大小就是約摸着寫,看上去差很少就行。
mvvm開發模式以及模塊化開發,是前端發展歷程中比較重要的兩個里程碑,有幸本身沒有落下這兩個關鍵節點。
在我敢認可本身是一名真正的前端工程師以後,又開始有了別的想法,總在大公司作一個零件有點沒勁。此時我迫切想幹的事情就是,靠本身的力量去架構起一個項目的前端。因此除了各個流行框架,我還研究了一些前端工程化方面的東西,grunt嘗試了一把。
感受準備的差很少以後,我又開始蠢蠢欲動了。
出於一些很現實的緣由,我加入瞭如今的公司,一家比較成熟的創業公司。兩方面緣由:1.開得起工資,2.前景不錯。畢竟,北漂了兩年了,我也該爲本身在北京落腳作一些準備了。
加入如今的公司後,個人定位再也不是大型機器的一個零件,我須要對公司的前端擔負更多的責任,由於我已是一個老鳥了。因而個人思考方式也必須發生變化,之前不求甚解的知識如今也必須搞明白,而且更多的從項目總體上來考慮問題。
我開始承擔面試工做,開始帶新人。時刻思考着如何能利用多餘的時間來作點事情,給公司的前端工做帶來實際收益。
在技術方面,自由度也比較大了,能夠嘗試一些新的東西。首先是mvvm的大規模使用,若是之前使用angular只是走馬觀花的話,那麼如今是在千萬級pv的大站點施工了。因爲咱們的網站還需支持IE6(主要用戶是老師學生,沒辦法~),因此採用了可以支持IE6的knockout。外加requirejs以及knockout的amd-helper插件,也搭建起一套模塊化開發框架。
在移動端項目上,其餘同事已經開始使用vuejs,使用webpack打包。尷尬的是,我對這二者興趣極大,可是一直沒能參與到移動端項目中去。
去年開始在公司推廣sass,由於以前還一直是手敲css的。另外構建流也用上了gulp,來作一些項目上線的構建工做。
因爲ES6也日漸成熟,並且咱們有些項目也是不兼容低瀏覽器的。因此前段時間開始在項目中使用ES6,配置babel來編譯,雖然如今使着還不是很熟練,但也總得跟上潮流不是。另外,咱們項目中jQuery代碼已經幾乎沒有了。
關於nodejs,本身業餘也在學習,今年年初用express框架寫了一個團隊內部用的小項目。話說nodejs這個玩意吧,雖然我以爲前端都得會點,可是若是沒有項目驅動,要寫nodejs的機會仍是不多的。
如今比較流行的東西,沒用上的一個就是react了,由於如今尚未合適的場景,並且目前的框架也能知足業務須要。可能得之後有功夫了再嘗試了。只是不要等我用的時候就發現過期了就行。
這就是創業公司的誘人之處,能夠盡情嘗試各類新技術。總之如今的狀態我仍是挺享受的,手中忙碌,心中平靜,腦中計劃將來。
發現這麼多年本身折騰的仍是挺多的,本身還在成長的道路上慢慢前行,學習的腳步一刻不能停。
若是要我給新手同窗們寫點建議的話,我仍是很樂意的。首先前端的知識體系多而雜,因此點滴積累是必要的。在我是新手的時候,有一個習慣幫了我不少,那就是寫博客。畢業三年,在博客園開博也三年了,寫博客對你的學習有很大的驅動力,並且要想準確得表達出你的理解,你必須對某個知識點了然於胸,這反過來能增長你的學習深度。
另外就是知識路線,得有一個規劃,大致上來說,這條主路徑不要偏移:原生js、使用jQuery及編寫jQuery擴展、前端模板、前端mvc(backbone)、模塊化開發(amd/cmd)、mvvm開發模式、react爲表明的redux模式。
另外css也是前端的一項基本功,有一些從後端轉到前端的同窗不想寫css,我以爲這樣不行,理解css有助於你去理解前端總體。因此關於css的學習,大致有這些就夠:運用css完成頁面、css基本原理(看w3c標準文檔)、sass/less等預編譯、架構可維護易擴展的整站css。至於css界新出的一些東西,好比OOcss、css module,我也還未研究,這些感受是錦上添花的,能夠先放一放。
nodejs的話,倒也不是最迫切須要學的,我看一些新手同窗,js/css還未熟練,就撲到nodejs上,這就有點捨本逐末了。若是有餘力,在學好前端的基礎上再去碰nodejs。
PS.除了寫博客外,我還在寫本身的微信公衆號,內容是技術以外的一些思考,有興趣的同窗能夠關注哦: