元老|华为后浪:这个95后是5G元老,已蝉联两次软件十大高手

从中二少年到5G元老
姜森磊
“大家好,我叫姜森磊,1995年出生, 14岁开始编程,迄今十年整。”
2020年4月20日,我通过WeLink接入了EMT会议,在“20分钟”议题上分享自己的工作经历。我是入职华为才两年的95后,却也是拥有十年经验的老程序员,这一切都要从十年前我的中二时期说起……
1
中二少年的“编码童子功”
由于老爸酷爱游戏,早在90年代我们家就配备了电脑,01年左右家里就已经联网,电脑对我来说并不陌生。 平时经常看老爸玩游戏,甚至偶尔还能跟他一起上场厮杀,唯一的遗憾是玩电脑的时间总是太少,家人顶多只让我做完作业后玩半小时、一小时。
在我上初二时,有一天我妈貌似不经意地跟我说,“附近中学开了计算机编程的兴趣班,我同事家的小孩去学了,你要不要也去试试?”搞计算机=玩电脑,当然有兴趣了。至于编程,那不就是黑客做的事情?我脑子里飞快闪动着《黑客帝国》电影的画面,超级高大上!当年才14岁的我, 内心的中二之魂熊熊燃烧,仿佛已经看到自己学习编程后成为黑客的厉害模样,于是不假思索地就同意了这个提议,开始学习编程。
等我去了才发现,编程并没有我想象的那么花里胡哨,刚开始甚至很枯燥,老师一上来就介绍那些乱七八糟的语句,还全是英文,也听不懂……但我这个人好胜心比较强,计算机语句看不懂没关系,先按老师教的东西囫囵吞枣、死记硬背。就这样咬牙坚持了几个月,突然有一天觉得自己茅塞顿开了,原来用计算机的思维去考虑程序是这个样子的!从那以后,我就好像打通了任督二脉,反过头来看以前学的那些东西,也都融会贯通了起来,我终于体会到了编程的乐趣和成就感。
初中、高中,我一路在上海市和全国信息学奥赛中过关斩将,最后还凭借全国信息学奥赛一等奖保送到了同济大学,后来毕业后进华为也是因为自己的软件能力。这些年,编程带给我的不仅仅是摆了两柜子的荣誉证书、奖牌和奖杯,更重要的是从小学习编程让我打下了比较扎实的童子功,掌握了的算法就好像印在脑海里一样,虽然后来大学时期接触编程少一些,但是工作以后重新再捡起来也非常快。
【 元老|华为后浪:这个95后是5G元老,已蝉联两次软件十大高手】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元老”。
 元老|华为后浪:这个95后是5G元老,已蝉联两次软件十大高手
文章图片
3
我的小目标:代码写到80岁
刚转正不久,我接到一个比较有挑战性的任务,从零搭建一个新模块。
这个模块是用来做自组织网络的,能够帮助客户自动添加邻区,不用手动配置。这个任务要求我既要尽快交付新模块,又要吸取老模块的教训,改善之前遇到的问题。
我总结了老模块的历史遗留问题,比如简单而重复的数据注册功能,居然用了6000行左右的代码, 我利用C++的模板大幅优化重复代码,在新模块中仅用2000行左右的代码就移植了原有的功能。
再比如,基于整个模块的功能,我发现反写数据库应该是一个常态的功能,以后会有大量的功能往里面塞,也会产生大量的重复劳作和重复代码,很容易出问题。我利用优先队列设计了反写数据库框架,便于后续扩展。


推荐阅读