在华为“偷懒”是一种怎样的体验
学生时期,我会经常碰到一些杂乱的文件需要逐个修改文件名的麻烦事,这让我的“偷懒DNA”瞬间大动,于是我花了半天时间,用自己熟悉的Java语言实现了批量重命名的功能。这个小程序做好并通过验证后,我将其上传到Github(开源代码库以及版本控制系统),没想到还意外获得了四颗星。这个经历也在我心里埋下一颗种子,每当我遇到一些机械化的工作,就开始思考如何去“偷懒”解决。
一颗“偷懒”的种子萌芽了
“为什么不能一步到位呢?”我思考着。于是我写了一个快速替换脚本,就像我们在电脑上升级软件一样,先卸载老版本的软件,再安装新版本。完成这个脚本后,我的验证效率有了明显提升,可以更加聚焦任务实现。这是我入职后写的第一个工具脚本,以往也没有经验,只能从解决实际问题出发,现学现用。虽然最后实现的功能单一,但这个“偷懒”的习惯却一直在影响我。
新员工转正后,我到了数通维护部,工作性质也发生了变化,日常工作就是问题定位和补丁开发。我接触到的第一个业务是NTP,一种网络时间同步的协议,用于不同终端之间的时间同步,就像我们使用的手机、手环等,只要连接到互联网,就能自动同步成统一时间,这些都是NTP协议在起作用。协议类的补丁开发,常常需要组网,让设备之间互相发送报文,这样才能验证功能的正确性。但有一些简单的验证场景,通过设备配置触发不够灵活,可能需要同时配置多台设备,或者报文发送要等待更长的时间,补丁验证效率就会受到影响。因此,我开始尝试通过工具脚本构造并发送报文,提高补丁的验证效率。
经过一番摸索,我找到了方法——一个Python语言的开源工具包。但是当时的我并不会Python,为了方便验证和开发补丁,新学一门语言也是必要的,为了达成目的,我开始了Python之旅。
在不断的学习和摸索中,我对NTP的实现和原理加深了认识。需要构造报文,就需要了解报文的结构和每一个属性的意义和功能。在实现脚本过程中,我碰到了一些不符合预期的问题,由于欠缺认证和加密算法等方面相关知识,认证报文的交互实现简直是漏洞百出,求助周边的同事无果后,我只能重头梳理。
结合平台代码、开源代码的学习,并不断研究协议,我了解到了NTP认证方式的特殊性,与开源的差异性、友商的差异性等,之前的问题终于迎刃而解,并且在这个过程中,我阅读英文文档的能力也有了小小提升。脚本的开发过程可谓“一石三鸟”,既完成了脚本开发,达成了偷懒的目的,能快速验证补丁,还学会了Python语言快速开发简单脚本工具,同时我也更加深刻地理解了NTP的报文处理流程和实现原理。
NTP作为广泛使用的协议,平常我们也常常遇到相关的咨询问题:认证功能怎么配置?时间参数怎么计算?算法实现逻辑等。我为了偷懒不做反复解释,便将自己的总结整理成文档,给有需要的小伙伴。为了便于搜索,我梳理了以往被问到的问题并标注关键词,比如离差、同步距离、层级等分门别类。在做这项工作时,我又萌生了一个想法:“为什么不实现一个标签检索功能呢?”为了更高效,我开始寻找现成的工具,很快发现了一个名为“filterizr”的前端插件。但我对前端不太熟悉,只好边学边摸索,花了一段时间才实现了标签检索功能。后来,看到有人通过这个检索工具咨询问题时,我心里有一种强烈的自豪感。
借着这个契机,我还将自己学到NTP相关的知识总结成一个汇总帖,做了总纲式梳理,无论什么角色都能从中获益。这个帖子获得了三千多的访问量,偶尔还会有些海外小伙伴给我留言咨询,我也因此获得了一个知识管理的荣誉——“月度知识之星”。就像游戏中刷了一个奖励颇丰的副本支线一样,我的成就感满满的。
在此之后,工作中每遇到一些机械操作,我便会写一个简单的脚本,每新写完一个脚本,我便会分享给周边的小伙伴使用。久而久之,我的小脚本也越来越多,其中也不乏其他语言的工具和脚本。受这些脚本的积极影响,我电脑的文件目录也产生了一些适应性的变化,所有的目录都不再有中文名称、空格等一些特殊字符,极大地避免了脚本读取这些文件时带来的奇奇怪怪的问题,这也间接地为我的日常工作带来了便利。
在后续的工作中,补丁的开发工作也越来越多,其中也包括一些重复的补丁开发工作,凡是涉及机械的流程,我都会“偷懒”把它们实现。在实现这些脚本的同时,我对业务流程也有了更深刻的认识,对现有流程的弊端有了“动刀”的想法。补丁交付过程中的很多流程和环节,都有着机械化的痛点问题,可以工具化,甚至是智能化。我想要实现一个覆盖整个补丁交付全流程的工具,端到端提升开发效率。
编写自己的工具
但是如何汇总所有的功能呢?之前也没写过这样的工具,本着不会就现学的原则,我继续查阅资料。由于之前多数脚本都是Python实现的,我依旧优选Python的开发方案,后来找到了一款名为QT的工具包,它是一个开发框架,能快速开发图形化的操作界面。
很快,我的工具就有了初步的模型。起初只是使用一些简单的控件和简单的交互,但随着学习的深入,了解的知识也越来越多,迭代几个版本后,它实现了一些特定的功能,多线程、网络通信、定时任务等。而与此同时,由于功能复杂度的增加,我分享给组内同事的工具包经常出现一些Bug,为了快速分析故障,我需要收集一些日志,为此我使用开源工具搭建了一个日志平台,可以自动捕获异常上传到日志平台上。这样我可以快速分析并及时修复,发布新的版本。
经过数个版本的迭代,我的小工具已经是一个麻雀虽小五脏俱全的工具集了。由于它绝大多数的功能都和补丁开发相关,我为它取了一个朴素的名字“补丁助手”,但配上了一个霸气的图标——一台挖掘机,隐含“高效工作”的寓意。
新的工具集作为一个可以独立运行的小程序,很快得到了周边小伙伴的认可。一天下午,南京团队的PL(项目负责人)赵强找到我,想要了解工具的基本功能和使用方式。我惊讶之余更是倍感荣幸,如数家珍地介绍起来。随后他发了一个现有工具的汇总帖到公司内部3MS社区,间接为我的工具做了推广。每当有人咨询到工具使用问题的时候,我都会耐心讲解并为此感到开心
改变交付流程的点子
此时,主管赵强也提出了一个建设性的意见:“客户端的方式有一定的局限性,使用不便,也不利于升级,能否服务化?”这个提议让我的工具有了新的迭代方向——将工具做成网页版。不过,脚本实现的功能有局限,我只能将一部分功能移动到web端,由于功能比较单一,加上并没有得到有效的推广,web版没有受到太多关注。而且,大家日常有自己习惯的工作方式,每个人的习惯和偏好都很难统一,很难发生改变。
就在我一筹莫展之时,部门重组为这件事带来了新的转机。
在一次维护部的座谈会上,部长李峰和大家交流,希望了解团队成员的想法和诉求。“维护兄弟开发补丁需要从机械化的流程中解放出来,应该是聚焦方案设计和编码验证的工作重心,从而完成补丁的快速交付,我们在这个方面是否有所投入和优化?” 畅所欲言之间,我提到了当前在补丁开发过程中的一些痛点。
“聚焦工作重心,这才是最理想的补丁开发状况。”他当即肯定了这个想法,并补充了一些自己的见解。他认为,如果要将现有的流程串联起来,可以独立开发一个工具软件,提供一个平台,帮助补丁开发人员快速开发补丁,聚焦核心设计与编码,并为工具假设性地取了一个名字——WePatch。
我很憧憬座谈会上那所描绘的工作流程,开发人员能快速高效的完成补丁开发验证。如果全员推广,必定对整个团队的开发大有裨益。
会后,项目主管赵强从我工位走过,轻拍我的肩膀,笑道:“小伙子,你火了,峰总记住你了!”一番闲聊后,我才知道,会上说的工具开发已经被圈定为部门年度重点工作,我的工具有望从“杂牌军”蜕变成“正规军”。我不免心中窃喜起来。
自那以后,部门组织了多名专家进行多次研讨,一起分析了当前补丁开发人员常遇到的老大难问题,比如,补丁制作没有统一入口、代码提交机械化且容易出错、补丁审核效率低下等,再根据这些问题讨论可行性的方案。
在这期间,我们还获得了外援。网络研发工具部的专家刘明浩来南京出差宣讲WeCode——公司自研的一款针对C/C++语言的一站式集成开发环境。得知消息后,项目组PL陶海跻约了数通软件教练冯行宇交流,提到了工具未来可行的实现方案:能不能借助工具部WeCode生态,以插件的形式开发?编码和实现都在现有的IDE(集成开发环境)上,可以解决补丁开发过程中在多个平台中反复切换、效率低下的痛点,还可以复用IDE提供的一些编码检查的能力,实现起来相对容易些。
经过后续的研讨,方案很快被敲定下来。为了更详细地向工具部的同事讲解维护补丁的开发流程,我也开始结合官方案例学习插件开发,并花了一周的时间完成基本的交互功能。这些插件的特性与之前的工具有一定的互补之处,应用之后,工具的易用性有了较大的提升。交于工具部继续开发后,我们之前设想的功能点都逐步实现了。经过半年多的打磨,WePatch1.0在2021年年底如期完成发布,并在云杉维护部内部推广试用。
不过,云杉内部的前期推广并不顺利。大家的使用习惯并不容易改变,我们项目团队也缺乏有效的推广运营经验。直到WePatch2.0开发完成,并借助部门各层面的推广,这一僵局才被打破了。随着用户数量增多,更多的优化建议不断涌现,迭代演进的过程就像滚雪球一样,更多改进点的加入让补丁交付效率有了大幅度的提升。
目前,我们的插件也已经推广到各产业团队,得到了周边各领域的认可,并融入维护团队的补丁交付流程中。
这一路,“偷懒”逐渐成了我的一种习惯。它就像一颗埋在我心底的种子,让我费尽心思去思考如何能做得更好,积极努力寻找最优解,在需要的时候破土而出、不断生长。在我看来,偷懒并不是什么都不做,而是一种帮助我去提升效率的意识,让我在工作中主动去探索和尝试更高效的方式和更快速的捷径。
这个过程中,无论是未达预期的不甘,还是意料之外的惊喜、不虚此行的酣畅,最终都化作了源源不断的养分,激励着我在一次次思考创新、实践验证、推陈出新中越战越勇,助力业务成功!
来源:心声社区
· END ·
免费领 取 Autosar入门与实践资料包!
扫码添加小助手回复“进群”
和电子工程师们面对面交流经验