我是一個技術(shù)情結(jié)很深的人,,無論是曾經(jīng)的小白,,還是現(xiàn)在大家口中的高級專家,,唯一不變的就是對編碼的一股鉆研勁兒,。華為7年,我經(jīng)歷了從研發(fā)小兵到PL,,再到轉(zhuǎn)身加入專為業(yè)務(wù)部門解決疑難雜癥的無線網(wǎng)絡(luò)西研分部飛虎隊的過程,。這個過程好像涅槃,痛并快樂著,,正是因為一個個令人“捉急”的難題和“把自己逼到墻角”的歷練,,才激起了自己不斷探索、詢問,、攻克的熱情,。越史無前例,我就越想去把它搞定,。
有時候需要有“把自己逼到墻角”的勇氣
身為一個軟件開發(fā)工程師,,技術(shù)能力決定著你能夠走多遠(yuǎn),也決定著你在團(tuán)隊中是否能夠被大家認(rèn)可,。入職以來,,無論所在的組織是什么,無論身處的職級是什么,,我的工作都沒有離開編碼與攻關(guān),,即使在做了PL以后,也同樣不敢有一絲的懈怠,。
2012年,,在某關(guān)鍵特性交付期間,由于交付量大,,為了提前暴露風(fēng)險,,我們的開發(fā)計劃必須整體先于周邊團(tuán)隊,當(dāng)代碼開發(fā)完成后,,卻面臨著周邊團(tuán)隊無法支撐我們同步驗證的問題,。作為特性PL兼技術(shù)開發(fā)骨干的自己,始終將版本質(zhì)量作為整個團(tuán)隊的生命線,,眼看完成的代碼越來越多,、質(zhì)量風(fēng)險隨之增大,,絕不能容忍自己袖手旁觀,。如何才能讓大家在沒有周邊支撐的情況下獨(dú)立,、快速且高質(zhì)量完成交付?我提出按協(xié)議編寫一個簡化的流程,,模擬我們與周邊交互的過程進(jìn)行驗證,。那時,部分同事雖然認(rèn)可這個方案的價值,,但覺得工作量較大,,還不如等到周邊團(tuán)隊開發(fā)完成后再一起驗證。
但我并沒有向困難低下頭,,深入思考過實現(xiàn)方案后,,我覺得自己可以在四天內(nèi)搞定這件事,于是集中火力開始動手,。四天后,,終于功夫不負(fù)有心人,一個可以部署在個人電腦上,、不依賴周邊團(tuán)隊即可進(jìn)行特性功能驗證的軟件測試框架順利完成,,構(gòu)建調(diào)試版本的時間由原來的10多分鐘提升到后來的秒級,定位問題手段也由原來必須在真實系統(tǒng)環(huán)境上提取日志,,拓展到利用軟件調(diào)試器進(jìn)行可視化跟蹤,。這一改變讓兄弟姐妹們興奮不已,最終,,我們將質(zhì)量風(fēng)險提前釋放,,在后面和周邊團(tuán)隊的配合驗證中,該特性的啟動流程控制部分零問題交付,,得到PO及周邊團(tuán)隊的稱贊,,而這套快速構(gòu)建自驗證工程的方法也被推廣到其他多個項目組。
指標(biāo)修改歷來被認(rèn)為只能通過冷補(bǔ)?。愃朴谕暾能浖?,需要復(fù)位整個系統(tǒng)才能生效)實現(xiàn),在某次項目交付過程中,,客戶期望我們能夠通過熱補(bǔ)?。ㄖ粚π薷牡牟糠种谱鬈浖恍枰獜?fù)位整個系統(tǒng)就能生效)以最小代價對多個指標(biāo)進(jìn)行局部修正,,滿足他們的定制化需求,。面對著這一史無前例的棘手問題,項目組陷入了兩難的窘迫境地,。然而面對壓力,,我們只能硬著頭皮往前走。作為補(bǔ)丁組版本PL,在關(guān)鍵時刻一定要發(fā)揮出自己的軟件能力,。于是,,我快速投入到原有機(jī)制的分析中,從系統(tǒng)的初始化到每個業(yè)務(wù)的應(yīng)用接口,,確保每一行代碼都正確理解和消化,,壓力之下終出成效:最終我向大家提出一套可用于熱補(bǔ)丁并且與之前指標(biāo)統(tǒng)計完美兼容的方案,繼而快速完成框架代碼的編寫與驗證,。然而框架的修改只是前期的一部分,,因為相關(guān)指標(biāo)涉及大量的業(yè)務(wù)流程,排查和分析的工作量更是超出了預(yù)期,,出現(xiàn)任何一處漏修改,,都會導(dǎo)致整個版本功虧一簣。
于是我快速調(diào)整了團(tuán)隊陣型,,幾個業(yè)務(wù)專家同時投入分析,,補(bǔ)丁組所有人員全力保障,確保萬無一失,。從零開始,,從無到有:最終這個熱補(bǔ)丁成功交付,也成為了我所經(jīng)歷版本中最大的一個熱補(bǔ)丁,。我至今依然還清晰地記得,,交付的那天整個小組的兄弟們一起加班到凌晨一點(diǎn),興奮與感動難以言喻,,而通過這件事也讓補(bǔ)丁組的組員們對我刮目相看:“原來這個新來的組長不是吃干飯的,。”
技術(shù)道路上,,必須不停地通過實戰(zhàn)歷練自己,、提升自己,甚至有時候需要有“把自己逼到墻角”的勇氣,,也只有這樣,,才能真正地保持技術(shù)敏感性與團(tuán)隊認(rèn)可度。
“變不可能為可能”并非天方夜譚
在飛虎隊輾轉(zhuǎn)了幾年,,每年都會支撐不同的項目組,,基本上感覺高度和難度都在自己跳一跳就能夠著的范圍內(nèi),唯獨(dú)去年支撐基帶項目組的經(jīng)歷讓我感到稍許的無助,。在交付LTE基帶多核芯片負(fù)載均衡調(diào)度框架時,,我發(fā)現(xiàn)業(yè)務(wù)層面冒出來很多大家難以定位的性能問題,版本快過點(diǎn)的時候,,每天晚上都會收到項目組的問題定位通報,,好幾個性能難題定位周期都持續(xù)了一個多月,。我就在想,為什么基帶的芯片不能使用高層軟件的開源性能分析工具,?問了一圈,,基帶領(lǐng)域從來沒有這樣的工具,因為操作系統(tǒng),、內(nèi)存和性能等原因,這些大規(guī)模分析軟件也無法直接應(yīng)用,。
就在自己感到少許失落的某個瞬間,,腦海中突然閃現(xiàn)出一個靈感:能不能自己做一個簡化版的工具?說干就干,,啟動私人攻關(guān)模式,。吃飯時、睡覺前,,甚至瘋狂到在睡夢中,,我都在思考自己的實現(xiàn)方案:如何讓每一個函數(shù)自動調(diào)用自己的代碼在關(guān)鍵節(jié)點(diǎn)進(jìn)行標(biāo)記,實現(xiàn)性能統(tǒng)計,?如何用最快的查找算法實現(xiàn)函數(shù)身份的有效識別,,將當(dāng)前系統(tǒng)的性能開銷降到最低?如何能用最節(jié)省內(nèi)存資源的算法實現(xiàn)物理資源的有效使用……雖然這些問題一度成為困擾自己的座座大山,,但通過研究編譯器手冊,、利用現(xiàn)有數(shù)據(jù)對各種算法進(jìn)行仿真、分析操作系統(tǒng)內(nèi)核代碼,、研讀操作系統(tǒng)提供給用戶的相關(guān)接口特性手冊等等,,關(guān)鍵的技術(shù)點(diǎn)一個一個被攻克。
我的第一個版本不到一周時間就落地了,,就在大家還在為降1w cycle點(diǎn)絞盡腦汁的時候,,就在大家還在為版本的兩個節(jié)點(diǎn),成百上千處修改排查到底哪一行代碼引入問題的時候,,一天時間內(nèi),,3-4w cycle的優(yōu)化點(diǎn)就被我的性能分析框架找到了,同時還找到了一個耗時幾周的性能懸案的根因之所在,。為了分析項目組的性能問題,,我分別做了分析芯片級別的、任務(wù)級別(去除切換時延)的,,最終到函數(shù)級別(帶任務(wù)切換數(shù)據(jù))的性能分析框架,,而不同的框架都能解決性能領(lǐng)域的某一類問題。進(jìn)一步地,,我還考慮了將性能檢測集成到CI中進(jìn)行定期監(jiān)控,,讓性能分析不在成為基帶的噩夢,。曾經(jīng),大家都認(rèn)為很難甚至不可能的事,,在我的“死纏爛打”,、不斷研究之下終于變成了可能。
業(yè)務(wù)主管說,,我做了超越自己職責(zé)的努力,,但是對我來說,這應(yīng)該就是我的本分工作,,雖然只是短期支撐,,但是作為飛虎隊的隊員,就應(yīng)該在思想上保持艱苦奮斗,,在行為上敢想,、敢說、敢干,,把自己定位得再高一些,。在面對項目組痛點(diǎn)時,只要我們多一份創(chuàng)新性的思考,,多一份執(zhí)行力的落地,,那么“變不可能為可能”就并非是一件天方夜譚的事情。
▲無線網(wǎng)絡(luò)西研飛虎隊合照
我承認(rèn)自己是個技術(shù)控,,從過去,,到現(xiàn)在,自己唯一不缺的就是自信和笑容,。我喜歡和兄弟們并肩作戰(zhàn),、互相分享,也喜歡去挖掘每個人身上的閃光點(diǎn),。我希望能用自己的激情以及對技術(shù)的熱愛,,感染身邊更多的人;也希望以積極向上的狀態(tài)發(fā)揮自己的光和熱,,帶給組織哪怕是一點(diǎn)點(diǎn)的改變,。技術(shù)之路,唯有做深,、做精,、做專,方能體會到它的奧妙與不凡,。我夫人說,,希望我能成為院士那樣的技術(shù)領(lǐng)軍人物,院士夢我是實現(xiàn)不了了,,但是技術(shù)專家夢,,我跳一跳還是可以實現(xiàn)的,,給自己加油,給夢想加油,!