打造高質效的技術團隊 —— 混亂篇

wKioL1TPZijQpnKhAAocUAjXwjU842.jpg

2012年平安夜,我離開工作了近十年的通訊行業投身互聯網行業,入職了當時阿里巴巴旗下的淘寶瀏覽器開發團隊。過去的兩年,這個團隊完成了從淘寶瀏覽器過渡到UC瀏覽器電腦版開發團隊的鉅變。之所以說是鉅變,是因爲整個開發團隊的工作方法、工作質量和精神風貌在過去的兩年發生了翻天覆地的變化。在這個過程中,我作爲“領頭羊”引領着開發團隊向前發展,並在最近有機會成爲了帶領包含開發和測試在內的整個技術團隊繼續向前發展的負責人。

 

個體在兩年內取得巨大變化相對容易,而對於一個團隊來說挑戰就大了很多,因爲其中包含了技術和管理兩方面的內容,甚至是我個人對於軟件行業的理解及所持有的技術和管理理念。在目前中國IT行業的大環境下,UC瀏覽器電腦版開發團隊何以取得如此之大的進步相信被不少人所好奇。也正因如此,我想通過文章與大家分享。與此同時,通過這些文章與我的團隊共同總結過去兩年所發生的變化和讓團隊知曉將來如何發展得更好。

 

爲了避免這類文章過於空洞,本文將基於我個人在過去兩年所看到的、所想的,以及所採取的方法的形式加以展開。

 

混亂

二年前我之所以選擇加入淘寶瀏覽器團隊,正是因爲看中了Google的Chromium開源項目,因爲淘寶瀏覽器正是基於它的二次開發產品。那次面試時其實並沒有多少Windows的編程經驗(只有大約半年),當時面試官之所以看中我,最大的原因是我有Motorola的架構師經歷。入職後,在一封主管回覆給我的郵件中他告訴我:“其實,將你招聘進來是一次非常大的冒險。因爲,一是你沒有互聯網行業的經驗;二則擔心你這次轉行適應不了新環境。然而,從你的郵件來看,這種擔心完全是多餘的,你進入角色的速度遠遠超出我的預期”。收到這封郵件的回覆時,我入職並在Chromium的軟件架構上已花了有一個星期的時間。

 

在接下來的三個星期裏,因爲我是一名新人,所以沒有被安排具體的開發任務,而我也一直將時間投到了掌握Chromium的軟件架構上。即便在之上當時總共花了大約一個月的時間,但對於Chromium這一被我稱之爲“恐龍級”的項目來說,這點時間真的是杯水車薪。

 

之後,我被安排從事一些簡單的界面編程工作。對於我這個新人來說,當時團隊對於項目計劃的樂觀程度着實讓我嚇了一大跳。對於那些在項目上有經驗的人來說,很簡單的工作要我二天完成其實並不容易。原因在於,我之前並沒有將時間投入到了解界面與程序中類的對應關係,團隊也沒有在這方面有任何文檔沉澱幫助我上手工作。好在有周圍同學們的幫助,加上自己的鑽研,我還是如期地完成了被安排的開發工作。

 

第一次接觸淘寶瀏覽器的代碼真可用“震驚”兩個字去形容當時的心情。首先,代碼的組織完全忽視了Chromium的軟件架構。這造成的問題有二方面。一方面是代碼目錄結構與層級一片混亂,每位同學想怎麼處理都行,結果就是自有代碼很難維護;二則,由於沒有很好地關注Chromium的軟件架構,這使得自有代碼與Chromium的原生代碼耦合度很高,從而導致升級Chromium內核工作很是困難。其次,編碼格式沒有統一的標準,“不堪入目”的代碼讓人一瞄就知道編程效率和質量不可能高到哪兒。

 

在入職的前半年時間裏,我一邊“獨善其身”地工作着,力爭讓自己的工作成果與Chromium的保持高度一致;一邊不時地通過即時通(阿里是用旺旺的)和郵件指出所看到的不良編程行爲和分享自己的一些思考。坦白說,作爲一名新人,在開始指出他人的問題時並不能讓人愉快地接受。相反,很容易讓人覺得“這個人怎麼到處在挑刺?”主管看到我時常指出團隊的問題,很是擔心這樣團隊接受不了我,爲此專門在一次談話中向我提及該事。在這種背景下,之前出書、寫博客的經歷,加上在指出問題時往往會告知背後的原理,以及自己以身作則的各種工作習慣,讓我慢慢地博得了大家的認可與信任。最終結果向良性方向發展的關鍵在於,大家看到了我的能力,以及感受到我希望團隊發展得更好的做事初衷。

 

另外,前半年工作時間除了讓我慢慢融入團隊,還給了我很多觀察團隊的機會,讓我看到了團隊其他更多的問題。首先,整個團隊的工作方式過於原始,基本上是採用編碼後測試驗證通過就發佈軟件的方法。由於概要設計和代碼走查流程的缺失,使得開發工作差不多就是各自爲政,技術方案的優劣和編碼質量的高低都沒有把關。其次,嚴重存在“重新發明輪子”的問題。由於項目計劃總是過於樂觀,在項目時間並不充裕的情況下,大家一拿到需求的第一反應就是開幹,而不是先研究Chromium是否存在爲我所用的方案、模塊和函數、結構是否與Chromium的保持一致。概要設計和代碼走查流程的缺失使得“重新發明輪子”的行爲很難發現和被糾正。再次,整個團隊在知識管理方面一片空白。團隊中找不到任何一份文檔指導個體如何開展開發工作,也由於個體所掌握的知識沒有通過文檔化的方式輸出,使得整個團隊的個體成爲了“知識孤島”,個體的學習成本更高,團隊效率更低。最後,完全“閉門造車”。作爲一款基於Chromium開源項目二次開發的產品,除我之外幾乎沒有人關注開源社區的動向,大家只是低着頭幹,視野很是侷限。

 

前半年工作時間還讓我形成了自己的一些思考。

 

互聯網行業的產品對於用戶體驗很是考究。然而,讓人分裂的是,產品後面的團隊似乎並不關注自己的工作體驗。他們用着原始的工作方法,採用簡單加班的苦勞方式,卻無法從本質上改變自己的工作和生活質量。

 

互聯網行業對於“天下武功,唯快不破”存在嚴重誤解。從功夫的角度,武林人士之所以能做到“快”(形式)的跟本在於他的內功(能力),也就是說沒有深厚的內功則“快”跟本沒有支點。然而,大家在引用“唯快不破”時,只看到了表象,甚至將之當作解釋自己工作質量不盡人意的藉口。在我看來,對於“快”的正確理解應是產品的所有功能根據一定的優先級、以滿足可持續發展所需的質量要求的方式分階段實現,而非以犧牲賴以可持續發展的工作質量去換取。有一點我們一定不能欺騙自己的是,因爲“內功深厚”而有意忽視質量求快呢?還是根本不知道如何獲得高質量而以“快”做幌子?“唯快不破”之所以運用廣泛,是因爲創新產品存在巨大的用戶紅利,而這種紅利很可能快速變成產品的用戶粘性而形成競爭優勢。即便如此,“唯快不破”並沒有隱含“犧牲質量換取速度”。對於目前已一片紅海的PC瀏覽器市場,如果沒有形成自己的核心技術競爭力,則很難用低質量的“快”打出自己的一片天地。

 

淘寶瀏覽器時期的團隊還存在極爲嚴重的內核升級之痛。Chromium大約一個半月推出一次大版本,而基於Chromium的淘寶瀏覽器別說跟上Chromium的發展步伐,就是做一次內核升級也因爲得重放大量的代碼而週期很長。由於Chromium的發展步伐很快,且每一個版本幾乎都存在對已有功能的代碼重構而導致大量的變更,一旦跟不上其發展步伐,就會造成大量的變更被累積到下一次內核升級工作之時,從而使得下次內核升級的工作量更爲巨大。

 

現在回過頭來看,那時的淘寶瀏覽器團隊雖然不少同學有很好的技術積累,但由於做事方法缺乏規則的約束和不具專業性而難以發揮團隊的效能。團隊走過了不少彎路、犯過了不少錯,只是那時的團隊還沒有完全意識到。此外,那時的團隊也根本沒有意識到Chromium項目所蘊藏的軟件開發方面全方位的知識寶藏。

 

整個團隊正等待着一次全面改善的機會!

 

相信讀者對於像淘寶瀏覽器這樣的團隊並不陌生,甚至正經歷着這樣的團隊。或許,有的人對於這樣的團隊並不感到有何不妥,因爲在他們看來,這樣的團隊同樣能夠在業務上取得巨大成功,業務成敗與團隊的水準似乎毫無關係。然而,我想提醒的是,對於大家都騎馬前往目的地時,總會有騎馬的人先達到;但如果其中有某位是駕車前往時,最先到達目的地的一定是他。而且,兩種出行方式的過程舒適度截然不同!


作者微博:@至簡李雲


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章