2015.11.25 11:00

前Facebook工程師分享:FB對程式師如何管理,一個專案的流程與成員如何配合?

ADVERTISEMENT

對於一家創業公司來說,一個合格優秀的 CTO 絕對是可遇不可求的:需要對技術有前瞻,對產業格局有判斷,對管理有心得,EQ還不能低。這篇文章整理自中國的前 Facebook 工程師覃超,他在 2010-2014 年在 Facebook 工作過,講述了Facebook對於工程師的管理文化,以及他在矽谷工作的心得。

我在 2010-2014 年在 Facebook 工作,主要負責前端行動應用程式的開發,從 Facebook Phone 到 iOS/Android Facebook App 和 Messager 等做過很多功能。同時我之前做過 PHP 後端的東西。

ADVERTISEMENT

 

設計與技術各佔50%

Facebook 第一特點就是重視技術兼設計。不像蘋果純設計而Google 純技術,Facebook的要求是並重的,各占 50%。公司整體裝飾有意外多的藝術元素,而新的總部大樓更是由巨擘 Frank Gehry 設計的。

公司內部的彩虹樣式裝修,是美國高等法院宣佈同性戀合法時加上的,也體現公司對於不同事物的包容和尊重。產品的活力和企業文化包容有很大的關係,所以我建議創業公司不妨都包容開放一點,比如放一個無人機或者 Oculus VR 的眼鏡就很棒。

ADVERTISEMENT

公司裡還有很多海報,其實我覺得這算是企業的 「政治教育」 內容。這些海報並不是專門只有一個人做,公司每個人都會做,且公司有一個房間是專門造這些東西的材料,只要你把你的設計交給他們,最後海報就會製作出來。

開放與信任

Facebook 另一個特點就是開放,沒有嚴格的許可權控制,例如 iOS 可以看到後端程式碼,PHP 可以看Android的程式碼。任何員工只要在公司的內網裡,就可以隨時打開資料展示的頁面,然後看到公司的 MAU(Monthly Active User-月活),DAU(Daily Active Users-日活)以及其他按照地區和功能切分的細節資料。這樣可以節省工作的管理開支,每個人也不會覺得束手束腳。

ADVERTISEMENT

另外我們的工作空間就是網吧式的結構。這樣有兩個特點:好交流也鬧哄哄。最重要是有 Peer Pressure(同儕的壓力),比如你遲到或者打遊戲,都會被別人看到。比起其他很多美國公司的好處是,在 Facebook 工作時,你在手機上更新 News Feed 或者發發臉書動態是不會被限制的。

公司另一特點是,預設就給予員工最大程度的信任(按照老美的話說:trust by default),這也是美國文化的特點之一。一進公司就預設對你信任和尊重。不過反過來說,相對應的是絕對的嚴格管理,如果你洩露公司機密,則馬上你開除。過去出現過幾次 Zuck 在 QA 的會議上說的公司內部機密被洩露的事件,那些洩密者最後基本都被開除。

ADVERTISEMENT

一個公司最重要的是氣氛的和諧。不僅是程式師之間,還有和設計師、PM,他們也會參加一些討論,且我們一定要坐在一起,這樣類似 UI 上細節的問題,比如顏色、圖元對齊等,都可以當面溝通。即使 Facebook 的遠端會議系統和線上溝通工具都已經很健全了,但公司還是鼓勵坐在一起工作。

 

專案的推動管理

Facebook 專案的人員配比:一個項目一般是2-3個設計師、5-10 個工程師 2-3 個產品經理。每個月一波推進(Scrum 裡強調的 sprint),包括 2-3 個功能,按每個功能分一小組來做,但設計師可能會同時做多個設計。

Facebook  的流程其實比較傳統,但又夾雜很多敏捷開發的元素:一般是設計師先進行設計,然後工程師來開發,但整個過程中雙方又經常有互動。整個產品研發過程中,所有人都互相尊重、互相合作,從一開始設計師、工程師、PM 都會在一起討論,做出來之後還會坐在一起討論,會馬上給一些回饋,然後馬上修改好。

工程師寫程式碼的時候也會跟設計師一起交流,交流用的是 IRC 外加 Facebook Chat。但這些我覺得比較過時,比起其它即時通訊工具來說,它們算難用的。在任務管理方面,Facebook 有自己的 Inhouse Task 系統,可惜沒有開放出來。不過其它公司不難找到代替品,類似的工具,像是其它廠商開發的 Trello 、Tower、Teambition 或者 Jira 就很好用,可以用來做產品上的規劃,開發進度管理和 bug tracking。

最後我們的 IC 、release、monitoring 等等,這些全部都是內部工具。在開發上其實花了不少人力,對於創業公司不是特別適用。對持續繼承來說,我覺得最經典的是 Jenkins,但是它的問題就是功能繁複、介面像 80 年代的軟體。如果你們用 Github 的話,我也推薦 Travis CI 和 Drone。

 

技術的高要求,也提供整套的培訓

在矽谷公司裡,在開發流程上我覺得最重要的就是:Code Review。Facebook、Google、Uber 到現在的 Airbnb,無一不是強制要求 Code Review。Code review 過程中,不僅是可以互相檢查對方的程式碼,還可以自動跑 lint 和 unit test,對於程式碼品質的提高和去除沒必要的 bug 非常有幫助。

這裡推薦一下 Facebook 的 Phabricator。它是個開源的程式碼審核和任務管理工具;它的其他功能也極其豐富;還可以搭在私有的伺服器上,使其程式碼和資料不會被盜用。 Facebook 讓我覺得印象深刻的,就是這些它對於工程師技術能力的高要求和提供的一整套培訓。

最後,在矽谷公司工作,要學會有效地描述表達一個觀點,逼自己去學和反復複習。我覺得反復的一個過程很重要。反復的過程中,看似在做重複的事情,但是每次我都會意外地迸發出新的靈感。最後對於設計這一塊,我們有一個特別強大的設計工具 Origami,可以很方便做出介面的設計,並且支援直接生成特效的程式碼。

 

ADVERTISEMENT