数学家华丽变身"华为程序员",会发生什么故事?

菊厂基地打工仔 2024-08-03 02:07:08

很多人都问我:“你是学数学的,为什么不去搞算法、数据分析?为什么写代码,这么累?” 这时,我都会想起自己一次次调通代码,一次次在屏幕上print出“hello world”的喜悦,我会骄傲地说:“为什么要当‘程序猿’?不就是因为爱嘛!”

数学“研究僧”的“程序猿”之路

2016年,结束了本科和硕士6年的数学“苦修”,我终于毕业了。因为我们专业男多女少,男生普遍发际线堪忧,大家经常自嘲为“研究僧”,毕业时大家的临别赠言除了一切顺利、好好保重,最多的就是“好好保护发际线”。

2018年,我进入华为西安研究所,开启“程序猿”之路,因为以前在学校试验室,我就对编程的浓厚兴趣,成为我们专业的编程当担,现在来到华为也算是圆梦的时刻。我和兄弟们一说我要当一名程序员了,他们打趣说“学了6年数学还能保住发际线,这次去当程序员,希望你能打破魔咒啊!”

转眼间,入职已经一年半了,我的发际线可能有所上移,但是我觉得这也是我成长的印记,记录着我是怎样一步步从数学“研究僧”成长为一名真正的“程序猿”。

“数学专家”的编码首秀

刚入职一个月时,我还沉浸在入职培训的“鸡血”当中,PL杨哥就安排我担任了新重点项目的主力开发人员,我还在担心自己能否胜任,毕竟我还是一个刚入职一个月的“小鲜肉”。

鉴于项目和机器学习有些关联,杨哥便鼓励我:“你是咱们这些人里数学最好的,你不上谁上?”这句话让我备受鼓舞,也给了我底气,后来我经常自我调侃道:“我可是咱们团队‘学编程里面数学最好的,学数学里面编程最好的’”。在这样的“底气”推动下,我正式开启了我的“程序猿”之路。

当时,这个项目需要对网元、基站等故障引起的集中投诉进行定位,当我看到方案中涉及的“异常值检测算法”时,我不禁感慨:“这不就是我大学时学的boxplot么?!只要将这个转换成代码就行,这么简单?!”

然而,我很快就意识到了自己还是“too young”,我在学校时,多数使用的是MATLAB、R、Python等语言,没有系统研究过代码框架,没有深入研究过Spark。只考虑算法实现,到了项目中,自己的短板就暴露出来了。

为此,我重新啃起了代码框架、Spark源码,我的桌子上开始多起了各种各样的技术书籍,崭新的笔记本也被写得密密麻麻,一本又一本,那段日子,朦朦月色下的园区成了我心里最美的风景,心里暗想:“当年那么难的数学证明都没难住我,挺挺,肯定能搞定”。我总会轻轻地走到专家的座位旁,厚着脸皮说“请帮帮我这个年轻的小白……”现在回想起来,我真的非常感谢部门的技术大拿超哥及时伸出援手,那会儿他的开放分享简直就是我的“救命稻草”啊!

超哥跟我讲了很多自己以前的Spark开发经验,每当他检视我的代码,内心就不免“瑟瑟发抖”,生怕在这样的好师傅调教下,还让他“老人家”失望。在超哥严格的“关照”下,我知道了什么是代码的好坏“味道”、Clean Code,知道了代码要讲究可读性、可拓展性、可维护性,也学到了许多Spark开发中的经验,少走了不少弯路。

道路虽然曲折,但最终我还是成功地将一条条复杂的公式转化为了代码,同时保证了框架的合理性以及代码的高质量。我的这套Spark代码框架,也被当作了团队的模板框架,在后续多个项目中被使用。

慢慢地,我逐渐建立起了自己在“机器学习”相关领域开发自信,让我在之后的日子里,无论遇到什么困难,都能够勇敢去努力攻克它。对于我来说,数学是我的长处,是利器,但只有结合编程的功力,双剑合璧,才能支撑我越走越远,越走越稳。

实习期的“专家”

也许是由于前一个项目中自己的踏实靠谱,入职两个月,主管便安排我出差杭州某局点,进行产品的Beta验证。那会儿真觉得身负重任,怀着这种忐忑的心情,我踏上了自己人生的第一次出差之行。

刚到局点,我就被眼前的场景震惊了:一层楼满满当当全是我们和友商的开发、维护人员,连过道都站满了人,我连个下脚的地方都没有,讨论争执、键盘敲击的声音充斥着整个楼层,同行的SA云淡风轻地说:“不要怕,友商的数据库挂了,这些都是友商公司的人”,望着这嘈杂的场景,我不禁感叹:“这就是一线,这就是炮火最密集的地方啊!”。

适应了这种每天抢座位、抢WIFI的快节奏模式,我很快便投入了Beta验证中,经过多天调试,眼看项目端到端打通在即,但数据却“卡住”了,迟迟不能在界面上呈现,我们研究了许久,最后发现:原因竟然是客户的集群做了O+B改造,而我们的版本根本不能适配这种场景!

SA、交付、一线的人都急了,眼瞅着离试商用的日子越来越近,而且马上就要举行“互联网大会”,我们的产品要做重要演示,再重新出版本已经来不及了,这些都将影响华为在客户心中的形象,一时间,仿佛所有聚光灯都打在了我身上,我感受到了巨大的压力,脸和耳朵都滚烫了起来,仿佛我的一举一动都能影响这个产品的生死一般。

顶着巨大的压力,我投入到问题的攻关中,在一次次讨论的过程中,感受到部门所有人都充当了我坚实的后盾,自己不是一个人在战斗,是他们给了我信心。

在一次讨论中,我突然灵光一闪,想到能不能就用 最简单的脚本方式,直接将数据跨域推送?经过和SE的讨论,我们一拍即合,马上开工,通宵奋战。攻关的夜里,嘈杂的楼层经常只剩下我和一线同事,半夜订不到外卖时,是他们“支援”的泡面帮我渡过了一个个难关。功夫不负有心人,在看到页面呈现图表的那一刹那,巨大的成就感涌上我的心头,心里激动地呐喊到:“我做到了!”

后来看到一线发送给客户的邮件中写到:“华为技术专家张明,协助解决了xxx问题”,我才明白,所有人都选择相信我,因为在他们眼里,我就是“专家”,是这里最懂技术的人,这份信任让我激动、感动,也让我感受到了新的力量。

如今,距离当初那场挑战已经过去一年了,当时的临时方案也变成了部门跨域推送的正式方案。但只要想起这一次出差的经历,我还会感到骄傲和自豪。对我来说,这仿佛“里程碑”一般,是我开发道路上的重要印证,让我继续在“程序猿”这条路上不断前行。

海南岛上的“小分队”

2019年,我被派到海南交付X产品,特别的是,这次交付的就是整个部门不知奋战了多少个日日夜夜的新版本,这其中倾注着每个兄弟姐妹的心血,而我这次的开局验证,正是对战时英雄们辛苦付出的成果的一次检验;与此同时,海南也是我们的产品在中国区刚刚开拓的新高地。所以,此行我必须成功。

西安一路到海南,稍事休整,我就前往了客户的数据中心,中心位于市区几十公里外的老城镇,一片未经开发的工业区,从代表处坐公交车需要将近2个小时。一路颠簸到达目的地后,周围的荒凉让我丝毫感觉不到海南的“阳光沙滩”,只有道路两边的椰子树昭示着这里是海南。数据中心刚刚建好,外墙还在刷漆,内部没有桌椅,我们就把代表处买的塑料桌椅在机房外拼凑了一张临时的办公桌,同行的还有2位同事,我们笑称我们就是“海南分队”。

艰苦的环境没有阻挡我们开局的决心与步伐。但随着年关临近,施工队的工期越来越紧张,人力也越来短缺,眼看着交付就要延期,我们的服务器布线、配置等等都还未完成,而其实这些都是开发范围之外的事情。最紧张的时刻,整个项目只剩下我们三个“小分队”的成员在苦苦支撑。

那段时间,我经常在思索:“什么是程序员,就是整天写代码,调代码吗?如果连自己的代码跑在什么上面都不清楚,连公司的TaiShan服务器也不了解,那可能只是普通的‘码农’。而且,我不是代表开发来的,我是代表华为来交付的,部门辛苦研发出的BCM版本,不能因为这些简单的问题就延期!”。

我找到TD,主动请缨,参与了服务器配置,连网线、贴标签等工作。那时,面对着满机房密密麻麻的网线,我手里拿着标签纸,一开始还有些不知所措,经常贴着贴着就出错了,有时在机房一钻就是一天,后来越干越熟,项目的进度赶上了,同事都笑称道:“华为的程序员就是全能啊!”。我笑着回道:“我会的还多着呢!”

后来在软件调测的过程中,其他两位同事也积极帮助我,联系定位问题,最终,顺利完成验证。当收到了代表处的感谢信时,我深切地感受到:这就是华为团队协作,面对困难时,一个人的能力也许有限, 但团队的力量却能无限大,也正是这样,我们才能不惧连续性的挑战,铸就出不断优化的版本。

用技术说话

随着工作经验的增加,我对产品的认识也逐步加深,尤其是跟客户聊过之后,更加明白了产品的痛点,出差回来后,我下定决心,在性能体验方面对产品进行优化。

优化之初,在和华为、合作方同事配合时,我就感觉到了优化难度之大,因为产品已经商用,新的特性不断增加,想要从架构上变化不亚于重构整个产品。而我作为一个入职一年的新人能推动优化的运作吗?关键时刻,PL给了我信心:“大胆去做,用技术让别人服你!”

我豁然开朗,“以技服人”也成为了我在和同事交流合作过程中的准则,凡事必先自己研究明白,才去和别人交流,凡是技术难题,必须先自己冲在最前方定位解决。在带领合作方开发的过程中,不论是开发代码,还是原理讲解,我都坚持践行“用技术说话”,在自己的坚持与努力下,终于成为了大家认可的代码高手。

大家都调侃“华为工作最多的就是拉通的过程”,但我却发现拉通过程中最大的利器就是“懂技术”,对方说的你都懂,甚至还能指导他们优化,我想沟通的过程会简单很多。最终,在“以技服人”的信念推动下,我们顺利完成了产品性能的优化,从2.x版本到3.x版本,X功能的分析时长由原来的20-30分钟缩短至5分钟左右,性能成倍提升,该版本上线后得到了客户和一线的高度认可,还给我们发来了感谢信,这让我内心也充满了成就感。

2019年,是我“程序猿”转身之路最重要的一年,这一年我输出了10K多的代码,全年0网上问题,获得部门“黄金头码奖”,也收获了GTS服务研发管理部“代码百强”称号,而这些都给了我坚持在“程序猿”道路走下去的决心和信心。

很多人都问我:“你是学数学的,为什么不去搞算法、数据分析?为什么写代码,这么累?”

这时,我都会想起自己一次次调通代码,一次次在屏幕上print出“hello world”的喜悦,我会骄傲地说:“为什么要当‘程序猿’?不就是因为爱嘛!”

0 阅读:0

菊厂基地打工仔

简介:感谢大家的关注