華為22年,49歲,他一直在編碼![]() “阮師傅,你準備啥時(shí)候退休?”這是很多同事見(jiàn)面常問(wèn)我的一句話(huà)。也有不少人問(wèn)我,為什么能在一個(gè)領(lǐng)域的研發(fā)堅持這么久?我每次都回答:“路由器我還沒(méi)干夠呢!薄 可能有人會(huì )覺(jué)得這個(gè)回答很官方,但對我來(lái)說(shuō),是真心話(huà)! 在路由器領(lǐng)域,可能有很多人都認識我,因為我在這塊工作20多年了,而且一直在研發(fā)一線(xiàn)。與其說(shuō)是適應或者習慣了華為的研發(fā)文化,倒不如說(shuō),這些年華為路由器業(yè)務(wù)從最初的一無(wú)所有到如今高速發(fā)展,我們經(jīng)歷了一個(gè)又一個(gè)軟件技術(shù)的挑戰。這些挑戰,讓我可以發(fā)揮自己的特長(cháng)和優(yōu)勢,更引領(lǐng)我一路向前,不斷發(fā)現不足,縮小差距,我更期望有生之年能盡綿薄之力和公司同仁一起推動(dòng)華為路由器軟件做到世界第一。 在研發(fā)的大熔爐中找到初心 1996年,在某國企學(xué)校當了兩年老師的我,正在苦惱學(xué)校所學(xué)的專(zhuān)業(yè)知識得不到發(fā)揮,一次周末和在華為北研所的同學(xué)聚會(huì ),同學(xué)說(shuō),華為的技術(shù)氛圍好,給的薪酬也不錯,可以考慮看看。當時(shí)華為還不是很有名氣,北研所也僅成立一年,只有二三十號人,IP(數據通信)業(yè)務(wù)剛起步,但路由器技術(shù)在業(yè)界相當于現在的AI,機會(huì )難得,讓一心想做技術(shù)的我心動(dòng)了。面試過(guò)后北研領(lǐng)導問(wèn)我能不能來(lái)上班,說(shuō)轉正后月薪XXXX元,當時(shí)我的月工資不過(guò)幾百塊,中關(guān)村平均月工資也不過(guò)一千五。無(wú)論是技術(shù)前景還是薪酬對一個(gè)單身漢都充滿(mǎn)了吸引力,我果斷辭職加入,從此一頭扎根路由器領(lǐng)域。 當時(shí)北研所不到10%的人懂數據通信,我對網(wǎng)絡(luò )協(xié)議和網(wǎng)絡(luò )架構也是一知半解,只記得讀書(shū)時(shí)網(wǎng)絡(luò )課程講過(guò)網(wǎng)絡(luò )分7層,就在一張白紙中開(kāi)始了數據通信設備的開(kāi)發(fā)。導師給我拿來(lái)三本IP“紅寶書(shū)”和業(yè)界的一些代碼比如協(xié)議棧,一個(gè)月的時(shí)間,我70%的時(shí)間都在通讀代碼,如饑似渴地學(xué)習,其余時(shí)間就是和同事們切磋。那會(huì )兩人一張桌子,像高中時(shí)的課桌,遇到不懂的,抬頭就能相互交流。我發(fā)現周?chē)耐乱埠臀蚁嗨,年輕、有活力、開(kāi)放、好學(xué),每天除了看紅寶書(shū),就是編碼,常;厝r(shí)已是半夜,兩個(gè)禮拜就能看完四五萬(wàn)行代碼,總算是入門(mén)了。 在研發(fā)這個(gè)大熔爐中,當時(shí)的我們每個(gè)人都投入了百分百的熱情。在你追我趕的氛圍中,除了個(gè)人技術(shù)能力快速提升之外,年輕的我思想受華為文化熏陶也變得開(kāi)闊和成熟。至今記得有一篇你是搬石頭還是蓋教堂的文章,講述人與人之間的區別,也許只是干活時(shí)內心是否有一個(gè)“教堂”。當我工作中遇到挫折時(shí),我就經(jīng)常問(wèn)自己當初的目標是什么,為什么要做這項工作,不會(huì )因為暫時(shí)的挫折感到迷茫。 很多錯誤源于經(jīng)驗不足 從1996年到2002年近7年間,我做過(guò)小路由器,做過(guò)VRP協(xié)議平臺,下一代IP預研等,如果說(shuō)預研是讓我眼界更開(kāi)闊,小路由器還只是“小打小鬧”的話(huà),從2003年開(kāi)始參與高端路由器平臺開(kāi)發(fā),就是扛著(zhù)槍打大仗了! 路由器軟件開(kāi)發(fā)分為兩部分,一部分是通用的VRP協(xié)議平臺,一部分是要落地到產(chǎn)品中,通過(guò)轉發(fā)平臺實(shí)現通用軟件和具體的硬件產(chǎn)品適配。2003年,8090路由器第一個(gè)版本開(kāi)始開(kāi)發(fā),這是公司第一個(gè)10G平臺。從3月開(kāi)始,四五十人集中在深圳封閉研發(fā),我和北研團隊六七人負責其中的“轉發(fā)”業(yè)務(wù)。當時(shí)“轉發(fā)”業(yè)務(wù)是用微碼做的,由于對微碼開(kāi)發(fā)方式的不熟悉,加上通用平臺和微碼也沒(méi)有對接過(guò),新的業(yè)務(wù)場(chǎng)景、新的開(kāi)發(fā)模式,不同于以往的編程語(yǔ)言,經(jīng)驗的不足,讓我在進(jìn)度上嚴重拖延了第一個(gè)版本的過(guò)點(diǎn)時(shí)間。測試每天發(fā)現各種各樣的問(wèn)題,比如端口反壓被阻塞了,轉發(fā)線(xiàn)程死鎖了,轉發(fā)性能不達標等等。我只好不;厮莘桨,重新討論設計落地新的方案,部分模塊重寫(xiě)代碼,花兩三周才徹底解決。從3月到9月,幾乎每天泡在實(shí)驗室到凌晨,總算和大隊伍合力做出了第一個(gè)版本! 我自認為,雖然版本做出來(lái)了,但過(guò)程十分煎熬,這是我在華為經(jīng)歷的第一次比較大的挫折。當我對大型路由器軟件熟悉之后,回看犯的錯,都是很低級的錯誤,經(jīng)驗不足所致。也是走過(guò)彎路才更讓人自省,代碼可以重寫(xiě),但方案如果錯了,影響的將是版本的方向。若不能及時(shí)修正,只會(huì )花費更多的時(shí)間和精力在錯誤的路上越走越遠。 創(chuàng )新機會(huì )無(wú)處不在關(guān)鍵是你愿不愿意看到 一直以來(lái),我都知道自己是一個(gè)情商和智商都非常普通的人,放在人群中平平無(wú)奇,對于技術(shù),也沒(méi)什么訣竅,就是“勤能補拙,熟能生巧”,不斷地學(xué)習,不斷地積累,不斷地在挫折中總結分析,重新找到正確的方向,并沿著(zhù)這一方向前進(jìn)。 從2003到2013的十年間,我經(jīng)歷過(guò)落地十幾個(gè)關(guān)鍵新特性、幫助CPU性能優(yōu)化從以往的100%降至5%的成功實(shí)踐,也品嘗過(guò)架構設計沒(méi)有被選用的沮喪,還曾遠離過(guò)開(kāi)發(fā)去做技術(shù)規劃,從系統、協(xié)議、產(chǎn)品轉發(fā)到預研,除了硬件外,基本涉獵了路由器的所有模塊。這期間也有機會(huì )成為管理者,但我認為只要能為公司做貢獻,管理和技術(shù)都一樣,相反我更喜歡技術(shù)想法能實(shí)現,開(kāi)發(fā)落地到產(chǎn)品中的那份踏實(shí)感! 可能也是因為這份“傻氣”,2013年,V8平臺準備落地路由器的BRAS產(chǎn)品,主管對我說(shuō),路由器還有技術(shù)要開(kāi)發(fā),問(wèn)我愿不愿意從預研回開(kāi)發(fā)。路由器軟件平臺凝聚了我司IP領(lǐng)域頂級專(zhuān)家們的經(jīng)驗和智慧,是路由器產(chǎn)品核心競爭力的關(guān)鍵武器,經(jīng)過(guò)多年的耕耘,業(yè)務(wù)已經(jīng)非常成熟,但由于其規模大和復雜度高,在產(chǎn)品的應用中,也面臨著(zhù)開(kāi)發(fā)效率和開(kāi)發(fā)成本的挑戰。這感覺(jué)就像是“大象在跳舞”,我自認為可發(fā)揮空間并不大,但心中對開(kāi)發(fā)的執念還是占了上風(fēng),于是我選擇了回來(lái)! 后來(lái)的事情也證明,我當初的想法是錯的。只要你愿意,在成熟領(lǐng)域依然能發(fā)現很多創(chuàng )新機會(huì )點(diǎn)。 做優(yōu)化改進(jìn)的藍軍 2015年9月,產(chǎn)品線(xiàn)DU組建了系統支撐組,我作為3名研發(fā)場(chǎng)景師之一,專(zhuān)門(mén)負責效率提升和架構優(yōu)化工作! 我們發(fā)現,FES(轉發(fā)適配)模塊成為版本商用的一個(gè)高風(fēng)險點(diǎn)。由于海量的數據洪流沖擊,一旦鏈路出現中斷,網(wǎng)絡(luò )拓撲發(fā)生變化,FES模塊沒(méi)有辦法做到快速切換轉發(fā)路徑,導致網(wǎng)絡(luò )業(yè)務(wù)和協(xié)議中斷。這個(gè)問(wèn)題不解決,產(chǎn)品將無(wú)法商用。但FES是一個(gè)公共模塊,有七八年歷史了,隨著(zhù)業(yè)務(wù)的不斷增加,該模塊功能越來(lái)越復雜,任何一個(gè)小改動(dòng)都要小心翼翼,稍有不慎就有可能引起已有的業(yè)務(wù)不可用。因此,當我們提出架構整改動(dòng)議之初,就因為風(fēng)險巨大被否了。部門(mén)還有一個(gè)思路,保留現有的功能不變,重新開(kāi)發(fā)一個(gè)類(lèi)似的模塊形成旁路。這樣的“另辟蹊徑”,意味著(zhù)以后要維護兩套方案,維護成本和難度都成倍增加! 基于開(kāi)發(fā)成本和效率考慮,我建議在原有架構基礎上進(jìn)行優(yōu)化和改進(jìn)。很多人認為風(fēng)險太高,但我認為只有痛下決心優(yōu)化,才能“一勞永逸”最高效地解決這個(gè)問(wèn)題。討論來(lái)來(lái)回回,誰(shuí)也說(shuō)服不了誰(shuí)。后來(lái),DU領(lǐng)導拍板,成立紅藍軍設計小組,并行開(kāi)展兩種方案的設計,最后PK! 作為藍軍,我們提出了部分重構的方案,既不是推倒重來(lái),也不是一個(gè)個(gè)小點(diǎn)改進(jìn)。在相同的時(shí)間內,我們團隊將原來(lái)5萬(wàn)行的代碼重構了一萬(wàn)行,新增一萬(wàn)行代碼,在性能、易用性、可服務(wù)性和可擴展性方面更勝一籌,最終方案被采納。版本上網(wǎng)后,也經(jīng)受住了現網(wǎng)的考驗,沒(méi)有出現嚴重問(wèn)題。 做能診會(huì )治的首席程序員 有人曾問(wèn)我成為專(zhuān)家有什么經(jīng)驗,我說(shuō),“關(guān)注產(chǎn)品全局,敢于擔當”。除了現網(wǎng)痛點(diǎn),作為一名研發(fā)老兵,我常常關(guān)注軟件工程技術(shù)和產(chǎn)品工程管理,站在開(kāi)發(fā)角度,對軟件架構和軟件工程效率進(jìn)行診斷和改進(jìn),主動(dòng)伸出手去,提前識別問(wèn)題,幫助大家提升研發(fā)效率! 我們的版本是C語(yǔ)言,內存訪(fǎng)問(wèn)異常和內存泄漏問(wèn)題讓人非常頭疼。內存問(wèn)題在測試階段很難被發(fā)現,而一旦漏到現網(wǎng),就會(huì )導致嚴重的后果。為了解決這個(gè)問(wèn)題,我們引入并適配了ASAN工具,將這個(gè)工具集成到持續構建工程,通過(guò)部門(mén)的網(wǎng)絡(luò )質(zhì)量監控系統“鷹眼”實(shí)現自動(dòng)告警,讓內存問(wèn)題在開(kāi)發(fā)階段、測試階段無(wú)處遁形,解決了上百個(gè)內存問(wèn)題,形成了堅固的內存問(wèn)題防護網(wǎng),使得路由器開(kāi)發(fā)效率得到很大提升! 路由器軟件平臺架構是封閉的,我提出,“能分能合”的系統才是一個(gè)好系統,打破路由器軟件單一的完整大包開(kāi)發(fā)調測方法,開(kāi)發(fā)了增量構建和增量替換等特性,這樣避免每次調試都需要構建和加載整個(gè)大包(這個(gè)過(guò)程非常耗時(shí)),為開(kāi)發(fā)人員調試時(shí)節省了大量的等待時(shí)間,提升了調試效率。我們設計和開(kāi)發(fā)了“轉發(fā)適配”獨立仿真平臺,使得轉發(fā)適配子系統代碼能夠獨立仿真和調試;規劃了路由器V8平臺的服務(wù)演進(jìn)架構,將V8系統拆分成若干個(gè)大的服務(wù),使得各個(gè)服務(wù)能夠實(shí)現“架構獨立”:獨立開(kāi)發(fā),獨立部署和運行,獨立驗證…… 改進(jìn)無(wú)止境。坦白講,我們在路由器軟件技術(shù)領(lǐng)域,離世界第一還有不小的技術(shù)差距,業(yè)務(wù)也相對保守和慢一些,我們還有很大的成長(cháng)空間,F在的我,每天想的就是怎么去發(fā)現機會(huì )點(diǎn),讓V8的架構改進(jìn)一點(diǎn)點(diǎn),再改進(jìn)一點(diǎn)點(diǎn),有更多更快的技術(shù)創(chuàng )新冒出來(lái)! 一個(gè)人的力量也許有限,路由器領(lǐng)域的機會(huì )點(diǎn)也可能相對少一些,但我始終認為,不管做什么,不管在哪個(gè)領(lǐng)域,都會(huì )有技術(shù)挑戰和創(chuàng )新機會(huì ),只要你愿意,只要堅持鉆研,就能發(fā)現新的機會(huì ),也許就能創(chuàng )造新的未來(lái)。 在常言道,不忘初心,方得始終。但初心雖易,始終難守。華為22年,我今年已經(jīng)49歲了。有人曾說(shuō),編碼是吃青春飯的,但我從不這么認為。從最初抱著(zhù)一心想做技術(shù)的想法一路走到今天,曾有過(guò)無(wú)數疲憊的時(shí)刻,也曾感到迷;炭,但知天命的年紀,我更清楚自己所長(cháng)所需,能有幸經(jīng)歷路由器技術(shù)最好的時(shí)代和最艱難的歲月,能在自己擅長(cháng)和喜愛(ài)的領(lǐng)域長(cháng)期發(fā)揮光和熱,還能有機會(huì )繼續在這一領(lǐng)域探索、鉆研,能為家人提供一份尚可的穩定生活,我要感謝公司提供了一流的研發(fā)平臺讓我不斷提升技術(shù)能力,感謝很多領(lǐng)導和同事對我的寬容,幫助我成長(cháng),還要感謝家人對我的支持和理解。 人生就是不斷學(xué)習的過(guò)程,技術(shù)路上,編碼這件小事,我仍在努力。 |