揭祕Uber史上最大的工程組織變革

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"回顧那場對Uber工程文化影響深遠的變革。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2014年春天,Uber公司首席產品官Jeff Holden給技術團隊發出了一封電子郵件。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"這封郵件中討論的變革將徹底改變Uber的工程動作方式並塑造未來幾年的新型文化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但這封“雷霆萬鈞”的郵件,卻有着相當平淡的開頭:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"}],"text":"“"},{"type":"text","marks":[{"type":"italic"},{"type":"strong"},{"type":"strong"}],"text":"經過對內部大規模的數據收集、思考與討論之後,我們決定將公司整體劃分爲項目(Programs)與平臺(Platforms)兩大版塊"},{"type":"text","marks":[{"type":"italic"}],"text":"。請參考郵件附件,瞭解您自己身處項目團隊還是平臺團隊、特別是在新團隊中的職能定位。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而這時候距離Uber招聘第一位全職工程師纔剛剛過去三年。這時候Uber已經擁有100多名工程師、10位產品經理(PM)和15名設計師。幾乎所有工程團隊都在獨立運作,各自擁有不同的發展路線圖和項目。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"此次調整代表着Uber的一次早期演變,也宣告着Uber將正式告別以往聚集員工、交付項目、完成拆分再轉移到下一個項目這種過於粗放的工程運作模式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這份郵件解釋了現有組織結構將經歷怎樣的轉變:"},{"type":"text","marks":[{"type":"strong"}],"text":"十餘個團隊將被劃分爲16個項目團隊加11個平臺團隊,每位員工都將歸屬於其中一支平臺或項目團隊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但大多數團隊人手仍然不足,需要再額外僱用100多位面向工程、產品和設計崗位的新增人員。新團隊將按重要性排名,例如,負責增加司機供應的團隊,在優先級排名方面就遠高於擴大乘客需求的團隊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"這封郵件宣示的是Uber有史以來規模最大的一次工程組織變革:"},{"type":"text","text":" 建立跨職能項目團隊,同時引入平臺團隊的概念。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"截至目前,Uber的運營仍然遵循着這波變革的路線,即一支團隊要麼屬於項目團隊、要麼屬於平臺團隊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但到底是怎麼劃分的,又有什麼意義?我們不妨先從這兩類團隊的定義入手。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"項目團隊"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"項目團隊(在其他公司裏通常被稱爲產品團隊)佔全體工程人員的60%到70%,他們圍繞一個使命進行組織,負責快速執行並優化產品創新。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"項目團隊具有如下特徵:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"長期存在:"},{"type":"text","text":" 並非針對短期項目所組建,而是圍繞着司機體驗、市場效率或者亞太地區業務增長等目標而建立。各個團隊擁有明確定義的發展使命。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"跨職能特性:"},{"type":"text","text":" 每個團隊都擁有必要的人員配備,所以各團隊內既有工程師、也有非技術人員。團隊中通常有一名產品經理、一名數據科學家甚至是一名業務運營人員。就連工程工作本身也具有跨職能屬性,大多數團隊都設有後端和本地移動工程師,部分團隊甚至擁有網絡工程師。各團隊分別負責Rider、Driver或者Eats等具體應用功能。要構建和運行功能,當然需要構建並維護相應的後端系統和客戶端代碼。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"外部客戶:"},{"type":"text","text":" 項目團隊會直接與外部客戶合作,交付供他們使用的功能。客戶涵蓋的不只是Riders、Drivers、Eaters或者Couriers(騎手、司機、食客、配送員),同時也包括公司內部的運營、客戶支持或會計人員,外加貨運客戶、Jumper自行車騎手等其他小體量領域的客戶。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"關注商業使命:"},{"type":"text","text":" 各個項目團隊都專注於推動業務發展。例如,如果業務發生巨大變化、特別是不再需要關注增長,那麼相應團隊也將解散轉移。隨着時間推移,項目團隊也一直在變化、一直在成長。當然,也有部分團隊因爲沒能達到預期的快速增長目標而提前解散。Uber Rush就是典型案例,由於一直無法達成預期增速,團隊只能宣佈撤銷。在加入Uber時,我曾在一個項目團隊工作過很長時間,當時主要負責乘客付款功能。我們的使命就是爲所有自行車騎手提供順暢的支付體驗。在剛剛接手時,團隊是一個由8名原生移動與後端工程師組成的跨職能部門。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然,此外還有產品經理、數據科學家、設計師以及產品運營人員等成員。在使命調整之前,這支團隊曾經擴大到擁有約12名工程師。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們的客戶就是使用Uber應用的自行車騎手。我們會通過吸引新客戶、增加總訂單量以及成本節約等指標衡量自身業務的影響。這些指標會隨着各個計劃週期而變化,旨在適應Uber公司的現階段業務訴求。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"平臺團隊"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"平臺團隊爲項目團隊提供構建塊,後者則負責將這些構建塊轉化爲實際業務影響。項目建立在平臺之上,平臺確保項目能夠順暢運行。各個平臺團隊均具有以下特徵:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"專注於技術任務:"},{"type":"text","text":" 平臺專注於各類技術目標,例如擴展關鍵區域、實現性能或可用性目標,或者建立起易於擴展和維護的架構,併爲多個團隊和區域提供服務等。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"專業且較少跨職能:"},{"type":"text","text":" 由於平臺團隊專注於解決技術問題,所以幾乎沒必要引入跨職能結構。平臺團隊通常只面向一個領域或者堆棧,大多數團隊也只有面向特定堆棧的工程師。後期,部分平臺團隊也開始與技術產品經理(TPM)或者產品經理合作,但這種情況在早期非常少見。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"客戶主要是內部工程團隊:"},{"type":"text","text":" 平臺團隊的大多數客戶是其他項目團隊的工程師,極少數情況下也可能是使用該平臺的業務人員。正因爲如此,大多數平臺團隊才只吸納工程師成員。當然,也有少數平臺團隊會直接爲外部工程客戶提供服務,例如交付開發SDK的團隊。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"供多個“垂直”領域(項目或平臺)使用:"},{"type":"text","text":" 每個平臺都面向多個客戶,平臺團隊在建立任何功能時都必須考慮到這個硬性前提。如果某項服務或功能只供單一項目使用,那麼其就該歸爲項目團隊所有、而非平臺團隊。隨着我所在的團隊在Uber內部不斷髮展壯大,我最終拆分了這個平臺團隊,建立起支付Web平臺與支付移動平臺兩個新團隊。這些團隊掌握着支付構建塊,供Uber的其他團隊利用這些構建塊快速發佈Web或移動支付功能。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於包括我自己在內的大部分工程領導者來說,建立平臺團隊往往極具挑戰。最重要的當然不是控制員工人數,而是如何提前爲團隊配備必要的人手;此外,衡量平臺團隊是否成功的定義往往也比項目團隊更模糊、更復雜。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"共享項目\/平臺特性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雖然項目和平臺團隊各自負責解決不同需求,但雙方仍具有以下幾個共同點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"單一經理面向所有工程師:"},{"type":"text","text":" 團隊中的每位工程師,無論他們熟悉哪種堆棧或專業方向如何,都向同一位團隊工程經理彙報。工程團隊是一個緊密耦合的單元。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"誰構建、誰擁有:"},{"type":"text","text":" 無論團隊構建出怎樣的成果,他們都需要保證成果質量、隨叫隨到並有責任維持一切正常運作。於是,平臺團隊和項目團隊都需要隨叫隨到、準備解決成果中出現的問題。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"質量標準保持統一:"},{"type":"text","text":" 無論身在哪個團隊,我們都需要遵循相同的質量標準。代碼必須經過測試並接受功能監控。很多人都驚訝地發現,Uber的平臺團隊會在幾乎一切方案中添加遙測機制,而且往往能比客戶更早知道自己的系統何時出現問題。例如,開發者體驗團隊會收到持續集成(CI)服務發回的問題警報,並在工程師實際上報問題前就開展深入調查。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"無需許可即可構建:"},{"type":"text","text":" 即使不是平臺團隊的成員,大家也可以隨意創建新的服務、模塊或者可重用組件。很多平臺其實就是項目團隊開發成果的延伸。這類新建平臺要麼發展成新的獨立平臺團隊,要麼就是被移交給負責該領域的平臺團隊。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"項目團隊地隨着成長而發展成更多項目與平臺團隊。"},{"type":"text","text":" 作爲項目與平臺方法的自然結果,項目團隊會不斷成長並分化出更多項目或平臺團隊。平臺團隊往往掌握着跨項目的共享功能與責任,而這種“分化”也成爲Uber組織大多數部門的自然過程。所有這些特性都與團隊自治有關。團隊自治與工程自治正是硅谷企業探索出的核心要訣,同時也是傳統企業難以理解和實現的精要所在。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"盡力而爲的先遣隊"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Uber在推進組織變革方面一直遵循大膽、果斷的行事風格。"},{"type":"text","text":" 相較於更穩妥的逐區域漸進式變革,Uber領導層直接公佈部門拆分的明確日期,並將每支團隊視爲一支獨立的先遣隊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這有點像《星際迷航》中各支先遣小隊如何從企業號飛船前往行星表面。在各自遷移至項目與平臺團隊的同時,Uber公司也將總部搬到舊金山的市場街,標誌着與過去的自己徹底道別。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"很明顯,Uber希望能在各支先遣隊完成人員充實之前搶先重組。這意味着部分團隊仍將以骨幹成員的身份運作,儘可能早一步爲招聘\/留任工作釐清思路。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"項目先遣隊。在開展項目與平臺團隊重組時,相當一部分團隊出現了人員配備不足的問題。也有部分員工被標記爲“TBH”(待聘用)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"在我看來,Uber能夠成功完成重組要歸功於幾大原因:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,工程技術管理層非常清楚根據之前的招聘預測與投資規模,人員招聘不會出現什麼大問題。因此在決定擴張之前,他們肯定已經與招聘人員充分溝通,確保他們理解招聘目標、成本預算等信息。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"更重要的是,Uber的領導層還必須對業務的持續增長、特別是最終超越現有結構抱有堅定的信心。做出如此重大的改變勢必在短期之內影響簡略,但團隊會快速恢復活力並以更高的效率繼續大步邁進。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"事實證明,Uber高管對於業務增長的信心是正確的。Uber公司的拼車業務不僅一路飆升,還在2014年夏天啓動了Uber Eats業務、2017年上線Uber Freight,後續幾項新業務也紛紛取得成功。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"解決舊結構帶來的老問題"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在變革之前,Uber採取的是典型的功能性組織結構,包括工程、產品管理、業務運營、設計與數據科學等部門,各個部門都通過自己的團隊保持運營。工程師們按團隊分組,且各團隊均不包含來自其他學科(如產品管理或設計)的人員。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當時的工程團隊分爲Rider Operations、Driver Operations、Dispatch和Mobile幾大塊,但並沒有專門的產品經理或其他職能責任。產品經理大多充當項目的擁有者,並且經常與多個團隊相互配合。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我個人將這種方式稱爲“基於項目的方法”,一般更強調穩定的工程團隊組成。雖有好處,但這種結構也讓項目奪取了工作方式與組織方式的主導權。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"這種基於項目的方法當然有很多優點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"響應時間。"},{"type":"text","text":" 每當有新機會或出現新威脅時,我們都可以組建起新項目加以解決,不需要太多協調努力。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"靈活性。"},{"type":"text","text":" 就算管理者不知道接下來會出現哪種類型的工作內容,基於項目的結構在短期內也足以應付下來。Uber早期的發展經歷已經證實了這種靈活性優勢。當時我們並不清楚接下來的重點是應對外部事件、把握新機會還是執行現有計劃,那保持固有結構肯定是最安全的辦法。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"規劃和結構性成本較低。"},{"type":"text","text":" 各團隊實際上是通過項目進行自我組織,共同應對企業面臨的最大挑戰。只要整個體系運作良好,似乎就沒必要給規劃和組織團隊額外增加工作負擔。"},{"type":"text","marks":[{"type":"strong"}],"text":"但隨着業務發展,基於項目的方法也開始暴露出衆多缺點。對當時的Uber來說,問題主要有以下幾個方面:"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"業務持續發展,難以確定優先級次序:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"初期由於團隊規模較小且優先事項不明,所以基於項目的結構沒什麼問題。但後來Uber的業務開始愈發複雜化,Driver和Rider應用的上線以及衆多新功能的加入帶來了我們之前根本無法想象的複雜應用結構。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓人頭痛的不只是應用程序功能;業務運營團隊需要在不同城市推廣更多一次性計劃。而財務、法務等部門也有自己的項目需要完成。對幾十個項目進行快速排序變得越來越困難。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"很多跨職能項目一亮相就是MVP,後來卻無人問津:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不少項目在剛確定時份量極重,但在啓動工作完成後初始團隊會立即放手移交;作爲接手者的工程團隊雖然充當了名義上的擁有者,但移動工程師、產品經理或業務運營人員往往更關注下一個項目。於是很多之前的投入就打了水漂。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,由於跨職能工作總是“臨時”進行,所以難以保證項目的“後續維護”。這一點在涉及移動工程師的業務中體現得尤其明顯,畢竟他們自己都不知道接下來會被叫去支援哪些團隊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"新項目的啓動變得愈發難以協調:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於項目的方法雖然提出了“配合合適的人員隨時啓動項目”這種看似美好的理論,但現實遠遠沒那麼簡單。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"每個項目都需要具備特定技能和領域經驗的人員,包括移動工程師、設計師或者業務運營人員。但這些人往往歸屬於其他項目,而這位有空、那位在忙的協調缺少讓“隨時啓動項目”變成了“總也啓動不了項目”。另外,同一撥成員身兼多個項目往往讓人精神錯亂、注意力難以集中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"孤島項目越來越多,跨職能項目越來越少:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於跨團隊項目的啓動步履維艱,公司內部對於跨職能項目的協調能力也就越來越弱。例如,由於所有移動工程師都歸屬於移動團隊,其他部門發現很難“預約”到移動工程師,於是大多數人開始儘可能去除涉及移動元素的功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而這時候的Uber已經到了發展的緊要關頭,必須保證優先啓動最匹配業務需求的項目——爲此,他們必須解決阻礙前進的潛在問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"最重要的業務目標一定具有跨職能屬性:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Uber意識到,單純交付“簡單”且孤立的項目並不符合客戶和企業自身的利益。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Uber需要降低跨職能工作的實施門檻。項目團隊通過邏輯分組重新在企業內部定義了優先事項,而Uber則承諾爲這些團隊長期提供人員配備。平臺團隊專爲支持項目團隊而生,確保他們能夠專注於自己的業務使命,並在共享的平臺之上各自衍生出不同的發展方向。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"由此引發的新問題"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但天底下沒有免費的午餐,組織結構轉型也是如此。每次結構變化在解決部分問題的同時,也會引發新的問題。Uber的結構變革在剛開始就帶來了不少明顯的新問題,也有一些問題在隨後的運營中陸續湧現。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"“雙重報告”:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如今,每個團隊都有了自己的產品經理、設計師、業務運營及其他職能角色;但原有報告結構並沒有變化,於是團隊成員只能打兩份報告,一份給團隊內領導、一份給職能部門領導。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"工程技術領域之外出現了嚴重的“雙重報告”問題。每個團隊都有了自己的產品經理、設計師、業務運營及其他職能角色;但原有報告結構並沒有變化,於是團隊成員只能打兩份報告,一份給團隊內領導、一份給職能部門領導。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,這樣的新制度下每位設計師都對應一名設計經理,而設計師自己又需要與每天合作的跨職能團隊成員交代情況。這就引發了“雙重報告”結構。看似問題很大,但這已經比過去的結構好得多——以往,設計師需要向對設計一無所知的項目負責人報告,後者很容易提出一些完全外行的“指導意見”。這種狀況不僅會給項目帶來混亂,同時也使得設計師沒法獲得專業指導、阻礙其職業發展規劃。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"於是雙重報告結構繼續存在,但職能部門的負責人需要密切關注下屬們參與的各個項目。這種變化確實讓職能經理們的工作更加困難,但同時也維持了團隊組成的穩定性,讓他們真正理解了自己的專業到底在如何發揮實際作用、鋪設出一條更具前瞻性的職業發展軌跡。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"應對意外變化時靈活性較差:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在基於項目的時代下,大家可以輕鬆應對意外變化:馬上組建新的項目團隊。但在項目團隊與平臺團隊穩定區分的現在,應對意外變得更加複雜。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這種意外響應靈活性的下降其實是權衡後的結果,所以我們才說體量較小的初創企業在適應並改變工作方式方面更具優勢。初創公司可以隨心所欲地適應,而科技巨頭則需要時間推動大規模重組。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"應對新事件的常見辦法就是建立專門的新團隊,或者重組現有團隊。建立新團隊、選調部分老員工、再招聘幾名新員工,這明顯是破壞性最小的方法。至於更復雜的狀況,企業可能需要進行更全面的重組。而Uber顯然選擇了後一種方法,劃分項目與平臺團隊,以一着險棋在市場競爭中佔據了主動。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"部分團隊產生思維慣性,開始做低優先級工作:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在項目加平臺的雙軌時代中,每個團隊都具有明確的願景和使命。但如果這些願景和使命對企業不再重要,又會怎樣?從宏觀角度來看,公司當然希望能把人員轉移到其他更重要的工作當中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要解決這個問題,領導層會定期審查每支團隊是否有必要存在。Uber的方法就是開展季度性項目與平臺團隊審查。在審查中,領導們會關注各團隊的影響、發展路線圖以及如果團隊不存在會造成哪些影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我發現Uber在自我審查方面做得確實很好,特別是擅長考量項目團隊的存在意義。當團隊的影響力下降時,領導層要麼調整團隊的資源配置(讓部分成員轉出去做其他工作)、要麼直接解散團隊併爲成員們指定新的探索領域。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"企業適應商業環境變化的方式決定了自身成敗,這也是我在Uber看到的客觀現實。這家以“快速行動”和“領先於競爭對手”爲目標的公司確實很善於果斷裁撤掉不再重要的團隊,同時建立起更具現實意義的新團隊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Uber目前的競爭對手主要是那些仍以項目爲核心的初創公司,後者的運營思路跟過去的Uber很像。這些初創企業能夠以驚人的速度對新的市場機會、監管變化或競爭關係做出反應。Uber則需要保持自身靈活性,同時以新結構解決傳統基於項目方法中的種種痛點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"誰來決定該建立哪些團隊?:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在Uber決定啓動項目與平臺重組時,所有團隊都已得到明確定義。季度審查則負責確定各團隊是否還有存在的必要。如果沒有,則可能縮小團隊規模甚至將其解散。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但這些決定由誰來做出?決策流程是怎樣的?誰對資金擁有最終決定權?畢竟在Uber這樣一家快速發展的企業中,總會有遊離於常規評判標準的新團隊和新思路。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"答案是,做出決策的是技術領導團隊。他們會收集建議和商業案例,再由CPO(首席產品官)決定項目團隊、CTO決定平臺團隊。隨着時間推移和Uber的發展,這種決策權會被逐步下放到部門負責人手中。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"改革成效"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"如今距Uber的項目平臺拆分計劃已經過去七年多了,這場變革讓企業獲得了良好的運作態勢與競爭活力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"縱觀整個Uber職業生涯,我發現平臺團隊確實能夠跟上用戶增長、項目團隊也能隨時獲得成果交付。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在的Uber仍在遵循平臺-項目拆分理念,而且在持續發展中逐漸形成了“在大初創公司中建立小初創公司”的良好文化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於每項新倡議,公司會先設立一個小型項目團隊,成員們儘可能利用現有平臺以低成本方式做出試水。如果小團隊取得成功,規模就能持續擴大並最終發展成常規的項目團隊。在進一步發展後,他們可能拆分成兩個項目團隊、四個、六個,之後又孕育出一個新的平臺團隊……週而復始。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"將三到四成工程人力資源劃撥給平臺工程無疑是一項巨大的投資。任何商業人士都很難想象這樣的配置思路,畢竟這意味着短期內能夠交付的功能將減少三到四成。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然而,Uber的平臺團隊又分爲三種類型,而且各自服務於不同的客戶羣體:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"基礎設施類平臺:"},{"type":"text","text":" Uber的第一批平臺團隊,他們爲大部分工程技術團隊提供基礎服務,具體涵蓋存儲、計算、移動等平臺。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"開發者平臺:"},{"type":"text","text":" 這是一種值得關注的特殊基礎設施平臺,相關團隊的使命在於提高整個公司的工程師與工程團隊效率。他們掌握着CI\/CD系統、控制不同平臺上的開發者體驗,並不斷研究創新方法以幫助工程師們更高效地交付成果、獲取反饋並縮短功能迭代週期。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"面向客戶型平臺:"},{"type":"text","text":" 這是一種不太常見的特殊平臺案例,相關團隊負責爲內部、非技術客戶以及包括工程師在內的外部客戶提供服務。相關示例包括通信平臺,會以“低代碼”方式向客戶和業務用戶提供消息傳遞功能。另外,負責開發Uber Developer SDK的團隊也屬於這一類,負責向外部開發者提供服務。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"產品平臺:"},{"type":"text","text":" 從多個項目團隊的實際需求演變而來。例如,小費和評分平臺團隊就源自衆多項目團隊對這類功能的共通需求。他們開發出的產品能夠供Driver、Eats乃至Freight等團隊共同使用,只是不同團隊的實際用例略有區別。"},{"type":"text","marks":[{"type":"strong"}],"text":"如果我們把大多數工程師都投入產品領域,而不像Uber這樣高度重視基礎設計,結果又會如何?"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在我看來,架構、可擴展性和技術債務會很快給工程團隊帶來巨大壓力,導致他們被迫採取計劃外遷移來解決底層系統問題。更重要的是,工程技術人員的流失問題會相當嚴重,畢竟誰願意待在一家部門間互不關心、鬆散無序的企業裏?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"平臺團隊的概念當然不是Uber的專利,不少快速增長的組織在特定領域都建立有專門的平臺團隊。我堅定認爲平臺纔是一切技術組織穩定擴展的關鍵,也是他們不斷突破效率極限的必要前提。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"平臺團隊之我見"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我跟平臺團隊合作過多年,也參與過多個平臺的創建過程,觀察到其中數十個團隊的運作狀態。下面我想聊聊自己對於平臺團隊的一點看法。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"平臺團隊的部署不夠直觀。"},{"type":"text","text":" 從商業角度來看,平臺團隊似乎缺乏現實意義。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"}],"text":"“我們爲什麼要把兩成到四成的工程師投入到客戶永遠接觸不到的工作當中?更離譜的是,我爲什麼要讓最優秀的工程師參與這部分工作?”"},{"type":"text","text":"這個問題是大部分企業在組建平臺團隊時做出的普遍反應。確實,平臺團隊在小型組織內毫無意義,對那些現有結構比較穩定而且業務增長幅度不大的組織同樣沒什麼吸引力。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"平臺團隊能夠提高組織效率。"},{"type":"text","text":" 如果標準化確實對組織整體有利,那麼平臺團隊的存在能夠減少重複工作、推動方法標準化。例如,後端安全平臺團隊能夠幫助我們對企業內的安全漏洞開展全面檢查,同時有助於發現重複消耗資源、或者與既定原則相沖突的安全方法。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在平臺團隊落實到位後,我們能夠更輕鬆地減少重複工作。平臺團隊的使命是爲使用他們服務的客戶獲益,包括讓產品團隊將精力集中在產品身上,同時也讓平臺自身變得更加靈活、更好地爲更多客戶服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"對於快速擴張的業務組織,平臺團隊必須存在。"},{"type":"text","text":" 如果您的業務已經超越了幾十名工程師能夠承受的極限,而且業務在客戶羣體、產品類別及流程複雜性等方面快速升級時,大家就必須建立起自己的平臺團隊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"平臺團隊滿足的是那些非功能性需求,例如系統可靠性、更高的負載處理能力以及更穩定的產品支持能力等等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這種非功能性其實非常重要,但卻往往被決策者所忽視。具體包括:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可靠性(正常運行時間、存儲可靠性、數據持久性等)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"延遲(系統響應時間、UI延遲等)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"性能(系統、UI等)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"客戶端非功能性約束(內存使用、應用程序佔用空間等)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"合規性"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"安全性"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開發者體驗(編譯\/測試\/部署時長、CI周圍時間、開發者工具使用體驗)組織結構越複雜,就越是需要由專門的非功能性團隊幫助其他團隊獲得這種共通的日常運作基礎。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"產品平臺團隊在業務擴展方面與基礎設施平臺團隊同等重要。隨着產品覆蓋區間的拓展、特別是逐步拆分爲多支產品團隊,企業當然需要將通用功能和服務轉移到各個新的產品平臺團隊。如“事後總結”部分所述,Uber的通信平臺團隊也正是由此衍生而來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"平臺團隊會帶來新的痛點。"},{"type":"text","text":" 我當然承認平臺團隊帶來的巨大幫助,但平臺團隊的出現也給組織帶來不少新挑戰。受篇幅所限,這裏我只簡單談談幾個值得關注的問題:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"難以定義並衡量團隊目標與關鍵結果。"},{"type":"text","text":" 對平臺團隊產出的準確衡量要遠比衡量常規項目團隊更難。項目團隊基本都有自己的一套相關業務指標,但平臺團隊就沒那麼單純。另外,平臺團隊的發展週期也大多更高,所以在目標反饋上也比項目團隊更慢。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"容易出現倚老賣老、思維固化的情況。"},{"type":"text","text":" 平臺團隊往往需要同時面對多個工程團隊,而且會在整個公司內部產生影響。在這樣的團隊中工作,工程師們若不 需要跟實際業務相關者打交道,畢竟他們的“客戶”主要是其他工程師。這聽起來很好,但卻容易讓成員們驕傲自滿、目空一切,反而有礙於大多數團隊成員的職業發展。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"平臺團隊容易“替客戶做決定”。"},{"type":"text","text":" 平臺團隊必須權衡自身決定與客戶決定之間的關係。例如,平臺團隊既需要穩定投資並控制技術債務,同時也要及時拿出有利於客戶團隊的新功能。但也有部分平臺團隊堅持優先處理自己認爲重要的工作、甚至可能破壞客戶團隊利益,這種傾向非常危險。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"保持與客戶的順暢溝通。"},{"type":"text","text":" 我發現不少平臺團隊開發的確實是客戶想要的功能,但在實際發佈後結果卻令人失望——客戶這時候才意識到自己並不想要這個功能,也不想承擔後續維護成本。於是,如何與客戶保持開放暢通的反饋循環就成爲新建平臺團隊面臨的一大挑戰。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"這還只是產品與平臺議題的冰山一角"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我特別關注產品和平臺的議題,而本文所涉及的也只是Uber在項目與平臺轉型工作中的冰山一角。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏要感謝各位Uber高管和行業資深人士提供的幫助,特別是:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Ganesh Srinivasan——Uber公司前工程技術副總裁,在公司只有5位移動工程師時創立了Uber移動平臺團隊。我們探討了快速行動爲何如此重要,以及他對其他一些平臺方案的看法。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Adam Rogal——Uber公司前任移動平臺團隊負責人。他目前擔任Doordash公司開發者平臺總監。我們討論了平臺、開發者生產力以及二者之間的聯繫。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其他關於平臺工程的主題。感謝各位朋友的耐心閱讀,也期待您能分享自己的觀點與意見。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/newsletter.pragmaticengineer.com\/p\/program-platform-split-uber","title":"","type":null},"content":[{"type":"text","text":"https:\/\/newsletter.pragmaticengineer.com\/p\/program-platform-split-uber"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章