引言
2018年4月,來自北歐瑞典的音樂流媒體公司、百億美圓獨角獸Spotify創造了歷史,它成爲了當代上市公司當中,第一家經過「直接上市」的方式在美國紐交所成功掛牌的公司。這家公司改變的可能不只是人們聽音樂的習慣,並且還有企業進入資本市場的方式。截至2018年初,Spotify擁有1.59億的全球活躍用戶數量、7000萬的付費用戶數和46%的付費用戶增加率。Spotify是當之無愧的音樂流媒體領域的霸主,排名第二的蘋果音樂,不管是付費用戶仍是活躍用戶,都只有Spotify的一半。網絡
是什麼成就了Spotify?他們是如何打造出這麼一款深受用戶喜好的產品的?幸運的是有Henrik Kniberg的存在。Henrik Kniberg是全球知名的敏捷和精益教練,也是一位多產的做家,他參與了Spotify公司的這一過程,並寫下了多篇文章,向外界揭開了Spotify公司的神祕面紗。架構
筆者經過本身的收集和整理,梳理出了Spotify敏捷模式的整個過程,並經過一系列的文章呈現給你們。在本期的文章中,筆者將首先介紹Spotify的研發團隊。運維
組織架構
Spotify採用的是一種很是獨特的組織架構,以下圖所示:工具
整個研發組織有多個稱爲「Tribe部落」的單元組成,每一個部落中包括多個「Squad小隊」,從橫向的維度把擁有相似技能的人放在一塊兒造成「Chapter分會」和「Guild協會」。開發工具
Squad(小隊)
組織定位:
- 肩負一個長期的使命,長期從事某一類任務或者開發產品的某一個部分。例如:
1)功能特性小隊:專一於某塊功能特性,例如搜索功能。測試
2)客戶端APP小隊:專一於使特定的客戶端平臺更容易發佈,例如:iOS、Android.(注意:他們不進行業務特性開發)。ui
3)基礎設施小隊,專一於讓其餘小隊更有效率,提供工具和例行事物,例如:持續交付、A/B測試,監控和運維。spa
團隊成員:
1) 各小隊的產品負責人緊密合做,共同維護一個宏觀的產品路線圖(Roadmap),指引整個 Spotify 公司的產品發展方向。架構設計
2) 每一個產品負責人也分別維護一個本身所在小隊的產品待辦列表(Product Backlog)。設計
- 可能會有一位敏捷教練(Agile Coach),幫助團隊改進工做方式。
- 具有開發產品須要的全部知識和技能,例如設計、開發、測試、發佈等。
工做方式:
辦公環境
Tribe(部落)
組織定位:
- 在相關領域工做的多個小隊的集合,例如音樂播放器、後臺基礎架構等等。
團隊成員:
- 每一個部落有一名酋長,他負責爲部落內的各小隊提供最好的棲息地(Habitat)。
- 部落規模大小基於「鄧巴數(Dunbar Number)理論」而定(小於100人)。
工做方式:
- 一個部落中的全部小隊在同一個辦公地點工做,一般各小隊的辦公區是彼此相鄰的,辦公區附近的休息區能促進了小隊間的交流與合做。
- 會按期在部落內開展非正式的聚會,在聚會上相互展現本身正在作什麼、已交付了什麼、其餘人能從本身正在進行的事項中獲得什麼經驗教訓。展現內容包括能工做的軟件、新工具與新技術、很是酷的黑客日/黑客周項目……
「鄧巴數理論」:即150定律,由英國牛津大學的人類學家Robin Dunbar在1990s年代提出。
該定律認爲:人類智力容許人類擁有穩定社交網絡的人數是148人(四捨五入爲150)。Spotify認爲在超過 100 人的組織中,大部分人很難維持穩固的社會關係。當一個組織變得過大後,咱們就會開始看到限制性的規定、官僚主義、政治鬥爭、冗餘的管理層級,以及其餘各類浪費。
組織對小隊的支持
每一個季度,組織會對每一個小隊作一次調查,以肯定小隊須要在哪些方面改善以及須要在組織層面提供哪些支持。
各個調查項的評判參考標準:
- 產品負責人(Product Owner)——小隊內是否有專職的產品負責人對任務的優先級進行排序?排序時,產品負責人是否可以綜合考慮商業價值和技術因素?
- 敏捷教練(Agile Coach)——小隊是否有敏捷教練幫助團隊識別障礙、指導團隊進行持續地過程改進。
- 支配本身的工做(Influencing Work)——小隊內的每一個成員均可以支配本身的工做?能夠積極參與制定工做計劃?能夠選擇本身作什麼任務?每一個成員是否均可以把本身 10%的工做時間投入到黑客時間?
- 容易發佈(Easy to Release)——小隊是否能夠(而且確實作到)輕鬆發佈產品,而不須要不少的爭論和同步?
- 合適的流程(Process that fits the team)——小隊擁有本身的工做流程而且持續對其進行改進?
- 使命(Mission)——小隊是否有一個小隊全部人都知曉並關注的使命?產品待辦項中的故事是否都與此使命息息相關?
- 組織級支持(Organizational Support)——小隊是否知曉該從何處尋求解決問題所需的支持,不管是技術問題,仍是「軟」問題(「soft」 issues)?
管理小隊間依賴
核心思想:
實踐方法:
- 常常對小隊進行依賴調查:大家的工做依賴於哪些小隊?這些依賴是否阻塞或拖慢了大家的工做?嚴重到了什麼程度?
- 基於調查結果,討論如何消除有問題的依賴,特別是引發了工做阻塞的以及跨部落的依賴關係。爲了消除這些有問題的依賴,常常會調整任務優先級、團隊組成、架構或技術方案。
- 必要時,召開SoS(Scrum of Scrums)協調會議。
- 開發小隊自行發佈成果,運營小隊只負責「鋪路」。
Chapter(分會)
組織定位:
團隊成員:
- 同一個部落、相同技能領域、擁有類似技能的一些人。(技能領域,例如:例如敏捷教練,或Web開發。)
- 分會有一個領導,就是分會成員的直線經理,是一個服務式的領導,負責教導和指導分會成員的工做,執行員工發展、定薪等。
- 分會的領導,同時也是某個小隊的成員,參與小隊平常工做。
工做方式:
Guild(協會)
組織定位:
團隊成員:
- 囊括整個公司的成員,彙集和分享特定領域的知識,例如領導力,Web開發或持續交付。
- 每一個協會都有一個「協會協調人」,負責組織和協調協會的活動。
工做方式:
如何解決系統的總體一致性?
1. 現狀&問題:
1) Spotify 的技術是高度面向服務的。
2) 一共有 100 多個獨立的系統,每一個系統均可以單獨地維護和部署。
3) 一般小隊須要更新多個系統來完成新特性的開發。
4) 若是沒人關注系統總體一致性的話,那麼系統架構就會變得一團糟。
2. 解決方案:
- 系統負責人(System Owner):每一個系統都有一個或一對系統負責人(鼓勵結對)。對某些關鍵的運營系統,系統負責人由開發和運營結對組成(Dev-Ops Pair)—— 一我的擁有開發視角,另外一我的擁有運營視角。
- 系統負責人負責協調和指導開發人員,以免開發人員之間的衝突。
- 系統負責人關注於:質量、文檔、技術債、穩定性、可擴展性和發佈流程。
- 系統負責人並不是專職,一般也是小隊成員或分會領導,還有其餘的平常工做。
- 系統負責人會不時地執行一次「系統負責人日」,以整理一下系統。(系統負責人要在「系統負責人日」上投入的時間,不一樣的系統差別較大,可是一般很多於10%。)
- 一個首席架構師,負責協調跨越多個系統的、較高層面的架構問題。
- 評審新系統的開發工做,以免一些常見錯誤,並確保新系統和現有的架構設計是一致的。架構師的反饋只是建議和輸入——系統設計的最終決策取決於小隊。
與傳統矩陣式組織的區別
傳統矩陣式組織形式
1) 項目立項時,「職員」由「職能經理」從職能部門「分配」到「項目」。
2) 在項目中,「職員」由項目的「項目經理」分配任務。
3) 「職員」要例行向「職能經理」進行工做的「彙報」。
4) 項目結項後,「職員」從「項目」釋放,回到「職能部門」,等待分配到下一個「項目」。
1) 「職員」在「小隊」中「持續」工做,與小隊中其餘人員共同「打造」一款優秀的「產品」。
2) 「分會」和「協會」爲「職員」提供「服務」,分享知識、工做、代碼和實踐,解決如何小隊成員「如何作得更好」的問題。
1) 採用社區(Community)來替代傳統的層級式組織(Hierarchical Structure)。
2) 「教授和企業家」模型:
3) 產品負責人(PO)就是「企業家」,關注於交付優秀的產品,
4) 分會領導是「教授」,關注於技術卓越。
本文是Spotify敏捷模式詳解三部曲第一篇:研發團隊,本系列文章的下一篇將繼續介紹Spotify的研發管理過程,敬請期待。