2018
年開源協(xié)同宣布啟動時,這項騰訊的“自我革命”因其與眾不同的路徑遭受內外雙重質疑:互聯(lián)網(wǎng)大廠基本上靠組織驅動建設技術中臺,集中人、財、物、資源做一件事,而騰訊這種從基層開放協(xié)同的路子,行得通嗎?
但
三年過去,騰訊已組建和孵化了117個開源協(xié)同小組,涵蓋了計算、存儲、數(shù)據(jù)等所有互聯(lián)網(wǎng)技術基石,涉及了微信、QQ、騰訊云等所有核心業(yè)務板塊。
全公司內部代碼開源率達到85%,不僅給騰
訊帶來巨大的效能提升和成本節(jié)約,同時通過云不斷助力越來越多的生態(tài)伙伴。
文 / 陳其亮
程序員楊曉峰開始體會到一種前所未有的“快感”。
他所在的團隊向Open JDK國際開源社區(qū)主分支貢獻的代碼名列國內第一,受到了后者的點名致謝,騰訊也成為迄今為止這個社區(qū)唯一一家因顯著貢獻被連續(xù)點名致謝的中國公司。
兩位團隊成員還獲得了社區(qū)reviewer權限。迄今為止,在國內公司中有這種權限的程序員,不超過三人。
作為Java(一種計算機編程語言)開發(fā)工具JDK(Java開發(fā)工具包)的專家,楊曉峰的日常工作是普通人不太看得懂的基礎軟件研發(fā)。
2019年秋,楊曉峰沖著“協(xié)同”二字入職騰訊,牽頭JDK開源協(xié)同小組。簡單說,開源協(xié)同就是騰訊內部源代碼全部開放,不同團隊協(xié)同開發(fā),共建騰訊基礎技術平臺。
如今,他牽頭的團隊自主研發(fā)的JDK產品,不僅被公司內所有事業(yè)群使用,幫助多項大規(guī)模業(yè)務實現(xiàn)最高50%的性能提升,還被開源社區(qū)高度認可。
更讓他開心的是,JDK基礎軟件的研發(fā)已直接打通到面對客戶的產品端??蛻粼鲩L量,特別是主動尋求合作的客戶增長超出了產品端預期,甚至一向要求嚴格的金融大客戶,近期也開始在相關產品底層全面使用他們團隊自主開發(fā)的JDK產品。
而這一切從0到1的變化,發(fā)生在短短三年時間內。
“被看見”
2018年之前,很少有人意識到,騰訊內部的技術問題已經積累到了刻不容緩的程度。
熟悉騰訊的人知道,騰訊在產品上曾推崇“賽馬文化”,服務各產品的技術團隊也在自己“造輪子”、“建工廠”,最終導致內部“煙囪”林立,雖然單個產品技術團隊閉環(huán)效率高,但整體難以形成技術合力。
2018年,騰訊運營管理部在一次梳理中發(fā)現(xiàn),公司內部重復的技術團隊竟有150多個。在聽到這個情況時,就連最高決策層總裁辦都震驚了。以至于騰訊高級執(zhí)行副總裁、技術工程事業(yè)群總裁盧山發(fā)出感慨:“有一天,我們離開騰訊,回頭看我們留下的東西,都是扎了一堆煙囪的殘垣斷壁,我們內心會不會痛???”
騰訊決心要蹚出一條自己的路。
2018年9月30日,騰訊宣布新一輪戰(zhàn)略升級和組織變革,同時發(fā)起開源協(xié)同,通過整合全公司技術能力,打破技術壁壘,消除重復建設。
和當時業(yè)界流行的技術中臺不同,騰訊的開源協(xié)同是全公司內部源代碼全部開放,上層設立技術委員會進行指導,底層推動各技術團隊成立虛擬組織Oteam(開源協(xié)同小組),協(xié)同開發(fā)公司級的技術產品——這讓在騰訊工作的程序員們一下子有了被全公司“看見”的機會。
田甜是騰訊互動娛樂事業(yè)群(簡稱IEG)一名做服務網(wǎng)格技術的程序員。當業(yè)務量增大時,需要更龐大的服務網(wǎng)格來避免資源重復浪費,為了做好服務網(wǎng)格,田甜試著發(fā)起了服務網(wǎng)格Oteam,找到公司里的“同行”一起協(xié)同。
“突然發(fā)現(xiàn),同一個領域有好多人和自己在做相同的事,這種感覺很神奇。”田甜說。
在田甜看來,程序員大多個性低調,悶頭做事,以前服務好本部門業(yè)務就行,現(xiàn)在有了Oteam,程序員也要把目光投向外界。2019年10月,在服務網(wǎng)格Oteam每半年一次的線下沙龍上,田甜發(fā)現(xiàn),另外一個事業(yè)群的同行最關注服務網(wǎng)格的安全性和穩(wěn)定性,而不是IEG業(yè)務場景下最關心的技術架構?!斑@樣的交流,拓寬了我們做服務網(wǎng)格技術的眼界和維度?!?/p>
隨著公司內技術同行間不斷的“網(wǎng)友見面”,技術交流的氛圍逐漸熱烈起來。Oteam的企業(yè)微信群里,時不時有人拋出技術問題,很快就有其它團隊的程序員來解答。不過,技術交流比以前多了,程序員們也不一定會彼此服氣,畢竟騰訊程序員基數(shù)龐大,有不同看法,甚至流派之爭再正常不過。
縱觀tRPC微服務框架(騰訊內部的一個開發(fā)框架)Oteam的協(xié)同過程,也是一個“吵”的過程。吵歸吵,可以“關門、送飯”,“吵”個痛快,但事后必須有結果,出共識,“按手印”。爭吵的獲勝不是目的,對技術負責,增強全面認知、形成共識的才是目的。騰訊程序員們“不再孤獨”,也看到了山外有山,人外有人。
tPRC Oteam 生態(tài)日
田甜對此深有感慨:“我們以前的思維還是局限的,用技術解決業(yè)務需求后就覺得自己很牛,但有Oteam后,和其它團隊交流時就會發(fā)現(xiàn),他們可能有更好的解決方案,通過交流和協(xié)作,不管是技術格局還是實操思路,都會上升一個level?!?/p>
統(tǒng)一代碼規(guī)范,就是程序員們的共識發(fā)展到一定程度后,自然而然達到的。
207行共享表格
2019年11月,騰訊正式成立代碼規(guī)范Oteam,統(tǒng)一輸出各大編程語言的代碼規(guī)范,號召全公司的程序員都按照規(guī)范來寫代碼。
要知道,讓程序員改變自己的代碼風格是非常難的事情。
一位在代碼規(guī)范領域工作多年的資深專家剛入職騰訊不久就發(fā)出感嘆:“騰訊在搞什么?一年對這么多門語言做規(guī)范化,簡直不可能!”
程序員們寫代碼都會有自己的習慣,這仿佛是他們默默留下的印記,或者說是個性標簽。坊間不乏關于代碼“大神”寫作習慣的各種傳說。
但如果不同團隊都把貼著各種“標簽”的代碼拿出來協(xié)同開發(fā),問題就來了:寫代碼的習慣不統(tǒng)一會帶來程序編碼混亂,極大增加多人協(xié)作的成本。而騰訊曾延續(xù)多年的產品“賽馬”機制,催生出許多業(yè)務相似的技術團隊,這些團隊恰恰各有各的代碼習慣。
換句話說,即使騰訊內部源代碼全部開放了,不同團隊之間協(xié)同開發(fā)的效率還是會受到影響。
怎么讓這些個性不同、代碼習慣各異的程序員做出改變,確立代碼規(guī)范,就變成了一件很迫切的事。
為了激發(fā)程序員們的動力,開源治理打榜賽應運而生。由代碼規(guī)范Oteam和騰訊負責開源協(xié)同落地的技術工程事業(yè)群(簡稱TEG)運營管理部共同主辦,鼓勵各大事業(yè)群的技術團隊來打榜,較量代碼規(guī)范度,比拼開源治理分數(shù)。
姚穗斌是代碼規(guī)范Oteam的創(chuàng)始成員之一,一度為程序員不愿意配合代碼規(guī)范而煩惱。
沒想到的是,技術團隊們的參賽熱情完全超出了主辦方的預期。這次他驚訝地看到,比賽公告剛貼出來沒多久,就有60多個部門主動來打榜。
甚至有些參賽技術團隊在企業(yè)微信中編寫了“機器人”程序,每天提醒打榜賽的開源治理分數(shù)。
“一開始很多團隊的代碼得分不及格,打榜賽進行幾個月后很多就躥到了90多分,最后竟然有10多個部門都拿到100分,我們只好數(shù)到小數(shù)點后兩位才評出冠軍?!币λ氡笳f。
2020年開源治理榜打榜賽頒獎現(xiàn)場
打榜賽結束時,騰訊各事業(yè)群的開源治理平均分為90.29分。而此前,在代碼規(guī)范Oteam對全公司代碼規(guī)范度的摸底調查統(tǒng)計中,各事業(yè)群的平均分僅41.05分,不及格。
姚穗斌稱,開源治理打榜賽徹底激發(fā)了程序員們參與代碼規(guī)范的熱情,“大家的勝負欲被點燃了”,一些原本不太關心代碼規(guī)范的技術團隊,在打榜賽中居然拿到了超高分數(shù)。
主辦方騰訊運營管理部總監(jiān)徐海麗介紹,開源治理打榜賽是開源協(xié)同“新代碼文化”諸多工作的一個典型,它的價值在于協(xié)助Oteam在公司內外打造技術影響力,幫程序員們找到更多存在感和榮譽感。
“2019年底開始,代碼規(guī)范、開源治理逐漸成為我們推進開源協(xié)同落地的關鍵詞,這說明我們的重點已經不再是追求Oteam數(shù)量,而是開源協(xié)同的質量?!毙旌{愓f,“開源協(xié)同走進深水區(qū)了?!?/p>
當初聽到代碼規(guī)范專家的感嘆時,姚穗斌雖然內心咯噔一下,但還是覺得騰訊是可以做到。最終,事實證明他的判斷是對的。
“Oteam給了我們更大的空間。”騰訊代碼規(guī)范Oteam C 接口人、IEG增長平臺部增長中心系統(tǒng)開發(fā)組陳峰表示。
有了Oteam后,他主導的代碼規(guī)范Oteam C 團隊就具備調動全公司資源的能力,進一步提升了產品能力,這樣的成就感最終反過來反哺參與人,形成正向循環(huán)。
在騰訊代碼規(guī)范Oteam最近一次成員招募中,許多參與者寫出了近千字的申請說明,活躍度大大超出了Oteam評審委員的意料。
“原以為大家參與只是隨便填一填,沒想到熱情這么高。”評審委員姚穗斌說。
參加招募的成員數(shù)量越來越多,騰訊文檔的共享表格很快更新到207“樓”。有志于推動公司代碼規(guī)范的程序員們可以自主報名,只要按照共享表格內的要求逐一填入內容,通過評審后就能成為Oteam的一員。
一位參加申請的程序員在長文建議中的第一句話就寫道:“必須讓大家理解,好的程序員都是嚴格遵循代碼規(guī)范的,不能以扼殺創(chuàng)造性為借口不執(zhí)行!”
最新數(shù)據(jù)顯示,截至目前,代碼規(guī)范Oteam已輸出C 、Java、Python等13門語言代碼規(guī)范,其中一期7門語言代碼規(guī)范及安全規(guī)范已通過開源治理體系在全公司范圍內落地。
“英雄本色”
程序員們通過Oteam發(fā)現(xiàn)了“山外有山”,這是壓力也是動力。
2020年12月29日,騰訊舉辦開源協(xié)同峰會,會上公布了各個Oteam整體進展的最新數(shù)據(jù)。晚上酒會后,時任終端云測Oteam負責人殷柱偉在400多人的Oteam企業(yè)微信群里發(fā)了一個大紅包。
伴隨著群里的沸騰,殷柱偉寫道:“2021年我們要還一個騰訊研發(fā)的英雄本色!”他自Oteam成立時就堅信,自己的終端云測一定可以發(fā)展為公司級的技術項目。
不過,Oteam給了殷柱偉們一條這樣追尋“英雄本色”的路徑。
2020年開源協(xié)同研討會
2018年開源協(xié)同宣布啟動時,這項騰訊的“自我革命”因其與眾不同的路徑遭受內外雙重質疑:互聯(lián)網(wǎng)大廠基本上靠組織驅動建設技術中臺,集中人、財、物、資源做一件事,而騰訊這種從基層開放協(xié)同的路子,行得通嗎?
但三年過去,騰訊已組建和孵化了117個開源協(xié)同小組,涵蓋了計算、存儲、數(shù)據(jù)等所有互聯(lián)網(wǎng)技術基石,涉及了微信、QQ、騰訊云等所有核心業(yè)務板塊。全公司內部代碼開源率達到85%,不僅給騰訊帶來巨大的效能提升和成本節(jié)約,同時通過云不斷助力越來越多的生態(tài)伙伴。
致力于大數(shù)據(jù)領域的天穹Oteam,將各事業(yè)群的大數(shù)據(jù)最佳實踐復制到了各個場景,實現(xiàn)平臺互通,功能復用,大幅提升了通用性能與資源利用率。
分布式數(shù)據(jù)庫的內核TXSQL Oteam在 TXSQL 8.0內核上開源協(xié)同,聯(lián)合研發(fā)數(shù)十個重大特性,性能提升30%以上,并實現(xiàn)騰訊數(shù)據(jù)庫內核版本的統(tǒng)一。
聚焦深度學習框架和加速的云帆Oteam,曾2次刷新ImageNet(一個大型視覺數(shù)據(jù)庫,用于視覺目標識別軟件研究)訓練速度世界紀錄,致力于打造騰訊人的AI OS,助力游戲、視覺、推薦等AI業(yè)務降本增效。
2021年云帆Oteam生態(tài)日
在技術影響力的基礎上,一些開源協(xié)同項目開始上云,通過騰訊云對外輸出技術能力,與行業(yè)共享技術成果。Tencent JDK Oteam 則全面融入到公司的公有云和專有云產品中。
激發(fā)程序員這一最小技術單元的力量,就可以撬動研發(fā)效率的顯著提升和研發(fā)效果的最大化。經過這不尋常的三年,騰訊這場實驗可以說實現(xiàn)了“四兩撥千斤”的作用。
而技術人的理想,正在其中逐漸照進現(xiàn)實。
騰訊ThumbPlayer Oteam之所以被冠名Thumb,表面上看是“騰訊高性能通用媒體平臺”的英文首字母縮寫,背后卻暗含著Oteam成員們對理想主義的向往——thumb的中文意思是大拇指,Oteam要做的不僅僅是一個播放器產品,而是要對標業(yè)界No.1的開源社區(qū)。
“希望每個成員都把加入這個Oteam和在這個Oteam做過貢獻,視為自己職業(yè)履歷中No.1的亮點?!盩humbPlayer Oteam負責人、程序員李大龍說道。
(專題)
版權聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 舉報,一經查實,本站將立刻刪除。