勾三股四用技术追寻世界的确定答案

20次阅读

共计 7563 个字符,预计需要花费 19 分钟才能阅读完成。

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

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

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

下一次外界听到他的消息,是在 2017 年底,却完全与技术无关。原来,他和几个同事一起,组成了阿里 996 乐队。大家才发现,原来程序员们不仅会写代码,写歌也蛮好听。

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

文 | 李冰
采访 | 乐馨,李冰


移动端崛起

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

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

傲游做了大量革命性的创新,不仅推出免费版,支持多语言,用单窗口多标签代替了多窗口,推出广告过滤功能,而且它独创了如今浏览器必备的在线收藏系统。2007 年,傲游霸占了非常高的市场份额,市场占有率仅次于 IE 浏览器。

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

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

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

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

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

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

那段时间他印象深刻的就是每个人都很拼。

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

2016 年,手机淘宝和淘宝的合并标志着一个时代——移动端的崛起。手淘的创业之路算是告一段落,无论从技术还是从业务,都和淘宝网的 PC 业务做了更深度的整合。

Weex 的故事

2013 年,阿里「All in 无线」战略如火如荼地推进,大量资源向无线业务倾斜。当时,勾股所在团队负责手机淘宝的前端业务,在快速向前的同时,他们面前也摆着大量的问题。

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

iOS 和安卓的发布节奏有限制,比如 iOS 每月发一版。但淘宝每天都要做新促销活动或者上新功能。有些东西这个月没赶上,就只能赶下一个月。所以可不可以找到一种方式,能够随时发布更新?

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

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

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

第一个困难是当时 React Native 的版本还很早,迭代非常快,并且每次都有大幅度的改动,团队跟不上这个节奏。

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

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

干脆还是靠自己吧!

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

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

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

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

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

三大武器虽已备齐,现实遇到的困难却比预估的更复杂。

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

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

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

2015 年的双十一 Weex 首秀,历史上第一次把 Native 级别的体验和稳定性带到了天猫双十一的移动会场。

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

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

Weex 的意义

目前为止,一切都很顺利。

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

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

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

Weex 项目以及手机淘宝内部,经历了怎样的变动?

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

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

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

他说,一面的确有被动的因素存在,另一方面自己在想,不如主动地去拥抱变化。

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

「Weex 项目是阿里巴巴第一个愿意以官方的身份,并且主动地去拥抱开源社区的。

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

「其实我们也讨论过这个问题,但担心将它开源会给公司惹麻烦。

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

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

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

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

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

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

「我觉得这些类似的技术一定是更灵活的。更灵活的意思是说,你可以更加快速,更加直接有效地去完成你的开发,完成你的发布,然后让用户看到。这个很理想。

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

前端是什么

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

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

他刚加入淘宝时,前端是在 UED 团队的,也就是设计团队。过了一段时间,团队结构变成了「UED 团队、前端团队、技术团队」。直到现在,他们已经完全归属于技术团队。显然,前端的技术含量在不断地积累和提高。

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

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

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

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

他最近一段时间对一个东西比较着迷,叫信息无障碍化,英文是 accessibility。

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

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

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

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

深度参与 Vue.js

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

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

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

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

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

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

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

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

技术还是管理

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

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

「在当时阿里的环境下,无论是项目管理还是团队管理,很少有人不做管理而可以被大家认同,当然也包括内部晋升。

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

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

这不是一种简单的固执,他有自己理性的分析。「坦白讲,我自己也是越来越平静的,或者包容的心态去看待各种事情和想法。

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

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

「而技术的世界是小葱拌豆腐,一清二白。像我这种性格,我希望所有东西都有确定答案,可以有方法有路径,永远去追求那些东西,心里会有底。」

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

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

996 的新意义

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

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

直到一次年会,同事子宽自己写了一首歌,吉他弹唱。歌词旋律都很简单,唱的就是一些自己工作的感受和状态,令人非常感同身受。

「有些人加班,有人在偷懒,有人今天没活干……」「你会写代码,你会切页面,你做出了淘宝网;身材走样了,眼睛坏掉了,头发也快没有了……」

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

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

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

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

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

前几年,有人问勾股:「你怎么能看那么多东西?」他笑说:「因为比你晚睡几个小时。」他习惯用更多的努力和时间去换一个更好的答案。

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

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

前几年他真的花很多精力在工作上,忽视了家人。直到两年前,他的女儿出生。面对这份天赐的礼物,他才突然开始反思:自己这种透支身体的工作状态,真的可持续吗?

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

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

他说等再过几年,等宝宝长得比较大了,他可能再把一部分重心逐渐转回工作当中,做更多事情,追求更多想法,这也未尝不是一种选择。

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

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

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

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

–End–

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

追寻生活中的小小需求

最好的技术成就最好你我

让音乐来为自己加油

——《持续迭代》996 乐队

正文完
 0