Facebook 黄毅博士:像加工艺术品一样构建技术产品

阅读数:3146 2019 年 3 月 13 日 11:22

Facebook黄毅博士:像加工艺术品一样构建技术产品

本文为 Robin.ly 授权转载,文章版权归原作者所有,转载请联系原作者 。

采访视频地址: https://youtu.be/gWO29mNantU

下文是采访的文字整理。

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,黄博士带领团队打造了很多 million revenue 的产品,产品经验非常丰富。首先欢迎黄博士!先回到您 PhD 时的论文,关于 concurrent system。能不能给大家解释一下,为什么当时选择这个论文题目?这个题目跟现在的工作有什么关系?

黄毅:我在 graduate school 的时候一直对理论研究比较感兴趣。所以研究生期间做了 compiler systems,博士阶段做 concurrent system 是认为这方面内容比较困难。当时很多人在创造 concurrent system 的时候经常出错。比如,死锁,risk 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 to ads,是应用层上的产品。另外,AML 会 build 很多 tools,一些 libraries。还会 build model training algorithms,但是我们会 build 具体的 models,会用具体的 data,用他们的 tools 进行 build。这是从 technology 角度上的区别。我们都知道开复老师的《AI Super Powers》这本书里大概提到了四个 wave 的 AI revolution。实际上 Wave One 是 Internet AI。这里面涉及到两个团队的另一个差别。从广告来说,更多的是解决 Internet AI 层面的问题;而 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 schools of 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。成功了你就可以 take the 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 是什么?在 engineering management 里,哪些 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 的时候做的非常好,因为他只要 manage yourself 就行了。但是做了别人的 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。谢谢黄毅博士!

黄毅:谢谢!

查看原文链接 https://www.robinly.info/blog/yi-huang-facebook-robin-ly-leadership-talk

评论

发布