【华为人】——越史无前例,我就越想去把它搞定
我是一个技术情结很深的人,无论是曾经的小白,还是现在大家口中的高级专家,唯一不变的就是对编码的一股钻研劲儿。华为7年,我经历了从研发小兵到PL,再到转身加入专为业务部门解决疑难杂症的无线网络西研分部飞虎队的过程。这个过程好像涅槃,痛并快乐着,正是因为一个个令人“捉急”的难题和“把自己逼到墙角”的历练,才激起了自己不断探索、询问、攻克的热情。越史无前例,我就越想去把它搞定。
有时候需要有“把自己逼到墙角”的勇气
身为一个软件开发工程师,技术能力决定着你能够走多远,也决定着你在团队中是否能够被大家认可。入职以来,无论所在的组织是什么,无论身处的职级是什么,我的工作都没有离开编码与攻关,即使在做了PL以后,也同样不敢有一丝的懈怠。
2012年,在某关键特性 交付期间,由于交付量大,为了提前暴露风险,我们的开发计划必须整体先于周边团队,当代码开发完成后,却面临着周边团队无法支撑我们同步验证的问题。作为特性PL兼技术开发骨干的自己,始终将版本质量作为整个团队的生命线,眼看完成的代码越来越多、质量风险随之增大,绝不能容忍自己袖手旁观。如何才能让大家在没有周边支撑的情况下独立、快速且高质量完成交付?我提出按协议编写一个简化的流程,模拟我们与周边交互的过程进行验证。那时,部分同事虽然认可这个方案的价值,但觉得工作量较大,还不如等到周边团队开发完成后再一起验证。
但我并没有向困难低下头,深入思考过实现方案后,我觉得自己可以在四天内搞定这件事,于是集中火力开始动手。四天后,终于功夫不负有心人,一个可以部署在个人电脑上、不依赖周边团队即可进行特性功能验证的软件测试框架顺利完成,构建调试版本的时间由原来的10多分钟提升到后来的秒级,定位问题手段也由原来必须在真实系统环境上提取日志,拓展到利用软件调试器进行可视化跟踪。这一改变让兄弟姐妹们兴奋不已,最终,我们将质量风险提前释放,在后面和周边团队的配合验证中,该特性的启动流程控制部分零问题交付,得到PO及周边团队的称赞,而这套快速构建自验证工程的方法也被推广到其他多个项目组。
指标修改历来被认为只能通过冷补丁(类似于完整的软件包,需要复位整个系统才能生效)实现,在某次项目交付过程中,客户期望我们能够通过热补丁(只对修改的部分制作软件包,不需要复位整个系统就能生效)以最小代价对多个指标进行局部修正,满足他们的定制化需求。面对着这一史无前例的棘手问题,项目组陷入了两难的窘迫境地。然而面对压力,我们只能硬着头皮往前走。作为补丁组版本PL,在关键时刻一定要发挥出自己的软件能力。于是,我快速投入到原有机制的分析中,从系统的初始化到每个业务的应用接口,确保每一行代码都正确理解和消化,压力之下终出成效:最终我向大家提出一套可用于热补丁并且与之前指标统计完美兼容的方案,继而快速完成框架代码的编写与验证。然而框架的修改只是前期的一部分,因为相关指标涉及大量的业务流程,排查和分析的工作量更是超出了预期,出现任何一处漏修改,都会导致整个版本功亏一篑。
于是我快速调整了团队阵型,几个业务专家同时投入分析,补丁组所有人员全力保障,确保万无一失。从零开始,从无到有:最终这个热补丁成功交付,也成为了我所经历版本中最大的一个热补丁。我至今依然还清晰地记得,交付的那天整个小组的兄弟们一起加班到凌晨一点,兴奋与感动难以言喻,而通过这件事也让补丁组的组员们对我刮目相看:“原来这个新来的组长不是吃干饭的。”
技术道路上,必须不停地通过实战历练自己、提升自己,甚至有时候需要有“把自己逼到墙角”的勇气,也只有这样,才能真正地保持技术敏感性与团队认可度。
“变不可能为可能”并非天方夜谭
在飞虎队辗转了几年,每年都会支撑不同的项目组,基本上感觉高度和难度都在自己跳一跳就能够着的范围内,唯独去年支撑基带项目组的经历让我感到稍许的无助。在交付LTE基带多核芯片负载均衡调度框架时,我发现业务层面冒出来很多大家难以定位的性能问题,版本快过点的时候,每天晚上都会收到项目组的问题定位通报,好几个性能难题定位周期都持续了一个多月。我就在想,为什么基带的芯片不能使用高层软件的开源性能分析工具?问了一圈,基带领域从来没有这样的工具,因为操作系统、内存和性能等原因,这些大规模分析软件也无法直接应用。
就在自己感到少许失落的某个瞬间,脑海中突然闪现出一个灵感:能不能自己做一个简化版的工具?说干就干,启动私人攻关模式。吃饭时、睡觉前,甚至疯狂到在睡梦中,我都在思考自己的实现方案:如何让每一个函数自动调用自己的代码在关键节点进行标记,实现性能统计?如何用最快的查找算法实现函数身份的有效识别,将当前系统的性能开销降到最低?如何能用最节省内存资源的算法实现物理资源的有效使用……虽然这些问题一度成为困扰自己的座座大山,但通过研究编译器手册、利用现有数据对各种算法进行仿真、分析操作系统内核代码、研读操作系统提供给用户的相关接口特性手册等等,关键的技术点一个一个被攻克。
我的第一个版本不到一周时间就落地了,就在大家还在为降1w cycle点绞尽脑汁的时候,就在大家还在为版本的两个节点,成百上千处修改排查到底哪一行代码引入问题的时候,一天时间内,3-4w cycle的优化点就被我的性能分析框架找到了,同时还找到了一个耗时几周的性能悬案的根因之所在。为了分析项目组的性能问题,我分别做了分析芯片级别的、任务级别(去除切换时延)的,最终到函数级别(带任务切换数据)的性能分析框架,而不同的框架都能解决性能领域的某一类问题。进一步地,我还考虑了将性能检测集成到CI中进行定期监控,让性能分析不在成为基带的噩梦。曾经,大家都认为很难甚至不可能的事,在我的“死缠烂打”、不断研究之下终于变成了可能。
业务主管说,我做了超越自己职责的努力,但是对我来说,这应该就是我的本分工作,虽然只是短期支撑,但是作为飞虎队的队员,就应该在思想上保持艰苦奋斗,在行为上敢想、敢说、敢干,把自己定位得再高一些。在面对项目组痛点时,只要我们多一份创新性的思考,多一份执行力的落地,那么“变不可能为可能”就并非是一件天方夜谭的事情。
无线网络西研飞虎队合照
我承认自己是个技术控,从过去,到现在,自己唯一不缺的就是自信和笑容。我喜欢和兄弟们并肩作战、互相分享,也喜欢去挖掘每个人身上的闪光点。我希望能用自己的激情以及对技术的热爱,感染身边更多的人;也希望以积极向上的状态发挥自己的光和热,带给组织哪怕是一点点的改变。技术之路,唯有做深、做精、做专,方能体会到它的奥妙与不凡。我夫人说,希望我能成为院士那样的技术领军人物,院士梦我是实现不了了,但是技术专家梦,我跳一跳还是可以实现的,给自己加油,给梦想加油!
本文为《华为人》版权所有,未经允许不得转载。如需转载请联系编辑部hwrb@huawei.com
- 点赞
- 收藏
- 关注作者
评论(0)