2007年高考報(bào)志愿布隔,當(dāng)別人還在糾結(jié)和猶豫時霎匈,我已經(jīng)無比堅(jiān)定地在志愿書填下了“通信工程”四個字。當(dāng)時智能手機(jī)還沒有普及乱投,我撥弄著老式的諾基亞咽笼,總是好奇地想:電話是怎么打通的?那一端的人為什么能聽到我的聲音篡腌?中間經(jīng)歷了什么褐荷?被滿腦子的問號所驅(qū)使,我迫不及待地想鉆進(jìn)通信的世界嘹悼。
如今叛甫,我已經(jīng)成為通信行業(yè)的一員,可以像電影里的黑客高手一樣敲代碼杨伙,甚至還頂著“軟件總工程師”這樣bling bling的光環(huán)其监,但那些環(huán)繞在我腦海的問號并沒有減少:如何解決傳輸負(fù)載均衡問題?如何能讓2G和3G限匣、4G共享頻譜抖苦?如何在大海里撈針,迅速定位現(xiàn)網(wǎng)問題?
問題越發(fā)棘手锌历、刁鉆贮庞,我只能逼著自己站得更高,鉆得更深究西,探索未知窗慎。
每天8小時,半年寫完一年的代碼量
2014年我應(yīng)屆畢業(yè)卤材,一入職就參與到控制器軟件平臺相關(guān)特性的開發(fā)中遮斥。控制器是無線網(wǎng)絡(luò)GSM和UMTS制式的“總控臺”扇丛,軟件平臺則是控制器的“腰”术吗,承擔(dān)著穩(wěn)定客戶網(wǎng)絡(luò)的關(guān)鍵作用。
當(dāng)時公司的控制器軟件平臺還在上海帆精,我們13個研發(fā)新員工被派去承接業(yè)務(wù)较屿,每人獨(dú)立看護(hù)一個模塊。當(dāng)一些人還在重復(fù)“看文檔-改資料問題單-修改簡單問題”的無限循環(huán)時实幕,我主動向版本經(jīng)理毛遂自薦:版本特性的開發(fā)吝镣,能不能交給我試試?也許是沒料到新來的員工就這么“虎”昆庇,版本PL愣了一下末贾,對上我無畏的眼神,竟然同意了這個“無理”的請求整吆。
我主要負(fù)責(zé)控制器IP網(wǎng)絡(luò)傳輸路徑的負(fù)載均衡模塊拱撵,這是控制器話務(wù)接入時調(diào)用最為頻繁的功能點(diǎn)”眚“負(fù)載均衡”只有四個字拴测,卻異常復(fù)雜「撸控制器連接了眾多網(wǎng)元集索,每條路徑都有負(fù)載的瓶頸,過載就會丟包汇跨,導(dǎo)致語音失真务荆、掉話,網(wǎng)速過慢等現(xiàn)象穷遂,引發(fā)運(yùn)營商的投訴函匕。
怎樣能保證每一條鏈路的負(fù)載平均,不至于過載蚪黑,同時讓所有的鏈路達(dá)到最大使用效率盅惜?這個看似難以兩全的難題中剩,關(guān)鍵點(diǎn)就在均衡算法上。比如抒寂,裝水的桶有大有小结啼,容量各不同。按照以前的算法蓬推,100L的桶裝的是50L的水妆棒,50L的桶也裝50L的水,10L的桶也裝50L的水沸伏,這樣就造成一些水桶還沒有發(fā)揮最大潛能,而與此同時动分,大量水桶的水溢出來毅糟,出現(xiàn)過載的問題。只有通過改進(jìn)算法澜公,讓100L的桶有裝80L的水姆另,50L的桶裝40L的水,10L的桶裝8L的水坟乾,每個容器的承載率都是80%迹辐,保持均衡配阵,才能實(shí)現(xiàn)魚和熊掌兼得的目標(biāo)某宪。
剛開始,導(dǎo)師在一旁指導(dǎo)拒担,一切進(jìn)展順利殷费,我更是信心滿滿印荔。可不久導(dǎo)師休假了详羡,留下我一個人仍律。一下沒了可以依靠的臂膀,我只能在忐忑中開始奮戰(zhàn)实柠。我和SE水泉、測試、維護(hù)一起組成“鐵三角”窒盐,一起分析我們的目標(biāo)場景是什么草则,判斷現(xiàn)有算法是否能夠滿足,根據(jù)這些目標(biāo)場景對齊方案登钥。最終畔师,特性開發(fā)最終滿足了流量負(fù)載均衡商用要求,開啟特性的現(xiàn)網(wǎng)局點(diǎn)再也沒有聽到負(fù)載不均的投訴牧牢。
在這個階段看锉,我每天12小時有8個小時和代碼打交道姿锭,不是在寫代碼、看代碼伯铣,就是在驗(yàn)證代碼呻此,半年寫的代碼量趕上了別人一年的量。當(dāng)然腔寡,光有數(shù)量是沒用的焚鲜,質(zhì)量過硬才值得驕傲。代碼寫完放前,都要上庫去持續(xù)集成忿磅,任意一個代碼環(huán)節(jié)出了問題,都會導(dǎo)致持續(xù)集成失敗凭语,出現(xiàn)掉話葱她、斷網(wǎng)等嚴(yán)重后果,所以我總是對代碼保持著敬畏之心似扔。有些開發(fā)人員可能會吐槽自己是碼農(nóng)吨些,可如果心中有教堂,我們就不是碼農(nóng)炒辉,每一行代碼都會轉(zhuǎn)化為最有價值的存在豪墅。
讓兩條小河流入同一片土地
隨著代碼技藝的提升,我迎接的挑戰(zhàn)難度提升了N次方黔寇,一個人Hold住全場的機(jī)會越來越多偶器。
頻譜是通信運(yùn)營商賴以生存的“土地”,也是最重要的財(cái)富啡氢,特別是陽光好状囱、灌溉便利、土壤肥沃的土地更是稀缺資源倘是。隨著MBB移動互聯(lián)網(wǎng)時代的到來亭枷,“2G用戶如何平滑退網(wǎng)”、“如何最大化GU黃金頻譜的頻譜效率”成了全球諸多運(yùn)營商要面臨的問題搀崭。2016年叨粘,無線“冒協(xié)議之大不韙”,提出了GU@5M解決方案瘤睹,設(shè)想諸如900M這樣的黃金沃土上升敲,共用5MHz頻譜資源,既種2G的高粱轰传,也種3G的小麥驴党。
作為控制器軟件平臺,我們的任務(wù)是打通整個語音報(bào)文合并的通路获茬,換言之港庄,就是要讓兩條小河一同流入種了高粱和大麥的農(nóng)田倔既,讓農(nóng)作物越長越好。
當(dāng)時只有我一個人負(fù)責(zé)平臺方案的設(shè)計(jì)鹏氧,可現(xiàn)實(shí)情況是渤涌,我連語音通路怎么打通都不知道,更不用說把兩條通路匯合起來把还,完全是一頭霧水实蓬。但我這人一向是正向思維,想想吊履,把一個大象裝進(jìn)冰箱總共分幾步安皱?第一步,把冰箱打開艇炎,第二步练俐,把大象塞進(jìn)去,第三步冕臭,把冰箱關(guān)上。那么燕锥,要讓兩條小河流入農(nóng)田辜贵,其實(shí)也可以分解成三步:第一步,買鋪路的原材料归形,第二步托慨,制定施工圖紙,第三步施工隊(duì)進(jìn)場施工暇榴。也就是首先考慮分配語音通路所需要用到的傳輸資源厚棵,其次,通過制定資源分配算法,實(shí)現(xiàn)資源均衡利用蔼紧,最終將資源應(yīng)用到語音通路架設(shè)中婆硬,實(shí)現(xiàn)合并語音流的傳輸。
為了確保解決方案能夠走通奸例,我們需要在一個由手機(jī)彬犯、基站、機(jī)房組成的模擬系統(tǒng)中驗(yàn)證方案查吊。還記得那是任務(wù)截止日前一天晚上11點(diǎn)多谐区,在成都軟件大廈的實(shí)驗(yàn)室里,我們七八個人全神貫注地對著電腦逻卖,仔細(xì)觀察每一條信令的走向宋列,每個細(xì)胞都是緊繃的。當(dāng)看到兩路信號對接參數(shù)一個個冒出來评也,而且兩者全都保持一致時炼杖,我們已經(jīng)按捺不住激動的心情了灭返。
我立馬拿起2G的終端打電話,對方那頭的“喂喂喂”的聲音聽起來異常清晰嘹叫∑诺睿“成功了!”我們激動地叫出聲來罩扇,一直很冷靜地坐在一旁的版本經(jīng)理婆芦,突然一拍桌子跳起來:“太好了!”大家抱在一起又笑又跳喂饥,像孩子一樣開心消约。
小系統(tǒng)達(dá)成驗(yàn)證目標(biāo)后,成功支撐了后續(xù)上行COMP及GU聯(lián)合調(diào)度等關(guān)鍵技術(shù)路徑的開發(fā)员帮,最終促成了整體方案轉(zhuǎn)商用或粮。GU@5M方案最終成功商用,使2G和3G的河水流入同一片麥地成為了現(xiàn)實(shí)捞高,節(jié)省了頻譜帶寬資源氯材,保護(hù)了GSM網(wǎng)絡(luò)的投資,在全球各子網(wǎng)得到成功應(yīng)用硝岗,成為無線最具價值的解決方案之一氢哮。
任務(wù)競拍,只搶最難的活干
還沒來得及慶賀型檀,新的任務(wù)令又要發(fā)布了冗尤。2016年11月一早,我們部門20多號人擠在一個會議室里胀溺,準(zhǔn)備進(jìn)行一場競拍裂七。
“下一個任務(wù)是GL共頻譜,200人/天工作量仓坞,誰要搶背零?”
版本經(jīng)理的話音剛落,我就高高地舉起了手中的競拍牌:“我要搶扯躺!保證150人/天完成任務(wù)捉兴!”
顯然,其他人都不打算舉牌录语,我竊喜:“看來這回沒有對手了倍啥。”
版本經(jīng)理嘟囔了一句:“你這小子挺敢干的澎埠!”
自從2015年我們部門推行全棧工程師(FSD)制度以來虽缕,這樣的場景每個版本都會上演。以前蒲稳,我們要開發(fā)什么模塊氮趋,承擔(dān)多少工作量伍派,都是由版本經(jīng)理根據(jù)業(yè)務(wù)需要和每個人的能力來分配的,有很大的主觀性剩胁,不一定能調(diào)動每個人的積極性诉植,一些開發(fā)人員做的很可能不是自己真正想干的工作。而全棧工程師制度改變了這種情況昵观,變“派活干”為“搶活干”晾腔。每個版本開始前,版本經(jīng)理會把各項(xiàng)任務(wù)要求以及工作量公布出來啊犬。任何一個人都可以用競拍的方式搶活灼擂,如果同時有兩個人競爭,給自己定的目標(biāo)高的人勝出觉至。
我總是喜歡搶難度最高的特性剔应,這些任務(wù)可能會直接決定業(yè)務(wù)的KPI,有些人可能會知難而退语御,可我覺得峻贮,機(jī)遇和風(fēng)險(xiǎn)是對“雙胞胎”,不敢搶应闯,就意味著自動放棄了機(jī)會月洛。
這回,我早就盯上了GSM和LTE頻譜并發(fā)特性孽锥,可以實(shí)現(xiàn)GL頻譜動態(tài)共享,比起之前的任務(wù)细层,難度有過之而無不及惜辑。2G和4G(LTE)共用一個頻譜,最大的問題是互有干擾疫赎,這就需要2G用戶在使用時告訴4G用戶“路徑已經(jīng)被占用了”盛撑,以便其繞道而行,我的任務(wù)就是建一個接口捧搞,讓2G和4G通路之間可以互相溝通抵卫,以免相互干擾。
過程中有一個階段特別難熬胎撇。任務(wù)涉及軟件平臺和硬件平臺介粘,我了解軟件平臺的實(shí)現(xiàn),但并不知道硬件平臺的約束條件晚树。第一個方案出來后姻采,硬件部門初步評估可行后,我并沒有在硬件平臺上驗(yàn)證爵憎,以致于快到迭代的時候慨亲,才發(fā)現(xiàn)底層硬件平臺根本沒辦法支持現(xiàn)有方案婚瓜。
還有一個星期就要迭代,一切還要推倒重來刑棵?周邊各種壓力紛至沓來巴刻,要求我做質(zhì)量回溯的聲音也很多:為什么一開始方案設(shè)置時候沒有評估清楚?壓力山大蛉签,最后的一個星期胡陪,我?guī)缀醢褧r間揉碎了用,經(jīng)常熬夜熬到凌晨一兩點(diǎn)正蛙,早上六七點(diǎn)再回來接著干督弓。我這人心大,倒也沒覺得崩潰乒验,就是心里憋著一股勁:自己搶了活愚隧,哭著也要做完啊锻全!
部門給了我很多資源狂塘,好幾個專家和我并肩作戰(zhàn),幫我支招鳄厌。大家一起想還有什么方案荞胡,難度多大,代碼量多少了嚎,要花多長時間泪漂?接著在白板上寫寫畫畫,碰撞點(diǎn)子……一周后歪泳,我們拿出了第二套方案萝勤,在解決硬件平臺適配問題的同時,把代碼開發(fā)量壓縮到了最小的程度呐伞。
意外的是敌卓,這套方案緊趕慢趕,居然趕上了迭代節(jié)奏伶氢,沒有影響既定的計(jì)劃趟径,順利完成了任務(wù),也算是“越努力越幸運(yùn)”的奇跡了癣防。
24小時奪命CALL了解一下
2017年蜗巧,我這顆不安分的心又蠢蠢欲動。做了幾年開發(fā)蕾盯,能力建立起來以后惧蛹,我開始覺得自己過得太舒適了,就想折騰一下。想來想去香嗓,哪里是我們部門最難迅腔、最核心的業(yè)務(wù)?我想到了事故處理組靠娱。
這是我們部門專門處理網(wǎng)上問題的虛擬組織沧烈,無論節(jié)假日,7天24小時隨時待命像云,處理GTAC轉(zhuǎn)交過來的疑難問題锌雀,不僅要快速定位攻關(guān)緊急問題,定界恢復(fù)事故級問題迅诬,還要第一時間改進(jìn)閉環(huán)網(wǎng)上問題腋逆。
在一些人看來,我的轉(zhuǎn)身純屬自我“找虐”侈贷,但我不這么想惩歉,很多網(wǎng)上問題不只局限于軟件平臺,在這可以看到一個更大的業(yè)務(wù)鏈俏蛮,對于個人的提升而言撑蚌,是最好的練兵場。
壓力是隨時隨地搏屑,無孔不入的争涌,比如時間的壓迫。事故級的網(wǎng)上問題辣恋,從上報(bào)到恢復(fù)要求在30分鐘內(nèi)解決亮垫。但30分鐘其實(shí)是很困難的,控制器是一個很龐大的系統(tǒng)伟骨,僅僅通過有限的現(xiàn)象包警,如何知道問題出在哪個代碼?真的像大海撈針一樣底靠。即使判斷出問題,控制器也涉及和基站特铝、核心網(wǎng)的對接暑中,需要和其他網(wǎng)元一起操作驗(yàn)證,也很難保證在第一時間解決問題鲫剿。
還有24小時奪命CALL的壓力鳄逾。如果要問一個維護(hù)人,最害怕的是什么灵莲?答案十有八九是午夜鈴聲雕凹。記得有一次,凌晨3點(diǎn)多,一個電話打進(jìn)來枚抵,告知A國某版本出現(xiàn)2G單板復(fù)位的問題线欲,導(dǎo)致一個區(qū)域的人打不了電話。我上一秒鐘還是迷糊的汽摹,下一秒鐘就被驚出了一身冷汗李丰,放下電話,下意識就往公司趕逼泣。
回到公司趴泌,我立馬開始查看日志、定位問題拉庶,一遍遍排查嗜憔,到了早上7點(diǎn)多,終于揪住了問題的源頭——不是平臺的問題氏仗,而是2G業(yè)務(wù)出了問題吉捶。聯(lián)系相關(guān)業(yè)務(wù)人員修復(fù)問題,很快廓鞠,中斷的業(yè)務(wù)得到了恢復(fù)帚稠。結(jié)束攻關(guān)已經(jīng)是周末的早上了,本來想著躺下了歇歇床佳,卻發(fā)現(xiàn)自己腦子里還在不間斷地放映攻關(guān)畫面滋早,竟興奮地睡不著覺了。
這樣的場景每一天都在重復(fù)砌们,不久前杆麸,我們剛剛達(dá)成了全球網(wǎng)絡(luò)控制器網(wǎng)上平安1000天的目標(biāo),這也算是對我們越來越少的頭發(fā)和越夜越美麗的黑眼圈的最大慰藉了浪感。
即將步入30歲的我昔头,已經(jīng)不那么鋒芒畢露了,但依舊敢想影兽、敢干揭斧、不怕輸。每一年峻堰,我都會給自己設(shè)定要超越的階段目標(biāo)讹开,努力成為每個階段自己想成為的人,感受內(nèi)心一點(diǎn)點(diǎn)的成長捐名。
不管頭銜是總工程師也好旦万,是研發(fā)小兵也好,為了最初探索通信世界的樸素理想镶蹋,我都會一直趴在軟件上做精成艘、做深赏半、做透徹。我相信淆两,只要愿意為自己走出一條路断箫,世界就會為你打開一盞燈。