本文为《新程序员004》内容,与Vue.js作者尤雨溪畅谈他的程序人生。《新程序员004》即将上市,敬请期待。从MySQL之父、MariaDB创始人Michael “Monty” Widenius,到PostgreSQL全球开发组联合创始人Bruce Momjian、阿里巴巴副总裁贾扬清、指令集创始人兼 CEO潘爱民、著名科技作者吴军,再到 Vue.js作者尤雨溪……《新程序员004》以「我们的技术时代,我的程序人生」为主题,与多位国内外知名的技术先锋和新生代程序员代表进行了深度对话,希望行业优秀人物的技术之路与人生感悟给大家带来启发。
作者 | 刘韧、谷磊
责编 | 田玮靖
出品 | 《新程序员》编辑部
2016年2月,新泽西,29岁的尤雨溪着手在Patreon众筹平台开设账号。接着,他呼吁Vue.js(以下简称Vue) 用户赞助Vue全面开源。尤雨溪好友郭达峰立即响应,使用其公司开源基金,向Vue提供了为期6个月、每月3000美元的支持。尤雨溪的月收入很快达到4500美元,但依然不到供职Meteor公司时月工资的一半。
图1 Vue.js作者尤雨溪
2014年10月,Meteor邀请尤雨溪到硅谷分享他的个人作品Vue,随即便邀请尤雨溪加入公司。“Meteor是第一个用JavaScript做全栈的公司,概念很超前,当时JavaScript生态正在npm带动下快速爆发。”不想再在Google做颗螺丝钉的尤雨溪欣然接受邀请,开始在新泽西远程为Meteor工作。
尤雨溪愿意从Google离职,更多是为了诞生于2014年2月的Vue能在专注做框架的Meteor公司得到更好地发展。Vue是创建用户界面的JavaScript框架,也是创建单页Web应用的框架。互联网UI设计师要想让自己设计的页面生动起来,就需要学JavaScript编程,Vue提供的JavaScript框架,能帮助没有经过太多编程训练的UI设计师,快速接受并理解规范的编程理念,减少底层编程的工作量。
刚到Meteor,尤雨溪就建议Meteor拥抱npm生态圈,“把整个框架改造成一个能直接使用npm生态的包。”当时Meteor自己有一套包管理系统,与npm并不兼容。Meteor认为尤雨溪的建议是一次成本很高的重构,风险太大,没有采纳。直到后来尤雨溪的建议被市场证明,Meteor才开始拥抱npm,但为时已晚。
对于尤雨溪来说,在Meteor工作的这一年,Vue演进顺利,他也对前端框架的架构有了自己的理念。但Meteor却是个极端一体化的框架,前端、后端、数据通信甚至数据库都要特别指定。“指定数据库这一点极大限制了它作为一个全栈框架的适用范围,把自己的市场份额压缩得非常小,是个败笔!”尤雨溪在Meteor没有技术决策话语权。后来,Meteor竟选择押注Facebook的React,而不是尤雨溪的Vue。
判断出Meteor框架没有前途,尤雨溪一下子失去了动力。“我做的这些事也不能让Meteor起死回生,还不如辞职,全职去做Vue。”“我宁愿快乐地工作12个月,也不愿不快乐地赚11个月的高薪,然后休1个月假,花钱买快乐。”2016年2月尤雨溪毅然从Meteor离职,开始凭一己之力挑战Facebook的React、Google的Angular。时间轴拉到2021年,Vue在全球最佳Web前端框架中排名第二,成为GitHub上最受欢迎的项目之一。
GitHub是尤雨溪的办公室和杠杆。尤雨溪一直认真阅读GitHub上对Vue提交的Pull Requests(PR),以此判断提交PR的用户对Vue的理解,如果这个用户所发的PR和尤雨溪的想法重合两三次,尤雨溪就会邀请他加入Vue开源团队。GitHub不仅是尤雨溪找用户的地方,还是尤雨溪找团队的地方。那些在GitHub上活跃的Vue成员不一定非要写代码以及做技术上的贡献。“发现问题、回答问题、帮助社区新人上手或修改文档等,都是非常有价值的贡献。”Vue团队成员因迫于生活压力或技术兴趣转移等因素离开,也很正常。“一个开源社区想要有活力地延续下去,就要不断发掘、吸纳新鲜血液,更要给新人成长空间。”“开源的活力就在于每个参与者都在真正自主地做事,大家都希望项目变得更好。”
Vue诞生在Google
2013年,纽约,Google Creative Lab。Google很多项目在这里实验、诞生。尤雨溪在用Google的Web前端框架Angular 1(现在叫 AngularJS)实现各种新奇、非传统的交互创意。他一边快速完成创意总监交派的工作,一边从设计师角度简化AngularJS,就此埋下一颗颗替代AngularJS的种子。
时间倒回2012年,Facebook的一位团队负责人在网上看到尤雨溪用JavaScript在Web实现Clear App滑动操作的视频,立即邀请尤雨溪到Facebook面试。此时Facebook对Web的兴趣比App大,认为用户在移动端会延续PC端的网络使用习惯,更多地使用手机浏览器,而非App。尤雨溪能在浏览器复刻App效果,很合Facebook胃口。
四、五轮面试后,一位华裔工程师面试尤雨溪,他问“JavaScript原型链是什么?”尤雨溪完全回答不上来。“之前只学了实现目标任务的技术,并没有对JavaScript进行系统学习。”从Facebook败下阵来,尤雨溪重新啃JavaScript教材。“把JavaScript语言的每个细节都过了一遍。之后,别人再问,JavaScript是怎么回事?我总能说得头头是道。”
几个月后,当尤雨溪正为硕士毕业后的工作着落发愁时,意外收到了Google Creative Lab猎头的邮件,问他有没有兴趣聊聊?尤雨溪当时就兴奋地回邮件说好!电话即刻响起,猎头在电话那边说明项目后,没提面试的事,直接问尤雨溪是否有兴趣加入。Google Creative Lab每年招5个应届生:项目经理、文案、平面设计、动画设计、交互技术各一人,组成The Five团队,尤雨溪负责交互技术。此刻的尤雨溪感到了天生我才必有用:“程序员最讲究的就是作品,光说没用,代码要拿出来溜溜!所以现在程序员都得有自己的GitHub。”
兴奋的尤雨溪赶紧通知远在中国的爸爸,自己被Google录取了。尤雨溪爸爸却纳闷了:儿子,一个艺术生,怎么能去Google?但他还是非常、非常地高兴!
Google Creative Lab是个非常有意思的地方,这里以做创意类的东西为主,延续了Google早期奔放的做事风格。“不少搞技术的都是创意领域的精英,拿过很多大奖。”Creative Lab工作节奏非常快,创意总监出一个想法,俩小时后,平面设计师就做出一个工作流程,紧接着就需要尤雨溪当天把原型在Web上实现。“哇!这么酷的东西,居然让我来做!”Google Creative Lab 80%~90%的项目都是保密的,是Google的内部产品,属于团队内部探索。“一个产品现在是这个样子,5年后和10年后它可以变成什么样?10年后的交互还是不是这个形态······”
工作之余,尤雨溪开始开发自己的“玩具框架”Seed。Google的工作内容偏重开发速度,而尤雨溪想沉淀一些更工程化的技术能力,另外,每次都靠作品获得机会的尤雨溪单纯觉得“要有作品可以开源,作品才是成就感”。Seed便是Vue的雏形。
创意行业,设计师非常看中技术人员还原设计稿意图的能力,要求技术人员首先能很好地理解设计意图,其次要有审美能力。尤雨溪在团队的头衔叫Creative Technologist,负责把创意转换成看得见、摸得着,能够交互的程序。Google看重尤雨溪用技术手段将创意展现出来的能力和细节方面的执行力,在Google,像尤雨溪这样的人不多。
但尤雨溪在Google Creative Lab做了两年多就离开了,他不想总在不同的项目间跳来跳去。“在这里,我们做了好多内部原型,用来反馈各种各样的创意想法。一般1~2周做完,先是内部讨论,觉得这东西有意思,然后把狂放的想法中比较实际的东西提取出来,交给产品团队。产品团队看到我们的东西通常会说:‘很棒,不过有点太酷了,我们可以把里面的一些东西搬到现实的产品中来。’然后就没下文了。”
尤雨溪渴望做出来的东西能传达到用户手里,更想看到它能在世界上产生些影响。当然,现在Google的产品中,有些能看到当年他们所做东西的影子,但这个反馈周期太长了······
尤雨溪离开Google没立刻告诉爸爸,他怕爸爸担心他的未来······全职做Vue,尤雨溪又瞒了爸爸一年……
被爸爸逼到失去学习热情
最小玩家尤雨溪躲在老家旁边的网吧玩《红色警戒》。爸爸冲进来,揪着耳朵把他拎回家!
1987年,尤雨溪出生在无锡一户注重教育的家庭,爸爸是公务员,妈妈在大学教书,后来去了银行。上小学时,按照惯例,10月及以后出生的适龄儿童要等下一年才入学,而尤雨溪的爸爸不这么做,相当于让尤雨溪提前一年上了小学。
小学的尤雨溪,虽有一台486,但并不用它学编程,而是经常缠着表哥帮他装游戏,一次,看到表哥在家里玩《无悔的十字军战士》,感觉很酷,就让表哥也帮他装一个。但自己的486只有4MB内存,没法装。后来表哥帮他升级了8MB内存条,才装上了他心爱的游戏,尤雨溪因此超级崇拜表哥。尤雨溪经常去家旁边的网吧玩,一来二去,跟网吧老板混熟了,人少时,老板免费让他玩。慢慢地,网吧为大众接受,尤雨溪再去网吧,家里人也就不管他了。
图2 486前的尤雨溪
当时奥数风潮正兴,小学快毕业时,为稳妥进入当地最好的初中,对数学没太大兴趣的尤雨溪参加了奥数比赛并且拿到了奖。爸爸兑现奥数拿奖承诺,在小学升初中的暑假,奖励了尤雨溪一台奔腾2(奔腾2GB台式电脑),尤雨溪非常开心,终于可以玩《帝国时代》了!游戏之余,尤雨溪开始用Windows自带的画图工具,在电脑上画画,积攒了30多幅画作。这是尤雨溪最早的作品。
大桥中学一直是无锡最好的民办初中,师资力量很强。在这里的三年是尤雨溪学生时代压力最大的时期。“学校课程排得非常满,早上6点就要吃早饭准备上学。”班里竞争激烈,全班40个学生,尤雨溪成绩一直是中上游水平。“考进前10名就算很好的了。”
尤雨溪爸爸人大毕业,考过托福,但专业所限没能出国,出于这份执念,从初一开始,爸爸就一直逼尤雨溪背单词。尤雨溪在校学习强度本来就很大,双重压力之下,尤雨溪失去了学习的热情,可他还是很听话,一切尽力为之。
申请到美国本科“全奖”
周末,上海到无锡回家的火车上,尤雨溪还在背《新概念英语》。到家,爸爸会抽查,背不出来就要挨骂,尤雨溪因此恨过爸爸。《新概念英语》从第三册起难度陡然增加,需理解文章逻辑才容易背诵。背完《新概念英语》第四册后,尤雨溪英语水平到达了新高度。平时英语课不太认真,考试同样能拿高分,到此尤雨溪又开始感谢爸爸逼了自己一把。
2002年,复旦附中还在面向全国招生,1000多人参考,招50名外地学生。“大我一岁的好友先考进了复旦附中。他将这个消息告诉了我。”“可想而知,信息差对一个人的影响有多大。如果当时不知道外地生能考复旦附中,我就错过了一次重要的机会。”
在复旦附中的三年,尤雨溪过得很开心,没有初中那么大压力,有时下午四点多就放学了,尤雨溪就会和几个同学去网吧打游戏。复旦附中有各种社团,是国外通识教育的氛围。“学校生活开销也不大,食堂的伙食很便宜,偶尔会租一些漫画、小说来看,玩游戏会花一点钱。”
复旦附中一位学长被哈佛录取,触动尤雨溪开始申请美国本科,但时间有些晚了。当时国内无法考SAT,要到香港去考,可尤雨溪还要上课,根本来不及安排去香港,更别说备考了。因此,尤雨溪考了托福,却因没请中介,自己拿托福成绩“裸申”而均以失败告终,这些学校根本不考虑没有SAT成绩的学生。尤雨溪也尝试性地申请了哈佛大学,拒绝信寄到了复旦附中门卫,大家看到,以为尤雨溪也被哈佛录取了,尴尬的他,只能告诉大家自己是被拒了。
万般无耐之下,尤雨溪去请教那位考上哈佛的学长,学长告诉他:第二年三月还有一批常规录取。另外,可以多逛逛留学美国本科的交流平台CUUS论坛。在CUUS论坛,尤雨溪了解到美国文理学院(Liberal Arts College)以本科教育为主,规模小而精,顶尖文理学院的学术声誉完全不输常春藤名校。在三月第二次申请后,尤雨溪很快拿到了两三个录取通知书,都有全额奖学金,他选择了离纽约比较近的学校Colgate。
拿到Offer后,尤雨溪就不想国内高考的事了,开始在附中混日子。爸爸警告他签证还没下来,如果最后拿不到,高考又考砸了,那就完了。尤雨溪就很不情愿地继续备战高考,结果考上了复旦大学。
让艺术插上技术的翅膀
尤雨溪学会ActionScript 3后,开始做带互动的实验性网站。一做就是一个通宵,第二天出去吃个饭,回来睡俩小时继续干。尤雨溪庆幸自己具备这种长时间保持专注的能力。
2005年,18岁的尤雨溪踏上了美国征程。已在波士顿的表哥开了好几个小时车将他送到学校。尤雨溪完全没想到Colgate在纽约郊区一个几千人的小镇里,虽然像个世外桃源,但没车寸步难行。“本科四年过得比较憋屈。”
学金融,一方面是爸爸的主意;另一方面,“那时计算机专业还没有后来这么热门,大部分同学都会选择数学、金融这样的专业,因为这些领域更容易找到H-1B(工作签证)的工作。”Colgate培养了很多金融领域的人才,每年会有一些金融企业来学校做宣讲招聘。
尤雨溪很早就玩Flash动画制作,还做了一个作品集,他随意把一些作品发到网上的互动设计论坛里,结果被北京一家公司的创意总监看中,邀请他到北京实习。尤雨溪的作品和作品意识一直是他人生的杠杆,为他创造机会,放大效益。
在Colgate大二快结束时,尤雨溪当面跟爸爸讨论了专业问题,他对金融不感兴趣。尤雨溪要用一年时间在艺术设计方面做出点成绩来,这是他第一次说服爸爸。
北京的半年实习彻底改变了尤雨溪,他决定要做一名设计师。再回到Colgate,尤雨溪放弃金融坚定地选择了艺术专业(Studio Art)。遗憾的是Colgate严格说只有一个老师真懂数字艺术,尤雨溪需要自己摸索专业知识。当Flash可以用ActionScript语言写脚本时,尤雨溪开始做一些简单的互动,接着尝试实现复杂场景。学到ActionScript 3时,尤雨溪对编程就有了些概念。但凡基于实践需要,再难,尤雨溪都会主动去学。
“好在并不是所有类型的编程都需要数学功底 ” ,因为尤雨溪的数学学得不算好,对他感兴趣的方向来说,“编程更需要逻辑分析能力”,而他在Colgate逻辑课拿了A+。尤雨溪学编程出于视觉驱动,他看到别人做出了一个很酷的东西,就开始想,怎么写代码才能做出这种效果?当然也会尝试反向编译别人的源码。GitHub的出现让他十分开心,他天天在上面看别人的源码,看到源码,就能弄明白一个东西是怎么运作的。尤雨溪的编程一直是结果导向。
尽管如愿以偿,开始数字艺术专业学习,但尤雨溪知道数字艺术专业找不到工作,他必须读硕士,将艺术插上技术的翅膀。在四、五个Offer中,尤雨溪选择了Parsons(帕森斯设计学院),因为他还是想留在纽约。Parsons的同学非常跨界,有的同学是工作了几年的设计师想学编程,有的是经验丰富的软件工程师想搞艺术,他们来自不同的国家和地区。纽约是个大熔炉。
图3 Parsons校园里的尤雨溪
硕士阶段没有奖学金,“花了家里不少钱。”所以尤雨溪很拼,努力学到了很多东西。“这么多花销,如果再不努力,最后再找不到工作,就太说不过去了。”在此期间,尤雨溪不仅学习了openFrameworks、动画算法等技术,还接触到了JavaScript编程语言,并在JavaScript这条路上越走越深。
后来的事情大家都知道了,正如文章开头所说,尤雨溪在硕士毕业后,先后供职于Google Creative Lab、Meteor,全职做Vue后,他逐渐找到了适合自己的工作与生活节奏,也将Vue送入了GitHub TOP3 Repo。这一切看似不难,如同每一次人生选择,之后的发展轨迹便顺理成章一样。尤雨溪本人则认为,时机、坚持、基于用户去思考,三者缺一不可。
后记:本文第一次全面实践了像写程序一样写文章的理想。CSDN班实验了,集体远程采访、集体整理采访录音、主题和框架构思、模块写作、集体修改编辑校对。如果你也想加入CSDN班,请从向本文提修改意见开始。
录音整理:谷磊、周扬、林兴陆、鲁飞龙
编辑/校对:田玮靖、萧少聪、王雪艳、李欣欣、张淑娴
在《新程序员:开发者黄金十年》中,尤雨溪分享Vue项目从零成长为业界主流框架八年间鲜为人知的心路历程,点击
订阅 《新程序员:开发者黄金十年》。
版权归原作者 《新程序员》编辑部 所有, 如有侵权,请联系我们删除。