• 作者:心聲社區

• 來源:心聲社區

• 如需轉載請通過後臺向公衆號申請

20萬行代碼,搞得定不?

“你肩上扛了20萬行代碼,搞得定不?”這是我剛進華爲時聽到最多的一句話。

2008年9月新員工培訓完,我沒有回西安,而是直接飛到上海承接產品。剛進上海項目組,就受到了熱情的接待。

“這次西安來了多少人承接我們模塊?”上海X模塊的PL問我。

我愣愣地指了指自己:“就我一個”。

“什麼,就你一個?我們組有20萬行代碼,趕緊反饋再加人。 ”

其實,剛出校園的我對20萬行代碼並沒有太多概念,但是看到他的反應,頓感不妙。我趕緊找到在其他項目組承接產品的西安PL,卻得到了安慰,“沒有想象的那麼嚴重,你那塊業務我也知道一些,我給你分析看。X模塊代碼邏輯比較簡單,Y模塊基本不出問題可以暫時不學,這樣……這樣……你只要集中把這幾個模塊搞定就行了。 ”

加人是不可能的,於是我的培養計劃也相應有了變化。入職前兩個月,我每天的任務就是讀代碼,下班前半小時給全組講解。而同期其他新員工在入職一個月時已經開始處理問題單和開發需求了。第三個月中期答辯時,其他人的膠片上呈現的都是“處理了XX個問題單,開發了XK代碼的需求”,而我的膠片都是模塊的代碼功能介紹。

學習期結束後,20萬行代碼的威力很快得以體現。爲了讓我快速熟悉業務,項目組把活最雜的接口人工作安排給了我,負責所有的網上問題、實驗室問題定位以及幾個高風險模塊的問題單修改。很快,我就淹沒在電話和郵件的海洋裏,焦頭爛額。

“問題定位沒?郵件都發好幾個小時了,環境不保留了。”

“這個問題我分析應該是你們模塊的問題,快看下,下班前沒結論我就轉單了。”

“怎麼回事,你名下問題單怎麼不見少,版本都快過不了點了。”

……

是的,我成了各個組的“焦點”,同時也開始變得焦慮,雖然每天凌晨纔回公寓,依然無法阻止上竄的DI值(問題密度),這下該如何是好?

很快,導師和PL注意到了我的窘境,伸出了援助之手。看現象,找原因,和我一起分析現狀,一件一件分析手頭的事務,傳授四象限工作心得,把眼前的事務按照四象限法則排好優先級,再一一擊破,慢慢堅持一段時間後,我終於開始變得從容起來。

就是爲了晚上能睡安穩覺

轉正之後,我很快就遇到了第一個網上問題,並且經歷了一次深刻bug修復過程。依稀記得那是週日,凌晨兩點,電話響起時我感覺像是剛躺下就被叫醒。

“我是在一線支撐的測試經理,新版本升級報錯了,需要馬上解決!”

“好的,什麼情況?先嚐試做下這幾步恢復操作,再收集下日誌,我馬上去公司。”一聽是現網的問題,本來一臉迷糊的我瞬間清醒,這可容不得半點馬虎。快速穿好衣服,打車直奔公司。

還好,問題很快定位,之前現網的服務器出現過網卡故障,客戶把服務器拆封,兩塊網卡拔出來擦拭金手指,插進去的時候交換了插槽位置,導致網卡的PCI總線編號發生變化。爲了防止客戶私裝其他網卡,引起兼容性問題,新版本代碼做了強制校驗,但對於這種更換網卡位置的場景,卻沒有考慮到。

“這誰設計的功能,畫蛇添足!老版本都沒問題,這是致命bug,我要求必須回溯!”雖然功能不是我開發的,但聽到電話另一端的措辭嚴厲,也感覺像犯了大錯,不敢吱聲。這次的經歷,讓我再後續很長一段時間,一接到網上問題電話就非常緊張。

網上問題引起的風波還沒過去,修改這個網上問題的任務就落到我頭上,沒有想到的是這次修改也不順利。代碼很快就修改完了,但是驗證時遇到一個問題。由於老型號服務器存量並不多並且前幾年已停止發貨,三種老型號服務器,實驗室只有一臺了,其他兩種類型的服務器沒有辦法驗證,怎麼辦?

“代碼判斷的就是這幾個信息,你可以通過模擬打樁,之前我都是這麼測的”,在老員工的指導下,我很快完成了打樁測試,但心裏總有點不踏實。

結果在版本內部轉測試前的預驗證環節,兄弟項目組的同事找到了我,他們的一臺服務器裝上新版本後運行不起來。我心裏“咯噔”一下,不會是那兩種沒有驗證的服務器吧?果然,經過實機分析,發現我用的打樁模擬方法和真實的硬件還是有差異。

對於這次的修改引入,PL特地過來輔導:“這次主要是你經驗不足,不要太放在心上。不過我們也要好好想想,遇到困難,是不是盡全力了。”再次修改時,還是有一種類型的服務器沒找到,感覺真的沒辦法了。

一大早我只好再求助導師和PL,幾小時後,PL過來對我說:“我已經給周邊幾個部門打過電話了,有幾臺服務器可能是我們要找的,我帶你去確認下。

又經過幾個小時,我們終於在一個實驗室的角落找到了一臺落滿灰塵的服務器。拍拍灰塵,一看,好傢伙,這不正是我們要找的麼!找電源,接線,上電,安裝版本……看到版本軟件順利啓動,心裏懸了很久的大石頭總算落地了。

“好,我們再把交換網卡順序的場景覆蓋下。”然而折騰了半天,網卡還是沒拔下來。原來這個型號的服務器硬件設計上也做了防呆,卸網卡需要專用的小工具。

半個小時後,網卡終於拔了下來,PL手上不小心被劃了口子,鮮血直流,他卻蠻不在意:“爲了晚上能睡個安穩覺,這點小傷,值了!”

後來每當看到“打造質量口碑,構築質量文化的教堂”時,我想說我們的質量追求真的很簡單,就是爲了晚上能睡安穩覺。

沒有定位不了的問題

“Hello,sir……”下班剛出公司,我就接到了一個老外的電話。豎起耳朵再加上熟練的“sorry”“pardon”,才終於搞清楚了,原來是之前在espace上交流過的印度一線小夥,馬上要去客戶機房操作了,還有兩個操作步驟不太清楚。

從來沒跟老外通過電話的我,一時語塞,面紅耳赤,嘴巴幾次想張但就是張不開,到嘴邊的單詞,就是說不出來。

對方還在時不時的“hello? hello?”以爲我不在線。哎,平時都是由GTAC的兄弟幫忙溝通,這下沒人幫忙了,這可如何是好……不管了,管他語法怎樣,突然,一句“yes”蹦出了口,慢慢地,一個單詞、一個單詞地蹦出,雖然磕磕巴巴,但總算可以用英語交流了。

我在電話了說了一通,反覆確認對方瞭解了我的意思後,才放下電話。一看手心緊張得都是汗。好在總算交流完了,頓感身心舒暢了許多。

就這樣,入職兩三年後,一切逐漸步入正軌,不管是遇到什麼難題,我似乎都可以從容應對了。

不過,現網出現的兩三起未定位的Linux系統掛死問題,一直是大夥兒籠罩在頭頂的烏雲。由於使用的Linux是幾年前外購的版本,一直未升級,維測功能比較弱。而我們作爲業務軟件團隊,也不具備定位這種疑難問題的經驗,求助公司的Linux團隊後,仍無法定位,只能以老舊Linux系統問題進行了答覆。

沒想到,不久,在一個大T局點又出現了這個問題。沒辦法,我們只能再次求助OS、硬件相關人員,快速組建了攻關團隊。由於缺少日誌,大家從軟件硬件各種角度進行大膽猜測,然後在實驗室進行故障注入測試,持續了一個月後,實驗室連問題都沒有復現,更談不上定位,所有人都很沮喪。好在新版本軟件已經合入了掛死時自動復位的自愈功能,問題影響可以將到最低。一線也接受了自愈方案。第一次的集中攻關就這樣心有不甘地以失敗告終。

出來混,遲早要還的。問題攻關永遠不會缺席,只是來得晚而已。大半年後,中國區的一起Linux掛死問題拉開第二次攻關序幕。由於是晚上出的問題,一線還沒來得及處理,我們請求一線保留環境,立刻協調了公司Linux和硬件的專家馬上出差到現場定位。

“這次抓到第一現場,總算能定位了。”我心裏想。可惜從一線並沒有傳回好消息,只是進一步確認,確實是Linux系統掛死了,原因還是不知道。一時,又陷入僵局。

但是攻關不能因此停滯。我們再次靜下心來,繼續分析日誌,看代碼,分析這幾個問題找共同點,很快發現這幾個問題涉及的設備都是在運行了快一年左右時出現了問題。莫非與單板的運行時長有關係?累積效應的故障模式?大家很快調整了攻關方向。不久,就找到一篇關於Linux內核內存泄露的案例,經過計算,在我們的單板上正好在一年左右Linux系統一些關鍵內存就會耗盡,出現系統掛死。真是踏破鐵鞋無覓處,得來全不費工夫。

後續我參與甚至主導過多起耗時長久、艱苦卓絕的疑難問題攻關,Linux系統掛死攻關在這些問題中不是影響最大和最緊急,但卻讓我受益最多。經歷過這次攻關後,面對任何疑難問題,我心中都有一個信念:在我司,從來沒有搞不定的事,也從來沒有定位不了的問題!

2014年到2017年,由於工作調整,我轉戰產品開發,暫時離開了網上問題處理。2018年我又重新迴歸。

又是一次半夜緊急電話,我急匆匆趕到GTAC的攻關室處理緊急問題,一進門,又見到以前的幾位老夥計:“看見你來我就放心了”。這句話一時間又讓我渾身充滿了力量!

本文來自《華爲人》,轉載請註明出處。

相關文章