寫慣了技術類的文章,這種總結和唠嗑型的我基本也就在年末才來一篇。說實話,這種輕松類的文章往往比技術類的要受歡迎的多,因為其閱聽人更廣,看起來也不燒腦。
說來愧疚,這一年其實産出有點低,大緻就寫了不到二十篇技術随筆,特别下半年入職騰訊後就更少有時間動筆了。
但再忙也沒打算摒棄寫文章的習慣,一來是為了自己沉澱,二來也是希望自己能為國内的前端分享出點貢獻——這想法雖然有些滑稽,卻也是我本人确切真實的想法。有時會想着自己能給這個社會帶來、留下些什麼,如果沒有揭露相對論的能力,那麼寫點文章我還是得以勝任的。
就我個人而言,今年發生了蠻多事情,但今天不讨論私事,純粹作為一名前端er來侃侃前端這塊的一些趣事兒,或者說我的一些拙見。

前端的大環境
自從09年 Node 出來後,前端的内容愈來愈豐富,各種技術日新月異疊代起來樂此不疲。
如果你想學習Node,可能會入手《Node.js實戰》一書,然後試着搗弄 Express。殊不知現在有很多人已經玩上了 KoaJS,嘲笑着還在使用 Express 的民工,緊接着是用上 thinkJS 的人翻着白眼談笑風生。
前端自動化工具也是撕逼的厲害,從 Grunt 到 Gulp,從 Bower 到 jspm 和 webpack,仿佛一夜間 Grunt 上那上萬個插件包就都統統過氣。
哦對了,謝謝谷歌和臉書,ng拉起了五花八門的前端 mv* 架構潮,React的元件化概念也颠覆了正常web開發的理念。
還有新面世的ES2015,讓我想到個好笑的事情——babel疊代到6的時候,各大前端技術群裡風聲鶴唳的,因為相比舊版本,babel6的配置變得太多了,又缺乏(中文)文檔,導緻一堆手賤更新又不懂配置的碼農哭暈在地闆上。
另外 Phonegap、React Native、Fuse 等的出現也讓前端日漸滲透進了移動應用端,噢别忘了現在通過 node 還能開發桌面級應用呢。
有人說這是前端最好的時代。
我覺得對前端er來說,這或許也是個挺操蛋的時代——要去了解的東西實在太多了。
前段時間 Aaron 在群裡吐槽,表示近些日子前端的變化讓他都要崩潰了(當然是句玩笑話,真正會讓他崩潰的應該是他當日的豬肉沒賣完)。
有個朋友不久前告訴我,說他買了好幾本小說在看,我當時的表情是這樣的:
原因很簡單——我已經很久很久很久沒有涉獵過非技術類的書籍了,要知道我的書架上每天都有幾本厚厚的技術書對着我說:“還沒把我看完啊?啥時候看我啊?今晚上我好嗎?”。。。我又哪有閑暇時光去看其它的小說。
是以如果現在有張白紙(當年剛畢業的時候,我的第一位上級是這麼形容我的)說他要從事前端的工作,我會笑着摸摸TA的頭溫柔地說道:“請你吃點屎冷靜下好嗎”。

武器或内功
前段時間成立了個分享小組NZOO,大熊在裡頭揮着旗幟帶大夥搞Node,原生的Node。然後北川君站起來了,說他覺得更希望帶動小組直接分享一些現有的主流架構,而非把學習成本花費在原生Node上,原因很簡單——來錢快。
北川君在公司是個上司級的人物,是以很好定位他的思維——一切以開發效率為主、以錢為主。
這并非隻是一個日常觀點小碰撞,我覺得有必要好好思考思考,自己現在在學的是什麼、想學的是什麼。
我在上家公司的時候,給他們部署了gulp前端自動化工程,帶起了sass、avalon 等一些他們沒應用過的、開發快也更好維護的新技術,效果是,顯得你很牛逼 —— 如果你擅長使用一些新穎好用的新工具,那麼常常能很直覺地給項目帶來利益(效率或性能上),那麼這會成為你職場上的一個助力。事實上對于許多中小型企業而言,他們更注重于靈活開發,那麼懂得“班門弄斧”會是一件重要的事情。
對于大公司而言就不一定了,像我現在所處的部門基于曆史原因基本都還在使用 Grunt,有時業務需求一負責你是找不到對應的 Grunt 插件的,會考究你的原生代碼書寫能力——自己寫出一個插件來作為解決方案,而不是去 npm 上搬個擦屁股的救兵。
作為一名老前端,肯定會用過許多主流的工具,比如 jQuery 及其各式插件,比如 Vue 比如 React,但很多時候我們就是那麼習慣性地用着,可能沒想過了解下它的源碼、實作方式——這在我後期想起來是種略為毛骨悚然的事情。
如果說把各優秀的前端工具/架構當作一把鋒利的兵器,那麼閱讀源碼、了解它們的實作方案便是内力的培養。
很多人可能工作了不短時間,但技術不見增長,一個較大的原因還是“懶”——啥功能都懶得自己寫,直接拿起插件生搬硬套,搞的頁面性能差不說,自己也不懂擴充和維護,不知其中一二。
其實說白了,武器的練習跟内功的培養其實也不沖突,你可以一手抓,隻是往往罩杯較大可能沒法一手掌握,會比較吃力,那麼還是建議你審視下自己的職業規劃,是兵器能帶給你更多的利益,還是内功能讓你更強大,然後做出權衡。

如何學習
關于本人“兩年前還在群裡問js對象裡的冒号是什麼意思”的經典範例常常會被群裡的人拿出來做談資笑料,北川這死不要臉的還說他給下屬洗腦的時候還把我當例子了。
今天下午也有個孩紙私聊我問我是怎麼學習的,才能從小白變V神(雖然我牆裂覺得後面加個“經”字才合适)。
雖然離“大神”還有挺長的摸索距離,但。。。咳咳。。。稍微吹下牛我還是可以的。如果涎皮賴臉地總結下我的學習經驗,我大緻會歸納為這麼幾點:
1. 拒絕插件
不要遇到一個互動效果就想着扒個插件來用,想想它會怎麼實作然後試着去寫出來。遇到困難了不着急,參考下别人的插件是怎麼實作的。
個人覺得“寫插件”是每個前端小白要初步進階所必須試着去做的一件事,它對你的提升可以是很大的,不僅僅是有助于你在技術點上的認知,也有利于提升你的JS語感。
2. 加入一個氛圍好的技術群/團隊
如果你身邊沒有這麼一群喜愛技術的小夥伴,那麼找個氛圍好的群加進去吧,讓大神帶帶你或者跟小夥伴一起同步交流,學習起來自然也不孤單,還有人不斷激勵你前行,何樂而不為呢?
3. 多利用時間
“多看書多看好文章”這種廢話我就不說了,但請你不要每天把精力花在看肥皂劇上然後又埋怨沒時間學習。
時間總是可以擠出來的,你可以在你上廁所的時候想想Ajax原生請求怎麼寫,或者像我之前像個傻逼一樣把Node API列印出來拿在路上邊走邊看。
當然也不要把時間都花費在學習上,有時間多陪陪妹子多出去走走聚聚,程式員的日子不應該太壓抑。
不過我也檢讨一下,上周有三天時間沉迷于我廠新遊怪物獵人OL上(卧槽我真的不是打廣告),結果第三天玩着玩着,向來讨厭浪費時間的我突然覺得自己是不是神經病了(反正就這個念頭),接着立馬把遊戲解除安裝了。。。
4. 學!英!語!
不久前很多話題讨論說,英語是最沒必要掌握的課程,建議教育部革除其作為三大主課程之一的身份。對于這批可愛的網友,我建議他們可以去叙利亞好好地旅遊放松下。
起碼就IT行業而言,英語是非常重要的技能,特别當許多新技術出來的時候,基本隻有查閱英文文獻才能找到解決方案(babel6就是個好示例)。
是以如果你的英語能力不夠好,努力地去提升它吧,裝個有道詞典劃詞來看文章,争取能看懂外文的大部分意思。
總之這點不是開玩笑,閱讀英文文獻對于碼農來說是非常受益的事情,另外遇到問題你也得以去 github 提個issue來解決。
5. 多沉澱
試着開個部落格吧,認真地記錄下那些你在項目中遇到的問題和解決方案,或者用心地去查找、梳理你感興趣的技術點然後記錄下來。
它會耗費你一些時間精力,但也能催動你更深入地去了解、探讨某個知識點,鞏固你對它的記憶。也可以作為将來反過來查詢的工具書。
6. 幹掉讓自己焦慮的那些東西
在職業生涯初期,作為小白總會有許多未接觸過的技術盲點,有時候工作來了或者前往面試,都會由衷地擔心起來,為自己知識的欠缺、勝任與否而焦慮。
我個人及其讨厭這種“焦慮”甚至“害怕”的感覺,一旦你感到這塊的壓力,一定要大膽地把它挖掘出來,然後一個個幹掉它。
什麼意思呢?比如當你覺得“我好像不會寫原生的Ajax”、“跨域的方法我貌似沒法都答上來”的時候,就盡早去找資料學習和了解,一步步幹掉知識盲點,這樣你隻會愈來愈自信。
要記住隻有你才是最了解自己弱點的那個人,隻有你才是能拯救你自己的那個人(卧槽你拍電影啊)

有必要進大公司嗎?
我覺得,作為一名搞IT的碼農,沒進過BAT總會有些遺憾(我也經常拿這個激将Aaron來深圳),是以如果有能力還是試着來這邊鍍鍍金,或者說鍍個經曆。
他會讓你了解一個大公司是怎樣運作的,會讓你視野變得很廣闊,這裡也有很多前人的知識沉澱或課程分享,身邊也都是優秀的小夥伴可以交流和碰撞idea。
也會讓你走上加班不歸路(哼我設為斜體字了你們肯定看不到這一行)
但是如果你是應屆生,我建議是先别急着進大公司。
原因很簡單,大公司分工太細了,正常招你進來隻做專才,你會在某個領域逐漸精通,但放開整個前端面而言,會很欠缺實踐。
說實話,我覺得大企業細分工作的形式,會讓部分一直待着的員工,即使他們很優秀,跳槽去一家中小型企業的話,可能也沒法很好地勝任前端一職。因為很多中小企業要求前端得是全能的——切的了圖寫的了樣式編的了腳本,今天讓你寫個手勢插件,明天讓你搞個跨域通訊,後天讓你負責個走spa的hybird。
有能力進大企業的應屆生,往往都能在中小型企業裡逐漸成為技術主導,會負責各種各樣的工作,遇到各種各樣的問題,自己手動編寫各種各樣的子產品,這能給你帶來非常豐富的從業經驗(當然也會有所壓力)。
在大企業的話,所能主導的部分自然會變少,因為有許多大牛早已幫你寫好了各種業務子產品,項目也早已确定好了相應的技術選型,而我們更多的是在上面做二次開發。
是以總的來說,能在外面有個幾年實踐和磨練再進大公司,會是我個人覺得的比較合适的選擇。

年度書籍推薦
不吹不黑,我廠AlloyTeam成員曾探先生在今年發行的《javascript設計模式與開發實踐》一書,是我個人認為的今年最佳的前端書籍之一。
本書結合了大量的業務實踐來娓娓道來js各大設計模式的原理和應用,能讓你更好地了解、掌握這些思想。
另外本書的語言組織能力也非常出色,用了許多生動形象的例子來幫讀者了解一些生澀的概念,相比之下,現在世面上某本譯作簡直是disaster(那本書被我扔在上家公司都懶得收回了)。
這本書比較适合中等級别的前端朋友來涉獵,能讓你收獲很多意想不到的知識或解決方案。
弱弱地說下,這本書是打從心裡的推薦,在群裡也有很好的口碑,俺的推廣可收不到曾探先生的推廣費(曾探先生在看我文章麼?下面有我二維碼哦)
今晚就唠嗑這些,如果說了一些不中聽的大話,諸位看官笑一笑就可以了~
願後續新的一年能繼續奮力前行,共勉~