此时又是在火车上,待了4天有点累,QCon 2015,第一次参加这么上档次的企业级的分享会。收获思想的同时,要感谢我的研究生导师,鼓励整个实验室的人都去参加各种会议,同时也认同我想往工程方向发展的想法,并批准我出去实习一段时间。
早就在浏览器里加过各种论坛社区的书签,不过自己花的时间还不够,只是偶尔看看一些技术论坛的采访报道,或者是在订阅的邮件里粗略扫一下那些大牛都在干嘛。这回亲身经历,很是激动,大开了眼界。见到了萌萌哒@朴灵大大,握到了手~ 还看到了传说中的@玉伯,自称黑侠,但我觉得也没有很黑。还有冷酷的@鬼道,和他那张黑客帝国的头像照片很一致。
什么是前端?
这个问题是我之前面试时被问到的,回答的太low了,也怪我自己也从没想过这个问题,只是从一个网站构建的流程上大体说了下前端包含哪些工作。后来才知道面试官是@三七,幸亏我面试前几天正好看过他在QCon 2014上的采访报道,知道了Native和Hybrid这两个概念,让我侥幸过关了。
这次的QCon上Hybrid这个词被提到很多,不仅在前端主题,还在移动开发和移动平台工具主题上都有。因此从大的范围上来讲,前端已经涵盖了移动端的前端,而React的出现,更加缩小了Web前端和Native前端之间的代沟。
以前我犯了一个严重的错误,我说我只做Web端,并愿意学习移动Web端,但我绝不会去碰App开发。当时我的理由是,Android和IOS是席卷而来的,把Symbian打垮了,但说不定哪天它们也会被别的系统所取代。而HTML加JS是经过了十几年的历史证明的,虽然JS刚开始被冷嘲热讽,但是经过不断发展它已变得越来越好。所以当时我觉得只会存在浏览器厂商之间的战争,而Web平台本身不会被其他东西取代,已经存在了十几年,那么至少还能存在十几年。
这绝对是我too young too naive!技术存在的本身是为了服务,技术发展的驱动力要么是更好地服务生活,要么就是让开发更简单以降低成本提高生产力。软件技术出自工业技术,肯定有其相似之处。所以JS的发展是为了提高Web端的用户体验,Android和IOS的出现颠覆了传统手机端的用户体验。而现在大网站,像微博、美团、大众点评之类,移动端的流量已经远超PC端,所以技术发展的趋势就应该是更好地服务手机用户。那做App的话,Android和IOS得分两个团队,而且这样WinPhone用户还会不高兴。所以满足所有用户的App成本很大,于是移动端Web(主要是HTML5)的出现就降低了App的开发成本,能让一个HTML5页面至少看起来像一个App。
HTML5像App终究是“像”啊,要实现一些特殊功能的话用起来还是有差别的。于是React站出来说“我能让App开发门槛更低”,HTML5是写一份代码然后交给不同终端的浏览器,而React也是写一份代码,但它能编译出IOS和Android两个版本(Android版年底放出,WP未知)。所以我觉得这些技术都是殊途同归的,最终都是为了让移动端有更好的用户体验。而Hybrid就出来对Native和Web说,你们别吵啦,都是为了同一个孩子,就结合下吧。
前端 = 用户端 = 手机 + 平板 + PC 三端一致且良好的体验
产品工程师
这个完整的名词是在听“网易云音乐”的技术总监报告时听到的,而“青云”的工程师报告中也提到了他们公司的前端工程师可以独当一面,不需要产品和美术。前者的前端是一个富交互的App,而后者的前端只是一个给工程师用的管理平台,所以后者可以不需要产品狗。但他们都提到了一句话:
要把产品当做自己的孩子
所以前端工程师进行升级,更多一点产品sense,为了一点点产品体验的提升可以付出更多的努力,也许是前端码农的一个可以发展的方向。
别人眼中的干货
作为学生,可能认为“干货”就是可以直接“干”的货,我更希望能有具体的做法。但是我又too naive了,作为企业,怎么可能把最核心的具体做法暴露给竞争对手,这可是一个技术型企业的核心竞争力。因此这次QCon上,别人眼中的干货其实是这样的。
干货 = 别人已经“干”出来的货
我又想起来一幅图,很形象
有些企业只会告诉你第1步,有些可能会说到第3第4步,但绝不会告诉你最后一步。别人只会告诉你他们做过哪些尝试,做成了什么,只会告诉你大体的方向和最后的对比结果。所谓授之以鱼不如授之以渔。
干货 = 自己今后可以“干”的货
大家都在造轮子
“造轮子”这个感受非常强烈,同一件事情,可能大家都在做,只是具体做法不一样,以及背后的理念也不一样。
还拿React作为例子,Facebook将它开源了,并预计在今年11月release出Android版。在这次会上得知,有家叫Geek Zoo Studio的创业公司也做了类似的事情,并且赶在这次大会前一周也开源了,它叫SAMURAI。React Native旨在帮助Web程序员也能开发IOS应用,用JSX的方式,降低IOS的开发门槛。而Samurai Native旨在让IOS开发者能够用类似HTML标签的方式来开发(将类名写成HTML标签名)。而在此之前已经有PhoneGap,但它是用WebView嵌套HTML5的伪Native(或者叫Hybrid Native)。而Samurai Native内部实现了web-core,是纯原生的,所以它的创始人称之为Semi-Hybrid。并且他称也将在今年年底出Android版。
还有一些公司在做移动开发的完整流程服务,包括环境、自动构建和部署,也包括了采用类似Web的方式来开发,最后映射成手机/平板/PC三端。
尽管上面的历史发展错综复杂,但它们本质上都在为同一件事情努力,那就是让Native开发更简单。而争相造轮子的目的,是为了提高企业核心技术竞争力。
勿忘初心
这是蚂蚁金服的工程师给我的感受。他们做了一款内部使用的产品,结果响应了太多需求,做成了一个庞然大物,以致于用户不知道如何使用。最后他们2.0版本的产品砍掉了1.0版本的很多功能。
认清不做什么更重要
所以做一件事情一定要定位清晰,只为一类人服务。一旦明确了做什么,最终目标就是做“死”,只做好一件事。
勿忘初心
远方的路
永不止步