我眼中的技術高手
今天發(fā)了一條微博:
會原生 JavaScript 不代表什么,懂 jQuery、YUI 等才真正好。怎么這么多人有原生主義情結(jié)呢?走出那點小天地,海闊天高。
很多人已經(jīng)猜出,這是為了晚上的文章而發(fā),提前收集大家的想法。這個話題,很早就想談,肯定會引起口水仗,但有些事不辯不明,不理不清,與其和諧社會,不如辛亥革命。
奇怪的現(xiàn)象
平時工作,時不時能聽到一些困惑、感慨:
jQuery 雖好,但只會 jQuery,不會原生 JS 是不被大公司認可的。
最近半年對原生 JS 有些生疏,得補一補。
得好好看看 ECMAScript 規(guī)范,把 JS 語言學透徹。
原生情結(jié)對應的,是國內(nèi)程序員特別喜歡研讀源碼,比如:
jQuery 源碼分析系列
YUI 源碼分析
Backbone 及 Underscore 源碼解析
國內(nèi)程序員對源碼的熱衷,可以拿 SeaJS 的數(shù)據(jù)來看:
fork 數(shù)高達 500 多,但 watch 數(shù)只有 1000 多,這其實是不正常的。相比而言,RequireJS 的數(shù)據(jù)正常很多:
簡言之,國內(nèi)與國外相比,有比較明顯的兩個特點:
1.對原生 JS 的學習心更強。
2.對類庫、框架的源碼更感興
這兩點看起來很好,可是:
1.研究原生 JS 的優(yōu)秀文章,大都出自國外程序員。
2.類庫、框架,國人好像一直在研究,鮮有產(chǎn)出。
這肯定跟我們是社會主義國家有關,但我越來越懷疑這一點。
語言高手們
真正的語言高手不多,我不是,正在看這篇文章的你,很可能也不是,而且這一輩子可能都和我一樣成為不了語言高手。
JavaScript(純語言,不含 DOM 等)高手,在國內(nèi)***。周愛民、白露飛、老趙、winter、月影、hax 等等等等,還有一些非常低調(diào)的隱士,這些人讀 ECMAScript 規(guī)范像磕瓜子一樣輕松,甚至能花幾個晚上就像 BE 大神一樣造出一門新語言來。你我等閑之輩,除了佩服之外,只能去談戀愛。
工作中,我們需要語言高手嗎?肯定的說,需要!可是,我們需要大量語言高手嗎?除了特殊崗位,我相信很多公司都不需要!
題外話:目前為人知的 JS 語言高手里,除了周愛民,我最看好白露飛。這是一個有能力也有潛力造就 SuperScript 的人,最佩服的是他有實際行動,雖然方向未必正確。
我們的價值在哪
除了重新投胎,我們大部分人這輩子都不大可能有興趣、有能力、有機緣去成為 BE 大神了。這是個殘酷的現(xiàn)實,之所以殘酷,只因視野太狹窄。
跳出來,天大地大。妹子多著呢,而且更漂亮。
Douglas Crockford 的 JS 能力很可能不及 winter,但 Douglas 規(guī)范并布道了 JSON 格式,天下留名,惠澤全球。
Jeremy Ashkenas 的 JS 能力可能還不如老趙,但 Jeremy 用很裸的代碼寫就了 Backbone,至少影響了一萬人,給各個公司創(chuàng)造的價值總額很可能過千萬美刀。
更不用說 Isaac Z. Schlueter,這小伙的 JS 功力很可能還不如我,但 Isaac 打造了 npm 生態(tài)圈,而我至今只有精力玩玩 Ant 和 Grunt。
有幸還看過 Google Docs 的前端源碼,那代碼和 Java 一樣中規(guī)中矩。但在 RTE 領域,Google Docs 是王者,里面的專利都一堆一堆的……
特別想提及的還有開發(fā) Evernote Clearly 的前端工程師,這小伙子的代碼,我眼睜睜看著其從很生澀的 JS 代碼,逐步演化成上萬行牛逼代碼還保持了相當好的可維護性。這份代碼就像 Clearly 產(chǎn)品一樣奕奕生光。
以及把 jQuery 用得出神入化的 Amazon!前不久那個秒殺國內(nèi)互聯(lián)網(wǎng)公司的懸浮菜單,可不是研究原生 JS 能想出來的。
還有 Facebook 的工程師們,Twitter 的工程師們…… 這些故事大家并不陌生。
不是總結(jié)的總結(jié)
不貶低語言高手們,也不反對去研究編譯原理、ECMAScript 規(guī)范等。作為技術人員,我們需要這種精神。但是,這僅僅是很小很小很小很小很小的一個領域。并且在這個領域里,永遠有比你更聰明的人。
具體對 JavaScript 語言來說,會用就好。搞清楚數(shù)據(jù)類型、作用域、閉包、原型鏈等基本概念,足矣。再深入進去,對絕大部分人來說,除了能滿足下心理上的優(yōu)越感,對實際工作不會有任何實質(zhì)性幫助。
語言的本質(zhì)和互聯(lián)網(wǎng)一樣,只是工具,是剪刀、石頭、布。讓張小泉去研究怎么做剪刀就好,我們用好剪頭,去剪出各種窗花,更有意思。還有一個有趣的事實是,張小泉會造剪頭,但剪不好窗花。
跳出很小很小很小很小很小的語言領域之外,天大地大。永遠不要妄自菲薄,每個人身上都背負著獨特的使命。去努力尋找自己的,不要老盯著別人的,否則就會成為觀眾。
好像跑題了。前面那個奇怪的現(xiàn)象,還有很多想吐槽的點。比如
1.源碼只是很小很小的一部分。直接讀源碼往往無法領會類庫框架的精髓。不讀源碼,用心去用,用時間去體味,偶爾針對性看看源碼,往往更能掌握一個類庫框架的真
2.對社區(qū)的貢獻可以有很多很多。你的使用經(jīng)驗、用心的 bug 提交、入鄉(xiāng)隨俗的 pull request、一個認真的評論等等,這些都比去研究什么狗屁源碼更有價
3.一個 Java 高手如果說他會原生 Java,那一定會遭來很多人的圍觀。我還會譚浩強教我的 C 呢,那幾個 if else 還有結(jié)構(gòu)體、指針等誰不會。語言之外的領域知識,才真正造就了高手。對于前端來說,會原生 JS 只能打 20 分,另外 40 分需要你深入使用 CSS、DOM、HTML5 等領域知識,還有 20 分需要你對業(yè)務需求、架構(gòu)設計等有真正的運用,這已經(jīng) 80 分了,不要太貪心。剩下 20 分,只有兩個字:勤奮。
題圖:我的網(wǎng)名射雕的來歷,喜歡郭靖,無底線。
原文鏈接:https://github.com/lifesinger/lifesinger.github.com/issues/126
【編輯推薦】