来源 :华为人

从中二少年到5G元老

姜森磊

“大家好,我叫姜森磊,1995年出生,14岁开始编程,迄今十年整。

2020年4月20日,我通过WeLink接入了EMT会议,在“20分钟”议题上分享自己的工作经历。我是入职华为才两年的95后,却也是拥有十年经验的老程序员,这一切都要从十年前我的中二时期说起……

1

中二少年的“编码童子功”

由于老爸酷爱游戏,早在90年代我们家就配备了电脑,01年左右家里就已经联网,电脑对我来说并不陌生。平时经常看老爸玩游戏,甚至偶尔还能跟他一起上场厮杀,唯一的遗憾是玩电脑的时间总是太少,家人顶多只让我做完作业后玩半小时、一小时。

在我上初二时,有一天我妈貌似不经意地跟我说,“附近中学开了计算机编程的兴趣班,我同事家的小孩去学了,你要不要也去试试?”搞计算机=玩电脑,当然有兴趣了。至于编程,那不就是黑客做的事情?我脑子里飞快闪动着《黑客帝国》电影的画面,超级高大上!当年才14岁的我,内心的中二之魂熊熊燃烧,仿佛已经看到自己学习编程后成为黑客的厉害模样,于是不假思索地就同意了这个提议,开始学习编程。

等我去了才发现,编程并没有我想象的那么花里胡哨,刚开始甚至很枯燥,老师一上来就介绍那些乱七八糟的语句,还全是英文,也听不懂……但我这个人好胜心比较强,计算机语句看不懂没关系,先按老师教的东西囫囵吞枣、死记硬背。就这样咬牙坚持了几个月,突然有一天觉得自己茅塞顿开了,原来用计算机的思维去考虑程序是这个样子的!从那以后,我就好像打通了任督二脉,反过头来看以前学的那些东西,也都融会贯通了起来,我终于体会到了编程的乐趣和成就感。

初中、高中,我一路在上海市和全国信息学奥赛中过关斩将,最后还凭借全国信息学奥赛一等奖保送到了同济大学,后来毕业后进华为也是因为自己的软件能力。这些年,编程带给我的不仅仅是摆了两柜子的荣誉证书、奖牌和奖杯,更重要的是从小学习编程让我打下了比较扎实的童子功,掌握了的算法就好像印在脑海里一样,虽然后来大学时期接触编程少一些,但是工作以后重新再捡起来也非常快。

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年编程经验相关推荐

  1. 拥有10年编程经验的你,为什么还一直停留在原地

    前几天,有位小伙伴提出离职,我找他聊了聊. 我问他,离职的原因是什么?他说,现在的工作太枯燥乏味,缺少成就感,想找一份更具挑战性的工作. 我说:"干的挺好啊,我对你也挺器重.况且,我们不提倡 ...

  2. 总结 10 年前端经验,谈谈前端人如何更快地成长

    常言道:三十年河东.三十年河西.这句话放到前端领域,就要变成 "十年河东.十年河西",甚至每隔三五年,前端行业的技术格局就会大面积翻新.对于资深的前端开发者来说,已经适应了这种更新 ...

  3. 10年编程无师自通[转]

    10年编程无师自通[转自LQQM]<script language="javascript" type="text/javascript"> doc ...

  4. Peter Norvig 给程序员们的一份传世典文:10年编程无师自通

    你好,我是zhenguo 这篇文章的作者:Peter Norvig,可以说是程序员中最牛叉的人物之一,现任谷歌研究总监,是誉满全球的人工智能专家,著有<Artificial intelligen ...

  5. 经验教训 软件开发_我作为开发人员10多年的经验教训

    经验教训 软件开发 12个月. (12 months.) That's the time we wasted while rewriting our software from scratch. 那是 ...

  6. 每位开发人员都应铭记的10句编程谚语 (我超喜欢,转载了)

    所谓谚语,就是用言简意赅.通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情.也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己. 1. 无风不 ...

  7. 职业选择测试发型软件,发型师必看的10条职业经验

    原标题:发型师必看的10条职业经验 作为一个有志向的发型师,你是不是也梦想有一天能成功?将下面提到的这10个要点铭记于心并用在实际工作中,你就能在你的职业生涯上更进一步并且更快乐. 在这里,收集记录了 ...

  8. 创业者必看:创业得出的10条血泪经验

    创业者必看:创业得出的10条血泪经验 1.将创业资金数额减到最低. 别举债,别投下家庭储蓄,成功机会只有20~30%的新事业,不值得你这样冒险.你计划的事业要由现有的构想和你个人才华及专长做起,而且只 ...

  9. 2017年最受欢迎的10个编程挑战网站

    译者注:如果你想不断地提高自己的编程技能,那么不断尝试去解决那些编程中的难题,这是一个非常不错的途径.作者在本篇文章中列举出了10个编程挑战网站,你想尝试一下吗?以下为译文. 如果你正在在学习编程,那 ...

最新文章

  1. Informatica ETL workflow 定时运行功能介绍 scheduler
  2. jQuery-给ul添加了li之后,添加的li并没有绑定点击监听怎么办?
  3. DotNetNuke与MemberShip的结合(五年版) 三步汇总
  4. Web 开发中应用 HTML5 技术的10个实例教程
  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]49.描述在IPsec和TLS后的基本想法
  6. 介绍一个Spring Cloud分布式微服务架构图
  7. jstl的formatNumber标签的四舍五入问题
  8. Vue表单输入绑定(文本框和复选框)
  9. 计算机二级基础知识占多少分,计算机二级MS考试题目占分数
  10. 最近抖音,小红书上面有个很火的天气推送的公众号,可以给自己爱的人进行定时推送. 效果如下,结合亲生经历给大家讲述一下操作流程。整个项目代码目前十分规整,项目代码整体400多行 ,就直接分享出来吧.
  11. pccad 电气元件_CAD电气符号库下载|cad电气符号图库大全 GB4728完整版 - 极光下载站...
  12. 氨基酸在php的溶液中,氨基酸等电点的计算和应用.ppt
  13. 关于太阳(卫星)天顶角,太阳高度角,太阳方位角
  14. 计算机考研统考压分吗,担忧!考研初试会被压分吗?
  15. 仙境传说 第一章之四 卢渊*梦魇过后的情缘
  16. 计算机专业的创新方向和创业情况,计算机专业创新创业教育模式探究
  17. iOS 怎么查app的下载量
  18. 微软都有哪些开源项目?
  19. 数据丢包怎么修复_网络丢包怎么办?这些解决办法不得不知
  20. PTA 7-172 元宵花灯

热门文章

  1. 使用SAP WebIDE开发SAP Fiori Worklist应用消费OData服务
  2. 有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
  3. sap.ca.scfld.md.controller.BaseMasterController - how is extend method implemented
  4. Uncaught SyntaxError - unexpected end of input
  5. SAP云平台webIDE UI5应用的Application Status菜单实现细节
  6. ubuntu上的wordpress文章的本地存储位置
  7. SAP BSP应用configuration的加载原理
  8. 怎样将employee 加到Territory里
  9. view controller lifecycle discussion - onInit
  10. 网易纯净邮箱5元一个月,有点贵啊