小米研發和產品是怎麼做版本控制的?

miui一周一個迭代,產品團隊需求提出,到研發開完完成,一周神仙都完成不了。他們是怎麼控制版本,怎麼做到團隊協作,怎麼交替版本研發的?有人知道內情嗎?


為什麼小米的系統 MIUI 能夠一周更新一次,而魅族的固件更新周期很長?

@孫鵬

剛買了個Cherry的青軸機械鍵盤,有了打字的衝動,順便回顧一下MIUI開發流程的進化。先說明一下,我是MIUI的初始成員,長期負責最基礎的開發工作和每周的產品發布,有關開發流程的大部分的改變都是我來驅動的,我可以保證寫出來的都是第一手的資料,因為都在我的記憶裡面。

MIUI為什麼要每周五發布?這個項目開始的時間是2010年4月底,項目負責人是黎萬強,工程師是我和劉新宇,然後就沒有其他人了。新宇負責電話相關的改動,我負責系統升級,要保證可以在線升級(OTA)到下一個版本。兩個人非常興奮,也非常努力,暢遊在Android代碼的海洋裡面,很順利的在勞動節放假前發布了第一個內部版本。那一天,2010年4月30日,正好是周五。在那之後,公司內部的版本總是在周五發出來,當時是每周工作六天,周六還有時間修復周五版本的問題,有時候會發一個緊急更新,確保小米公司的同事們都能用上放心的系統。2010年8月16日MIUI正式發布之後,我們還是堅持每周五發布,其實沒有什麼特別的,因為之前已經是那樣了,每周五發布和OTA,就是MIUI的基因。

做到每周五按時發布,其實並沒有那麼輕鬆,不同的時期,不同的團隊規模,都有不同的挑戰。隨著MIUI的團隊規模越來越大,累積的功能越來越多,用戶預期越來也高,開發流程也跟著變化。從開始到現在,MIUI大概分為狂野、剋制、精準三個階段。

所謂狂野,就是想做什麼就做什麼,有什麼就發什麼。這是一個MIUI野蠻生長的階段,對於用戶的需求及時滿足,也經常能超出用戶預期,MIUI的口碑也是這個時期積累的。這個階段最大的挑戰就是如何儘快滿足用戶需求,如何最快的做出產品,而對於團隊管理,質量控制都沒有專門考慮,不過MIUI初始團隊的工程師素質都很高,也也沒有出現嚴重的問題。但是隨著團隊規模的擴大,新入職的同事的增多,某些發布的版本出現了一些問題,不得不在周六發布緊急更新。

所謂克制,就是要忍住。有時候做了一個新功能,如果不能馬上讓用戶用上,會很不舒服,但是如果因為這個功能導致用戶手機出了問題,那用戶會更不舒服。所以我們做了折衷,新功能提交在周三晚上截止,周四、周五只能提交資源改動,這樣我們可以有兩天的時間測試要發布的產品,如果有嚴重問題,可以馬上解決。如果兩天不夠,還可以更克制,大的功能周一就要提交,可以有四天的時間測試。這個階段,很多同事未必能剋制住,甚至老闆也很難做到克制,所以還是會有些問題,但是已經比狂野階段好了很多了。但是克制也讓很多同事不敢提交代碼,導致開發效率降低。

所謂精準,就是把正確的產品發給正確的用戶群。自從小米手機發布之後,MIUI的用戶群迅速擴大,到現在已經超過2000萬用戶了,而發燒友的比例其實只有一個百分點。這時候,大多數用戶的訴求是穩定,與此同時MIUI的忠實發燒友用戶也要服務好。這個時候開始了灰度機制,根據用戶對於新產品的接受程度,MIUI分為體驗版、開發版和穩定版。體驗版只針對高度發燒友用戶,不主動傳播,採取邀請制,討論區由用戶自己管理。開發版適合普通手機愛好者,喜歡新事物,但是又不想太折騰。穩定版自然適合普通大眾用戶,買手機就是要穩定,很多人甚至都不升級。目前體驗版、開發版和穩定版用戶的比例大概是1:1000:20000。

MIUI進入精準階段還不到一年,當時是因為要開發V5,所以需要一個比較長的開發周期,同時又想核心發燒友用戶可以一起參與V5的開發,所以專門做了一個體驗版給幾十個用戶使用,就和MIUI剛開始的感覺一樣。從V5的口碑來看這個階段的成果還是很可觀的。V5發布之後,這個版本專門給高度發燒友用戶體驗最新的功能,這些功能他們滿意了之後才會進入開發版,現在這個版本已經有了好幾百人了,每個工作日都有新版本,很爽,很折騰,很發燒。

新功能都在體驗版開發,開發版的用戶其實不會受到影響,因為這些用戶喜歡體驗完整的新功能,而不是帶有問題的新功能。體驗版上的新功能完整之後,提交到開發版分支上,發出去之後對於開發版用戶來說還是新鮮的。現在MIUI團隊有300人,同時開發的項目有十幾個,每周達到完整的新功能很多,這樣可以保證開發版的新功能足夠吸引人。其實開發版還有內測,每周二下午開始,每天都有一個版本,給那些稍微喜歡折騰的開發版用戶,同時也能幫我們發現問題。

寫了這麼多,不知道有沒有回答問題,總結起來就是MIUI一直都在嘗試更好的開發模式,同時滿足不同用戶的需求,又能夠保證作為基因的每周發布。很多事情做不到,不是沒有能力去做,而是沒有想到可以那麼做。當然,如果能夠有MIUI這麼一個既有創新能力、又有執行能力,既充滿激情、又能夠剋制的團隊的話,做到每周發布就太容易了。


推薦閱讀:

小米手機錄音效果好是硬體原因還是miui的原因?
MIUI 為何要遷移 Google 的大部分應用?
如何看待魅族科技在Flyme當中推送廣告的做法?
對於MIUI9,你有怎樣的期待?
設計從業人員如何評價 MIUI V5 的界面風格,對比 Smartisan OS 如何?

TAG:小米科技 | 團隊協作 | 米柚MIUI | 版本控制 |