他95年出生,却拥有10年编程经验
來源 :華為人
從中二少年到5G元老
姜森磊
“大家好,我叫姜森磊,1995年出生,14歲開始編程,迄今十年整。”
2020年4月20日,我通過WeLink接入了EMT會議,在“20分鐘”議題上分享自己的工作經歷。我是入職華為才兩年的95后,卻也是擁有十年經驗的老程序員,這一切都要從十年前我的中二時期說起……
1
中二少年的“編碼童子功”
由于老爸酷愛游戲,早在90年代我們家就配備了電腦,01年左右家里就已經聯網,電腦對我來說并不陌生。平時經??蠢习滞嬗螒?#xff0c;甚至偶爾還能跟他一起上場廝殺,唯一的遺憾是玩電腦的時間總是太少,家人頂多只讓我做完作業后玩半小時、一小時。
在我上初二時,有一天我媽貌似不經意地跟我說,“附近中學開了計算機編程的興趣班,我同事家的小孩去學了,你要不要也去試試?”搞計算機=玩電腦,當然有興趣了。至于編程,那不就是黑客做的事情?我腦子里飛快閃動著《黑客帝國》電影的畫面,超級高大上!當年才14歲的我,內心的中二之魂熊熊燃燒,仿佛已經看到自己學習編程后成為黑客的厲害模樣,于是不假思索地就同意了這個提議,開始學習編程。
等我去了才發現,編程并沒有我想象的那么花里胡哨,剛開始甚至很枯燥,老師一上來就介紹那些亂七八糟的語句,還全是英文,也聽不懂……但我這個人好勝心比較強,計算機語句看不懂沒關系,先按老師教的東西囫圇吞棗、死記硬背。就這樣咬牙堅持了幾個月,突然有一天覺得自己茅塞頓開了,原來用計算機的思維去考慮程序是這個樣子的!從那以后,我就好像打通了任督二脈,反過頭來看以前學的那些東西,也都融會貫通了起來,我終于體會到了編程的樂趣和成就感。
初中、高中,我一路在上海市和全國信息學奧賽中過關斬將,最后還憑借全國信息學奧賽一等獎保送到了同濟大學,后來畢業后進華為也是因為自己的軟件能力。這些年,編程帶給我的不僅僅是擺了兩柜子的榮譽證書、獎牌和獎杯,更重要的是從小學習編程讓我打下了比較扎實的童子功,掌握了的算法就好像印在腦海里一樣,雖然后來大學時期接觸編程少一些,但是工作以后重新再撿起來也非??臁?/p>
2
萌新的成長之路
2017年大學畢業后,我入職了華為上海研究所。剛進部門時,我是做LTE的,兩個月后趕上5G發展,大規模要人,PL問我要不要跟他一起去5G團隊。溝通時,他說5G大家都是從頭開始,對新員工來說有更大的發揮空間。我那時剛過來,新員工培訓才結束沒多久,完全是懵懂的,但我想著反正新員工到哪里都是學,于是就跟著PL一起到了5G團隊。
剛開始壓力還蠻大的,因為我之前不是寫C++的,一開始語言上不是很熟悉,要學習;而且業務上也有一定的入門門檻的,剛開始有時候別人說的我都不能理解是什么,還得下來再去查。為了盡快跟上業務節奏,我曾在無數個夜晚,抱著全英文的3GPP協議埋頭鉆研,這讓我感覺好像又回到了剛學習編程的時候,看不懂的就先記下來,白天再厚著臉皮去問周圍的同事。好在我們團隊互相學習交流的氛圍特別濃郁,大家不論級別高低、是否忙碌,都愿意抽出時間共同探討。我也繼承了這樣的團隊傳統,現在如果有新員工來找我討論問題,我也一定會抽空跟他們聊。
就這樣,我在5G團隊收獲了寶貴的和新產品共同成長的機會。入職沒多久,我就參與了5G的首版本商用交付韓國的項目,先從本模塊業務開始學習,之后還和幾個新員工一起參與了底層框架的整改替換,這樣以點帶面,對整個用戶系統都有了比較全面的了解。
5G打通first call的那個晚上,雖然我們不在現場,而是在后方研發支撐,但心情同樣很激動。我還記得聯調成功后,前方同事在群里發消息,說打通了first call,還發了切蛋糕慶祝的照片。群里一下就沸騰了,各種慶祝的表情包和文字不停往外冒,根本來不及看具體內容。我自己當時又興奮又恍惚,有種夢想突然實現的不真實感——我參與的代碼能夠直接打通電話了!見證一個產品從0到1,和它從1到2甚至1到100,那種心情絕對是不可比擬的。我很慶幸自己作為入職沒多久的新人就見證了5G首次商用上線這個難忘的歷史時刻。
經歷了這次練兵,我對自己的能力更有信心,部門也逐漸將更多的重擔交給我。我有機會主導了幾個性能和內存的優化。之后我還參與了5G首個可信版本,交付HCSEC……兩年的時間,我伴隨著部門一起成長,逐漸從“萌新”成長為獨當一面的“5G元老”。
3
我的小目標:代碼寫到80歲
剛轉正不久,我接到一個比較有挑戰性的任務,從零搭建一個新模塊。
這個模塊是用來做自組織網絡的,能夠幫助客戶自動添加鄰區,不用手動配置。這個任務要求我既要盡快交付新模塊,又要吸取老模塊的教訓,改善之前遇到的問題。
我總結了老模塊的歷史遺留問題,比如簡單而重復的數據注冊功能,居然用了6000行左右的代碼,我利用C++的模板大幅優化重復代碼,在新模塊中僅用2000行左右的代碼就移植了原有的功能。
再比如,基于整個模塊的功能,我發現反寫數據庫應該是一個常態的功能,以后會有大量的功能往里面塞,也會產生大量的重復勞作和重復代碼,很容易出問題。我利用優先隊列設計了反寫數據庫框架,便于后續擴展。
我在兩周內交付了8000多行的代碼,測試部署一次性通過,模塊也穩定運行。我因此在2018年第一次獲得“5GPDU十大軟件高手”。
2019年,在外部與內部的壓力之下,我也收到了很大的挑戰,在同等硬件資源下,能不能用更牛的軟件技術,實現產品性能和規格達到更高水平?總結老代碼后,我找出了一些優化點,比如數據查詢框架比較繁瑣,只支持單點查找。重新設計數據結構和查詢方法,采用AVL樹優化,效果顯著,將內存優化了2/3,查找性能提升50多倍;我發現第一版代碼用了非常多的鎖來解決多線程問題,讓性能大打折扣。
為了追求更佳效果,我拉通了幾個模塊,從架構角度出發重新設計業務交互并用無鎖隊列等優化性能,交互性能提升80%,更便于之后的擴展。因此,我也在2019年第二次獲得“5GPDU十大軟件高手”。
2019年對我來說,還有個關鍵詞——“可信”。這一年,是公司的可信變革之年,而我有幸從一開始就深入參與其中。
5G產品作為可信的先鋒隊,經常會有內外部的領導、專家來看我們的運作情況。為了將我們所做的展示給業界看,2019年9月我們搭建了可信過程演示,向大家展示在可信變革的前后,我們的開發作業流、設計作業流、測試作業流都發生了什么變化。
我們通常從一個真實的業務小例子入手,來展示我們在這個場景下是怎么干的——在開發時,我們怎么保證代碼的可信?我們的上庫機制、靜態檢查機制,如何保證可信?我們在出包時,是怎么保證它的二進制比對的?Committer機制,端到端可追溯是如何保護我們的代碼的?通過整個流程直白地展示一行代碼的前世今生。
目前,UML的創始人 Ivar Jacobson教授、CSEC的Brian教授等人,都看過我們的可信演示,也跟我們交流了從設計到編碼到版本集成出包等方面他們的看法和建議。此類的交流,讓我們受益不少。特別是Jacobson教授,80歲還這么有激情和學習的動力,我希望自己也能像他一樣保持旺盛的求知欲和熱情,不斷學習,編碼到80歲,寫出更多的好代碼。
-END-
猜你喜歡為什么8位數據范圍是-128到127,而不是-127到128? 21歲到華為,一焊就是28年!北大十年,博士畢業后,他去了華為。最 后?若覺得文章不錯,轉發分享,也是我們繼續更新的動力。5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~長按識別圖中二維碼關注總結
以上是生活随笔為你收集整理的他95年出生,却拥有10年编程经验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪:2023 款汉 EV 创世版 &
- 下一篇: 干货总结:SPI总线详细要点