在這風起雲涌的年代,最爲人們津津樂道的國內互聯網三巨頭無疑是騰訊、百度和阿里巴巴,比較湊巧,鄙人曾在其中兩家的研發部門任職。由於已離開Tencent,因此如今能夠站在另外一個角度冷靜思考,梳理回憶當年的所見所感,讓衆人一睹Tencent研發的崢嶸。面試
Tencent的產業佈局主要在IM即時通信、互聯網增值業務、網絡遊戲、無線應用、網絡媒體、電子商務和廣告業務,QQ註冊用戶超過7億、活躍用戶超過3億,依託QQ、Qzone、遊戲等平臺優點,單一產品月收入過千萬的比比皆是,像會員、Qzone、寵物、QQShow等,盈利能力超乎想像的強,年Revenue達38億、市值超150億美金,稱其爲吸金機器一點不爲過,因此股價一直堅挺,在其餘科技股紛紛低迷,卻被證券市場成熟的香港投資人持續追捧,這都說明大衆很是看好Tencent的業務前景和盈利能力。
說完商業表現再說研發背後,Tencent現有員工約4K,其中約一半爲研發,研發崗位主要有產品經理、項目經理、開發工程師、UI工程師、測試工程師、運維工程師以及項目管理工程師、SQA和CMO等,開發語言和工具以C++、PHP、Linux和MySQL爲主。現有服務器超1W臺,其中 QQ同時在線約4KW,Qzone同時在線約500W,ITIL可用性指標超99.9%,以其中約300人的事業部門爲例,同時研發/運營100個以上子產品,每個月發佈30個以上版本。編程
回想起來,對Tencent研發影響深遠的有兩家公司,一家是Google,它影響的是Tencent的研發文化;另外一家是ThoughtWorks,它影響的是Tencent的研發管理。至於Tencent是如何引入併發揚,且聽後續慢慢道來。服務器
Google是互聯網的傳奇,其獨特的開放和創新風格,奠基了它的世界級霸主地位。研究Google的人士都知道Google員工管理的十大黃金定律——網絡
(1)組織委員會嚴把招聘關架構
(2)知足員工的全部須要併發
(3)拉近員工距離運維
(4)使合做簡單協調工具
(5)身體力行,使用本身的產品佈局
(6)鼓勵創新單元測試
(7)儘量統一意見
(8)不做惡
(9)數據決定決策
(10)有效地溝通交流
事實證實這是管理知識型員工的最佳方式。當年Tencent CTO Tony曾帶隊赴美國Google總部,親身感覺Google的文化魅力,回來後大加褒獎,立志效仿引進。在鄙人看來,Tencent吸納了Google 文化的精髓主要有四點:寬鬆文化、創新文化、體驗文化和精英文化。
1、寬鬆文化:
Google公司的辦公環境是不少IT白領嚮往的天堂,員工能夠帶寵物、穿溜冰鞋上班,酒吧間、健身房、按摩房包羅萬象,辦公大樓之間提供滑輪車通行,初來乍到的不少人可能會有錯覺,真不知道是否是進錯了地方。
Tencent的辦公環境也堪稱一流,雖然本身的35層寫字樓在建,如今還租用着飛亞達約八層樓和華強若干層,但在環境裝修和硬件設施上絲絕不吝嗇,包括桌球廳、休閒吧、閱覽室,併入駐咖啡廳,辦公座位裝扮很是個性化,有大幅的海報、卡通玩具、綠色植物,甚至直接在辦公區中間擺上沙發和液晶電視,供看比賽、聽音樂或中午玩PSP。晚上八點提供免費晚餐,加班晚了不用擔憂,全天固定40多路大巴通往城市各處。行政祕書MM人數所佔的比例是我經歷的公司中最多的,每一個BU都有辦公室建制,她們爲員工提供了不少後勤保障並營造氛圍激勵士氣。
固然這是表象,讓員工感覺寬鬆與否的除了辦公環境外還包括工做壓力,在Tencent要想表現績效、得到確定並不是容易,KPI是把雙刃劍,每季度的強制正態分佈讓很多人無奈,由於晉級的條件是必須連續兩次拿A或S。另外少數中層幹部「技而優則仕」,表現出來「管事無論人」,談工做多、談我的少,對人的心裏關懷比較淡漠。
2、創新文化:
Google鼓勵員工動用20%的時間用於自主研究,而後從員工創意中挑選Top20採納應用,給與經費和資源轉化成產品,像Google的桌面搜索、Orkut等產品都來源於當初員工的創新想法。
Tencent也很是鼓勵創新,認爲創新是互聯網技術的靈魂,並寫入了企業文化裏。在組織架構上,Tencent設立有創新中心,專門實驗互聯網上的新生事物和形態,做爲新產品初創期的孵化器,成熟後再移交給業務部門運營壯大。在創新渠道上,Tencent每一年舉辦創新大賽,由一線員工提出衆多構想,而後相互PK給與重獎。固然如今Tencent暫時還作不到騰出20%的時間出來讓員工自主發揮,由於產品的壓力持續存在着。
3、體驗文化:
Google深信用戶體驗的好壞決定了產品對用戶的粘性,由於同類型的產品實在太多,用戶遷移轉換的成本極低,因此若是本身用着都不爽,就更別說讓用戶來用了。
在Tencent也是如此,從產品人員、設計人員到各級經理都很是在乎交互體驗和設計,而對原型PK最多的也是這裏,細到每一個流程、每一個按鈕、每一個圖標甚至每一個文字。主要體如今:
(1)用戶體驗小組,邀請客服人員和客戶表明對產品現場反饋,幾乎每一個事業部都有。
(2)用戶體驗室,裝有「眼動儀」以分析志願者眼球的轉動是否符合界面引導的初衷,以及長時間停留的區塊。
(3)用戶體驗平臺,陳列全部產品供員工隨時反饋,並提供月度、季度積分排名。
(4)產品內部公測,每一個重大產品發佈以前都會發起,由於公司員工中很多就是QQ產品的忠實玩家。
(5)灰度放量發佈,當不肯定市場反應或用戶真實需求的時候,先讓部分用戶灰度使用,收集體驗反饋並修改完善後再放量發佈。
4、精英文化:
Google對員工的素質能力要求很高,聽說招聘時須要6我的以上集體把關面試,另外在Google博士尤爲受歡迎,比例也很高。
Tencent的面試也很嚴格,T3(骨幹級)以上至少要過4關,並經副總裁和CTO面試承認。除了社招之外,Tencent也很是重視校園招聘,每一年都組織到各地高校宣講,「在一個好玩的地方實現本身的夢想」的校園招聘口號讓人印象深入。另外近年Tencent也加大了吸引高級人才的力度,T5(資深專家級)不斷涌現。
培訓也是Tencent對待員工職業發展的一項制度,培訓區分新人培訓、管理培訓和職業培訓,對管理幹部有潛龍、飛龍和EMBA體系,尤爲讓鄙人難忘和受益的是一些精品課程,好比「六頂思考帽」、「高效能人士的七個習慣」、「帶人帶心的領導藝術」等等。
從上述的比較中你們能夠看到不少Google文化在Tencent的烙印,這也說明這是一家善於學習、開放包容的企業。就像Tencent推出的衆多產品同樣,雖然剛開始多是後來者,但只要放手去作立刻能夠像模像樣,甚至超越、打垮先來者,這也是Tencent真正可怕的地方。
ThoughtWorks公司是一家全球IT諮詢公司,它可能不像Google那麼響亮,但有一個名字咱們技術人員不可能不知道—— Martin Fowler,堪稱軟件開發領域教父級的人物,他精通OO分析、架構設計和軟件工程,立著頗多,像《UML精粹》、《重構》、《分析模式》、《企業應用架構模式》等很多得到Jolt大獎的著做都出自他的手筆,而他正是ThoughtWorks公司的首席科學家,同時也是敏捷聯盟的17個始創人之1、以及敏捷宣言的起草人之一。至2008年,ThoughtWorks公司已連續舉辦了三屆敏捷中國大會。
那麼Tencent和ThoughtWorks兩個不一樣類型的公司又是如何結下淵源的呢,話要從2006年提及,那時Tencent規模已經開始膨脹,開發模式急需規範和標準化,到底走IPD(集成產品開發)仍是Agile(敏捷)的開發路線,公司管理層也在爲拿不定主意而犯愁,以後研發管理部開始與ThoughtWorks公司接觸,逐漸將敏捷產品開發引入進來,並正式命名爲TAPD(Tencent Agile Product Development)。
接觸是從一次3天15W的培訓開始的,ThoughtWorks派來了一個4人講師團隊,三天的課程讓人印象深入,由此也誕生了Tencent 往後推行敏捷的第一批種子。後來一想,此次培訓自己就是敏捷的一次真實案例,成員臨時抽調,有來自北京,也有來自西安;課程設置應咱們臨時要求即時調整,五天壓縮成三天;講解過程大量應用白紙、小紙條、圖釘和白板等簡單工具;關注學員的心情曲線等。這是一個擁抱變化的團隊,從他們身上折射出溝通、簡單、反饋和勇氣的敏捷價值觀。
簡言之,Tencent的TAPD是吸取了XP+SCRUM+FDD三者特色的並行迭代開發模式,涉及範疇包括敏捷項目管理和敏捷軟件開發。
1、敏捷項目管理:
(1)Iteration
軟件開發模型經歷了從瀑布到螺旋再到敏捷的過程,迭代不是敏捷獨有的創造,不管在RUP仍是在MSF中迭代都是其核心特性之一。而在Tencent特別強調的是並行迭代,即多個版本並行,最大程度發揮資源的效率。
Release(發佈)可理解成當實現的產品Feature累積到必定用戶價值時的正式發佈,它是比Iteration更大的概念;Iteration(迭代)是在固定時間內開發Feature的過程,Release通常包括屢次Iteration。
(2)TimeBox
TimeBox(時間箱)反映了敏捷開發的節奏,即在固定時間內實現不固定特性的週期,拋開需求定義階段,從設計-實現-測試到部署,在Tencent通常一至兩週時間居多。
(3)Planning Game
對敏捷的一種常見誤解是不要計劃,其實在敏捷的體系中不只強調計劃,甚至區分Release計劃、Iteration計劃和Task計劃等多種不一樣粒度、不一樣時長的計劃。Planning Game突出的是讓用戶表明參與,由用戶表明評估UserStory/Feature的優先級,開發人員評估任務的開發時間,由用戶表明+項目經理+核心成員三方共同排序、組合,肯定本次迭代計劃須要實現的Feature List。在Tencent用戶表明就是產品經理。
(4)IterationPlanningMeeting
IterationPlanningMeeting就是Planning Game實現的管理形式,經過會議溝通達成。
(5)Stand-up Meeting
團隊成員圍成一圈,逐個說明3個問題:昨天作了什麼,今天計劃作什麼,有沒有困難並計劃如何解決。對Team而言這是檢查進度、快速調整很是有效的形式,在Tencent這已經成爲你們天天早上的固定習慣。
(6)ShowCase
提交測試前由開發人員演示實現的功能,產品經理到場Review是否符合當初的設想,避免接近發佈時才反饋。
(7)Retrospect
每一個迭代結束後,項目經理組織或輪流組織全部Team成員共同回顧本次迭代的得與失,整理Well/LessWell,由於敏捷的團隊是自我檢討、持續調整的團隊。
2、敏捷軟件開發:
(1)Story Card/Story Wall/Feature List
StoryCard是XP中推薦的需求定義方法,要求符合Invest和Moscow原則;StoryWall則用於跟蹤StoryCard的變化狀態,而FeatureList是Tencent一直沿用的需求表達形式,在Tencent的TAPD工具中已經實現了相似ThoughtWorks 的Mingle的StoryCard管理功能,對於需求跟蹤而言這是不錯的方法,一目瞭然。
(2)Refactoring
相信咱們都聽過這句話:好的代碼不是設計出來的,而是重構出來的。
(3)TDD
「測試驅動開發」在Tencent執行地並不太好,Tencent的產品以Web形式居多、業務邏輯相對簡單,C++下的單元測試有些力不從心。相反自動化測試在Tencent比較盛行,由於有測試部門專門的自動化測試Team在推進,並且連接的是正式生產環境,能夠即時反映產品當前的狀態。
(4)Pair Programming
理論上結對編程能夠提升代碼的質量,並且並不會下降開發效率,但Tencent的業務繁忙,資源上不容許兩人結對。
(5)CI
持續集成能夠下降發佈前集成階段的難度與成本,Tencent的自動化構建系統推行的比較早,覆蓋了大多數產品,並且正在朝自動化構建-自動化測試-自動化發佈三者協同的目標邁進。
(6)灰度發佈
灰度發佈是Tencent的又一創新,它將產品試用擴大到海量用戶一端,在小範圍及時吸收用戶反饋,分析用戶行爲和喜愛,持續修正本身產品的功能體驗。
固然開發方法和流程肯定了還遠遠不夠,更難的是如何將它推進落地。首先Tencent組織開發了承載敏捷思想的TAPD項目管理工具,它相似 ThoughtWorks的Mingle;而後推出了敏捷能力模型,相似CMM成熟度模型同樣對Team評級加以引導;同時還推出了敏捷指數排行榜造成競爭,營造你追我趕的聲勢氛圍。
文章寫到這裏行將結束,最後咱們分析Tencent爲何選擇Google和ThoughtWorks,實際上是由互聯網行業自己的特色決定的,互聯網的生存法則就是大魚吃小魚、快魚吃慢魚,誰轉身的快、誰擁抱變化、誰更關注用戶,誰才能夠笑到最後。阿里巴巴董事局主席馬雲說過:今天很殘酷,明天更殘酷,後天很美好,但絕大多數人都死在明天晚上,卻見不到後天的太陽。