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