獨家揭秘 Airbnb 的產品開發理念和工程師團隊文化

不知道什麼時候,你會發現身邊一個小團隊開始為一次小小的勝利鼓掌,然後周圍越來越多的人也開始加入到鼓掌的隊伍中,最後在整個產品研發和工程辦公區,匯聚成為了滔天的聲浪。說起來好笑,大部分人都不知道為什麼自己在鼓掌,他們只是想在此時加入到歡呼慶祝的隊伍當中,表示自己對他人的鼓勵。這是在 Airbnb 經常看到的一個現象。
評論
評論

 

(照片出自 Airbnb 網站)

本文源自:nerds.airbnb.com 刊登於 TECH2IPO

 

是時候來漲一波姿勢了!這一次, Airbnb 在公司文化以及製度架構上給我們做了很好的示範,告訴我們一個真正符合網路精神的科技公司應該是什麼樣子?或者更加具體一點,一群埋頭搞技術的工程師團隊應該擁有怎樣的團隊文化?

從這篇文章中,你能懂得如何

搭建一個純技術的團隊架構,如何設計部門之間的協作,真的可以算得上一次全面細緻的分享了。

如果你曾經訪問過 Airbnb 的辦公場所,你很難不被一件事情吸引,那就是「鼓掌」。參觀的人也許會一時一頭霧水,但不要擔心自己是不是走錯了門,進到了某個直銷公司的據點。

不知道什麼時候,你會發現身邊一個小團隊開始為一次小小的勝利鼓掌,然後周圍越來越多的人也開始加入到鼓掌的隊伍中,最後在整個產品研發和工程辦公區,匯聚成為了滔天的聲浪。說起來好笑,大部分人都不知道為什麼自己在鼓掌,他們只是想在此時加入到歡呼慶祝的隊伍當中,表示自己對他人的鼓勵。這是在 Airbnb 經常看到的一個現象。

 

這本身就是一種優秀企業文化的具體體現。

每一家公司其實有著各自的公司文化。有一些很精心的設計打造,非常用心地關注和調整它一點一滴的發展,而另外的一些公司只是讓文化自行在公司內部發展,期望最好的結果出現。無論哪種情況都改變不了這樣一個標準:優秀的企業文化能夠讓身處其中的員工以最投入的狀況去工作,而不好的企業文化則會腐蝕破壞人們的靈魂。

筆者曾經有幸在 Airbnb 工作了 1 年多的時間。之前筆者曾經在其他若干公司擔任工程師和產品經理,包括了 Facebook 以及 Yahoo。這麼多年的職場經驗讓筆者明白了一些道理,怎麼樣才能打造出最優秀的工程師團隊文化。

工程師團隊文化首要原則:工程師有著各自的影響力

工程師團隊文化的核心就是:工程師都擁有各自的影響力。每一個工程師都在為客戶以及公司創造價值上面承擔著非常龐大的責任。

工程師本身就是出於「解決問題」的需要而聘雇進來的。如果你的團隊是由一群「解決問題能手」所組建而成的,那麼推動公司全速向前發展的最有效辦法就是讓所有的決策落實在每一個工程師頭上。工程師團隊的文化、工具、流程,所有的一切都圍繞著盡可能給這些工程師以最準確、最及時的信息,方便他們在第一時間做出最合理、最有效的決策。這能夠幫助團隊更快的進行產品的回饋更新,實驗、以及更快的學習。

讓這樣的工作氛圍得以實現是需要幾個前提條件的:工程師需要在所有的項目開發過程中,參與到制定目標、計劃、頭腦風暴中來,同時他們還需要具有對項目的自由選擇權,更要有如何平衡短期工作和長期工作之間的靈活性,在不斷應付技術層面帶來挑戰的同時,還能創造出商業價值。但這是不是說工程師就是隨著他們的性子想做什麼就做什麼呢?其實也不是這樣的。他們需要跟團隊其他成員一起商量,不斷地確認當下實質性的工作是什麼,並且將這些工作按照優先級排序。在這裡其他成員指的是項目開發經理、設計師、數據分析師以及其他人員。

更重要的是,工程師擁有的是無限透明的訊息知情權。關於訊息分享這件事, Airbnb 工程師團隊是將其置於最高準則上的。工程師知道的訊息越多,那麼他們工作的自主性和自主能力也就越強。除非有一個非常明確,非常站得住腳的原因擺在那裡讓大家不要分享信息,否則大家是會做到訊息同一時間,同一層面上的分享的。這裡訊息包括但不限於:分析用的資料庫、週專案進展報告、CEO 所召開的會議紀要等內容。

這樣的環境其實是會給人帶來壓力的,尤其是對於那些剛剛進入這個環境的新工程師來說更是如此。沒有人會告訴你怎樣去發揮自己的作用。而這就引入了工程師團隊文化的第二個要點:幫助其他人找到當下的工作重點。

在 Airbnb 的團隊,沒有人會忙碌到抽不出時間來伸出援手的。往往剛剛進入 Airbnb 團隊的新人,他的背後都站著一個團隊的人,隨之幫助他解決困難。不管這個困難是來自技術層面,又或者是工作計劃層面,工程師們永遠能夠及時地給出最正確的答案。

1443016470020

結構化的團隊,流動性的責任

在由公司所作出的清晰的戰略規劃下,讓每個人都知道自己當下的工作內容應該是什麼,並且在過程中不斷推動決策的產生,這是可能的。因為 Airbnb 的發展戰略一直以「可以量化」和「足夠簡潔」為兩個主要特點。它足夠簡潔到所有的東西都能呈現在一張白紙上,每一個在 Airbnb 的員工都很清楚自己肩上的職責,自己所負責的工作內容將會對這個更加宏大完整的圖像願景產生怎樣的影響。

知道了你的團隊目標之後,你就能夠清楚合理的規劃自己的時間,盡可能地把曾經會浪費在爭論上的時間拿來去做實質性的工作。因為 Airbnb 的各個大目標下都有著具體的數字目標,所以工程師們能夠很快地評估出來每個項目的有效性,無論結果成敗與否,都能夠很快地從中學習,並且調整方向。

不僅如此,公司團隊的結構也能夠很好地體現出來公司的發展戰略。事實上, Airbnb 的團隊結構都是由大概 10 個人組成的小團隊所組成的,成員包括了工程師、產品經理、設計師以及數據分析師。有一些團隊成員還會兼任好幾個小團隊的崗位角色。同時,在不同的功能區塊之間, Airbnb 是有著很強的協作性的。支付區塊中會有來自財務的人,內部工具區塊中會有來自客戶體驗的人。工程師與設計師經常會成雙出現,實時地去解決當下的某個問題。最好的想法,往往就是來自於這種緊密的協作過程中。

在 2015 年, Airbnb 有 10 個團隊在做產品開發,還有 4 個團隊是在處理技術的底層架構。每一個團隊都將 Airbnb 的某個區塊視為一個獨立的產品來做,並且將這個產品不斷拆分細化,使其成為以季度為分割的種種目標,而公司所做的整體戰略規劃是他們手中的指南針。

儘管每一個團隊所負責的內容都是相對獨立,不會產生重疊的,但是團隊之間的頻繁協作卻又是經常發生,而且是被公司鼓勵的。

舉個例子, Airbnb 中分了兩個不同的小組:「房東」和「租客」。因為從產品邏輯上來說,房東和租客是兩個完全不同的群體,他們各自的訴求點是完全不一樣的,但是正是因為房東和租客之間的互動,才使得 Airbnb 在世界上那麼得不同,所以這兩個團隊之間的協作溝通頻繁程度,緊密程度完全超乎了一般人的想像。他們彼此分享經驗,幫助對方來繪製「路線圖」,分享目標,合作開發項目,而另一方面,他們還能夠拿出足夠的專注程度投入到各自不同性質的工作中,滿足擁有不同訴求的兩種人群的各種需要。

言而總之,跨團隊的協作幫助 Airbnb 彌合了產品區塊與區塊(部門與部

門)之間的鴻溝

在 Airbnb ,工程師突然換了團隊,又或者做一些超出當下團隊範疇的事情是很普遍的情況。舉個例子,專注於產品的團隊往往都需要在項目的工作流程中不斷去提升底層架構,而如果這個團隊中的某個成員忽然發現自己的工作也許會在其他團隊帶來更加明顯的效果,又或者是別的團隊所做的事情更能引起他的興趣,那麼工程師轉團隊是完全可以實現的,他們有這方面的自由。經理們會幫助他們打點這一切。

其實說到底,一切都取決於工程師認為調整後的崗位角色會給整個產品團隊帶來更大的動力,只要滿足這個條件,一切變動都不在話下。

 

在開發進程中的文化標準

Airbnb 在開發進程,從設計上來說是靈活的。它不希望在很多方向上都有所突破進展,但是也不希望變得非常標準化、模組化,這樣會錯失更好的工具和開發理念。 Airbnb 為了解決這個兩難問題,不強行在團隊內推行某種規則,而是讓每一個個體都能在產品開發中形成更加準確的判斷。

如果項目開發上做了某些調整,往往是因為團隊內部成員自發做出的決定。「程式碼審查 (Code review)」就是一個非常好的例子。

曾經,Airbnb 多年來都有一系列的方法來做到「拉拽請求 (Pull Request)」,但是從來不會說強制員工來這樣應用。其實,很多工程師都沒有將它們納入到自己的工作流程中。在 Airbnb 剛剛建立不久的時候,一般來說工程師都能夠將自己的變動直接應用到網站上。這就有點兒像是蒙著眼睛拿著電鋸玩雜耍,看起來很酷,但是稍有不慎就會失掉自己的一根手指。

後來,有一些有想法的工程師們開始在每週工程師週報會議上面不斷地強調「程式碼檢查」的重要性,並且舉出了在過去一周中所見過的最具幫助性,也是最為深思熟慮的「程式碼審查」案例。很快,越來越多的工程師都開始應用「拉拽請求」,甚至於到最後如果你不要求「程式碼審查」的話,都會覺得你是

如此的格格不入。而如今,它已經成為了 Airbnb 項目開發過程中的一個不可或缺的環節。

同時,這種觀念上的轉換也體現在了工具的進步上面。之前有一個工程師小團隊自己開發了一個能夠持續整合的底層系統,讓任何工程師團隊能在幾分鐘內把一整套測試套件放到上面運行。利用工具,降低了高效率行為實現的門檻,並且不斷推動公司的文化向前發展。

上述的例子只是冰山一角而已,與之類似的例子還有項目管理工具以及「Bug 追踪工具」上面。當 Airbnb 發現了一種更加優秀的開發方式的時候,它會讓所有人都注意到它,讓它基於特有的優勢而存在,讓人們來選擇用或者不用。這樣做會保證一定的靈活性,也不會錯過任何一種能夠提升開發效率的機會。

任何的工程師都能對代碼庫做出貢獻,所有的軟件庫都是面向所有工程師開放的。別覺得這是不可能的事。因為 Airbnb 奉行的文化中包含了「自動化測試」、「程式碼審查」並且也有能力通過具體的產品監測發現程式碼異常。

這樣的理念其實就是來自於如今的開源世界。團隊中的某個人維護著這個代碼庫,而如今你想要染指這個代碼庫的話,首先要審查你所做的各種變動。

這樣一來,每個工程師的主動性都得到了充分地釋放。與其想辦法把自己的問題放到別人團隊的「工作重點清單」,然後等著他們來完成,還不如自己著手來做,然後請他們進行審查就好了。「代碼審查」就是這樣非常頻繁地進行著,產品開發進程效率大大提升,每一個人都獲益良多。

一旦代碼融合了,工程師開始帶來自己的變化。在任何一天,Airbnb 的網站所發生的變動會有 10 次甚至更多。整個的「開發-測試」流程只需要不到 10 分鐘來運行,完成整個產品應用只需要花 8 分鐘的時間。這一切都太快速高效了,以至於一旦代碼融合,公司會叫工程師立刻開始應用改變。各種細小的改變的快速應用,降低了發生技術衝突的概率,即便哪裡出現了錯誤,也方便人們更容易的「debug」。當你開始應用改變的時候,工程師通常都會在工程團隊聊天室裡待著。從系統宣布「配置」現在開始,到最後工程師們宣布他們確認產品所做的變化是可行的。而在這個過程中,工程師還會緊密盯著一系列的數字,保證中間不會出什麼差池。

當然,差池、失誤、在所難免。往往 Airbnb 會選擇把網站倒退到某個時點,又或者是立刻著手修復它。當問題解決的時候,工程師會出一份不針對任何人的「事故檢查報告」。 Airbnb 專門內部開發了一款「事故匯報工具」,專門用來保存這些報告。這些報告能夠起到非常好的提示作用,幫助 Airbnb 在未來的工作中做到防患於未然,讓系統底層架構更加可靠穩定。

1443017209752

 

職業發展

在科技圈子裡面,作為工程師,你有兩個選擇,一方面你可以朝著自己的專業領域縱深發展,另一方面你可以朝著更高更寬的職位演進,比如產品經理。而 Airbnb 相信,前者能夠取得如後者一般的成就。無論是哪個方向,他們的薪資是平行來製定的,所以如果在 Airbnb 升入了工程管理崗位,是沒有什麼所謂的「補償性優勢」一說的。

事實上,成為了一名經理並不意味著你是升職了,只是把你的工作角色,工作重心給做了一下調換而已。經理很多時候扮演的是居中協調的角色,他們是不斷將工程師前進路上的絆腳石移除的那個人。這個絆腳石有可能是職業發展上的某個瓶頸,工作內容優先度上的混亂,又或者是單純技術上的不足。他們的功能體現在「輔助」以及「指導」上面。

同時, Airbnb 還非常重視這些經理的技術強弱。每一個星期,每一個經理都會參加十幾個有關技術層面的決策。如果他們任何一個人技術上不足,那麼很可能就不斷讓 Airbnb 深陷糟糕的泥潭之中。所以,所有的經理一開始都是從獨立的工程技術人員做起來的。隨著他們不斷地熟悉程式碼,應用實踐,還有更重要的是將 Airbnb 的文化納入到下意識的行為當中,他們才一點點的符合「經理」這個角色。 Airbnb 的經理絕不空降。

而作為獨立的貢獻者來說,他們主要的職責就是技術層面的執行,確保能夠給整個產品帶來更多的價值。他們負責找出當下哪些工作內容是最能達到這個結果。除此之外,還對他們有另外一個要求,讓開發進程在未來實踐的過程中變得更優秀更高效。每一個小項目都應該提升公司團隊的技術基礎。這樣的責任落實到了每個人的頭上,也使得工程師對彼此有了更高標準的要求,工程師們也會在產品研發的時間底線和功能上面做出取捨,為了帶來更高質量的工程開發,必須多爭取一些時間。

Airbnb 還會在公司之外幫助工程師建立他們的技術檔案,傳播他們的名氣。在專門建立的部落格上,又或者是某些開源項目上, Airbnb 一點兒也不吝嗇於公開目前的技術成功以及相關的工程師的名字。因為 Airbnb 相信,只要不是跟自己行業有關的最核心的技術,這些都應該拿來貢獻給開源事業。 Airbnb 一直想做一些回饋於技術社群,以至於社會的事情。它鼓勵越來越多的人注意到工程師的勞動成果,並且非常驕傲地向外界展示自己的工程師又取得了怎樣的進展成就。

 

最後的總結

在接下來的幾年時間,Airbnb 還將秉承著上述的開發理念和價值觀不斷向前。如今看上去那些不起眼的小事情所帶來的深遠影響,將在明天乘以十倍。屆時 Airbnb 將成為一個更加龐大的團隊,當然會有更大的壓力,但能看到一路上不斷在做試驗,那些好的結果納入到了 Airbnb 成為了它其中的一部分,哪些被摒棄在眼前,這本身就是很有趣的一件事,不是嗎?

當你在快速成長的過程中,需要時刻保證這個創業環境是富有創新精神,並且有趣,這一點非常重要。工程師團隊每個星期五都會展開長達一個小時的與技術研討展示有關的會,上面會有各種 GIF 動畫、歡呼喝彩、以及感謝的聲音。 Aribnb 還會在一年時間裡展開兩次長達數天的黑客馬拉鬆活動。

讓 Airbnb 變得如此特殊的是它的工程師文化,這種文化讓工程人員比其他公司更加緊密聯繫在一起,如果總結一下就是:每個工程師都各負其責,擁有絕對的話語權和影響力,以互幫互助為工作重點,訊息的共享是默認選項,持續不斷地提升程式碼的品質。這種文化讓每個工程師都能帶來最優秀的工作成果,每一天早上都能充滿欣喜期待地投入到全新的工作當中。

《延伸閱讀》

向矽谷的 90 後取經 如何成為受歡迎的工程師?

軟體工程師的創業陷阱 --接案

美國國安局的工程師有比 Facebook 或 Google 的工程師強嗎?

工程師,你應該寫作

使用哪一種程式語言的工程師平均收入最高?

中年工程師的另外一個選擇:創業

寫給產品經理與工程師:如何與設計師一起工作

歡迎加入「Inside」Line 官方帳號,關注最新創業、科技、網路、工作訊息

好友人數

精選熱門好工作

客服專員 擴大徵才中

樂購蝦皮股份有限公司
臺北市.台灣

獎勵 NT$15,000

社群經營專員

關鍵評論網股份有限公司
臺北市.台灣

獎勵 NT$15,000

Backend 工程師

Omlet Arcade 美商歐姆雷特
臺北市.台灣

獎勵 NT$15,000

評論