促使整个团队改善的首要驱动力一定来自技术领域
對于中國的技術團隊來說,我堅信促使整個團隊改善的首要驅動力一定來自技術領域,只有采用以技術領域為切入點逐步滲透到管理領域的方式,才更有可能讓團隊發(fā)生質的變化。
入職半年后的2013年6月份左右,淘寶瀏覽器團隊和搜索團隊被剝離出阿里巴巴集團,成為阿里巴巴與UC優(yōu)視所成立合資公司——廣州神馬移動信息技術有限公司——的主體。在合資公司正式成立之前,主管在一次與我的面談中告知“我們得成為一家小公司的一部分,且可能要重新基于Chromium的最新內核開發(fā)新的瀏覽器”(注:“新的瀏覽器”正是指現(xiàn)在的“UC瀏覽器電腦版”)。當聽到這一消息時我非常高興,因為看到這是一個難得的團隊重新審視過去和甩掉歷史包袱的契機。在這次面談中,我回應主管“看來我得好好發(fā)揮一下”。也從這次談話開始,我非官方地成為了開發(fā)團隊的軟件架構師。之所以說是“非官方”,因為我只是在內心任命自己成為了團隊的軟件架構師。
?
改變整個開發(fā)團隊各種亂相的第一步是讓工作有章可循,即制定開發(fā)活動的各方面規(guī)范。我在入職之初曾發(fā)起過《軟件開發(fā)指南》(后面簡稱“《指南》”)的編寫,初衷是試圖通過工作規(guī)范化去改善團隊的工作質量與效率,而此時要做的是全方位地充實其中的內容。
?
規(guī)范首先要立足于技術角度,指導團隊解決在開發(fā)活動中因不遵守Chromium架構而導致的各種混亂問題。在之前的淘寶瀏覽器時代,團隊對所擴展功能的代碼采用集中組織的方式(如下圖左邊所示例的那樣)。然而,這種組織方式存在兩大弊病:一,表面上工程師無需完全掌握Chromium的架構就能開展工作,但也正因如此導致模塊間存在混亂的依賴和耦合關系;二,由于沒有清晰的架構,工程師增加文件和目錄時完全沒有指導思想,這進一步助長了混亂。新規(guī)范要求將一個功能模塊采用“打散”的方式組織(如下圖右邊所示的那樣),而“打散”到什么程度完全以Chromium的架構為參照,即要求擴展功能的代碼與Chromium的架構完全吻合。盡管這一改變看似很小,但卻迫使工程師在日常工作中得先理解Chromium的架構,所帶來的積極影響卻極其深遠,因為它能徹底杜絕大模塊的混亂問題!團隊中的小盤同學有一次對我說“現(xiàn)在(按照規(guī)范)增加文件和目錄很是輕松”,而這一工作之前很是讓人糾結,那時大家能感受到別扭但卻不知如何解決。
wKioL1Tya8mCbRqiAADFHfajdHc937.jpg 漢游天下扎金花 http://www.3renddz.com/
扎金花游戲大廳|
規(guī)范還得從技術層面解決自有代碼與原生代碼的解耦問題。由于我們的產品是對Chromium開源項目的二次開發(fā),需要通過良好的軟件設計解耦使得能快速跟進其發(fā)展步伐,以解決團隊長期遭受的內核升級之痛。在淘寶瀏覽器時代,由于沒有明確的規(guī)范,以及檢查規(guī)范實施是否到位的手段,使得自有代碼與Chromium原生代碼難以明顯區(qū)分,導致在每次內核升級時得花大量的時間進行代碼合并,甚至對不少代碼進行重放。新規(guī)范要求在Chromium原生代碼中所變更的每一處都采用宏加以控制,其所達到的效果是我們只在Chromium的原生代碼之上做加法。另外,宏在下次內核升級活動中起到了“燈塔”的作用(這是團隊的雷翼同學做過3個內核版本升級后的切身體會)。新規(guī)范還從軟件設計層面多方位指導如何實現(xiàn)解耦。
?
顯然,《指南》中不可能規(guī)范開發(fā)活動中的每一處細節(jié),這就需要整個開發(fā)團隊有更為明確但抽象的開發(fā)策略以指導大家對所面臨的未加規(guī)范的內容進行決策。為此,我在《指南》中明確“以快速跟進Chromium內核的發(fā)展”作為整個開發(fā)團隊的開發(fā)策略。從用戶層面,這一策略使得他們能更早用上安全漏洞更少、性能更好的產品;從開發(fā)團隊層面,這使得我們能通過快速跟進的方式,將內核升級的工作以小步快跑的形式推進。這一策略的制定同樣在將來產生了深遠的影響,它甚至引發(fā)了開發(fā)團隊與其他團隊的一些思路碰撞,這是我們后續(xù)篇章要涉及的內容。
?
除了規(guī)范層面,在進入UC瀏覽器時代之初,團隊在技術層面也積極儲備。雷翼與小盤同學完成了git的部署并引導整個團隊從SVN轉向git;雷翼同學完成了buildbot的部署,buildbot使得我們能快速定位開發(fā)過程中引入的問題和及時發(fā)現(xiàn)對Chromium原生代碼變更不符解耦規(guī)范的內容;小盤同學則開始著力于更深層次的性能優(yōu)化;另外幾位同學與我一道將淘寶瀏覽器的一些模塊搬到了新的Chromium內核上,并對代碼結構根據(jù)《指南》的要求進行了優(yōu)化。
?
即便開發(fā)團隊那時為UC瀏覽器電腦版的開發(fā)準備工作開展得如火如荼,但管理層對后續(xù)開發(fā)究竟基于淘寶瀏覽器還是最新的Chromium內核實施仍猶豫不決?;谔詫殲g覽器開發(fā)的好處是項目時間更可控,但整個團隊得背負之前的很多歷史包袱,且很難借助這次開發(fā)新瀏覽器的機會卸去這些包袱;基于Chromium全新內核開發(fā)雖需要更多的開發(fā)時間,但這也是整個團隊重新塑造自己的一次大好機會,只是當時管理層對團隊能否抓住這次機會重塑并沒有十足的信心。在最后一次開發(fā)團隊內部開會討論最終的實施方案時,好幾位同學與我一道力薦基于最新的Chromium內核實施,為了說服大家采納這一方案我以“這次不同,因為有我在”這句話想給團隊帶去更足的信心,而不少同學報以掌聲表達了自己的意愿。
?
也就這樣,整個開發(fā)團隊醞釀好了抓住這次機會重塑自己!
?
至此,相信讀者所看到的更多是技術因素,而沒有管理因素的影子(讀者會在將來的篇章中看到,請保持耐心)。對于中國的技術團隊來說,我堅信促使整個團隊改善的首要驅動力一定來自技術領域,只有采用以技術領域為切入點逐步滲透到管理領域的方式,才更有可能讓團隊發(fā)生質的變化。原因在于,不少工程師天然地將技術與管理做了明顯的割裂,這些人關注的焦點在于掌握更廣、更深的技術,對于管理能力并不大在意,且對自我管理能力很是不以為然。然而,真正專業(yè)的工程師也好、管理者也罷,很重要的一點卻是他需要具備良好的自我管理能力。自我管理能力的普遍缺失,很好地解釋了中國的技術團隊為什么難以高效運作,也從某種程度上解釋了不少工程師單干可以但合作卻不行。
?
相信讀者在自己所呆過的團隊見過各種技術規(guī)范,但大多情形下這些規(guī)范被束之高閣。與之相似地,UC瀏覽器電腦版技術團隊在技術規(guī)范的真正落地方面也經歷了一定的過程,這是后一篇文章我們將一同回顧的內容。
總結
以上是生活随笔為你收集整理的促使整个团队改善的首要驱动力一定来自技术领域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解JavaScript变量类型判断及d
- 下一篇: 作为一名程序员,我一直为中国的软件产业感