--- layout: post title: (转)我眼中的技术高手 category: life thumb: IMG_PATH/gaoshou.jpg tags: [技术, 高手, 思考] --- 本文转自[玉伯的博客](https://github.com/lifesinger/blog/issues/126?achuan.io) --- 今天发了一条[微博](https://weibo.com/1748374882/zoavsuWAz?achuan.io): `会原生 JavaScript 不代表什么,懂 jQuery、YUI 等才真正好。怎么这么多人有原生主义情结呢?走出那点小天地,海阔天高。`
很多人已经猜出,这是为了晚上的文章而发,提前收集大家的想法。这个话题,很早就想谈,肯定会引起口水仗,但有些事不辩不明,不理不清,与其和谐社会,不如辛亥革命。 ## 奇怪的现象 平时工作,时不时能听到一些困惑、感慨:
`jQuery 虽好,但只会 jQuery,不会原生 JS 是不被大公司认可的。`
`最近半年对原生 JS 有些生疏,得补一补。`
`得好好看看 ECMAScript 规范,把 JS 语言学透彻。`
和原生情结对应的,是国内程序员特别喜欢研读源码,比如:
`jQuery 源码分析系列`
`YUI 源码分析`
`Backbone 及 Underscore 源码解析`
国内程序员对源码的热衷,可以拿 SeaJS 的数据来看: ![SeaJS数据图片]({{ site.IMG_PATH }}/SeaJS.png "SeaJS数据"){:.small} fork 数高达 500 多,但 watch 数只有 1000 多,这其实是不正常的。相比而言,RequireJS 的数据正常很多: ![RequireJS数据图片]({{ site.IMG_PATH }}/RequireJS.png "RequireJS数据"){:.small} 简言之,国内与国外相比,有比较明显的两个特点: 1. 对原生 JS 的学习心更强。 2. 对类库、框架的源码更感兴趣。 这两点看起来很好,可是: 1. 研究原生 JS 的优秀文章,大都出自国外程序员。 2. 类库、框架,国人好像一直在研究,鲜有产出。 这肯定跟我们是社会主义国家有关,但我越来越怀疑这一点。 ## 语言高手们 真正的语言高手不多,我不是,正在看这篇文章的你,很可能也不是,而且这一辈子可能都和我一样成为不了语言高手。 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 语言来说,会用就好。搞清楚数据类型、作用域、闭包、原型链等基本概念,足矣。再深入进去,对绝大部分人来说,除了能满足下心理上的优越感,对实际工作不会有任何实质性帮助。 语言的本质和互联网一样,只是工具,是剪刀、石头、布。让张小泉去研究怎么做剪刀就好,我们用好剪头,去剪出各种窗花,更有意思。还有一个有趣的事实是,张小泉会造剪头,但剪不好窗花。 跳出很小很小很小很小很小的语言领域之外,天大地大。永远不要妄自菲薄,每个人身上都背负着独特的使命。去努力寻找自己的,不要老盯着别人的,否则就会成为观众。 好像跑题了。前面那个奇怪的现象,还有很多想吐槽的点。比如 1. 源码只是很小很小的一部分。直接读源码往往无法领会类库框架的精髓。不读源码,用心去用,用时间去体味,偶尔针对性看看源码,往往更能掌握一个类库框架的真谛。 对社区的贡献可以有很多很多。你的使用经验、用心的 bug 提交、入乡随俗的 pull request、一个认真的评论等等,这些都比去研究什么狗屁源码更有价值。 2. 一个 Java 高手如果说他会原生 Java,那一定会遭来很多人的围观。我还会谭浩强教我的 C 呢,那几个 if else 还有结构体、指针等谁不会。语言之外的领域知识,才真正造就了高手。对于前端来说,会原生 JS 只能打 20 分,另外 40 分需要你深入使用 CSS、DOM、HTML5 等领域知识,还有 20 分需要你对业务需求、架构设计等有真正的运用,这已经 80 分了,不要太贪心。剩下 20 分,只有两个字:勤奋。 ![郭靖和黄蓉数据图片]({{ site.IMG_PATH }}/figure.jpg){:.none} 题图:我的网名射雕的来历,喜欢郭靖,无底线。 (完)