国内外互联网公司在前端领域是否有差距?
主要差距有几个:
1.全球社区参与和影响(英语能力可能是一个非常大的因素)。
2.对各种标准的参与和影响(除了英语能力,工程师的习惯也是个问题)。
3.公司自己的低。比如百度前端团队的实力就很强。我尊重百度的前端工程师,但是百度本身就低。
其中1和2这几年进步很大。
比如阿里,已经成为node.js社区不可忽视的中坚力量。再比如BAT、UC、360等公司都有webkit/firefox的贡献者(虽然严格来说浏览器开发本身不属于前端范畴,但是有很重要的关系)。
BAT现在是W3C的成员,已经开始参与Web标准的制定,包括提交一些新的草案。
唯一的是第三点。BAT虽然钱多,但公司的治理水平和技术战略与世界一流公司还有很大差距,短期内没有赶超的迹象。最有希望的可能就是腾讯了,但是腾讯的风格太低调了,工程师好像也太低调了。)并不是技术和工程师的代码能力有差距,而是前端技术日新月异,我们基本处于跟随状态。能成为前端开发里程碑的创新基本为零。
什么是里程碑式的创新?
比如jQuery。
比如颠覆前端开发体验的MVVM框架。谷歌发扬光大。
就像脸书的反应。
如JS模块加载器,AMD规范等。
比如node,基于node的框架比如express和koa。npm前十的图书馆没有一个是我们主导的。
比如css预处理器。
从技术上讲,没有什么是我们做不到的。以装载机为例。我们有一个由出色的工程师制造的装载机,性能可以超过requireJS,我们也有一个基于AMD的CMD,用于部分创新。但是为什么呢?为什么上面几乎没有我们发起的东西?反复做一个轮子很容易,但是我们以前从来没有做过轮子。
从大的方面来说,他们发明了万维网,发明了HTML,开发了性能卓越的浏览器。我们呢?做浏览器也是给他们的内核装了壳。
一个外国人花了几天时间粗制滥造了一个Javascript。然后我们的人花几年时间熟悉,然后就可以称之为语言大师了。谷歌开发了V8引擎,几次提升性能。而如果我们看了V8源代码,那将是一个大神。
简而言之,工程师的能力和意愿与国外的差距很小,但公司本身的差距却很大,这也导致了公司主导或发起的项目都达到了世界一流的水平。也就是国内顶尖公司在拖国内顶尖工程师的后腿。
整个(前端)开源行业经过多年的发展,自下而上已经形成了完整成熟的玩法和运营模式(GitHub的分叉就是典型)。国外的新的好的东西一出来,马上就会吸引一大批熟悉游戏的志趣相投的人,马上就会风生水起。中国缺少这样的人和环境。
一个很小的例子,Sea.js的自述一直写着举报问题的推荐方法,几乎没有人遵循。