Facebook 工作體驗之績效考核
我的讀者裡可能有相當一部分並非 iOS 程式員,持續關注的興趣點在於好奇美國程式設計師的工作體驗和文化差異,這一點契合了我踏入異國他鄉種種新奇經歷下的分享欲,正因如此,我時不時會寫些和技術無關的閒文。
這些閒文一般有 3k~4k 不等的閱讀量,公眾號總訂閱數也在不久前突破了一萬大關,緩慢增長的數字到今天突然有了點裡程碑式的意義,想到自己每一篇隨心所至的文章,在週一的早上固定會有一千多人開啟並耐心閱讀,感動是少不了的,感謝諸位一直以來的陪伴。
續上一篇體驗小記,再寫一篇分享些我對 FB 工作體驗的觀察。
考核
對每一個職場人士而言,績效考核是所有問題的關鍵。畢竟比改變世界更重要的是付出汗水之後的回報。考核雖然是每一年工作旅程的最後節點,卻決定了途中所有行為和其背後的意義,所以要談工作體驗或者是公司文化,不如先談考核,目的決定了方式和手段,資源的分配左右著系統機制,以及各種機制制約下我們的個體感受。
層級
職場就像是打怪升級,灣區這邊的科技公司也會對不同工程師做層級的劃分。和我所經歷的國內大公司不同的是,在 Facebook 你沒法輕易知道其他人的層級,即使是每天坐在身邊的同事,如果對方不主動提及,沒有人會刻意去探聽。如果是走工程師路線,大家工牌上或者內部系統的 title 都是 software engineer。這個小細節其實背後有著不小的影響,按我以前的認知,個人在公司所處的層級會直接決定其影響力和獲取資源的能力,如果做了保密,勢必會直接影響專案合作時各方的關係處理,P8 和 P7 在同一個會議上的音量有時候是有差別的。
是不是在 FB 做專案時,每個人都是處於黑箱狀態呢?當然不會,據我觀察,可以從兩方面判斷一個人影響力的強弱,一是在 FB 所處年限,這是可以輕易看到的,其二是其長期以來在各個專案裡所展示的技術能力和判斷力。如果是走技術路線,各種會議和完全公開的程式碼下,一個人技術水準的高低是很難隱藏的。久而久之,每個人自然而然就會形成自己的感知。
聽一位在 Google 的朋友說,在 Google 雖然也比較難探聽層級資訊,但還是有辦法的,大家一般還是傾向於去找高層級的工程師合作專案,畢竟可調動資源多,影響力大,最後專案的 impact 也大,績效也就好看了。
在灣區,層級資訊多多少少有些個人隱私的味道。
Impact
從進入 FB 的第一天起,impact 這個詞就會如影隨形。其實就是國內的結果導向式的績效考核,不論過程,只看結果。最後的成果決定你一年辛苦下來的回報量,這種機制對公司是極其有利的,但對個人有時會顯得不太近人情,因為不是所有努力過後的專案都會獲得市場和使用者的認可。
FB 也是結果導向,結果就是你一年下來的 impact。關鍵問題來了,impact 怎麼衡量呢?
我之前的文章裡提到過,FB 內部有各種各樣的工具,而且每一個看似簡單的工具,其實背後投入了大量的人力物力。有一類工具是專門用來檢視各種 metric,還有另一類工具則可以試驗你所提交程式碼對 metric 的影響。
比如對於 Messenger 這個產品而言,一個極其關鍵的 metric 是訊息的傳送量。假設你所開發的某個新功能,或者花了一個月時間做的效能優化,上線以後,通過實驗工具的檢測,把訊息傳送量提升了 1%,那麼今年的 impact 就非常穩了。這種機制的好處在於很客觀,而且完全的公開透明,所有人都對工具的準確性有信心,自然就認可這套機制。每一個產品都有五花八門的 metrics,metric 建立好之後,工程師要做的就是使出渾身解數來改變 metric。
有一點值得一提,前面說到專案失敗時 impact 的問題。FB 內比較人性化的一點是,績效考核時,對於失敗的專案也承認其 impact,因為至少你證明了那條路不可行。所以在內網上,有時會看到有人分享自己的專案如何探索以及失敗的過程,和最後的經驗總結,一堆人點贊。每個大公司內部都有無數失敗的專案嘗試,我認為這種文化能更大程度的鼓勵員工去大膽嘗試新想法新專案,而不用過度擔心後果。
團隊差異
從績效的角度看,FB 內部各個產品團隊之間的差異非常之小。不論你在哪個團隊,你最後績效考核之後的所得,都是依據你的 impact 來衡量,然後結合你的 level,當前薪資水準,用一個公式算出,股票,獎金,工資漲幅都清清楚楚的列出來。一般來說,不存在什麼特別熱門的團隊,部門之間可能存在一點差異,比如某個部門今年業績爆表,可能所有人的係數都乘以 1.1,上浮 10%,僅此而已。
這不同於國內,我所知 BAT 公司內部,團隊間的差異非常之大。比如微信團隊所發年終獎總體可能是其他團隊的幾倍。阿里有些團隊年底能發十多個月,有些則只是溫飽三個月。我個人認為,國內的機制更狼性一點,更能以結果導向驅使團隊去爭取成績,壞處就是加班特別多。
事實上,在 FB 內部換團隊相對是比較方便的,我入職一年不到就見過好幾例。剛入職的時候,大部分人都是沒有指定團隊的,有 1-2 個月的 bootcamp 時間,這段期間內,你可以隨意勾搭公司內部任何團隊,WhatsApp,Facebook,Messenger,Instagram 等,只要有坑位,去找個空位,呆一個星期,做幾個任務,雙方確認過眼神,互相點頭就可以正式加入團隊。一般來說是你挑團隊,而非團隊挑你,開出新坑位的 manager 都是缺人的,巴不得你早些加入。
以上種種都表明,在 FB 內部,團隊之間的差異比較小,差別主要在於所做的事情上。
找專案
要 impact 好,就得有好專案,這是一致的認知。好的專案都是自己找的,一般沒人搶留在盤子裡的專案,多是大家認為 impact 有限的。
每個團隊都有自己的 area,負責幾個主要的方向,主要的專案都是圍繞這些方向。
在專案上,FB 令人讚賞的的一個地方是,所有專案的程式碼對所有人都是公開的。我主要做 iOS 方向,我不但可以隨意瀏覽 Messenger,Instagram,Facebook 等主要客戶端程式碼,連 Server 端也有完全的許可權。這樣做法好處有二:其一,海量的程式碼是工程師快速成長的資源庫,其二,更容易出現跨團隊的專案。比如你瀏覽其他團隊程式碼時,有新的想法,可以通過你 Manager 牽線展開合作,任何程式碼,只要有一個人幫你 review,最後就能上線,當然真相是一般會講過 n 多雙眼睛的看你程式碼,再通過持續交付系統來確保質量。
關於考核,就說到這吧。很多人估計都好奇年終獎和股票的具體數字,這些我沒法在公共場合分享,但其實這是相對公開的資訊,google 一下就能知道個八九不離十。