3月26日,杭州的天阴沉沉,这是一种山色空蒙雨亦奇的美丽,还是雾霭笼罩下的怪异,对于来访阿里巴巴西溪园区的人们来说,没人关心这些。人们行色匆匆,兴奋地往各自目的地奔赴而去。我也来不及细思这些,因为今天要和刚从Facebook来到阿里的赵海平聊天。
就语言之争,赵海平称,有人会去争论锤子和斧子哪更好使吗?它不是要根据你做的事来定吗?
赵海平是非常著名的软件工程师,曾在微软工作过。2007年加入不到50位软件工程师的Facebook(是第一位中国工程师),期间他创建了HipHop项目。HipHop可以将PHP脚本代码先转换成抽象语法树(AST),之后再转换成优化的C++代码,使其速度提高5到6倍,为公司节省了数十亿美元。2015年3月他回到中国,加入阿里巴巴技术保障部,重点攻克阿里在软件性能以及Java使用过程中遇到的技术问题。
采访在园区图书馆进行,四周书籍环绕长窗落地,赵海平看上去显然刚从另外一场繁忙的事务中抽身过来,但在这场长达1小时47分钟的采访中,他一直神采奕奕、兴致高昂地谈论了各种话题:小时候的趣事、生物和计算机间的痛苦抉择、HipHop项目中的艰辛……
“计算器有什么好学的?”
赵海平中学时代就读于秦皇岛市山海关第一中学,学校虽然非常小,但很特别——恰好在天下第一关脚下,所以长城就成了这个学校的一面校墙,坐在部分班级里甚至能领略到山海关的雄姿。
在他的那个时代,计算机还是个稀罕物,别说是高中,可能在大学,计算机都很少见。所以当他们北大物理系毕业的校长组织数学好的同学,参加学习计算机的课外活动时,赵海平很是疑惑,“计算器?这个需要学吗?”事后赵海平才知道,他把“计算机”听成“计算器”。不过那个时候他真不知道什么是计算机,并且《计算机报》也是在几年后才出来,就连当初学习的时候,整个书店也只有一两本计算机相关的书籍,而内容早被他们翻烂。
起初学习的过程很原始,“一开始连计算机都没有,学校虽然已经去买,但要等很长时间。所以学Basic语言时,完全不知道在干吗,就纯粹硬学,学到最后连循环都学了,还没见到计算机。”后来计算机到了——是Laser-310,赵海平对这个记得特别清楚,谈到这里的时候,他还绘声绘色地形容“一按那个键盘,还‘哔啵、哔啵’响”。赵海平回顾称,当时的游戏也很简单,简单到只有小人在屏幕上又唱又跳。放到现在看这哪是游戏,但在那个时候觉得这很奇特。
小时候学计算机发生了两件事让赵海平记忆犹新,一是利用汇编命令打印系统。大家都知道利用汇编命令可以把删掉的文件再找回来,那个时候的赵海平觉得这很牛,于是去找汇编命令然后到学校实践,然而却把整个系统都给打印了。他至今仍很兴奋地说到:“苹果有反汇编的工具,它可以不断地反汇编操作系统,所以一边反汇编一边打印。机房老师不知道这事,但机器却一直在打印,打印了一宿,把机房的一摞纸全用了,而那个时候的打印纸特别贵……”
另一件事则是,“废寝忘食”地输入飞机。当时整个学校只有一台计算机,赵海平每天中午都是赶紧扒完饭,省出一两个小时的时间去机房。有次在机房按照杂志上的坐标输入显示飞机。“图的打印很简单,实际上就是从这一点到另一点画一条线,但是它有很多条线,最后能画出一个特别漂亮的飞机图。”没想到快要结束时,有人碰掉了把电线,内容全没了,大家面面相觑,又心有不甘。于是第二天又跑到机房重新输入一遍,最后看着苹果绿颜色的屏幕上呈现的飞机,赵海平觉得那种成功的感觉至今仍很兴奋和微妙。
抉择:继续生物or计算机?痛苦!
如此喜爱计算机,为什么最后去了北大生物专业?这应该是很多人的疑惑。赵海平称,没有选择最爱的计算机专业有两个原因:一个是生物在当时太热门——21世纪是生物的世纪,而当时赵海平高考的分数恰恰很高,“要低一点就能报计算机系,但高一点的全都直接进生物系,所以当时各个地方的高分学生都去学生物了。”第二个原因则是大家对计算机的认识。“那个时候还认为计算机只是一个工具,不管做什么,你都会‘玩到’计算机。”大家都把计算机当玩具,不是一个正儿八经的专业。
不过当生物学了很长时间之后,赵海平发现自己还是喜欢计算机,他这么描述当时自己的感受:“我不喜欢生物,也做不好生物。身边学生物的人可能不比我更聪明,但他们做得比我好,因为他们热爱这个专业,愿意花很多时间去看文献做实验。我更多的是在生物实验室里写程序,找与计算机相关的活……这是一种很别扭的感觉。”于是他决定踏上痛苦的转行之路。
之所以痛苦,主要是不愿意就这么放弃生物,用赵海平的话来讲就是“生物系的机会也很宝贵,而且已经学了这么久,又不确定自己的将来做计算机会不会更有意思?”另一方面则是生物实验室的台湾导师对赵海平格外青睐,他知道赵海平很聪明,但心思并没放在生物上,不过他仍然希望赵海平能够继续把博士读完……
这些因素让赵海平一直很痛苦地思考这个问题,直到一件事让他下定决心转专业。那时候他已在美国纽约大学,“一上选修的计算机课感觉喜欢的不得了,听老师讲东西都有一种触动——原来是这样。”后来选修课的老师也鼓励他去学计算机,于是他下定决心,并整理自己做过的小项目去申请普林斯顿大学计算机硕士。
半听半睡状态下,突然举手“老师这不对”
进入普林斯顿计算机系后,赵海平如鱼得水,门门功课都是A+,学习过程更像是在印证他以前的实践,并补上自学摸索中所缺失的东西。“来到普林斯顿后感觉特别好,不仅仅是因为终于学了自己喜爱的专业,还有机会和非常优秀的人在一起,觉得特别快乐。”
谈起在普林斯顿最大的感触,赵海平称,好几个同学都是当年奥林匹克金牌得主,虽然年龄较小,但都非常聪明和优秀。“所以我们工作一定要进入一家好公司,因为跟优秀的人在一起工作,就自动地有那种很快乐的感觉。”
在普林斯顿学计算机的赵海平同时也很疯狂:经常打游戏、做小项目,有次到第二天早上五六点才睡,但发现八点还有课,于是他在那半听半睡,听到半途突然醒了,举个手说老师这不对……在这样的精神状态下,他还不忘给老师挑错,而老师也觉得,这学生挺神奇,一边睡还一边提问题。
原本赵海平打算读完计算机硕士,然后再把生物学博士读完,但在毕业前的最后一个星期,他就拿到了四个Job Offer。是读博,还是工作?赵海平又陷入了抉择,但最后还是听取了生物实验室同学先工作的建议。
“现在回想起来,这是在骗自己。”
为什么?
“一旦干上计算机这行,生物博士对我并不是特别的重要。”赵海平如此坦言。
不后悔读生物,非常感谢生物的训练教他如何系统“偷金子”
对于赵海平改行学计算机,不少人都有误会,因为那个时候计算机恰好也火了,很多人以为他是因为计算机火了才改行。“其实真的不是这样子,那个时候MBA更火,工资也更高。也有朋友劝我去读MBA,但经验告诉我一定要做自己喜欢的事,不能再跑到第二个不喜欢的行业,不然这辈子就废了。”而这也是赵海平改行之后,为什么老是如饥似渴地去学习和工作的原因,因为他老觉得耽误的时间特别长,心理上老想去补偿。
但对于读了这些年生物,赵海平并不后悔,他称读生物的那些训练非常有用,对他帮助很大。“它教会了我,怎样系统地去解决一个问题,而不只是把这个问题解决。”赵海平非常善于举例子,他打了个比方:如果我们是一群海盗,有一个岛有很多金子。本科毕业的学生划着船弄来一箱金子就很出色;但如果是博士毕业的学生去弄金子,除了弄来金子之外,他还必须带来一句话才合格——没必要再去那个岛了,金子全被拉回来了。“这就是博士的训练,它告诉你要系统化的去解决一个问题。等解决问题后,你已经看到问题的所有方面,等别人再想解决,你已经全部想到。”
赵海平放弃生物学博士学位,虽然有些许遗憾,但他庆幸的是这些训练没有白费。
微软如日中天时去了Facebook
2006年前后,微软如日中天、风头正劲,而当时的Facebook全部工程师还不到50人,在这样的情况下,赵海平离开微软,去了前景仍不太明朗的Facebook。
离开微软,主要是两个原因。一个是微软当时的流程非常规范,强调人和人之间按部就班做事,非常条理化。这也许是大公司发展到一定阶段的必由之路,但赵海平希望寻找节奏更快的平台,“毕竟我在生物上已经耽误10年了。”赵海平解释到,“当时的微软和硅谷公司在文化上还是有明显差异的, 硅谷文化强调个人的主动发展远远大过公司给你规划好的发展。”另外一个原因则是家庭因素,最终他来到了Facebook。
Facebook的经历太独特、珍贵
那个时候Facebook人特别少,只有40多个程序员,大家都叫工程师没有分组,当时所有人都挤在一个特别拥挤的办公室。桌子很小,彼此离的很近,出了问题,一吆喝就行。Facebook用户数增长的特别快,大家的工作也都围绕着快速增长带来的问题进行,“一旦有什么问题,大家就往上扑,你愿意解决什么就什么,特别的没有章法。”赵海平称,这恰恰和微软形成一个鲜明的对比——毫无章法,乱到你有时候觉得微软还不错,它挺有章法。
赵海平在Facebook待了8年多,他称无论是用户的增长、公司上市的奇迹,还是Facebook对整个世界的影响,都太独特。当初没有人想到,至少赵海平以及他身边的同事都没想到Facebook会是今天这么大的一个规模,当时只是看到在不断增长,并不知道增长之后意味着什么。独特也还包括做项目的艰辛,“我们是被逼的把网络和服务器做到极致,因为我们每省0.1%,就是几百万美元,所以必须把东西做到最好。”
现在回头看这些经历真太特殊,当年坐你旁边的人都成了高管,这是一种特别奇妙的感受,“像当年Facebook的的联合创始之一 Dustin Moskovitz就坐在我旁边写过程序,你现在让他坐在我旁边写程序,不太可能!”但当时大家没有想这么多,所有人都干的热火朝天,讨论问题可能会一直持续到十一二点,下班了也可能在工作——网页怎么设计、后端应该怎么做…一大堆意见。
这么疯狂的原因很简单,一个是Facebook用户不断地增长,一直在鼓舞着大家;另一个则是这些人都非常优秀——哈佛、CMU、MIT、斯坦福…,每一个人都特别有才、特别有想法。
到阿里是想拥有另一段独特的经历
从Facebook到阿里,并不是一个很突然的决定。赵海平来之前,已经跟阿里技术保障的刘振飞、周明、毕玄聊过,对阿里已经有了整体的了解。
正式接触是在2014年阿里IPO前后,阿里组团来美国,王坚博士和赵海平深入聊了聊。发现技术很对口,需要解决的问题也很新鲜——Java、JVM从来没做过。他又来了趟杭州,发现杭州挺美、阿里员工脚踏实地的公司文化很符合他的性格,对阿里很有好感。
而让他下定决心回国则是阿里面临的技术难题和挑战。“在Facebook经历非常特殊,而阿里就更特殊——大规模的交易、单天的交易量、双十一的交易量,不是任何一家美国公司有的,这种独特性是我寻找的东西。当你去解决这样的技术难题时,你就会有新的认识:这个量级的问题可以这样解决,提升一个量级,就要用新的解决方法,最后你就能看到问题的全部。”体会不同角度去看不同的技术难题,对赵海平来说恰恰就是最享受的一件事情。
HipHop不为人知的故事:一开始野心并没有那么大
其实最初做HipHop项目时,他们的野心并没有那么大,不是一定非要把它转换成C++,但后来发现,这么做确实可以提高性能,所以就思考是否可以用工具把整个网站都编译。
那时Facebook内部有好几个项目都处于半竞争关系,每个人都仁者见仁智者见智,有人想改变PHP引擎实现,有人想在PHP应用层做调整,有人说可以转成Java,而赵海平则倾向于保持PHP不变。“之所以倾向于不变,是之前大家已经尝试过将PHP转换成其它语言(Python),但四五个人转,根本赶不上二三十个人写Code的速度。”另外,团队里有很多PHP专家,突然改成Java,让人怎么写代码?于是赵海平一直在这个领域探索,到最后只剩下HipHop和转Java两种方案。这时大家意见又不一,到底用哪个?讨论问题也有了情绪,怎么办?用数字说话!谁性能提高大,就用谁,最后HipHop胜出。
线上执行的时候,赵海平内心很忐忑,很怕出现什么问题。“因为你改的是底层,只要有一个新问题出来,大家第一反应就是这里出了bug,事实上十有八九都是应用本身的问题。”当时赵海平对其他团队的承诺是,有任何问题24小时内一定响应。有一年感恩节,正在别人家做客的赵海平,一个电话就立刻赶回去调试,虽然事后证明也不是底层的问题。“当时我跟团队说,我们要有阿信卖鱼的精神,不论是哪里的问题,我们都要帮他们debug,赢得别人的信赖。”对于这些,赵海平虽然感觉非常辛苦,但却又感觉很爽,因为当时他们可能是最熟悉全部应用的团队。
再回首HipHop,赵海平感慨项目非常艰辛。“最累的时候,我开车都在想怎么写Code,一边开车一边想,到了公司只是把脑子里想好的写下来而已。那个时候别人跟我说话,我都不大反应的过来,因为脑子一直在想这个东西。没有办法,面铺的太大了,等于整个程序语言的所有都要去实现。有时也想偷点懒,想着这个数据库函数这么冷门,肯定没人调用,先不做它,结果第二天就有人来找你……”
虽然过程很痛苦,但痛并快乐着。赵海平找Bug每次都很快,半小时、一小时就能找到。但有一次Bug太底层,花了十几个小时才找到,最后找到Bug跟大家解释怎么回事时,“大家听到我说为什么还都听不明白时,那快乐真的很难用语言形容。”赵海平接着补充到,“其实人有的时候就是喜欢解决大问题、大影响的那种快感,希望自己做得工作特别有意义——掷地有声的那种。”