Robin.ly 是一个全新的视频内容平台,旨在为广大工程师和研究人员提高对商业、创业、投资和领导力的理解。本期是Robin.ly创始人Alex Ren采访Facebook Engineering Director,黄毅博士。
以下为采访实录摘要:
Alex: 大家好,我是Alex Ren,是Robin.ly和TalentSeer的创始人。今天是我们Robin.ly Leadership Talk的第一讲,邀请到了Facebook Ads Product Delivery的Engineering Director,黄毅博士,他将和大家分享他们的技术和产品以及在领导力方面的经验。稍微介绍一下Robin.ly,它是一个新的视频内容平台,目的是为了提高工程师和研究人员对于Al,leadership,entrepreneurship三方面的理解。邀请知名的创始者,投资人,AI领域的科学家以及一些leader,通过他们的分享使得大家对以上内容有更深的认识。稍微介绍一下黄博士的背景:2011年毕业于Michigen State University,获得PhD学位,毕业论文题目是关于多线程中间件方面的研究。2011年加盟Facebook。两年之后升为manager,现在是Engineering Director,黄博士带领团队打造了很多billion revenue的产品,产品经验非常丰富。首先欢迎黄博士!先回到您PhD时的论文,关于concurrent system。能不能给大家解释一下,为什么当时选择这个论文题目?这个题目跟现在的工作有什么关系?
黄毅:我在graduate school的时候一直对理论研究比较感兴趣。所以研究生期间做了compiler systems,博士阶段做concurrent system是认为这方面内容比较困难。当时很多人在创造concurrent system的时候经常出错。比如,死锁,rase condition还有饥饿之类的事情经常发生,百分之九十都是错误,但做系统的人并还不知道,即使知道,debug也很艰难,非常痛苦。所以当时就希望把类似问题解决一下。Idea很简单,我们在创造concurrent system的时,有程序本身的逻辑,concurrent system也有同步的逻辑。之所以经常出错,是因为这两个逻辑在交叉同时进行。所以我论文的想法就是,对于同步的逻辑,我们让它自动化。那么程序员只需要写concurrent system本身的functional logic就可以。所以当时修改了一些java的compiler,然后把这部分同步的逻辑自动生成。当时的难点是证明生成出的逻辑正确无误。
Alex:跟您现在做的工作有什么关系吗,比如ads这方面?
黄毅:如果从domain knowledge来讲,没有任何关系。因为现在做Ads,基本上不再接触任何同步系统。我做engineer的时候还是写过一些同步的系统。但是因为论文题目很难,所以做论文期间,很多在研究生期间培养的能力现在还可以借鉴。尤其是现在做manager时候的多重能力,比如communication的能力,写作的能力,解决问题的能力。还有resilience——如果可以顺利读完五六年博士并且毕业,还有什么东西能难得倒你呢?所以我现在也一直在从这些能力中获益。
Alex:您博士就读期间曾经在Bell Lab,Facebook,Google,Oracle等地方实习过,而这些公司中有很多产品的方向也不尽相同。是什么让您后来选择了Facebook?您加入时,Facebook还没有上市。
黄毅:Facebook是2012年上市,我大概是前一年加入。一开始实习的时候还要早一年。不过当时比较年轻,并没有想太多,也不知道上市是什么意思,也不知道对自己的career path有什么影响。当时只是觉得,博士毕业之后的第一份工作应该找一个能让自己学到更多内容的地方去。现在回头想想,这四段实习的经历里,在Facebook的那段时光最辛苦。每天有干不完的事儿,要很晚才能休息。
Alex:那个时候的challenge最大?
黄毅:确实,challenge最大。每天工作很努力,但职位要求还很高。当时有一件事情很有意思。有一段代码我怎么也弄不进去,改了又改,每次都被code reviewer打回来。Code reviewer很负责,每次都非常耐心地讲解,但是是我自己没有达到这个bar。所以自己当时非常痛苦,最后得了胃溃疡,还被送到了急诊室。但是从急诊室出来,code依然不行,最后百般努力,好不容易把code做好了。
Alex:我相信换做很多人会知难而退,为什么要选择Facebook呢?
黄毅:因为我当时的信念就是,what doesn’t kill you makes you stronger。所以当时还是觉得哪里能学到更多的东西,就应该加入哪个地方。当时四个公司比较了一下,Facebook经历最苦,公司又最年轻,但觉得很适合我,所以就开始了尝试。
Alex:后来就选了Ads team对吧?
黄毅:选Ads team也是出于同样的考虑, 当时希望做一个不一样的东西。那个时候,我做过不少事情,mobile,infrastructure,产品都尝试过,只有ads没有做过。开始对ads比较藐视,认为没有难度,不过是显示一个图片加一点文字。但是我发现ads组的员工们好像也很痛苦。好奇心驱使我找到我认为简单,别人觉得痛苦的原因。所以就决定尝试一下。我认为即使失败,我也不是唯一一个感到痛苦的人。
Alex:这七年里您大概deliver了一些什么样的产品,我们还能看到吗?我们用到的哪些产品是你们team做的?
黄毅:我们做的很多产品现在大家都正在使用。比如我们做整个Ads delivery的一系列产品,因为在create Ads的时候有若干个步骤需要去set up,比如说targeting,bidding,budgeting,甚至说goal是什么,什么样的events需要optimize等等。所有的这些产品都是由我们的团队在构建,而且每一个产品都有不同的version,variance,根据不同的advertiser来搭配。
Alex:您认为这些产品里面,有哪些对于Facebook贡献最大?
黄毅: 需要先回顾一下历史背景。大家都认为Facebook广告做得好,好在哪里?好在内容比较relevant。不像在internet上看到的很多广告比较intrusive。之所以可以做到相关性是因为,Facebook有大量的关于用户的data。所以我们能够知道什么样的message可能对用户来说更相关。data的故事非常有意思。比如,我们知道Facebook有很多的data,但是若干年前,Facebook的data其实很多都局限于自己本身的data,类似于pages you like,comments on Facebook,your friends,your profile information。当时Facebook认为这类data比较unique而且海量,所以认为这些已经足够了。那个时候我们有几个人觉得,其实还有很多Facebook以外的data更有用的,或者说equally有用,如果拿进来跟Facebook的data能够fuse,可以使ads变得更好。所以当时的问题就是想办法把这些外部的数据也能拿进FB。所以当时我们有一些比较controversial的想法,有人觉得有用有人觉得没用,但是无论有用还是没用,都没有人会主动提供这些data。所以我们build了很多产品,想办法把这些data onboard到Facebook上。Onboard以后再转换成足够多的价值,返回给用户。我认为那个阶段build的一些产品应该是对Facebook用处最大的产品。
Alex:因为有个方向性的指引?
黄毅:对, 相当于把Facebook data的gate打开。而且从现在看来那一步走得没错。因为现在Facebook从外部拿来的数据的价值远远大于本身自己的data。
Alex:能不能分享下整个ads delivery的流程?这个流程里边哪些部分是比较难或者说存在哪些技术难点?是不是也用到了一些新的,比如machine learning,deep learning的技术?
黄毅:Ads使用了很多machine learning的技术。ads其实可以想象成一个recommender system。一方面它会ingest用户本身行为上的信息,比如sequence of events。如果advertiser想要optimize for specific events,比如说clicks,video views,convergence,或者sales。那么Facebook的machine learning所需要做的就是找到这些correlation。如果希望optimize for this event,有哪些其他events跟它有correlation。如果发现这些events曾经发生过,就让这些events发生的更多一些,那么sub-stream的这些events会发生的更好。
从这个角度看,Facebook的Ads,包括所有的ads系统,都是一个推荐系统。对我们来说难点很多。个人而言,challenge比较大的地方是causality。有很多时候我们不是特别知道recommender system到底是如何工作,内部是如何推出这些events,导致下一个event必然发生。因为很多时候我们的technology用的只是correlation,并不是causation。但是我们的产品需要知道这些causation来帮助advertiser调整自己的ads。如果advertiser提供enough information,那么machine learning 系统就会找到足够多的optimized events,效果会比较好,但是只局限于它所知道的这部分东西。但是如果说advertiser没有提供足够多的信息,某些信息被忽略,某些setup不正确,那么初始信息就不够准确,而系统是依据初始信息,在optimized setup下找到最优解,这个最优解明显也不可能是真正的最优解。我们没有办法告诉advertiser怎么修改setup才能找到更好的解。所以这个是比较难的部分。如果大家知道贝叶斯网络的话,应该都会知道Judea Pearl,他是2011年的图灵奖获得者。他有一套theory叫Ladder of Causation,有三个ladders/steps。第一个step就是correlation,第二个step是causation,第三个step是counterfactual。他认为machine learning is very good at the first step,也就是correlation的部分。但是对我们来说,当人使用产品的时候,需要jump into the second step,the third step。恰恰是另两个step中的use case比较struggle。
Alex:像Facebook AML (Applied Machine Learning group)也在做machine learning,它跟你们team的合作模式是?
黄毅:从宏观看,AML他们做的是更平台化的产品,我们做的更加specific tools,是应用层上的产品。另外,AML会build很多tools,一些libraries。还会build model training algorithms,但是我们会build具体的models,会用具体的data,用他们的tools进行build。这是从technology角度上的区别。我们都知道开复老师的《AI Super Powers》这本书里大概提到了四个wave的AI revolution。实际上Wave One 是InternetAI。这里面涉及到两个团队的另一个差别。从广告来说,更多的是解决InternetAI层面的问题;而AML团队解决的问题应该处于Wave Three,Perception AI,比如说speech recognition,人脸识别等。现在ads里还没有大量采用这些技术,但是未来应该会越来越多。
Alex:Facebook在product engineering,或者是product design有着非常多的经验,应该是做得最好的公司之一,您也在做这方面的工作。做一个产品从idea到最后的实现,您经历了什么过程?我想您一定会关注user experience,或者UI吧?
黄毅:这个问题比较complex。我觉得要先看一下产品的复杂性,或者是idea的复杂性。如果一个idea很简单,可能一两个人花一两个周就能完成,那么直接尝试一下就可以。但是如果一个idea很复杂,或者需要几十个人去做,有不同的function,需要designer以及data science,这可能需要leader有一些alignment。因为要确保所有人on the same page,并且要花很长一段时间才能做出来。所以大概什么时候决定去做某一个idea,大概分以上两种情况。Facebook会有很多公司层面的culture上的processes,比如说像hackathon,基本上一天,两天,三天就可以尝试这种小的idea,把第一个类别的问题解决了。对于第二个类别,会更复杂一些。比如有一个idea,怎么决定它是做还是不做,或者怎么样去做,需要考虑什么样的因素?我们一般会考虑,当start这个project的时候有哪些因素;在执行的时候,需要想些什么。另外一个可能是,我们还要决定什么时候kill掉它。在开始时就会问一些问题,比如,产品的core value是什么?是它build了一个新的capability,以前没有,还是说improve了现有的一个capability,或者replace了一个现有的产品。这些capability都不同,对于每一个不同的情况,我们筛选的标准也随之而变。
我们还会去问:谁来使用这个产品?而且要非常specifc,不是简单问谁使用,因为所有广告组的产品都是由广告商来使用,而是弄清楚具体使用的群体。如果说用到产品的人是small businesses,他们可能并没有太多的experience,或者是technology上面的support。我们在build这样的产品的时候就要考虑越simple越好,越intuitive越好,这样的user experience也会很好。如果我的用户群体是agencies,他们本身非常sofisticated,又有自己的团队,会全天候使用产品。他们的诉求就是efficiency和convenience,用户体验并不很重要。他们需要bulk的editing,bulk的creation,而不是一键式的操作。另外一个不应该忽视的就是,当决定要做且觉得这个产品有用,而且知道如何去做时,要认清有没有opportunity cost,省下来的resource是不是可以分配给其他更好的开发项目。这个决定往往很难做。如果没办法做出一个重要的决定,不要卡在这里,而要放手去做。 如果对于这个问题有很明显的答案,比如,如果不做这个,我肯定会去做另外一个。那么这个产品的priority就不是一个right priority。
Alex:现在做的这些decision是group decision吗?哪些人组成了这个group?
黄毅:Good question。 因为Facebook是一个bottom up的公司,所以我们想要做的是让一线的员工能够own自己的decisions。我们想让他们觉得做这个产品是为了他们自己来做,是他们自己的idea,而不是说是因为leadership让他们做。而且我们还希望一线的员工来为final success take their responsibilities。所以一般都是团队决策。我们起到的角色更多的是指导一线的员工,让他们自己考量后做出决定。但如果说一线员工都觉得不make sense,但我们还是想做它。那我觉得如果员工愿意去承担责任,而且认为这个成本是reasonable的——花费的时间是一两个星期,两三个星期,甚至一个月,我们可以承担这个损失,那我们也会愿意去做。我认为passion非常重要。
Alex:您最开始进入工业界是以一个engineer的角色,后来成为了leader。您觉得成为leader哪些素质比较重要,比如,领导一个产品的团队,要build一个好的产品不仅仅是feature好,而是说从初始做产品就要在正确的轨道上,例如manage好一个团队和process。这七年以来,哪些是您learning experience里面最关键的因素?
黄毅:我认为build一个产品和build一个technology有很大区别。Build一个technology更像解决一个数学问题,build一个产品更像创造一个艺术品。解决一个数学问题和创造一个艺术品,用到的是我们大脑不同的部位。解决数学问题需要一个逻辑思维;创造艺术品需要creative mind,所以creativity会更重要。如果我们用解决数学的思维来解决产品的问题,或者说创造一个艺术,那我认为很多问题没有办法解决,也没有办法定义艺术品的价值,产品也是一样的道理。当然,产品也有它自己逻辑的一部分。我认为比较重要的是,怎么样能够激发领导的创造性思维,并且让领导能够创造一个这样的团队文化,使每一个员工都能继续保持或激发自身的创造力。要想达到第二点,领导需要有很强的包容性,而且还需要inspirational,因为需要inspire 团队里人的creativity。另外也需要去保护这些创意。刚才我提到了passion很重要,也提到了Facebook是比较扁平化的结构,两者结合就是想要让员工们有更多的idea going up。那么如果我们想让一线员工能够own他们自己的decisions,我们就需要去尊重他们的passion。如果我把他们的passion每次都kill掉,那他们最后拥有的就不是自己的decision,而是leadership的decision。所以怎样去维持员工自己的passion就变得尤为重要。所以领导需要去创造一个可以保护团队创造性的环境。
Alex: 这是一个process去manage innovation,里边有很多innovative的东西会比较有争议,因此就会带来conflict。第一,如果team里有很强的conflicts,那您作为一个leader怎么去manage?第二,如果您本身就不认同很多的ideas,您怎么去manage?
黄毅:两个都是很好的question。先说第一个,如果team里有很多争议怎么去manage。我自己并没有很强的opinion,team里很多不同的人有不同的opinion,你想知道我怎么去manage?
Alex:您会去做一些experiment,去做一些data-driven的东西进行验证么?
黄毅:最重要的是,对于某一个问题本身的结果,也许不同的人有不同的想法,他们互相之间disagree。但是至少最重要methodology和principles应该on the same page。最重要的是让所有人on the same page for the principle。这个就我的经验来说不是很难实现。有很多时候是不同的人可能会觉得太specific to the outcome,不同意这个outcome,但是methodology层面容易取得共识。
Alex:回到您前面的问题,需要把外部的data fuse进来时,有些人认为不需要这么做。这应该就是一个conflict?
黄毅:对,我认为当时很多人觉得不应该这么做,是因为有two schoolsof thinkings。第一种,大家觉得Facebook的data也就够用了,那么怎么去prove the value of external data,这是一个unknown。第二个就是没有渠道获取data,就不要去尝试了,因为data对任何business来说都是最重要的一部分。其实第二个问题并没有被validate,而第一个我们是完全不知道。当不知道的时候,到底应该stop还是try呢?Facebook的culture是move fast,be bold。这实际上就是大家都认可的principles,但有的时候针对具体的事情可能经常会被忽略掉。如果大家都对这件事不认同,那我们可以step back,看看到底是什么原因。如果原因是unknown,我们就思考下如何在reasonable的时间内把它know一下。如果我们发现这个东西没有办法很快知道,那就再back to Facebook culture,be bold,所以还是应该尝试一下。
Alex:归根结底,你们有一种跟product相关的culture。你可以找到一个principle,然后用这样的一个态度——不管是去take risk还是进行尝试?
黄毅:对,只要你愿意own这个decision yourself。成功了你就可以takethe reward,但是如果失败了,我们可以learn from it。所以我认为这一点很重要,怎样使员工去愿意own这个decision。有人也许会说,我不愿意own responsibility,someone takes the responsibility for me, I can do better。我觉得这种想法需要尽量避免,因为我们的目标是激发员工的自主性。如果有passion的话,员工愿意主动去做。
Alex:所以作为leader,在Facebook您觉得您更多的角色是一个guider,或者是coach?
黄毅:我认为不同的leader有不同的style,不过我的确是这样的style。
Alex:像COO Sheryl,她以affinitive,family-oriented的风格出名,希望大家在一起工作更像一个family。您觉得您的style是什么?在engineeringmanagement里,哪些style更重要?
黄毅:我可能是a bag of Chex Mix,也就是multiple styles,我的default style应该是coach。因为我坚信people first。大家都知道Facebook比较impact-driven——不管是黑猫还是白猫,抓到老鼠就是好猫——impact大就得到认可。我的slightly different thinking是,impact is the side-effect of the people you have on the team。如果你有足够好的人,而且这些人都是被empowered,有passion,有skills,impact自然会出现。我们不需要optimized for impact而忽略了其他东西。你可以有很大的impact,但是忽略了团队里的人。如果每个人都没有成长,那么今年这些人能做的事情和去年能做的事情没有变化,即使你在make impact,但意义截然不同。所以我更希望团队里的人每天都不一样,要么是想法不一样,要么是做法不一样,提升他们的capacity。这样天长日久,他们会达成更大的影响。
Alex:有很多人都处于一个阶段,从IC/individual contributor,到manager,再到leader。您对他们有什么建议?您当年在transition的过程中,觉得什么比较重要?举个例子,比如说我看到很多人做IC的时候做的非常好,因为他只要manageyourself就行了。但是做了别人的manager之后发现跟之前的角色有很多的区别,别人的个性跟他也不同,还有很多的objection。有些时候你还觉得别人做的不好,你想亲力亲为自己去做。这种情况就不是handle things,而是handle people。您觉得什么样的起步比较重要?
黄毅:我对你刚才提到的内容非常有共鸣。我认为一个人在寻找自己的career path的时,最重要的是motivation。比如,在一个critical moment,到底是选择做IC,还是选择做manager,还是选择做leader。 我觉得要想清楚到底为什么要选择做manager。我听过一个很普遍的说法:认为做管理好像career path发展得更快。另外一个理由是,觉得做manager能够有更多的power,可以make更多的impact。我认为这些想法都对,但还是依赖于具体怎么去做,这很关键。
我看到过很多比较失败的例子,他们想做manager是因为他们觉得做manager可以让他们的career path更快,因为看到很多人都是这样走的,他们也想这样走。但如果这样想,可能就忽略掉了可能的代价。做manager是有代价的,做IC的时候,用到的是technical skills。Technical skills是在过去十几年,甚至几十年一直在培养的能力。但是成为了manager,所有这些skills都不再是最重要的方面了。A new set of skills becomes more important。这些技能可能很陌生,从来就没有接触过,那么学这些技能是要付出代价的,会make很多mistakes。会重新学很多的东西,有时候甚至要unlearn很多东西。那到底愿不愿意学呢?我觉得事先要思考清楚,而不是只看到做了manager对career path有帮助。所有做manager 以后career path发展比较快的,都是因为他们付出了很多的代价来重新学这些skills,也犯了很多错误。这里有很多人的career path并不快,但是他们也愿意继续付出代价来学这些技能,因为他们觉得这或许对人生大有裨益。但是如果只看到了受益的一面,没有正确的motivation,就会很失望。
Alex:我听说您是马拉松爱好者,也是铁人三项爱好者。这些爱好对您的工作或者生活有什么帮助?为什么一定要跑马呢?
黄毅:我跑马不是为了工作,这是我的一个爱好。就像我一开始说的,当初为什么选择Facebook,为什么选择ads,就是觉得这种选择对自己是一种挑战。我的model是what doesn’t kill you makes you stronger。我认为跑马可能是最安全的challenge,最不容易被kill掉,但是也可以说是最大的一个challenge。在跑马的过程中可能会对自己的意志,对自己的秉性做出很大的调整。另外可能对工作有直接好处的是跑马会使睡眠变少。因为你的新陈代谢增强,就不需要睡得很久。有很多人问我,你有时间跑马吗?其实少睡两个小时就能多跑两个小时,还有更好的精力工作。
Alex:您事业上的下一个目标是什么?不是说specific的目标,而是对您个人不管是skill还是knowledge各方面,比较有挑战的是什么?
黄毅:这是我的第一个full-time job。我只工作了大概七年多,尽管也快40岁了,但依然觉得自己很年轻。现在可能并没有特别宏远的目标,我认为自己还处于学习阶段,能take更多的challenge,想把我走过的地方变得更好一点。Be a better person,因为我认为作为一个leader来说,这是最重要的。领导自己需要成长,团队才能成长。因为team其实把领导看作一个example,而领导实际上set up团队的ceiling。所以想让团队成长就需要成为一个更好的 coach,想成为一个更好的coach就需要做一个更好的人,使自己的性格有更好的进步。从长远看,我对AI的态度非常bullish,我认为AI potential scalability的power不可限量。我个人认为整个社会会越来越进步,我们会有a better education system。
Alex:其实反过来讲,正式因为AI遇到了很多challenge,才需要build很多好的product,把product很好的engineering出来。过去的产品。很多都是算法之类,所以把您的经验和AI的算法以及技术方面进行结合,是一个不错的方向。
黄毅:对,没错。另外一个我比较关心的领域是教育。我认为如果可以把education变得personalize,会使得教育更有效。我们现在没有办法达到personalize的education因为personalize需要时间。人的时间有限,但是机器不一样。如果AI可以把personalize去scale up起来,应该是不错的方向。
Alex:这也是非常esscential的事情。感谢黄毅博士给我们分享了他在career path方面的很多思考,包括目前从事ads product delivery涉及到的user experience和技术方面的一些难点。也感谢他介绍了自己从IC到leader的角色转换中的经验。尤其让我受益良多的是如何manage innovation以及manage一个innovative team。谢谢黄毅博士!
黄毅:谢谢!