当前位置:首页全部内容我与代码有个约会

我与代码有个约会

当年,还在校园里的我,就已经非常热爱编程了。

晚上在宿舍,舍友们沉浸在五彩斑斓的游戏世界里,而我面对着几乎全黑的屏幕,在代码编辑界面徜徉,每天不管多忙,我都要打开电脑敲上几行。甚至有时,舍友会玩笑道:“代码才是你的‘女朋友’,你这整天都要‘约会’啊!”

而我对此哈哈一笑,从不否认。

我的宝典成了敲门砖

2015年,对代码满怀热情的自己,正好就撞上了华为举办的第一届软件精英挑战赛。

也许,正应了那句话:“年轻就是敢”。虽然自己并非计算机专业出身,但最终还是加入了这支软件大赛的大队伍。那时的自己对socket通信并不熟悉,而且还是在Linux操作系统下搞的,所以从比赛开始,一个又一个坎儿便没有停止过。我开始自学研究:看书、上网、和同学、前辈交流……我将遇到的每一个问题最后汇总成了一篇详细的宝典,我还分享在大赛的答疑群里供大家参考。也正是因为这一篇小小的总结,让华为的招聘HR从“茫茫人海”中注意到了我。

随后的比赛中,自己就跟着了魔似的,感觉白天黑夜的节奏也变得快了,为了一丁点细小的优化,甚至有时会彻夜不眠,虽然过程辛苦而又充满坎坷,最终还是拿到了软件精英挑战赛西北赛区8强的名次。假如你是一名忠实的代码发烧友,那我相信,你一定会理解这样为了目标努力并最终收获喜悦的心情。从那时开始,对软件的热爱便深深扎根心里,从未停息,直到现在它们还一直影响着自己的工作和生活。

软件大赛结束后,我对华为的感情更进了一步,有了一种莫名的熟悉感和亲切感,加上之前的宝典加持,最终,我获得“Special Offer”,正式成为华为大家庭的一员。

从无助到提前转正到优秀新员工

入职西研后,很快就迎来了自己的第一次出差——飞往成都。

印象最深刻的就是刚入职一个月不到的时候,我被分配了一个系统测试框架的搭建工作。没想到这一开始自己便陷入了不知所措的窘境:怎么入手?怎么去做?如何规划?资源在哪里?一个个实际的问题塞满大脑,强烈的无助感开始将自己重重包围,快要透不过气来。巨大的压力让我晚上辗转反侧,夜不能寐,上午一到工位,只能靠咖啡“续命”,就在我在茶水间泡咖啡的时候,正好碰见我们团队大神拿着杯子也在接水。

“小王,昨晚没睡好吗?”估计是看见我整个人精神状态不佳,他特意关心地问。

我一边点头,一边想到是不是正好借这个机会向大神求助呢?我赶紧把自己的困惑告诉了他,没想到,这一次交流很快便拉近了我和大神的距离,他很专业,也愿意倾囊相授。经过一次次深入交流,我总算入了门,有了思路,规划完便开始搭建整个框架,还形成了一份详细的指导书,固化成了“组织资产”。

那段日子,我读了很多前辈们的代码,也发现了一些问题。尤其是对可读性比较差的代码,作为代码发烧友的自己简直难以忍受,费解的代码让我一下回想到了《代码整洁之道》这本书——实践是多么重要啊!坦白说,我是一个有着严重代码洁癖的人,哪怕它只是一个可改可不改的低风险问题,它都会在我的眼中变成一颗难以忍受的钉子,让我觉得不改即痛,而我也总是遵从内心,顺手改了很多低风险的代码。聚沙成塔,滴水穿石,我相信这样的点滴积累,会使得项目组的代码往好的方向更进一步,而后来的可信变革也证实了当时自己的想法是正确并且应该去坚持的。

经过三个月的学习和磨练,鉴于三次月度答辩均排名第一并且在业务交付中较为突出,我迎来了传说中的“提前转正”,并获得了“西研所优秀新员工”的荣誉。我不禁感慨,曾经觉得很难甚至不可能的事情,在强大的信念与行动面前,终会得到实现。

这段经历让我记忆颇深,触动很多。仔细想想,这也印证了一点:在华为挑战很多,机会也很多,关键在于我们有没有主动迎战的勇气,在于我们有没有主动思考、主动去做的执行力,站的角度高一点,也许看清问题、解决问题就会更容易些。在这个过程中,自己也慢慢融入了这个大家庭,有了自己在华为的好友,开启了一段新的征程。

赛出来的经验

在华为的日子,从未抛弃代码这个“女朋友”,而在经历过2016年和2017年两次无线软件大赛后,我对它更是有了另一番深刻的理解。

2016年,无线产品线的软件大赛启动了,那时的我只是一个刚刚入职一年的职场新人,而这次比赛却给了我和那么多入职多年的软件高手过招的机会。第一天早上发布赛题,第三天下午就要交付比赛程序!要知道此前我从来没有参加过这样快节奏的软件比赛,和以往的单打独斗不同,这一次真的需要团队每一个人的密切合作,紧张的赛事安排逼迫着我们要和时间赛跑。

发布赛题后,我们分析了小组几个人各自的软件特长,迅速明确了分工,接下来几个工作同步进行。同时,我们也意识到这样紧张的节奏下,一次性开发出一套大而全的代码是不切实际的,不如先开发基础可用版本,再迭代优化,直至细节周全。

说干就干,我开始搭建比赛工程,其他小伙伴开始研究赛题、搞清算法,三个人紧密配合。研究赛题的小伙伴为我的工程搭建提供输入,我的工程搭建为研究算法的小伙伴提供输入,一环扣一环,每一个小时沟通交流一次进展和困难,也让协作更加流畅。看着代码一行一行出现在屏幕上,我几乎忘了自己是在参加一次比赛,全神贯注的痴迷状态竟给人一种时间和空间定格的错觉。在整个过程中,我最大的感受是,对代码的要求必须严格,不但要确保功能正确,而且安全性、可靠性、韧性方面也不能马虎,而这样的“死磕”也让我们的代码在后续的调试过程中省去了很多不必要的麻烦,节省了更多调试的时间。

当我的工程搭建完成时,小伙伴的赛题和算法研究工作也基本OK了,后面的编码、调测、迭代等一系列动作就行云流水了,第三天下午我们交付了一份满意的程序,最终获得了无线16强。第二年,我有幸作为软件能力提升代表,在无线网络西研分部软件大赛中担任项目Owner,同时,也再次率领部门团队参加了2017年整个无线产品线的软件大赛。软件和我,我和软件,有了更深的缘分和情谊。

回想起来,之前经历的三次比赛对我来说是意义非凡的。谁没有经历过初入华为的小白迷茫呢?谁没有对挑战的些许内心波澜呢?谁没有在难题前的些许焦灼甚至无措呢?然而,咬紧牙关、密切协作,你会发现没有什么考验是过不去的。

可信,让我成长

入职后,我一直在做高层软件的设计和开发,由于新业务需要,2017年底我加入了陌生的基带团队,从事底层通信算法,这个变化就类似于以前我所做的工作是搭建房子的屋顶,而现在要去铺设房子的地基。

从熟悉业务到陌生业务,从熟悉团队到陌生团队,很多知识需要重新学习,很多能力需要重新积累,也要和新的同事重新相处。对我来说,2018年到2019年异常辛苦,然而只有在风浪中摔打才能炼就真正的本领,这一年我的知识面在不断拓宽,能力也在默默提升,就像看似不动的蚕蛹,实际却在不断积蓄能量。到了2018年年底,我成为了团队Leader和可信Owner,而这又是一次全新的挑战。

2019年初,“全面提升软件工程能力与实践,打造可信的高质量产品”成为了公司的一面重要旗帜。然而,面对这样的目标,作为研发工程师的我们又该如何让“可信”真的在项目组中落实下去呢?

“这个命名规范,对应到我们的代码里应该需要注意哪些点呢?”

“这些注释要求,有些是可选的,我们项目组应该怎样取舍呢?”

“这个代码运行多年,没出问题,但分析下有风险,到底改不改呢?”

……

项目组成员提出了一个又一个疑问,为了更好地理解可信,我仔细研读了公司的相关发文、牛人博客、最新的编程规范等一系列与可信相关的材料,结合项目组的代码现状进行了分析,快速组织大家进行了多次评审和讨论,最后形成了项目组更为具体的规范,不但解答了很多大家在编码过程的疑惑,也使得大家的好代码意识、编码质量都得到了提高。

除了形成规范、整改和尽量避免更多的问题以外,可信涉及的方面还有很多,例如:详细分析Committer的运作机制以及评估方法,形成适合我们自己项目组的运作方式,让大家积极地参与到代码检视中去,提高检视质量。随着公司可信变革逐步深入,我也更加深刻地认识到可信对于客户、对于我们自己意味着什么。2019年下旬,我成为了部门的可信OWNER,虽然可信的话题很大,但我们会继续探索和实践,心怀敬畏,从小事做起,扎扎实实做好每一次交付的代码质量。

另外,我想分享的是,作为研发人员,绝不要“怠慢”自己的技术情结。在我看来,只有代码功底扎实、关键时刻顶的上的PL,才能够真正地将团队带好。在担任PL和可信OWNER的日子里,开发、优化、重构、检视代码、定规范……自己一样都没有停下过。强烈的技术情结和历练,会帮助我们把团队带得更好,也会帮助团队在关键的时刻解决技术难题。

岁月不居,码上成长。从学生时代与华为因代码结缘,到职场生涯与代码为友,再到如今技术、带团队双轮共进,四年时光匆匆而过。抽丝剥茧,化茧成蝶,每个人成长路上都会遇到困难。华为的平台很大,积极主动去抓住每一次历练的机会,勤思考、多学习、不放弃、不抱怨,或许我们就会看到一番新的天地!

最后,一句陪伴自己十几年的座右铭送给大家,与君共勉:

“只有经过地狱般的磨练,才能创造出天堂的力量;只有流过血的手指,才能弹出世间的绝唱!”——泰戈尔。

转自华为心声社区

作者王毅

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧