14歲就會(huì)編程是什么體驗(yàn)?蟬聯(lián)兩次華為軟件十大高手!
從中二少年到5G元老
姜森磊
“大家好,我叫姜森磊,1995年出生,14歲開始編程,迄今十年整。”
2020年4月20日,我通過WeLink接入了EMT會(huì)議,在“20分鐘”議題上分享自己的工作經(jīng)歷。 我是入職華為才兩年的95后,卻也是擁有十年經(jīng)驗(yàn)的老程序員 ,這一切都要從十年前我的中二時(shí)期說起……
1 中二少年的“編碼童子功”
由于老爸酷愛游戲,早在90年代我們家就配備了電腦,01年左右家里就已經(jīng)聯(lián)網(wǎng),電腦對(duì)我來說并不陌生。平時(shí)經(jīng)??蠢习滞嬗螒颍踔僚紶栠€能跟他一起上場(chǎng)廝殺,唯一的遺憾是玩電腦的時(shí)間總是太少,家人頂多只讓我做完作業(yè)后玩半小時(shí)、一小時(shí)。
在我上初二時(shí),有一天我媽貌似不經(jīng)意地跟我說,“附近中學(xué)開了計(jì)算機(jī)編程的興趣班,我同事家的小孩去學(xué)了,你要不要也去試試?” 搞計(jì)算機(jī)=玩電腦,當(dāng)然有興趣了。 至于編程,那不就是黑客做的事情?我腦子里飛快閃動(dòng)著《黑客帝國(guó)》電影的畫面,超級(jí)高大上!當(dāng)年才14歲的我,內(nèi)心的中二之魂熊熊燃燒,仿佛已經(jīng)看到自己學(xué)習(xí)編程后成為黑客的厲害模樣,于是不假思索地就同意了這個(gè)提議,開始學(xué)習(xí)編程。
等我去了才發(fā)現(xiàn),編程并沒有我想象的那么花里胡哨,剛開始甚至很枯燥,老師一上來就介紹那些亂七八糟的語(yǔ)句,還全是英文,也聽不懂……但我這個(gè)人好勝心比較強(qiáng),計(jì)算機(jī)語(yǔ)句看不懂沒關(guān)系,先按老師教的東西囫圇吞棗、死記硬背。就這樣咬牙堅(jiān)持了幾個(gè)月,突然有一天覺得自己茅塞頓開了,原來用計(jì)算機(jī)的思維去考慮程序是這個(gè)樣子的!從那以后,我就好像打通了任督二脈,反過頭來看以前學(xué)的那些東西,也都融會(huì)貫通了起來,我終于體會(huì)到了編程的樂趣和成就感。
初中、高中,我一路在上海市和全國(guó)信息學(xué)奧賽中過關(guān)斬將,最后還憑借全國(guó)信息學(xué)奧賽一等獎(jiǎng)保送到了同濟(jì)大學(xué) ,后來畢業(yè)后進(jìn)華為也是因?yàn)樽约旱?a href="/tags/軟件" target="_blank">軟件能力。這些年,編程帶給我的不僅僅是擺了兩柜子的榮譽(yù)證書、獎(jiǎng)牌和獎(jiǎng)杯,更重要的是從小學(xué)習(xí)編程讓我打下了比較扎實(shí)的童子功,掌握了的算法就好像印在腦海里一樣,雖然后來大學(xué)時(shí)期接觸編程少一些,但是工作以后重新再撿起來也非???。
2 萌新的成長(zhǎng)之路
2017年大學(xué)畢業(yè)后,我入職了華為上海研究所。剛進(jìn)部門時(shí),我是做LTE的,兩個(gè)月后趕上5G發(fā)展,大規(guī)模要人,PL問我要不要跟他一起去5G團(tuán)隊(duì)。溝通時(shí),他說5G大家都是從頭開始,對(duì)新員工來說有更大的發(fā)揮空間。我那時(shí)剛過來,新員工培訓(xùn)才結(jié)束沒多久,完全是懵懂的,但我想著反正新員工到哪里都是學(xué),于是就跟著PL一起到了5G團(tuán)隊(duì)。
剛開始?jí)毫€蠻大的,因?yàn)槲抑安皇菍慍++的,一開始語(yǔ)言上不是很熟悉,要學(xué)習(xí);而且業(yè)務(wù)上也有一定的入門門檻的,剛開始有時(shí)候別人說的我都不能理解是什么,還得下來再去查。為了盡快跟上業(yè)務(wù)節(jié)奏, 我曾在無數(shù)個(gè)夜晚,抱著全英文的3GPP協(xié)議埋頭鉆研 ,這讓我感覺好像又回到了剛學(xué)習(xí)編程的時(shí)候,看不懂的就先記下來,白天再厚著臉皮去問周圍的同事。好在我們團(tuán)隊(duì)互相學(xué)習(xí)交流的氛圍特別濃郁,大家不論級(jí)別高低、是否忙碌,都愿意抽出時(shí)間共同探討。我也繼承了這樣的團(tuán)隊(duì)傳統(tǒng),現(xiàn)在如果有新員工來找我討論問題,我也一定會(huì)抽空跟他們聊。
就這樣,我在5G團(tuán)隊(duì)收獲了寶貴的和新產(chǎn)品共同成長(zhǎng)的機(jī)會(huì)。入職沒多久,我就參與了5G的首版本商用交付韓國(guó)的項(xiàng)目,先從本模塊業(yè)務(wù)開始學(xué)習(xí),之后還和幾個(gè)新員工一起參與了底層框架的整改替換,這樣以點(diǎn)帶面,對(duì)整個(gè)用戶系統(tǒng)都有了比較全面的了解。
5G打通first call的那個(gè)晚上,雖然我們不在現(xiàn)場(chǎng),而是在后方研發(fā)支撐,但心情同樣很激動(dòng)。我還記得聯(lián)調(diào)成功后,前方同事在群里發(fā)消息,說打通了first call,還發(fā)了切蛋糕慶祝的照片。群里一下就沸騰了,各種慶祝的表情包和文字不停往外冒,根本來不及看具體內(nèi)容。我自己當(dāng)時(shí)又興奮又恍惚, 有種夢(mèng)想突然實(shí)現(xiàn)的不真實(shí)感——我參與的代碼能夠直接打通電話了! 見證一個(gè)產(chǎn)品從0到1,和它從1到2甚至1到100,那種心情絕對(duì)是不可比擬的。我很慶幸自己作為入職沒多久的新人就見證了5G首次商用上線這個(gè)難忘的歷史時(shí)刻。
經(jīng)歷了這次練兵,我對(duì)自己的能力更有信心,部門也逐漸將更多的重?fù)?dān)交給我。我有機(jī)會(huì)主導(dǎo)了幾個(gè)性能和內(nèi)存的優(yōu)化。之后我還參與了5G首個(gè)可信版本,交付HCSEC……兩年的時(shí)間,我伴隨著部門一起成長(zhǎng),逐漸從“萌新”成長(zhǎng)為獨(dú)當(dāng)一面的“5G元老”。
3 我的小目標(biāo):代碼寫到80歲
剛轉(zhuǎn)正不久,我接到一個(gè)比較有挑戰(zhàn)性的任務(wù),從零搭建一個(gè)新模塊。
2019年,在外部與內(nèi)部的壓力之下,我也收到了很大的挑戰(zhàn),在同等硬件資源下,能不能用更牛的軟件技術(shù),實(shí)現(xiàn)產(chǎn)品性能和規(guī)格達(dá)到更高水平?總結(jié)老代碼后,我找出了一些優(yōu)化點(diǎn),比如數(shù)據(jù)查詢框架比較繁瑣,只支持單點(diǎn)查找。重新設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和查詢方法,采用AVL樹優(yōu)化,效果顯著,將內(nèi)存優(yōu)化了2/3,查找性能提升50多倍;我發(fā)現(xiàn)第一版代碼用了非常多的鎖來解決多線程問題,讓性能大打折扣。
2019年對(duì)我來說,還有個(gè)關(guān)鍵詞——“可信”。這一年,是公司的可信變革之年,而我有幸從一開始就深入?yún)⑴c其中。
5G產(chǎn)品作為可信的先鋒隊(duì),經(jīng)常會(huì)有內(nèi)外部的領(lǐng)導(dǎo)、專家來看我們的運(yùn)作情況。為了將我們所做的展示給業(yè)界看,2019年9月我們搭建了可信過程演示,向大家展示在可信變革的前后,我們的開發(fā)作業(yè)流、設(shè)計(jì)作業(yè)流、測(cè)試作業(yè)流都發(fā)生了什么變化。
我們通常從一個(gè)真實(shí)的業(yè)務(wù)小例子入手,來展示我們?cè)谶@個(gè)場(chǎng)景下是怎么干的——在開發(fā)時(shí),我們?cè)趺幢WC代碼的可信?我們的上庫(kù)機(jī)制、靜態(tài)檢查機(jī)制,如何保證可信?我們?cè)诔霭鼤r(shí),是怎么保證它的二進(jìn)制比對(duì)的?Committer機(jī)制,端到端可追溯是如何保護(hù)我們的代碼的?通過整個(gè)流程直白地展示一行代碼的前世今生。
目前,UML的創(chuàng)始人 Ivar Jacobson教授、CSEC的Brian教授等人,都看過我們的可信演示,也跟我們交流了從設(shè)計(jì)到編碼到版本集成出包等方面他們的看法和建議。此類的交流,讓我們受益不少。特別是Jacobson教授,80歲還這么有激情和學(xué)習(xí)的動(dòng)力, 我希望自己也能像他一樣保持旺盛的求知欲和熱情,不斷學(xué)習(xí),編碼到80歲,寫出更多的好代碼。
-END-
推薦閱讀
【01】2020年7月編程語(yǔ)言排行榜 【02】Linux系統(tǒng)編程-信號(hào)入門 【03】C語(yǔ)言/C++基本語(yǔ)句編程風(fēng)格 【04】為什么很多人編程喜歡用typedef?如何避免濫用? 【05】C語(yǔ)言編程:九種必會(huì)查找算法(附完整代碼)
免責(zé)聲明:整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!