@pockry
2015-05-03T18:46:58.000000Z
字数 10698
阅读 2841
EGO
4月22日晚极客邦科技旗下的技术人社交网络EGO首场活动在北京国际会议中心举行,阿里巴巴技术保障部研究员赵海平在活动上分享了Facebook研发团队的高效秘诀,之后新浪微博技术总监杨卫华和他进行了高端对话,以下为对话全文:
提示:最好先看了赵海平做的《Facebook研发团队的高效秘诀》演讲之后再看本文。
杨卫华:听海平现场讲感觉还是很不一样,让我有很多启发。
作为互联网圈的代表,我问一个问题,刚才你在分享介绍中提到Hack文化。我想Hack就是从自己主观上,想做的东西。但国内以雷军小米为代表的公司,更多讲的是趋势,就是业界哪个东西火就做哪个。大家经常说的一句话就是,找风口。在座的人虽然对Facebook的Hack很敬仰,但是要问他们,肯定更多的还是信雷军那句话。在国内经常反思的一个问题,就是你想做的东西不一定能做成功。对这两个的差异你是怎么理解的?
赵海平:我觉得硅谷这些公司也是用Hack手段在找风口,像Facebook早年的时候有一个video chat,这个实际上就是找风口找来的,因为当时网上出现了一个视频聊天网站,上去后先调用你的摄像头,然后随机选一个不知道谁坐那儿,就跟你video chat。Facebook有一个人说也做一个跟它很类似的,所以很快Hack了一个。所以说是Hack这个人在找风口,而不是公司在找风口。而另外一个软件工程师不相信风口理念,说我只做自己想做的事情,他就Hack自己一个想做的事情,他做的这个恰恰跟风口不相关的。找风口的东西在Facebook上并不少见,去跟类似的因特网上出现的东西竞争。我记得微博上出现一个东西,Facebook很快有人Hack。所以看找风口还是不找风口,还是要看做的什么。如果真的是特别火的东西,也许就Hack成功了。如果不是风口,或者说不是将来能火的东西,可能我花的时间很短,反正是Hack出来的,损失就损失了。
杨卫华:怎么保证你个人Hack出来的产品能够去和以全部力量做一个风口的公司竞争呢?
赵海平:这是一个问题,这个问题尤其在Facebook早期的时候就是存在的。基本上我们当年出来的产品,都是一两个人,两三个人做出来的东西,没有很大的团队来做一个产品。当然到2013、2014年那个时候就可以组织一个很大的团队去做手机上的一个App,其实和别的公司的全部力量已经差不多了。这个在早年不太好想象,因为早年可能最大的一个团队顶多就五六个人,那就是说这五六个人真的有共识,他们认为这个大的东西我一个人做不完,做不出来,但是这个东西绝对会火,所以都投入进去,调用的资源也更大。但一般情况下,最大的团队只有四个人。
杨卫华:早期的Hack会不会造成后期的开发变慢,难度增大,容易出错。早期Hack是想快速达到效果,在某些时候用简单的方法做,这个时候可能要改这个的时候难度加大?
赵海平:一定是这样,Hack的结果就是这个code越写越糟,糟的时候就有一个人跳出来,说我再也忍受不了这个了,我要重写一遍,这个其实在facebook屡屡发生。
杨卫华:会不会代码太大了,没有一个人说可以重写?
赵海平:代码有可分性,你可以一块一块重写。这个重写过程中我认为也是代码新陈代谢的方式。
在重写的过程中,像mat catch,每次都有小的改变,后来成了支离破碎的代码。后来有人说不行,我要把它改了,改了之后就出问题了,然后我们有改回去,又做其他的调整,就会有这种把代码改来改去的情况。这个很大程度上,我不知道大家在工作中是什么样的体会,代码有的时候就是这样的。
杨卫华:如何培养Hack文化?
赵海平:每一个语言吸引了一批人,多多少少心理上是有一个倾向性的。比如说JAVA的人比较倾向把Code包装的很好,C和C++的人就喜欢独树一帜,我偏不按你说的做,底层的东西有这个特点。PHP恰恰有Hack的思维,反正我很快把这个东西写出来,赖点不要紧,跑的好不好不要紧,反正网页先显示了。这是一个程度上影响了Hack文化。再有就是我说的Hack传染性,真要大家Hack了,你不Hack你就比别人慢,你就好像感觉比别人花更长的时间去做一件事。
再有一个就是,我不知道大家对自己公司有没有这种体会,就是哥们儿之间的感觉还是在的,大家对事情的价值观念的评判也都是在的,Hack这个文化实际上是无孔不入的,渗透在日常生活言谈话语中,大家对这个的见解,怎么把代码写出来,怎么把产品研发出来,这在日常的吃饭当中都影响了。
杨卫华:你觉得能把Hack能搬到中国吗?
赵海平:只要不束缚的情况下,是Hack还是不Hack我觉得不重要。也许有工程师愿意多花一点时间将代码设计一下,也没什么不好,只要不受束缚,只要他觉得做的这件事情是发自内心的,也是他喜欢的方式,我认为这个是很重要的。
杨卫华:你刚才提到去中心化,首先我的问题是,每个小的团队不依赖别人,它按照自己的方式把东西开发出来,我们在微博早期也碰到这种情况,就是我们刚开始曾经也是有这样一种做法,就是说一个东西,我自己能做,能上线就好了,但是后面出现这样一种情况,比如说有三个团队,A团队把一个功能实现了,它使用一个新的方式,使用一个新的技术的时候可能会走一些弯路,比如说他把线上搞出故障,然后他想出很好的方法,也把这个经验写到代码里去了,他的系统也很成熟了。第二个团队来了,一看新技术不错,也跟着,看A出的系统很稳定,结果到自己头上又出故障了,就很郁闷。第三个团队又来使用这个技术了,这个时候可能三个团队,或者更多人坐在一起讲,说A这个系统是不是抽离出一些公共的东西,而不是每个人重复踩这些坑儿。
赵海平:我刚才说Facebook对其他团队没有依赖性,不是说不共用代码,而恰恰相反,Facebook代码共用是很厉害的。比如说找谁是你的朋友,这就是PHP的函数,这个函数几乎是所有团队用的,而这个函数是一个团队写的,大家都跑不了。
杨卫华:但是这样没有约束力啊?
赵海平:是,你可以不用这个函数,但是这个时候就有用尽废退,如果很多团队都用这个,有的团队不用,慢慢的这个团队就会遇到很多问题需要解决。另外,你与其花很多很多时间去强迫大家统一用一个库,还不如你容忍一下不完美。我一直在想说,有一个哲学的观点,就叫亚完美主义。你不要求你的系统是最完美的,但是你要寻求的是亚完美,稍微仅次于完美,但是还是很OK的。换句话说,就是绝大多数人还是在共用,百分之八九十人还是在共用一个库,总会有剩下百分之一二十,他们这些人自以为是,自命不凡,总有自己的库,没办法,就让他们用。这个并不太伤大局。如果百分之百分之一二十是异常杰出的人,他不愿意用这个库是有他真正原因的,也许他创造一个更好的东西,甚至反过来把这个替代,这个也许是一件好事情吧。
杨卫华:有人问去中心化和公司规模有没有关系?
赵海平:我认为一定有关系的,当你公司大到有一百人的时候不一定只有一个经理了,这样的话就有上下团队,并行的团队,这之间的依赖性慢慢就有了。像手机团队大起来以后,就有一些人写手机底层的库,其他的人渐渐对这个手机的库就有依赖性了。这个我认为是很难避免的过程,这恰恰是Facebook从小到大转型的过程中非常痛苦的一个转变,就是渐渐的丧失掉了一些以前似乎很好的工作方式,渐渐的进入了另外一个工作方式,也许进入到一个更加系统的,更加常规,更加慢的,但是更加稳的一个工作方式。真的很难去定性、定量去评判说哪个系统更好。看微软的话,也许更加常规,更加按部就班的一步一步走,但是它的那个就是做的最好的。有时候你就很难评判这个公司采取这样的方式去执行它的操作是对还是错。我今天更想分享给大家Facebook是什么样,至于好坏,怎么取舍,我觉得还是仁者见仁,智者见智。
杨卫华:刚才你提到Facebook可以今天晚上改代码,明天就到线上。有人提出来,你怎么看待Google要做几十次code review的?
赵海平:Google要做几十次code review吗,这个我真的不是太清楚。我们的只要有另外一个人同意,你就可以check in了,这是最基本的要求。但是我们说你至少要找懂代码的人code review。其实Facebook还有一个文化,就是说你可以犯错误,但犯完错误,我们会把你犯的错误宣告给大家,让大家都嘲笑你。比如说你如果把网站搞死机的话,我们会让你戴一个小丑的鼻头,而且要戴一天,走在公司人人都知道你把公司网站搞宕掉了。
杨卫华:Facebook的code review机制是怎么运行的?运维方面怎么做的?
赵海平:阿里的人问我这个问题问的也挺多的,我说Facebook没有权限的问题,任何人都可以跳到code base去看,除非有特别敏感的代码,比如说支付系统,里面真的有一些代码特别特别敏感,它们是被锁起来的,需要特殊的要求。但是除了我所知这的一小块代码,包括特别核心的代码,都是大家可以随便去看,随便改的。
像PHP是一个大的code base每天都有发布过程,一check in当天就发布了,或者说他们会把check分一下,有的check可以到每个星期大的点的时候发布,有的是patch,要求马上发布就发布了。唯一要求,就是发布的那天你这个人要坐在那儿,亲眼看那个发布,如果这个发布出现了什么错误,你要马上修改。C++ code发布就完全不一样,那个完全是他们团队负责,这个机器完全由你管。
杨卫华:下一个问题,像你做的产品要两年半时间,公司可能都大不一样了,会不会想着选做时间短一些的产品?
赵海平:刚开始没想到做那么长时间,刚开始以为很快就做完了。而且最逗的是,08还是09年的时候,那个时候老板就开始催了,那个时候我们机器已经不够用了,老板说,你这个什么时候能做完?我说已经是最后一轮的Bug在fix,这个话每次都说。每次都认为很快做完,但是真正的工作量该是多少还是多少。所以拖到2008年9月份、10月份上线的时候都是逼着上的。我说不行,太快了,那个时候机器用的都不行了,当时opreation,说用这个项目机器快50%,所以他们玩儿命上,我说不行,我怕出大的问题。即使这样,也是很快就全部上线了。
你说的问题也是出现的,2008年是我做的最累的一年,代码量最大的一年。但是08年的绩效考核并不好,因为08年你这个东西没有上线,看不到效益。像08年上半年我还做了另外一个东西,因为我做的这个可以看到成绩,要不然绩效还会更差。到09年时候项目就上线了,已经很轻松了,但是绩效考核却是优秀。你说这个合理不合理?这个没办法的。你在公司干活就无法避免这个。所以说想做一个长线的项目,可能一个好办法就是把长线项目分成小块,每块能让大家看到利益,这样的话可能更好一些,这样可以渐渐忍受你花更长时间做,但是有时候这个也不是那么可分的。
杨卫华:有些公司由管理层决定要做三年的东西,三年做完了,整个公司都能享受这个好处。
赵海平:可能就是做一个R&D(研究院),一个R&D每年算下来要花几千万,不是每个公司都能承担这样的情况,这个也是有利有弊的情况,这个不好说采取怎样的方式更合适。
杨卫华:你刚才提到所有的团队之间不依赖别人,依赖度很低,这是在早期的时候存在,还是说现在还能完整保持这种情况?
赵海平:现在我认为依赖性还是很低的,这个很低不是说没有团队负责中间层,而是说中间层还是每个团队都可以改,只不过比以前多一些依赖性,只是说你在下一次改的时候,在checking不那么容易了,我觉得依赖性渐渐的越多,这就是恰恰现在,肯定比以前开发的时候会减慢的原因。
杨卫华:这是一个比较老生常谈的话题,可能在座的很多同学也都是以前做技术,做工程师,后面慢慢做一些管理工作,带一些人,这个问题就问,你有没有带过团队?还有你怎么看待花多少时间在Hack上,花多少时间跟团队沟通?
赵海平:我带过团队,当时更多的时间花在代码上。而且我当时带这个团队的时候,我自己对自己有一个要求,就是告诉自己我是这个团队的头,我必须要做大家不愿意做的活。换句话说,我们团队有老的,也有年轻一点的。年轻人有一个特点,就是只做自己喜欢做的事。我不会强迫他。所以我告诉自己,凡是大家不爱干的活,我统统帮他做了。反而是年轻人做最核心的地方。所以他优越感特别强,说我负责整个代码最核心的地方,你想想这个组合该有多好。但是我们吃饭的时候经常讨论核心的问题,这个核心的问题具体方案怎么做,我会去看他的代码。如果我从来没有见过人这样写,我就会说这里肯定有问题的。我很少花时间管理人,我尽量避免这个东西,因为管理不是我的强项,因为你要跟人打交道,跟人聊,去聊很多方面,不仅是工作上的,还有生活方面的,还有对公司待遇的要求,我觉得我并不擅长,所以我在团队里面是做一个tech leader。然后还有一个行政上的经理,他负责团队中的升级、降级、工资什么的。我觉得在Facebook挺幸运的,我可以不用去做这些。
杨卫华:有没有你的经理在意见上和你不一样的时候?
赵海平:真的没有。不知道我是不是遇到最好的经理,还是说将心比心。如果你真心对待别人的话,没有人会对着跟你干的,因为没有无缘无故的恨。
杨卫华:这个问题是我从公司带来的,就是在Facebook日常开发中用到哪些工具,就是从开发到上线过程中,从工程师到另一个工程师,到另外一个团队,要讨论一下,包括上线等等,你们用了哪些工具,有哪些工具可以推荐给国内的工程师?
赵海平:我想说Facebook工具的开发特别的昌盛,就是内部的工具特别多。只要大家觉得,稍微有一点点不方便,就有人跳出来说要开发什么工具,好的话大家就用,不好就不用了。像专门有人写code review,大家都用,用的还很爽,这个原因很简单?只要不爽就跟他讲,他就改爽了。这就是自己开发工具的好处,你可以告诉他什么地方可以改,可以针对自己公司内部使用情况进行修改。
还有大家团队协作,完成了一件事,打一个check list,渐渐的就形成了这样的工具。像我搞性能开发,性能分析的,我就会写性能分析的工具,PHP profiling工具xhprof最开始就是我写的,这个工具上可以清晰地看到PHP函数花掉了多少cpu,别人一看特别好。
最离不开的工具就是code review,那个工具很幸运,写这个工具的人离开Facebook后,自己成立了一个公司。还有一个人,也是离开Facebook写了一个quip的工具,那是手机上的一个工具。这些工具都有一个特点,就是大家不以这些事小而不去做,大家觉得我只要能够做一件事,这件事情影响到很多很多人,我就觉得很欣慰地去做,这也是很好的公司文化。
杨卫华:你到阿里几周了,能点评一下阿里工具与你之前用的区别吗?
赵海平:阿里也有很多自研工具,不过相对比较分散一些,没有几个大的工具胜出,像我最常见的,就是看机器CPU、内存这些,有好几个工具从不同角度看机器,都是看不同集群的情况,大家整合的还不够好。所以有一定程度上,我进来后发现我找的东西都有,但大家不是很全,不是很强,我现在要做的就是如何把这些工具整合起来,变得很大,很深入,就非常非常好了。
杨卫华:你加入Facebook的时候公司不到十人,现在几千人的规模,从五十人到几千人,研发团队的架构发生的哪些变化?每次变化的原因是什么?它主要解决了哪些问题?
赵海平:太多的变化了。我刚开始进Facebook的时候没有团队,没有不同的队伍这个概念,所有的人都叫做software engineer,所有人形成一个software engineer pool,这个池里的人可以跳到任何一件事做他任何想做的事。而且我当时记得很清楚,我刚进公司的时候,我觉得很奇怪,为什么没有人告诉我做什么事呢?就有人告诉我,我们从来不会告诉人做任何事,刚开始都是自己去找事情做。刚开始就是没有团队的区别,而没有的你刻意要做什么事情。这样,渐渐的大家就去挑自己擅长的事,渐渐我就发现三两个人做后端的事情,然后很多人去做PHP的事情,渐渐的区分成不同的人组成不同的小组去做不同类型的事情,但是这个时候从公司的结构上来讲还是没有团队的区分,再往后的时候开始招人多进来的时候,那没办法了,大家开始讨论,我们是不是要有经理?为什么要有经理?我们所有人都写代码,还用经理告诉我写代码吗?不需要了。但是在行政上没有经理还是做不到的,这个经理还是有用的,这个经理要倾听大家不同的抱怨,倾听大家不同的需求,但是这个时候经理的作用很弱,这个经理就像这个团队帮助打杂的人。再往后经理的地位越来越强了,因为我们招的人又多了,多了以后经理就出现两层了,这时候经理可以左右的事情就越来越多了,他开始帮团队定方向,这个时候我们也渐渐的出现了不同的团队叫什么名字,大家真的开始区分了,说我们是前端的团队,我们是后端的团队。渐渐的公司开始讨论广告怎么挣钱,怎么IPO。一提到IPO,公司就更加的正规了。所以到现在就是森严壁垒。我开始做的时候还没有团队的概念,所以我不从属于任何一个团队,因为那个团队做的时间太长了,有两年半的时间,做完以后发现周围所有人都有团队,只有我没有,我就说,原来公司发生了这么翻天覆地的变化,所以前后想一想还是挺有意思的。
也不是没有,只是一开始经理特别弱化,甚至我进去的时候,有几个主管的人,但是他是不是经理,大家也搞不清楚。就是这个人负责,因为他来公司早。渐渐强化,这个变成很重视的title,叫经理。
杨卫华:Facebook的绩效考核是怎么做的?
赵海平:这不是考核的过程,就是每半年你可以选你周围,和在工作当中接触最多的这么四、五个人,你去发一个请求,让他帮你做,然后你的经理给你一个review,这样差不多五六个人有这么一个就出来了。里面需要做的有三项,第一,你怎么在工作中认识这个人的。第二,你认为这个人在工作中哪方面做的好。第三,你认为这个人在哪方面还需要提高。非常主观的东西,也没有定量的。
我个人认为经理的权重还是稍微大一些,甚至像我当年带领的PHP团队,我也给每个人一个,我的意见在经理读的时候权重肯定要一些。但是在整体衡量后还有一个过程,就是团队和团队之间有比较的过程,就是说你不能说这个队员在你团队没做什么就给A。这个队员在我这儿做的很好我才给了B,这个之间就要沟通一下。
杨卫华:PM(产品经理)在团队中的位置是怎样的?
赵海平:产品经理更多时候是跟大家讨论这个产品是什么样。其实他起的作用,其实他起的是设计的作用,他来主导产品的设计。刚开始的时候,Facebook产品经理,有人专门做这个,但是他们的力量并不是那么强大的,他可能对UI设计挺多的,但是真正研发的那个人,他对UI怎么样去做,那个影响也是非常大的,或者说两个人意见不一致了,最后拍板的是研发,都是有可能的。但是渐渐的越往后,至少我听到的抱怨,就是越来越多研发的人认为,他渐渐丧失了影响,开始变成产品经理在主导。
杨卫华:存不存在谁听谁的情况?
赵海平:就是我说的原来还商量,现在还要听产品经理的。我现在讲文化的时候,在早期是很明显的,越往后的话,这个文化是被越冲越淡的。
杨卫华:你刚才说去中心化,扎克的作用是什么?
赵海平:他花最多的时间是在产品的设计和把关上。换句话说,他是一个异常挑剔的人,他会说任何的产品我都要看一下,然后他会列一二三四五。
杨卫华:没人听他怎么办?
赵海平:这个问题问的非常好。扎克提了意见后,有没有人不听他的,继续上线的情况?有过。但是上线了之后发现还是扎克说的对,后来大家很信服他的看法,他的产品感觉真的特别好,几乎没有失手的状况,以至于后来谁不听他的呢?不然的话到上线的时候没有他说的好,你想想这是什么感受?在2009年还有人讨论过,扎克对产品把关太严了,有的时候甚至控制了整个产品的样子,会有有这样的抱怨。然后那些人就说,天哪,扎克对我们卡的太死了,然后他说,但是,转念一想,他说的也对,我们拿他也没办法。所以最后他对产品的挑剔,他挑剔对了之后,他给自己建立了这种信誉。
杨卫华:你理解他的战略是怎么传达下去的?因为在中国很简单,就是CEO下面有几个总监、副总,把他的战略层层分解,然后到工程师,全公司的人都围绕着这个干活。扎克也有战略,工程师都干自己的事,他的战略是不是到第二层就没有了?
赵海平:我在描述去中心化时可能夸大了大家不听他的感觉,事实上并不是这样的,因为扎克会和大家一起讨论问题,经常在一起吃饭。经常在一起讨论问题,和经常在一起吃饭的人一般容易形成共识。对产品方向来说一般不太会那么相左。我夸大的那部分,是在小的枝节的问题上,可能就人不听他的,但是在大的方向还是大家都相同的道路。扎克还有一个权力是别人没有的,他能雇佣一个人,来专门做他的产品方向。举个例子,有一个人来了,在Line,这个就是他搞起来的,这个后来特别特别火。我觉得扎克在这方面起的作用还是挺强的。在日常的产品把关上,实际上他还是有的时候会敲桌子去定一些事情。
杨卫华:Facebook早期是否上线过一些比较糟糕的产品,这些糟糕的产品当初怎么决定下线的?很多互联网公司都会这样,会做很多东西,上线之后效果不好,就放到角落里,没有下线的过程,就是留下一堆烂摊子的。
赵海平:做这个产品的人走了,这种情况特别特别多。这个产品外界的评价,负面的太多了,他就不做这个了,转到其它组干其他的事,还有就是离开公司。或者还有更大的问题,像解雇,但是像这个没有听说过。当然也有。
杨卫华:谁来拍板说这个项目不上了就下,有时候可能不大好做这个决定。
赵海平:从上而下的少,只能这么说,或许有非常强势的经理,他可能会表达的更直接一些,说,亲爱的,你做的这个太糟糕了,你离开公司吧。我认为这个可能性几乎不会发生的。可能的是咱们是不是改变一下这个产品的方向,或者说这个人在争论的时候就呛不住了,因为公司总有批评的声音,说你做这个没有道德,侵犯别人的隐私。然后这个人就哈哈哈哈,就不做了。
杨卫华:Facebook的日常入职培训怎么做的?
赵海平:Facebook培训体系,大家一进公司就要有一个半月的,新兵营,这一个半月你可以挑两到三个团队说我对这两三个团队感兴趣,我有可能要加入。在这个新兵营里你就帮这两三个团队fix bug。这个其实是非常小的活,你需要认识团队的人,去给他们发邮件,然后还要看代码,所以fix bug,让大家对工作环境有一定了解。还有进了公司,会有很多很多讲座,这个讲座有公司内部的,谁谁谁取得了什么样的成就,做了什么样的工作,跟大家交流一下。
再有一个就是请外面的人来讲一下,像极限编程很好,但是这个在Facebook没有人用,能不能找人在公司鼓吹一下。会有很多的讲座,这些可能会激起大家对技术上的热爱。不过这不是像专门给你讲C++的课,这样的还是挺少的。
杨卫华:刚才提到团队里的高手从最初的90%减到后面的20%,这个是正常的还是不正常的?
赵海平:我觉得是正常的。在初期的时候,雇人的标准定得很高,这个标准肯定是越来越降低的,刚开始肯定卡的特别严,说这个人必须要四个面试他的人都说他好,才雇他。如果说后来三票对一票,你也可以雇佣他。因为有一个要求,说一年内雇多少多少人,因为有这个要求的时候,你就会把标准降低一些。像到后来的时候,只要有一个反对的人会不雇,在任何情况下,如果有两个反对,也会雇。这个标准实践是后来是渐渐放松的。
再有一个,面试的人对这个人挑剔程度越来越降低,像我去面试的话,十个人进一个人就不错了,如果新进的人,面试的人十个人可能能进两三个,这个就有差别了吧。
杨卫华:听google说不允许雇熟人,这防止团队里的水平越来越低。不知道Facebook情况怎样?
赵海平:Facebook特别鼓励内推,不过熟人不可以面试,比如说这个人是你哥们儿,你不能面试他,给意见,但是你可以举荐他,而且被推荐的人拿到面试的机会大很多。我不知道HR为什么这样制定,他们的思想就是,凡是内推的人,进公司后,大家融洽度会增加很多。
杨卫华:像两个人是哥们儿,做决策的时候,会不会拉帮结派?
赵海平:这个不会。我的那个团队就是后面的人是前面那个人推荐的,后面的人比前面的人强太多,也不会说这个人怕被别人竞争掉,说一定要招一个弱的。
杨卫华:公司会不会制定策略避免这样的事情发生,至少保持公司水平保持是这样的,不要往下掉。
赵海平:有这样,就是大家把好关,保持相应的水准。但是很多在实施过程中还是有困难的。
杨卫华:最近PHP说性能提升非常大,你怎么看待的?
赵海平:这次我来之间,刚刚看到新出版本的PHP,它的性能优化很强,我很好奇怎么做的,我还没来得及仔细思考,PHP核心开发组的人我也很熟。感觉上越多的人去优化PHP,越是一件好事情。其实究竟说HipHop也好,或者哪个版本的PHP真的把性能优化上去了,这个也许并不重要,重要的是也许把PHP优化到可以跟其他的语言差不多性能上,那你不就牛了吗,又那么容易开发,性能上又不差,这个东西本身就是互相带动的作用。我觉得这个我还是挺想看到的,希望自己原来做过的语言,不会渐渐地被时代淘汰掉。
杨卫华:你回避了这个问题,我说直接点,比如我有一个网站,有一个系统对性能要求非常高,你建议上哪个,是用HipHop、HHVM还是PHP 7?
赵海平:这个真的要去看,如果你特别了解HipHop优化的是什么,那个版本优化的是什么,你对自己网站性能要求特别了解的话,你就能判断出用哪个合适。最简单的就是两个都去试,自己去比较,发布的过程中哪个更省事一点,在研发的过程中哪个更好一点,在跑的过程中哪个跑的更高。我肯定不愿意告诉别人,你不要用这个,你要用那个。这个太难讲了。
讲优化,我这次来阿里,我希望做的一项工作就是JAVA优化。都说它优化这么多年,你还能再优化吗?不是的,我是针对阿里的优化,因为阿里的local code肯定有不一样的,这个优化出来一定跟别人不一样,肯定能帮阿里省钱。但这个不是绝对的,不是说做出来绝对比你快。之所以选择这样,开发这个的团队是在Facebook工作,Facebook在这个情况下得到的利益是最大的,所以它选择了这个方向。你拿来了以后就不能贸然地判断说,在Facebook取得了百分之多少的提高,在我这儿一定是这样,不是这样的。而是要针对自己的local code选择适合自己的方式。
杨卫华:所以是要看业务场景?
赵海平:对。