騰訊敏捷框架TAPD(Tencent Agile Product Development)

有一篇文章寫得挺好.不知道原文出在哪兒.不確定是不是R&

D研發總監(王速瑜)在QClub上講的,這裏和大家分享一下.文 章主要介紹了敏捷開發的特性和框架,目標.我們可以把它看作是研發工程師的方法和思考,也可以看作是項目管理的流程和方法,FDD 同樣適用於視覺設計師及交互設計師.以及SCRUM運用在敏捷開發中的(產品->達標分解->衝刺->產品增量) 模式同樣值得每一位設計師思考.無論FDD還是SCRUM,告訴我們一個道理”結果很重要,方法更重要”.

關於FDD和SCRUM,XP我解釋一下,不權威,應該差不多了:
FDD,是一個開發過程,先創建全局輪廓模型,再 通過一定週期的迭代,逐漸豐滿產品功能特性.大家常聽到的開發同事所說的”這個版本我們需要處理的必要features”,就 是指每次迭代中的從用戶視角出發的有特定意義上的產品小特性.迭代的過程就是完善這些features.使產品豐滿成型.

SCRUM, 它被運用在整個項目管理中和產品的敏捷開發過程中.(產品->達標分解->衝刺->產品增量)

XP,極限編程的意思,它實用於小規模項目組高變化性需求.主要在於降低因需求變更而帶來的成本.比較理想化.

———— –正文如下————–
騰訊是一家典型的互聯網企業,互聯網行業有其鮮明的特點:
1.關注用戶行爲
2.追求創新(騰訊有一個創新中 心部門)
3.需求不確定性高
4.快速適應變化
5.快魚喫慢魚

騰訊在敏捷開發方面的實踐大致包括3個部分:
1. 產品:採用FDD,即產品特性開發驅動的一種模式,騰訊的產品會有一個明確的產品經理這樣一個角色,他會負責整個產品,包括產品的驗 證、產品的方向、市場調研、用戶調研等。FDD模式是一種非常適合產品經理來對產品做一些滾動的要求,騰訊在產品設計上引 入了類似FDD這樣的模式,但是也不完全是FDD,只是參考FDD,所有的開發團隊都是由產品經理所歸納出來的產品特性去驅動整個產品 的研發。

2.項目管理過程:騰訊採取了SCRUM,但也不完全是SCRUM,有騰訊根據自己的特點去總結的一些實踐,大概 的項目管理過程同SCRUM的過程是比較類似的,包括每天的晨會、迭代、timebox、每個迭代完成的時候會有showcase、 回顧總結等。

3.開發實踐:參考了很多XP的實踐,就XP完整的實踐來說會比較理想化,很多東西不一定在實際開發中 能夠採納,所以騰訊也是採納其中的某些實踐,比如自動化測試和持續集成,通過這樣的實踐就能保證產品有一個快速發佈的過程。

在騰訊的敏捷實踐中,具體的實踐情況是這樣的:
1.故事牆:就是白板story wall,平時工作中很多團隊都會使用,這些 團隊會把每天開發的一些產品特性採用story的方式每天都在白板裏面展示出來,整個團隊每天都會圍繞這個白板能夠清晰的看到整個產 品或者整個項目的一個過程,包括整個產品特性的過程。

2.迭代總結:在每一個產品發佈的時候都會有一個總結。具體的 做法是,把做得好的、不好的總結出來,做得好的在下一次迭代發揚光大,做得不好的在下一次迭代就要注意改進。這樣的總結是 要求項目的所有成員都必須參加,包括項目的開發人員、測試人員、QA、項目經理、產品經理等,每個人都要去去總結他在上一個迭代中碰 到了什麼問題,通過便籤紙的方式貼出來,項目經理實際上可以看成是SCRUM M a s t e r,包括站起來總結這樣一些東西,包 括我們下一次迭代繼續發揚什麼,必須要注意什麼東西,最後就會得出一個excel的文檔,包括上一個迭代中出的問題,具體的解決辦 法,都會有。

3.每日晨會:每個團隊每天大概花15-30分鐘,回顧昨天做了什麼、昨天有些什麼問題、同時也會介紹每個人今天計劃做些什 麼工作(特點:是站着開會)。最早是通過白板的方式去做,就是每天項目經理組織團隊成員對着白板,白板上體現項目的進展情 況,通過會議可以很明確的知道昨天大家做到什麼樣子,今天大家計劃做什麼,最早的時候每個成員都是口頭彙報的。實踐一段時 間就發現了一些問題,

第一、對於一個20、30人的團隊,每天要怎樣做晨會,這是目前遇到的比較大的困惑;
第二、晨會很容易形式化,究竟帶來什麼樣的效率和效果,目前也在通過一些方式去研究,去探討。
第三、有一些形式上的呆板,剛開始做會覺 得比較有意思,覺得這跟傳統做法不一樣,每天這樣做並且做多了就感覺很枯燥,這也是面臨一個挑戰。

後來騰訊也做了一 些改進,比如爲了讓成員的參與程度更強一些,包括形式上會更強一些,現在有些團隊就會採取每個人輪流主持的方式,剛開始晨 會的時候我們也會通過一些好玩的東西去刺激一下某些東西,但是現在看來的話,感覺改進的還是不是很透。在騰訊內部有一個交流通信的軟 件,有些項目也開始不採用站起來開晨會的方式,覺得站起來效率也高,就會通過即時通信軟件每天去交流,最後由一個人去統一輸出,這 樣能解決一些分佈式團隊的合作。所謂分佈式團隊就是這個團隊中有些同事在這個大樓,有些同事是在那個大樓,通過這種實時交 流的方式可以解決一些問題。

4.結對編程:並沒有很好的實施開來,但是在一些團隊裏面還是一直在嘗試着做結對編程的工作。一個在編寫程序,旁邊還有一個 人,同時記錄編寫過程、編寫思路、碰到的問題、自己的想法,編寫完以後一段時間他們會交換一下,就是互相交換着進行編程,這是一個結 對編程的一個過程。

5.時間盒:timebox,在騰訊的產品研發中,產品的每一個迭代都有一個明確的時間盒。在每 一次迭代開始的時候會召開一次IPM會議,即本次迭代的計劃會議,會議中團隊中的所有成員包括產品人員、開發人員、項目經理、總監、 部門領導,一起去敲定本次迭代要完成的任務,一旦任務敲定下來,本次迭代就會嚴格按照這個去落實執行。

6.一個完整的迭代過程:包括概念、設計、開發、測試和發佈五個過程。在概念階段,會採用FDD裏面提到的一些好的最佳實踐 來支撐到我們怎麼樣去敏捷的做需求開發,會制定一些產品發佈的計劃,比如產品在未來,某個迭代什麼時候發佈,要發佈哪些產品特性,都 是在這個階段做的。在設計階段,會做產品原型上的設計。對於互聯網產品說更多的是通過快速原型法快速的讓產品在不同範圍內去做一些體 驗,比方產品在某個迭代的一個小迭代裏面,可能會在一個團隊裏面先去體驗,可能就會採取發佈到公司某一個部門去體驗,或者 發佈到整個公司範圍去體驗,它會是一個不斷放大的一個過程。在開發和測試階段,更多的採取XP的一些實踐,包括編碼規範,代碼走讀, 比如1週一次代碼走讀,構建持續集成的環境,包括自動化構建,自動化測試等,會有一些好的測試上的實踐,如全員測試,就是將測試看成 不僅僅是測試人員的工作,更多的是整個團隊的工作,當然也包括這個產品的其他同事的工作,通過全員測試來激發大家對產品質量負責。在 發佈階段,騰訊採用的是灰度發佈,同傳統的軟件發佈不一樣。項目中整個迭代過程就通過類似SCRUM模式去管理,如有每日 晨會,如何建設團隊氛圍,統一的管理平臺,每次迭代完成時的總結回顧等等,這屬於項目管理的工作。還有一些基礎的工作,如代碼管理, 版本管理,文檔管理,異地開發管理,這些在騰訊的整個管理體系裏面都包含的,還有會制定一些相關的規範,不過規範不是很強 硬的要求每一個項目必須執行,更多的由團隊自己選擇,讓他們根據自己團隊的特點、規模去選擇應該採取哪些實踐。

7.灰度發佈:這是互聯網的一個特點,說白了,就是對用戶一個逐步放量的一個過程,而且不要求團隊要儘早的將產品包發佈出 來,也就是不要求馬上發佈給所有用戶,而是會分批的去發佈,比如按號段發佈,比如在公司內部先體驗。發佈的時候也有策略,比 如發佈時如何放量,對用戶有些什麼樣的實驗,技術上怎樣做一些後臺開關,運營上怎樣跟進,怎樣保證4小時人員的留守,發佈 完後怎樣收集用戶反饋等等都會有一些統一的規則。比方實驗室某WEB產品的發佈,可以同時有多個版本,1.1版可能會有100%的用 戶在用,1.2版可能只有1%的用戶在用,它們是一個交叉升級的過程。

8.用戶研究:如何加強用戶的參與度,這是一種成本比較低的用戶研究方法。通過抓取一些用戶數據做分析,分析用戶 在這個產品上整個體驗的過程是怎樣的,通過後臺的數據可以看到整個活動的曲線,同時CE也可以通過一些科學的手段去保證,包括市場調 研、用戶研究、數據挖掘、產品體會等,這就是通過一些對用戶反饋、用戶觀察的工具去配合去對用戶做研究。比如QQ拍拍的一 個用戶的研究,我們可以到現場去做的一個調研,經常會由產品經理和用戶研究人員到用戶的實際辦公地點進行調研,做一天的反饋,通過觀 察用戶一天是如何使用你的產品,配合一些相關的工具去科學的分析。因爲互聯網是非常強調同用戶的這種反饋的,騰訊有自己內 部的一個CE反饋平臺,在這個平臺上可以收集到所有用戶的反饋,產品經理可以每天都會看到他所負責的產品有哪些反饋,包括 內部的、外部的,然後他就可以根據這些反饋對產品進行一些快速的調整,包括開發一些什麼樣的產品特性,內部同事也可以踊躍 的在平臺上反饋,內部同事本身就是QQ用戶。

9.項目管理支撐工具:騰訊內部有一個團隊在研究和開發這樣一個工具,用來支撐項目管理過程中的工作實踐,當然界面不會做得 特別好,畢竟是內部團隊用的。比如騰訊的IT工具中實現了故事牆(story wall),就是模擬線下的工作白板,能夠 把一個迭代分成不同的階段來看這個story的工作情況,能夠很方便的支持每個團隊在每天晨會的時候可以對着這樣一個界面去做他的這 個晨會,比如說有一些story做完了,就可以將它從這個狀態拖到下一個階段的狀態,每個團隊每一天都會對着這樣一個故事牆,就 能很清晰的瞭解到每個成員的工作情況,幫助團隊很透明化的去工作,而且目標一致。這是騰訊在工具上的支持。

10.敏捷團隊團隊方面的探索:比如QQMail團隊是這樣的,有產品組、有開發組、UI組、測試組,整個團隊都是圍繞 QQMail去開發,採用了敏捷開發的過程,具體團隊成員間分工協作的詳細內容大概會有幾個要點,第一、從設計上看,每週每個迭代都 會有一個IPM會,IPM會要求所有角色一起參加,包括產品經理、項目經理、QA、DE、UI等等,在會議上他們一起討論產品需求,如 產品經理談談他了解到的用戶反饋,談談他從公司領導那瞭解到多少產品上的要求,談談他對這些產品特性的優先級考慮,就在會 議上開發人員評估開發這樣一個特性大概需要多少工作量,有沒有技術上的困難,測試人員也會了解大家討論的內容,這樣使得測試人員能在 開發階段之前就能瞭解整個產品的需求是怎麼樣子的,整個團隊就這樣來討論並確定一個迭代開發的範圍,在開發過程中,所有的角色都會參 與,像QQMail團隊,QQMail是一個明確的產品,07年整個用戶量翻了10倍,就是採用的敏捷開發,在QQMai產品開發過 程中有一個要求,就是開發人員和測試人員在每完成一個需求都要進行一次showcase,即每開發完一個產品需求,要把產品經理、開 發組、測試組都叫到一起,一起來總結一下這個產品特性開發到什麼樣子,是不是有比較好的用戶體驗,是不是滿足一些預想的東西,而 且也會對一些用戶進行調研,也就是讓用戶參與到產品的測試中來。會採取全員測試的過程,即測試人員、開發人員、產品人員、UI人員會 參與測試,並且每個人在開發一個需求完後,都要去做測試,而且也會進行交叉測試,比如這個開發人員會去測試一下其他開發人 員開發的東西,所以在騰訊是希望全員測試的理念能夠深入到團隊裏面去,在上線後的4個小時裏也會要求人員留守,去看看這個 產品後臺統計的數據,及時分析用戶的行爲,去發現用戶對這個特性的感覺是怎樣的,用戶的反應是怎樣的,看看會不會出一些錯誤,這個就 是4個小時內必須留守的制度。QQMail從06年、07年到08年的一個發展情況可以看到整個團隊的心情曲線是逐步向好 的方向發展的,QQMail最早在06年的時候,本身實際是存在很多的問題,比如需求太過於前衛,因爲跟用戶脫節,團隊內部幻想着提 供什麼樣的產品特性給用戶,採取一些什麼樣的技術架構去做一些更好的體驗,比如06年採用了很強的Ajax框架,前臺架構 完全是通過Ajax去實現的,由此帶來了很多的問題,而且當時它整個team的要求也非常高,搞得整個團隊比較疲憊,在06年中期就 有一個小小的改變,包括對整個產品在性能上的改變,但實際上對於團隊來說還是比較被動的去接受,就是比較被動的去感受用戶 的變化,對產品究竟怎麼走、怎麼營收整個團隊都比較茫然。到06年10月,在QQMail團隊中開始推廣敏捷的一些理念,提 倡團隊怎樣去更好的關注用戶需求,怎樣通過一些敏捷實踐讓團隊做得更好,10月份做了很多交流,整個團隊也看到了一些希望,敏 捷開發剛剛引入到一個團隊是比較新鮮的,包括如快速響應、響應變化的這些理念,給團隊帶來了很深的感受,在06年年底就對整個團隊的 分工協作做了一些改進,在07年通過一些敏捷上的運作看到整個效果還是非常的明顯,這是比較成功的一點,大概是07年中這 個產品的用戶量大概是06年的10倍,就是07年達到了1000萬。現在整個團隊也把迭代、整個研發節奏固定下來了,會在 固定的週期有固定的角色去響應用戶不同的東西,會把跟用戶的這種距離拉得更近一些,這就是QQMail團隊的一個大概的發展歷程。

11.在騰訊敏捷是怎麼樣開始的:最早的時候是通過認知,認知就是包括瞭解業界的一些方法論,包括同 Thoughtworks的一個接觸去了解敏捷是怎樣的,而認可的話我們會去總結我們騰訊本身是怎麼樣子的,我們有這樣一個框架之後 我們就會搞一些團隊去實踐,通過實踐以後再不斷改進,本身也是一個不斷迭代的過程。

整個實施階段大概分成幾個階段:
06 年參加Thoughtworks外部培訓和行業走察
試點期:組織很多專題研討和內部培訓,樹立標杆,更大範圍內進行培訓
推廣期:內部建立一個顧問團隊,開發一些掃盲的課程,不斷的到一些團隊裏面去介紹去培訓,讓大家接受這些理念。

騰訊內部專門有 內部門戶去介紹騰訊整個產品研發體系,所有團隊都可以將自己實踐的感受提交到這個門戶,其他團隊就可以瞭解到另外一個團隊的一些優秀 的實踐,同時騰訊內部做了很多的交流研討,包括我們會有專門的團隊去同大家談敏捷,不斷的將一些好的實踐推廣到各個團隊 去,在騰訊也會有一個敏捷能力模型,會把團隊分A1、A2、A3三級,模型裏面每個A級都會有一些標準,這樣的話我們就能 夠看到每一個團隊的敏捷能力是一個什麼樣子,他是不是在朝着好的一些方面去發展,每個A級都會有一些衡量的指標,可以從不 同角度去看它是不是達到了這樣的指標。這個有點像一個股票的排行榜,就是你可以看到每一個團隊它的行情,它的漲跌是什麼樣子的,這 有點類似股票的這樣一個產品,這對於體現一個團隊而言是一個蠻形象的東西,由此也能看到整個大盤是一個什麼情況,體現整個公司的情 況。同樣的話,也會有一些個人的排行榜,關於個人的排行榜,到年終的時候都會有大獎的,有一些獎品獎勵到同事去更好的實踐 敏捷。

同樣騰訊也面臨一些挑戰,
第一個是團隊非常多,每個團隊特點都不一樣,比如規模不一樣,應用方法不一樣;
第二個是產品 非常廣,互聯網上所有的產品騰訊幾乎都有,這種多元化的產品它本身產品的研發模式會有一些不一樣,那麼敏捷、TAPD怎麼樣去適應這 種多元化產品的研發;
第三個是敏捷在騰訊也是存在一個過程改進,這樣就會存在一些不適應性,針對這種不適應性應該怎麼樣去做 才能更好;
第四個,騰訊人員本身的素質也是參差不齊,每年校園招聘大概會招聘1000多個畢業生,這些畢業生從畢業到能上手 工作,他們對敏捷的瞭解,融入到團隊中都需要一個過程;
第五個是一些長週期的項目,比如QQ客戶端,一個版本的發佈可能要半年到1年的時間,像這樣一個產品怎樣去做敏捷開發,也許它就不適 合敏捷開發。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章