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