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。謝謝黃毅博士!
黃毅:謝謝!