對知識掌握的深度與工做內容有關,就好比建築領域,砌磚的並不須要磚是由什麼材料製做成的,硬度狀況等。前端
但建築的設計師須要考慮這些,可是他也沒有必要了解到分子、原子級別的信息。git
也就是說,理論上,一我的懂得越多越好, 但實際上對不少人都不適合。某些人能夠背的不少,但實際靈活應用的能力卻不如背的能力,這時增長學習知識點的粗細就很重要了。
程序員
舉例說,韓信統兵,多多益善,劉邦則不是這樣了。 github
原文:阿里玉伯npm
今天發了一條微博:前端工程師
會原生 JavaScript 不表明什麼,懂 jQuery、YUI 等才真正好。怎麼這麼多人有原生主義情結呢?走出那點小天地,海闊天高。閉包
不少人已經猜出,這是爲了晚上的文章而發,提早收集你們的想法。這個話題,很早就想談,確定會引發口水仗,但有些事不辯不明,不理不清,與其和諧社會,不如辛亥革命。架構
平時工做,時不時能聽到一些困惑、感慨:框架
jQuery 雖好,但只會 jQuery,不會原生 JS 是不被大公司承認的。
最近半年對原生 JS 有些生疏,得補一補。
得好好看看 ECMAScript 規範,把 JS 語言學透徹。工具
和原生情結對應的,是國內程序員特別喜歡研讀源碼,好比:
jQuery 源碼分析系列
YUI 源碼分析
Backbone 及 Underscore 源碼解析
國內程序員對源碼的熱衷,能夠拿 SeaJS 的數據來看:
fork 數高達 500 多,但 watch 數只有 1000 多,這實際上是不正常的。相比而言,RequireJS 的數據正常不少:
簡言之,國內與國外相比,有比較明顯的兩個特色:
這兩點看起來很好,但是:
這確定跟咱們是社會主義國家有關,但我愈來愈懷疑這一點。
真正的語言高手很少,我不是,正在看這篇文章的你,極可能也不是,並且這一生可能都和我同樣成爲不了語言高手。
JavaScript(純語言,不含 DOM 等)高手,在國內屈指可數。周愛民、白露飛、老趙、winter、月影、hax 等等等等,還有一些很是低調的隱士,這些人讀 ECMAScript 規範像磕瓜子同樣輕鬆,甚至能花幾個晚上就像 BE 大神同樣造出一門新語言來。你我等閒之輩,除了佩服以外,只能去談戀愛。
工做中,咱們須要語言高手嗎?確定的說,須要!但是,咱們須要大量語言高手嗎?除了特殊崗位,我相信不少公司都不須要!
題外話:目前爲人知的 JS 語言高手裏,除了周愛民,我最看好白露飛。這是一個有能力也有潛力造就 SuperScript 的人,最佩服的是他有實際行動,雖然方向未必正確。
除了從新投胎,咱們大部分人這輩子都不大可能有興趣、有能力、有機緣去成爲 BE 大神了。這是個殘酷的現實,之因此殘酷,只因視野太狹窄。
跳出來,天大地大。妹子多着呢,並且更漂亮。
Douglas Crockford 的 JS 能力極可能不及 winter,但 Douglas 規範並佈道了 JSON 格式,天下留名,惠澤全球。
Jeremy Ashkenas 的 JS 能力可能還不如老趙,但 Jeremy 用很裸的代碼寫就了 Backbone,至少影響了一萬人,給各個公司創造的價值總額極可能過千萬美刀。
更不用說 Isaac Z. Schlueter,這小夥的 JS 功力極可能還不如我,但 Isaac 打造了 npm 生態圈,而我至今只有精力玩玩 Ant 和 Grunt。
有幸還看過 Google Docs 的前端源碼,那代碼和 Java 同樣中規中矩。但在 RTE 領域,Google Docs 是王者,裏面的專利都一堆一堆的……
特別想說起的還有開發 Evernote Clearly 的前端工程師,這小夥子的代碼,我眼睜睜看着其從很生澀的 JS 代碼,逐步演化成上萬行牛逼代碼還保持了至關好的可維護性。這份代碼就像 Clearly 產品同樣奕奕生光。
以及把 jQuery 用得出神入化的 Amazon!前不久那個秒殺國內互聯網公司的懸浮菜單,可不是研究原生 JS 能想出來的。
還有 Facebook 的工程師們,Twitter 的工程師們…… 這些故事你們並不陌生。
不貶低語言高手們,也不反對去研究編譯原理、ECMAScript 規範等。做爲技術人員,咱們須要這種精神。可是,這僅僅是很小很小很小很小很小的一個領域。而且在這個領域裏,永遠有比你更聰明的人。
具體對 JavaScript 語言來講,會用就好。搞清楚數據類型、做用域、閉包、原型鏈等基本概念,足矣。再深刻進去,對絕大部分人來講,除了能知足下心理上的優越感,對實際工做不會有任何實質性幫助。
語言的本質和互聯網同樣,只是工具,是剪刀、石頭、布。讓張小泉去研究怎麼作剪刀就好,咱們用好剪頭,去剪出各類窗花,更有意思。還有一個有趣的事實是,張小泉會造剪頭,但剪很差窗花。
跳出很小很小很小很小很小的語言領域以外,天大地大。永遠不要妄自菲薄,每一個人身上都揹負着獨特的使命。去努力尋找本身的,不要老盯着別人的,不然就會成爲觀衆。
好像跑題了。前面那個奇怪的現象,還有不少想吐槽的點。好比
源碼只是很小很小的一部分。直接讀源碼每每沒法領會類庫框架的精髓。不讀源碼,用心去用,用時間去體味,偶爾針對性看看源碼,每每更能掌握一個類庫框架的真諦。
對社區的貢獻能夠有不少不少。你的使用經驗、用心的 bug 提交、入鄉隨俗的 pull request、一個認真的評論等等,這些都比去研究什麼狗屁源碼更有價值。
一個 Java 高手若是說他會原生 Java,那必定會遭來不少人的圍觀。我還會譚浩強教個人 C 呢,那幾個 if else 還有結構體、指針等誰不會。語言以外的領域知識,才真正造就了高手。對於前端來講,會原生 JS 只能打 20 分,另外 40 分須要你深刻使用 CSS、DOM、HTML5 等領域知識,還有 20 分須要你對業務需求、架構設計等有真正的運用,這已經 80 分了,不要太貪心。剩下 20 分,只有兩個字:勤奮。