過去三年,騰訊程式設計師經歷了什麼

南方人物週刊 發佈 2021-10-22T14:11:28+00:00

三年過去,騰訊已組建和孵化了117個開源協同小組,涵蓋了計算、存儲、數據等所有網際網路技術基石,涉及了微信、QQ、騰訊雲等所有核心業務板塊。

2018

年開源協同宣布啟動時,這項騰訊的「自我革命」因其與眾不同的路徑遭受內外雙重質疑:網際網路大廠基本上靠組織驅動建設技術中台,集中人、財、物、資源做一件事,而騰訊這種從基層開放協同的路子,行得通嗎?

三年過去,騰訊已組建和孵化了117個開源協同小組,涵蓋了計算、存儲、數據等所有網際網路技術基石,涉及了微信、QQ、騰訊雲等所有核心業務板塊。

全公司內部代碼開源率達到85%,不僅給騰

訊帶來巨大的效能提升和成本節約,同時通過雲不斷助力越來越多的生態夥伴。

文 / 陳其亮

程式設計師楊曉峰開始體會到一種前所未有的「快感」。

他所在的團隊向Open JDK國際開源社區主分支貢獻的代碼名列國內第一,受到了後者的點名致謝,騰訊也成為迄今為止這個社區唯一一家因顯著貢獻被連續點名致謝的中國公司。

兩位團隊成員還獲得了社區reviewer權限。迄今為止,在國內公司中有這種權限的程式設計師,不超過三人。

作為Java(一種計算機程式語言)開發工具JDK(Java開發工具包)的專家,楊曉峰的日常工作是普通人不太看得懂的基礎軟體研發。

2019年秋,楊曉峰衝著「協同」二字入職騰訊,牽頭JDK開源協同小組。簡單說,開源協同就是騰訊內部原始碼全部開放,不同團隊協同開發,共建騰訊基礎技術平台。

如今,他牽頭的團隊自主研發的JDK產品,不僅被公司內所有事業群使用,幫助多項大規模業務實現最高50%的性能提升,還被開源社區高度認可。

更讓他開心的是,JDK基礎軟體的研發已直接打通到面對客戶的產品端。客戶增長量,特別是主動尋求合作的客戶增長超出了產品端預期,甚至一向要求嚴格的金融大客戶,近期也開始在相關產品底層全面使用他們團隊自主開發的JDK產品。

而這一切從0到1的變化,發生在短短三年時間內。

「被看見」

2018年之前,很少有人意識到,騰訊內部的技術問題已經積累到了刻不容緩的程度。

熟悉騰訊的人知道,騰訊在產品上曾推崇「賽馬文化」,服務各產品的技術團隊也在自己「造輪子」、「建工廠」,最終導致內部「煙囪」林立,雖然單個產品技術團隊閉環效率高,但整體難以形成技術合力。

2018年,騰訊運營管理部在一次梳理中發現,公司內部重複的技術團隊竟有150多個。在聽到這個情況時,就連最高決策層總裁辦都震驚了。以至於騰訊高級執行副總裁、技術工程事業群總裁盧山發出感慨:「有一天,我們離開騰訊,回頭看我們留下的東西,都是扎了一堆煙囪的殘垣斷壁,我們內心會不會痛啊?」

騰訊決心要蹚出一條自己的路。

2018年9月30日,騰訊宣布新一輪戰略升級和組織變革,同時發起開源協同,通過整合全公司技術能力,打破技術壁壘,消除重複建設。

和當時業界流行的技術中台不同,騰訊的開源協同是全公司內部原始碼全部開放,上層設立技術委員會進行指導,底層推動各技術團隊成立虛擬組織Oteam(開源協同小組),協同開發公司級的技術產品——這讓在騰訊工作的程式設計師們一下子有了被全公司「看見」的機會。

田甜是騰訊互動娛樂事業群(簡稱IEG)一名做服務網格技術的程式設計師。當業務量增大時,需要更龐大的服務網格來避免資源重複浪費,為了做好服務網格,田甜試著發起了服務網格Oteam,找到公司里的「同行」一起協同。

「突然發現,同一個領域有好多人和自己在做相同的事,這種感覺很神奇。」田甜說。

在田甜看來,程式設計師大多個性低調,悶頭做事,以前服務好本部門業務就行,現在有了Oteam,程式設計師也要把目光投向外界。2019年10月,在服務網格Oteam每半年一次的線下沙龍上,田甜發現,另外一個事業群的同行最關注服務網格的安全性和穩定性,而不是IEG業務場景下最關心的技術架構。「這樣的交流,拓寬了我們做服務網格技術的眼界和維度。」

隨著公司內技術同行間不斷的「網友見面」,技術交流的氛圍逐漸熱烈起來。Oteam的企業微信群里,時不時有人拋出技術問題,很快就有其它團隊的程式設計師來解答。不過,技術交流比以前多了,程式設計師們也不一定會彼此服氣,畢竟騰訊程式設計師基數龐大,有不同看法,甚至流派之爭再正常不過。

縱觀tRPC微服務框架(騰訊內部的一個開發框架)Oteam的協同過程,也是一個「吵」的過程。吵歸吵,可以「關門、送飯」,「吵」個痛快,但事後必須有結果,出共識,「按手印」。爭吵的獲勝不是目的,對技術負責,增強全面認知、形成共識的才是目的。騰訊程式設計師們「不再孤獨」,也看到了山外有山,人外有人。

tPRC Oteam 生態日

田甜對此深有感慨:「我們以前的思維還是局限的,用技術解決業務需求後就覺得自己很牛,但有Oteam後,和其它團隊交流時就會發現,他們可能有更好的解決方案,通過交流和協作,不管是技術格局還是實操思路,都會上升一個level。」

統一代碼規範,就是程式設計師們的共識發展到一定程度後,自然而然達到的。

207行共享表格

2019年11月,騰訊正式成立代碼規範Oteam,統一輸出各大程式語言的代碼規範,號召全公司的程式設計師都按照規範來寫代碼。

要知道,讓程式設計師改變自己的代碼風格是非常難的事情。

一位在代碼規範領域工作多年的資深專家剛入職騰訊不久就發出感嘆:「騰訊在搞什麼?一年對這麼多門語言做規範化,簡直不可能!」

程式設計師們寫代碼都會有自己的習慣,這仿佛是他們默默留下的印記,或者說是個性標籤。坊間不乏關於代碼「大神」寫作習慣的各種傳說。

但如果不同團隊都把貼著各種「標籤」的代碼拿出來協同開發,問題就來了:寫代碼的習慣不統一會帶來程序編碼混亂,極大增加多人協作的成本。而騰訊曾延續多年的產品「賽馬」機制,催生出許多業務相似的技術團隊,這些團隊恰恰各有各的代碼習慣。

換句話說,即使騰訊內部原始碼全部開放了,不同團隊之間協同開發的效率還是會受到影響。

怎麼讓這些個性不同、代碼習慣各異的程式設計師做出改變,確立代碼規範,就變成了一件很迫切的事。

為了激發程式設計師們的動力,開源治理打榜賽應運而生。由代碼規範Oteam和騰訊負責開源協同落地的技術工程事業群(簡稱TEG)運營管理部共同主辦,鼓勵各大事業群的技術團隊來打榜,較量代碼規範度,比拼開源治理分數。

姚穗斌是代碼規範Oteam的創始成員之一,一度為程式設計師不願意配合代碼規範而煩惱。

沒想到的是,技術團隊們的參賽熱情完全超出了主辦方的預期。這次他驚訝地看到,比賽公告剛貼出來沒多久,就有60多個部門主動來打榜。

甚至有些參賽技術團隊在企業微信中編寫了「機器人」程序,每天提醒打榜賽的開源治理分數。

「一開始很多團隊的代碼得分不及格,打榜賽進行幾個月後很多就躥到了90多分,最後竟然有10多個部門都拿到100分,我們只好數到小數點後兩位才評出冠軍。」姚穗斌說。

2020年開源治理榜打榜賽頒獎現場

打榜賽結束時,騰訊各事業群的開源治理平均分為90.29分。而此前,在代碼規範Oteam對全公司代碼規範度的摸底調查統計中,各事業群的平均分僅41.05分,不及格。

姚穗斌稱,開源治理打榜賽徹底激發了程式設計師們參與代碼規範的熱情,「大家的勝負欲被點燃了」,一些原本不太關心代碼規範的技術團隊,在打榜賽中居然拿到了超高分數。

主辦方騰訊運營管理部總監徐海麗介紹,開源治理打榜賽是開源協同「新代碼文化」諸多工作的一個典型,它的價值在於協助Oteam在公司內外打造技術影響力,幫程式設計師們找到更多存在感和榮譽感。

「2019年底開始,代碼規範、開源治理逐漸成為我們推進開源協同落地的關鍵詞,這說明我們的重點已經不再是追求Oteam數量,而是開源協同的質量。」徐海麗說,「開源協同走進深水區了。」

當初聽到代碼規範專家的感嘆時,姚穗斌雖然內心咯噔一下,但還是覺得騰訊是可以做到。最終,事實證明他的判斷是對的。

「Oteam給了我們更大的空間。」騰訊代碼規範Oteam C++接口人、IEG增長平台部增長中心系統開發組陳峰表示。

有了Oteam後,他主導的代碼規範Oteam C++團隊就具備調動全公司資源的能力,進一步提升了產品能力,這樣的成就感最終反過來反哺參與人,形成正向循環。

在騰訊代碼規範Oteam最近一次成員招募中,許多參與者寫出了近千字的申請說明,活躍度大大超出了Oteam評審委員的意料。

「原以為大家參與只是隨便填一填,沒想到熱情這麼高。」評審委員姚穗斌說。

參加招募的成員數量越來越多,騰訊文檔的共享表格很快更新到207「樓」。有志於推動公司代碼規範的程式設計師們可以自主報名,只要按照共享表格內的要求逐一填入內容,通過評審後就能成為Oteam的一員。

一位參加申請的程式設計師在長文建議中的第一句話就寫道:「必須讓大家理解,好的程式設計師都是嚴格遵循代碼規範的,不能以扼殺創造性為藉口不執行!」

最新數據顯示,截至目前,代碼規範Oteam已輸出C++、Java、Python等13門語言代碼規範,其中一期7門語言代碼規範及安全規範已通過開源治理體系在全公司範圍內落地。

「英雄本色」

程式設計師們通過Oteam發現了「山外有山」,這是壓力也是動力。

2020年12月29日,騰訊舉辦開源協同峰會,會上公布了各個Oteam整體進展的最新數據。晚上酒會後,時任終端雲測Oteam負責人殷柱偉在400多人的Oteam企業微信群里發了一個大紅包。

伴隨著群里的沸騰,殷柱偉寫道:「2021年我們要還一個騰訊研發的英雄本色!」他自Oteam成立時就堅信,自己的終端雲測一定可以發展為公司級的技術項目。

不過,Oteam給了殷柱偉們一條這樣追尋「英雄本色」的路徑。

2020年開源協同研討會

2018年開源協同宣布啟動時,這項騰訊的「自我革命」因其與眾不同的路徑遭受內外雙重質疑:網際網路大廠基本上靠組織驅動建設技術中台,集中人、財、物、資源做一件事,而騰訊這種從基層開放協同的路子,行得通嗎?

但三年過去,騰訊已組建和孵化了117個開源協同小組,涵蓋了計算、存儲、數據等所有網際網路技術基石,涉及了微信、QQ、騰訊雲等所有核心業務板塊。全公司內部代碼開源率達到85%,不僅給騰訊帶來巨大的效能提升和成本節約,同時通過雲不斷助力越來越多的生態夥伴。

致力於大數據領域的天穹Oteam,將各事業群的大數據最佳實踐複製到了各個場景,實現平台互通,功能復用,大幅提升了通用性能與資源利用率。

分布式資料庫的內核TXSQL Oteam在 TXSQL 8.0內核上開源協同,聯合研發數十個重大特性,性能提升30%以上,並實現騰訊資料庫內核版本的統一。

聚焦深度學習框架和加速的雲帆Oteam,曾2次刷新ImageNet(一個大型視覺資料庫,用於視覺目標識別軟體研究)訓練速度世界紀錄,致力於打造騰訊人的AI OS,助力遊戲、視覺、推薦等AI業務降本增效。

2021年雲帆Oteam生態日

在技術影響力的基礎上,一些開源協同項目開始上雲,通過騰訊雲對外輸出技術能力,與行業共享技術成果。Tencent JDK Oteam 則全面融入到公司的公有雲和專有雲產品中。

激發程式設計師這一最小技術單元的力量,就可以撬動研發效率的顯著提升和研發效果的最大化。經過這不尋常的三年,騰訊這場實驗可以說實現了「四兩撥千斤」的作用。

而技術人的理想,正在其中逐漸照進現實。

騰訊ThumbPlayer Oteam之所以被冠名Thumb,表面上看是「騰訊高性能通用媒體平台」的英文首字母縮寫,背後卻暗含著Oteam成員們對理想主義的嚮往——thumb的中文意思是大拇指,Oteam要做的不僅僅是一個播放器產品,而是要對標業界No.1的開源社區。

「希望每個成員都把加入這個Oteam和在這個Oteam做過貢獻,視為自己職業履歷中No.1的亮點。」ThumbPlayer Oteam負責人、程式設計師李大龍說道。

(專題)

關鍵字: