enter image description here

2015年,他发起阿里Weex项目,实现「一次编写,三端运行」。他被称为「Weex之父」。

2016年,阿里宣布开源Weex项目,年底将其捐赠Apache基金会。2017年,他在微博宣布退出Weex团队。

外界对Weex的讨论也好,争议也罢,他淡出了大众的视线。

下一次外界听到他的消息,是在2017年底,却完全与技术无关。原来,他?#22270;父?#21516;事一起,组成了阿里996乐队。大?#20063;?#21457;现,原来程序员们不仅会写代码,写歌也蛮好听。

他和Weex的故事是怎样的?他是怎样的一个人?今天,图灵访谈带你走近勾三股四,一位自称「有点叛逆」的前端工程师。

移动端崛起


勾股2007年大学毕业。他大二学完基础课程之后,就转到了自己很着迷的软件工程专业。毕业后,他去傲游浏览器面试,笔试之后现场对方只问了三个问题:「HTML熟不熟?JavaScript熟不熟?CSS熟不熟?」他不怵,说了三个「熟」。面试官竟然没多问,直接给了他offer。

那是中国互联网风起云涌的时代。?#31508;变?#35272;器才刚兴起,大家用得最多的还是Office、QQ这种桌面传统软件。他们经历了所谓的浏览器大战。

傲游做了大量革命性的创新,不仅推出免?#23547;媯?#25903;持多语言,用单窗口多标签代替了多窗口,推出广告过滤功能,而且它?#26469;?#20102;如今浏览器必备的在线收藏系?#22330;?007年,傲游霸占了非常高的市场份额,市场占?#26032;?#20165;次于IE浏览器。

勾股说:「在一个蓬勃发展的创业公司,每天?#20960;?#20320;很多成就感。而且个人也在随着公司一起发展,不仅是技术,而是能够真正感受到整个行业的方方面面。」

enter image description here

然而,随着移动端崛起,PC浏览器市场开始呈现疲态。2010年,傲游的用户大量流失。2012年,它在中国大陆的市场占?#26032;?#24050;经不足1%。

勾股坦言:「我们在PC端有非常狂热的忠实用户的支持,收入也比较稳定。公司其实也看到了移动互联网的趋?#30130;?#20294;可能没有抓住这个机会。」

与此同时,2013年,阿里的战略是「All-in 无线」。

一方面,勾股看到移动互联网的发展,很想参与和探索;另外,很多他认为很厉害或者关系很好的朋友在阿里,?#21592;?#30340;居多。于是,在winter的推荐下,他加入了阿里。「winter打电?#26696;?#25105;,说:‘有一个好消息,有一个坏消息。好消息是我们发offer给你。坏消息就是我们要996。’

「?#19994;笔?#30340;第一反应当然是比较兴奋啊!反正我刚去那边,也需要花比别人更多的时间熟悉工作。既然这样的话,就有更多的人晚上陪我了。?#31508;?#25105;是这么想的。」

那?#38382;?#38388;他印象深刻的就是每个人?#24049;芷础?/p>

「从最上边到最一线的员工,每个人都是在玩命。可能一方面是工作压力,另外一方面,我看到很多人谈到移动技术的发展这些东西时,真的是两眼放光,有讲不完的话想跟你分享。确实是有那股热情在。」

2016年,?#21482;员?#21644;?#21592;?#30340;合并标志着一个时代——移动端的崛起。手淘的创业之路算是告一段落,无论从技术还是从业务,都和?#21592;?#32593;的PC业务做了更深度的整合。

Weex的故事


2013年,阿里「All in 无线」战略如火如荼地推进,大量资源向无线业务倾斜。?#31508;保?#21246;股所在团队负责?#21482;员?#30340;前端业务,在快速向前的同时,他们面前也摆着大量的问题。

其中,iOS、安卓,还有Web,这三端的业务,可不可以只用一套代码解决?

iOS和安卓的发布节奏有限?#30130;?#27604;如iOS每月发一版。但?#21592;?#27599;天?#23478;?#20570;新促销活动或者上新功能。?#34892;?#19996;西这个月没赶上,就只能赶下一个月。所以可不可以找到一种方式,能够随时发布更新?

他们一直在寻找解决方案。

2015年初,React Native正式开源发布了。其实,?#28304;?014年底的一个技术会议?#36816;?#26377;所介绍之后,大家就一直很期待,因为它看上去能够解决这两个问题。

但在尝试之后,两大困难让他们无法忽视。

第一个困难是?#31508;盧eact Native的版本还很早,迭代非常快,并且每次都?#20889;?#24133;度的改动,团队跟不上这个节奏。

第二个就是,很难在它上面加自己的东西。这个技术方案的定位并非解决他们面临的动态性问题,导致很多细节用起来比较牵强。

归根到底,他们还是绕不开面前的难题,外来的解决方案似乎并不合适。

干脆还是靠自己吧!

enter image description here

Weex前端团队

2015年夏天,勾股发起了Weex项目,一颗探路石,一个灵活的解决方案。

「可能我在这个过程当中扮演的角色,是在一个特定的阶段,我同时看到很多信息和知识,其他人未必同时看得到。然后我有机会想到把它们组合在一起。

「第一个东西是在阿里内部的项目,它可以接受一段JSON的数据,然后渲染成Native的界面。这个工程我2013年加入阿里的时候就已经在做了,为Weex提供了技术积累。

「另外,第二个东西是Vue.js,?#31508;?#30693;道它的人并不多。我发现它能很好地优化前端开发体验,以及处理前端框架中间JavaScript的这部分。2015年夏天深圳的JSConf上,刚好尤雨溪也一同参会,我们当面聊了几句,交流了这个项目。他?#31508;?#32473;了我很多鼓励,也跟我分享了他对一些技术细节的看法。

「第三个当然就是Web standard,包括W3C,以及其他Web规范。首先,它可以解决很多通用的一些技术问题。而且,它的一些规范和API的设计是由很多厉害的科技公司沉淀下来的结论,非常经得起考验。」

三大武器虽已备齐,现实遇到的困难却比预估的更复?#21360;?/p>

「最大的困难,坦白讲就是三端不一致。

「不光是从技术角度,就是API的设计不一样。更困难的在于,因为大家的技术栈不一样,整个思考问题的方式,甚至工作习惯都不一样。所以,要让整个团队在一起工作,做出一个让大家能够信服的技术方案,这是真正具有挑战的地方。」

这个难题,他们写出了怎样的答案呢?

2015年的双十一Weex首秀,历史?#31995;?#19968;次把Native级别的体验和稳定?#28304;?#21040;了天猫双十一的移动会场。

如?#21496;?#21916;的效果不仅让Weex团队感到兴奋,也获得了技术团队负责人的认可,给了Weex项目更多的支持和信任。

2016年双十一,Weex覆盖了99.6%的会场页面,页面的打开速度、滚动的流畅性都保证了良好的用户体验。

Weex的意义


目前为止,一切?#24049;?#39034;利。

2016年初,阿里决定将Weex开源,年底宣布将Weex项目捐赠给Apache基金会,并且宣布了与Vue.js的官方合作。然而,这却使Weex引来了巨大的争议,外界对项目后续维护问题产生了质疑。

2017年初,项目发起人勾股发表了一份声明:不再是Weex团队的一员,离开?#21592;Γ?#26032;的工作内容已与Weex无关。

事情的发展让外界迷惑不已。

Weex项目以及?#21482;员?#20869;部,经历了怎样的变动?

起初,在移动端崛起的背景下,每个团队都在摸索前进。移动端的开发形态和模?#25509;?#35813;是怎样的?Native工程师有自己的想法,前端工程师也有自己的想法。直到Weex出现,越来越多的业务团队的技术栈逐渐地稳定下来。

这种变化,从技术角度来说,大家做事更有层次感了。?#34892;?#20154;会维护Weex开源项目的核心的框架,有人做一些Weex插件或者扩展,还有一些人会专注在最上层的业务开发。大家的分工和团队协作方式变得更加清晰。

另一方面,人员结构也在逐渐地发生变化。有人?#35270;Γ?#26377;人不?#35270;Γ?#26377;人来有人走。每个人都在变化的进程里,包括勾股。

他说,一面的确有被动的因素存在,另一方面自己在想,不如主动地去?#24403;?#21464;化。

enter image description here

而今时隔两年,他坦然分享了自己对这个问题的思考:Weex项目的意义是什么?

「Weex项目是阿里巴巴第一个愿意以官方的身份,并且主动地去?#24403;?#24320;源社区的。

「其实阿里在Weex之前也开源了很多东西,都是以个人名义开源。?#31508;?#22312;阿里内部,你想开源一个东西,流程很简单,就是你自己做一个申请。公司只会做一件事情,就是看有没?#34892;?#38706;公司的内部信息。公司不是在主动地面对这个问题。名义上是阿里的,但其实就是个人的。

「其实我们也讨论过这个问题,但担心将它开源会给公司惹麻?#22330;?/p>

「后来,这个观念在逐渐转变。我们也在思索,能否通过开源的这个行为,争取到更多开源社区的认同?#21487;?#33267;能不能招聘到更好的人?或者?#30340;?#19981;能够经营一个更好的开源社区生态?

「我很欣慰因为Weex项目让阿里勇于做这个尝试,主动地开源。而且阿里内部还重组了一个开?#27425;?#21592;会,专门来思考这个问题。

「在这个背景下,我很早就清楚,这个项目是我发起的,但它不是个人的。如果想借助开源项目达到一些个人诉求,在Weex这个项目面前其实显得有点?#36816;?#20102;,因为更多的是要为公司考虑。而且我觉得这是一个很好的开始,未来更多的开源项目做下去,是需要站在公司的角度去思考的。这是一件双赢的事情。」

面对Weex受到的质疑,他说:「Weex的开源,也是它意义的一部分。大家都需要一个过程去?#35270;?#21644;感受,去了解开源文化以及一个国际化的技术交流社区,然后尝试去解决问题。」

即使退出了Weex团队,他也一直在思考它的命题。「我觉得这个问题还没有结束,就是移动端的所谓UI技术或者是渲染技术,它将来会走向哪里?

「其实相关的技术,我一直在关注或者在思考。刚好上个月,Swift UI也发布了,它是iOS技术栈里UI开发的一个新技术?#35805;?#25324;去年的Flutter,我在Weex团队的时候就知道这个项目,它?#31508;?#21018;开始,那应该是两年前了。

「我觉得这些类似的技术一定是更灵活的。更灵活的意思是说,你可以更?#28044;?#36895;,更加直接?#34892;?#22320;去完成你的开发,完成你的发布,然后让用户看到。这个很理想。

「还有,它是对开发体验更友好的。无论是Flutter还是Swift UI,或者像React Native,Weex,都是在尝试做一件事情,就是你代码写完,能立刻在开发环境下看到渲染结果,或者看到一些友好的错误提示,调试信息,等?#21462;?#24403;然另外一方面,很多东西也在逐渐地标准化和规范化,会进一步降低整个技术方案实施的门槛和大家接受的门槛。」

前端是什么


到现在,勾股在前端已经有12年了。

从傲游开始,他见证了整个HTML5技术从无到有的过程。「现在我们可能也不叫HTML5了。就叫前端或者Web。最早的Web前端只用来做一些简单的页面,到今天可以做复杂的应用。」

他刚加入?#21592;?#26102;,前端是在UED团队的,也就是设计团队。过了一?#38382;?#38388;,团队结构变成了「UED团队、前端团队、技术团队」。直到现在,他们已经完全归属于技术团队。显然,前端的技术含量在不?#31995;?#31215;累和提高。

勾股说,前端发展得非常快。「我举两个例?#21360;?#19968;是今天越来越多前端框架尝试着在编译器上,以及从DSL,即所谓的语言层面去做文章了,甚至创造一种新的语言,这在早?#25913;?#26159;不敢想的。也许将来有一天你想做前端,你就要懂编译原理。这个一点也不夸张。

「另一个例子是 WebAssembly,就是让更多语言和更多技术参与到Web 这个生态当中。以前只是写 JavaScript,将来有一天 Rust、Go、C++ 等,甚至整个软件行业的积累都会进来,所以这是一个很开阔的?#21344;洹?/p>

「前端领域未来的可能非常多。渲染技术,比如3D渲染,包括AR,VR场景;还有比如工程化,这个也不是什么新话题了;再有就是 Serverless,跟云计算有更多的契合。当然也包括刚才提到的更多的语言,更底层的技术栈,就像前端框架现在都深入到了编译原理。

「所以最重要的就是打开自己,就是没有不可能。保持好奇?#27169;?#19981;要主动向新的东西 say no。」

enter image description here

2012 年代表傲游参加 W3C 会议时和 W3C CEO Jeff 的合影

他最近一?#38382;?#38388;对一个东西比较着迷,?#34892;?#24687;无?#20064;?#21270;,英文是accessibility。

「我也会把它翻译成可访问性,听上去更符合Web语?#24120;?#24847;思就是不管你用任何设备,有任?#38382;?#20837;输出环?#24120;?#27604;如键盘或者鼠标坏了)的情况下,都能正常访问网站。

「它最早的受益群体可能是一些视障用户,而随着移动互联网到来,适用群体以及场景也变?#36855;?#26469;越丰富。

「比如说,工程师会高频地使用电脑,所以习惯用各种快捷键,不?#19981;?#25226;手离开键盘。那如果一款软件只能用鼠标操作,是不是就忽视了这个用户群体?再比如,一个人在开?#25285;?#21482;能通过语音使用软件。而另一个人在开会,没办法?#19981;啊?#37027;他们俩能不能正常地交流?

「所以accessibility是在探索这些,它甚?#37327;?#20197;让我们更语义化地去理解今天的Web是什么样的东西。」

深度参与Vue.js


2016年9月,尤雨溪加入了Weex。同时,勾股也是Vue.js的核?#30446;?#21457;成员,他很早就与Vue.js结缘了。

「2013年底,我们团队?#31508;?#22312;讨论移动端的前端的框架,尝试着做自己的东西。就在那个过?#35752;?#25105;发现了Vue.js,它从里到外都符合我们的期望,包括技术实现和API设计的想法,所以我就有种天然的亲切感。

「每个人都想做属于自己的东西,这个听上去很酷,但你如果有机会跟别人合作,做一个1+1>2的东西呢?很多人可能没有看到第二种可能性,而这就是我与Vue.js的开始。

「因为最早的代码都是小右自己写的,完成?#30830;?#24120;高,我很难直接参与到代码中,就从英文文档翻译开始。」

因为翻译需要他分析一字一句,甚至一些?#35270;?#30340;隐喻,不能错过任何细节。这个过程让他对Vue.js更了解。

enter image description here

Vue.js团队

「Vue2.0发布的时候,也是我们团队在做Weex的时间点,我们一起探讨了早期的一些想法。

「?#31508;?#23567;右在做2.0的时候,是从一个private的仓库开始做的,但其?#30340;?#20010;阶段他就已经把?#24050;?#35831;进去了。所以今天看提交记录你会发现,最早的一两百个commit都是小右的,中间有?#29238;?#26159;我的,后面才是整个社区参与进来,就是已经从private到public发布了。」

勾股说,这段经历对自己影响很深。他学会如何与国际化的团队交流,相互碰撞想法。他们会聊技术,也会聊生活中好玩的话题。他深?#35848;?#21463;到?#22235;?#20123;不一样的文化,与世界的距离在一点点缩短。「它就是一点点在发生,如果说是从哪里开始的话,应该就是我从参与Vuejs项目开始。」

技术还是管理


身处阿里,他也在思索个人应该如何发展。不同的是,他有一点叛逆,不想听任周围的惯性替自己做决定。

「有一个普遍的技术人员的困惑,是做到一定阶段就会有人push你去做管理。

「在?#31508;?#38463;里的环境下,无论是项目管理还是团队管理,很少有人不做管理而可?#21592;?#22823;家认同,当然也包括内部晋升。

「在很多场合,大家觉得你工作经历和能力到一定程度后,就需要做一些管理的工作,或者你需要把经验传递给更多的人。所以我周围的人几乎清一色从技术转向管理,继续发展。

「我可能有点叛逆。这个行业有更多更难的技术问题?#21364;?#30528;优秀的技术人才去解决,为什么要把转向管理变成一个传统?#35838;?#20250;?#39318;?#24049;:我可不可以只专注在技术上,一样可以发展得很好?」

enter image description here

这不是一种简单的?#35752;矗?#20182;有自己理性的分析。「坦白讲,我自己也是越来越平静的,或者包容的心态去?#21019;?#21508;种事情和想法。

「首先大家都是学技术专业出身的,这个毫无疑问,自己的内心所属就是技术本身。管理?#28304;?#23478;来讲也许是第二专业,或者甚至不那么专业,没有那么有归属感,所?#38405;?#20250;困惑。但坦白讲两个都是机会,我觉得这个是因人而异的。

「第二就是说,管理更多的是跟人打?#22351;潰?#19981;同的人需要花的代价和精力是不一样的。我也看很多社科研究的书,也看一些管理的书(推荐《合作的进化》,《精益企业》等),很多东西到今天还没有定论,所以管理路线是一个不断往前探索的过程,某种角度这也是管理有意思的地方。

「而技术的世界是小葱拌豆腐,一清二?#20303;?#20687;我这?#20013;愿瘢?#25105;希望所有东西都有确定答案,可以有方法?#26032;?#24452;,永远去追求那些东西,心里会有底。」

他说,自己之前也一直不确定,是Weex项目给了他走技术路线的信心。

「参与Weex的项目,我收到很多的鼓励,更好的反馈,然后被周围非常多的人认同。它让我?#34892;判模?#19968;直做技术做下去,可以探索出不一样的工程师发展的可能。」

996的新意义


2017年1月21日,勾股、?#24040;?#21644;完颜组成了996乐队,在阿里巴巴西溪园区举办第一次新歌发表会。

其实,他们乐队的成员最早在「All-in无线」的时候就认?#35835;耍?#20294;乐队两三年之后才成立。一是因为之前工作太忙,确实没有时间。二是也没有所谓的契机。

直到一?#25991;?#20250;,同事?#28044;?#33258;己写了一首歌,吉他弹唱。歌?#24066;?#24459;?#24049;?#31616;单,唱的就是一些自己工作的感受和状态,令人非常感同身受。

「?#34892;?#20154;加班,有人在?#36947;粒?#26377;人今天没活干……」?#25913;?#20250;写代码,你会切页面,你做出了?#21592;?#32593;;身材走样了,眼睛坏掉了,头发也快没有了……」

于是,他们?#29238;?#20250;点乐器的人凑在一块聊了聊,想给他伴奏,组了个乐队,名字就叫996。

enter image description here

他们设计了一个简单的logo。「logo里面的99像一个引号,代表歌词。6像一个音符,代表作曲,也就是旋律。」

他们想这样赋予996一个新的意义,而非那个规定的工作时长,或用所谓「奋斗」来鼓励大家绑架自己的生活。

勾股说:「第一个9是早上9点,代表认真工作。第二个9是晚上9点,代表下班之后的个人生活。那个6呢,就是周末可以玩玩音乐,做点自己?#19981;?#30340;事情。」

他们希望通过一种轻松的方式,传递一些想法,一些声音给技术社区。让大家知道,如果你在工作当中遇到了一些问题,即便不是纯技术问题,也是可?#38405;?#26469;讨论的。虽然技术交流会上不能讲,我们可以把它写成歌,以音乐这种轻松的方式,唱给别人听。

enter image description here

前?#25913;輳?#26377;人问勾股:?#25913;?#24590;么能看那么多东西?」他笑说:「因为比你晚睡?#29238;?#23567;时。」他习惯用更多的努力和时间去换一个更好的答案。

可是,工作生活怎么平衡呢?这个问题,每个人的选择不一样。?#34892;?#20154;是按小时计算,比如白天?#29238;?#23567;时工作,晚上?#29238;?#23567;?#34987;?#23478;陪家人;?#34892;?#20154;是按天计算,周一到周五玩命地工作,周六周日陪家人。

勾股说,他是属于那种按年计算的。

前?#25913;?#20182;真的花很多精力在工作上,忽视了家人。直到两年前,他的女儿出生。面对这份天赐的礼物,他才突然开始?#27492;跡?#33258;己这种透支身体的工作状态,真的可?#20013;?#21527;?

他意识到了家人对他的需要,并且开始做出行动上的改变。

今年,女儿两岁了。他说:「我觉得自己逐渐地找到了一种既能很好地工作,又能够很好地生活的状态。我主动做了很多变化,能够花更多的时间在家里,这让我很有成就感。」

他说等再过?#25913;輳?#31561;宝宝长得比较大了,他可能再把一部?#31181;?#24515;逐渐转回工作当中,做更多事情,追求更多想法,这也未尝不是一种选择。

除此之外,他生活中还有一个非常狂热的业余爱好,就是足球。

enter image description here

「?#20063;还?#30475;球赛,有机会?#19968;?#20250;下场去踢球,平时也爱跟同事玩足球游戏。如果以后不做前端的话,即使没办法做球员,也许做个足球教练?

「只要有足球相关的东西在我的眼前,我就永远不觉得疲倦,这个还蛮神奇。?#34892;?#20852;趣爱好,可能一时兴起玩一玩,不会坚持很久,但是足球这么多年就一直没有离开我的生活。」

enter image description here

也许这就是工程师们或程序员们,就像996乐队的歌词所写,他们拼命工作,在代码的世界like a hero. 但在工作之外,他们也对生活有着?#30475;?#30340;追求。

--End--

技术的世界没有退缩的念头

追寻生活中的小小需求

最好的技术成就最好你我

让音乐?#27425;?#33258;己加油

——《?#20013;?#36845;代》996乐队


图片来源:勾股

封面代码:勾股

文:李冰

采访:乐馨,李冰