贝斯特

钢厂幼伙在菊厂 ,能炼出怎么的火花  ?

钢厂幼伙在菊厂 ,能炼出怎么的火花  ?

史恭标

日期: 2024-04-17
从钢厂到“菊厂”

史恭标

2021年7月 ,我走出校门 ,走进华为漯河钻研所的大门 ,成为了一名华为人 。


我硕士学的是节造工程专业 ,主攻模式鉴别 。单一点说 ,就是利用各式的“相机”(如光学相机、激光雷达等)与电脑软件算法包办身眼去自动观察、鉴别观测对象 。其间 ,我随着导师“上山下厂” ,忙得不亦乐乎 。在与某钢厂的合作项目中 ,我在学堂忙乱了大半年 ,又驻守现场呆了幼半年 ,带着安全帽和现场工人们同吃同住同干 ,成功搞定了废钢装卸自动化的大项目 。我们利用设计出的软件与算法 ,通过高精相机和激光雷达传送的实时数据 ,精准鉴别废钢地位 ,指挥行车前后移动、定点抓取和装车 ,从而实现无人化、自动化废钢装卸 。正是有了这次软件工程的实战经验 ,在参与华为软件岗的校招时 ,我才顺利通过笔试和口试 ,拿到了offer 。


ed8818e8cc64fb1d7b1df7cb065a9200.png

01
“学院派”代码和9张问题单

报到后 ,我正式参与“华为乾坤”设备性命周期治理团队 。来到部门 ,我才知路 ,华为乾坤是一款面向行业客户的网络产品 ,可以为客户提供安全靠得住的云服务能力 。我地点的团队掌管开发设备的治理平台 ,通过该平台能够让客户在云上便捷、急剧地治理本地网络设备 。


入职后 ,在组内一多大佬的携带下 ,我起头进建有关的基础知识 。急性子的我并不满足于每天单调的操练 ,在我苦苦恳求下 ,我拿到了工作生涯中第一个需要:支持分歧客户 ,配置相应的操作权限 。


“权限配置  ?这也不难 。  不等师父交代细节 ,我就急吼吼地直接上手撸起代码 ,短短三天就洋洋洒洒写出了两千多行代码 。我信心满满地按下“commit”(确认)按钮 ,把代码提交给SE(系统工程师)常建强 。


“强哥 ,我需要写好了 ,你助忙看一下!”我走到强哥身边兴奋地说路 。强哥一惊:“幼伙子很不错嘛 ,速度很快呀!”他笑着打开我的代码 ,我则站在一旁 ,静待他下一波的夸奖   ?戳嗣涣椒种 ,强哥脸上的笑容起头凝固 ,眉头越来越紧:“哎呀 ,你这个代码很学院派啊 ,一下子还有点看不懂咯!”我嘿嘿一笑 ,心想:“我写的代码 ,哪是这么容易就被你看懂的!”强哥挥挥手让我先回去 ,低头持续钻研起来 。


第二天一早 ,我在办公室迎面见到了强哥 ;姑坏任铱 ,就听到他说:“我昨晚看了一遍你的代码 ,你注意下批注的代码审阅定见 。”


“有这么多问题吗  ?必要你看一晚  ?”我内心嘀咕着 ,不解地打开电脑 ,一下子被满屏的审阅定见整蒙了 :“定名不好”“可读性差”“抽象提取 ,预防霰弹式批改”“天堑前提思考不及”……我有些不折服 ,对付着改了几处问题 ,就草草提交了代码 ,心想:“这都是幼问题嘛!重要职能没问题 ,这不就行了!”


但很快 ,问题单就像冷冷的冰雨狠狠地砸向我 。转测后 ,我“喜提”了9张问题单 ,我的第一个需要也名列当期转测质量倒数榜单的“榜首” 。我起头狼狈地批改一张张问题单 ,我也逐步发现正是由于我不屑于更正那些强哥指出的“幼细节” ,才引发一系列bug 。我不禁责怪自己太“年轻” ,也顿悟:“学院派”可能并不是一个褒义词!在校期间 ,我写代码历来是“高歌猛进” ,大无数情况只验证可行性 ,很少思考代码的不变性与机能 ,更不会关注客户的现实使用场景 。


我像是泄了气的皮球 ,一功夫没了劲头 。强哥似乎看穿了我的降低 ,走过来慰藉我:“年轻就不要怕失败 ,更何况这都不算什么失败!”汲取了这次教训 ,我起头关注代码质量和规范 ,安下心来 ,扎扎实实地把iLearning上的《软件架构设计》《代码坏味路》《开发者自测试》等课程进建了一遍 。我越发把稳细节、器沉代码架构和质量 ,从代码设计到开发 ,我都自动与SE和测试的同事们沟通 ,我还会在写完代码后做好充分的自测 。当真批改好9张问题单后 ,这个需要总算经受住了测试的严格考验 。


6409f932517554fb2f2e41977edb6fc5.png

乾坤云设备性命周期治理团队合影(左一为作者)

02
打造“端上安全卫士”

随着高级威胁、勒索病毒的日益疯狂 ,华为乾坤团队规划了“云-边-端”协同的纵深防御系统 ,能通过壮大的云上安全大脑 ,协同天堑网络设备与终端安全软件 ,为客户提供安全的网络环境 。


其中 ,“端”是指终端安全EDR(终端防护与响应) ,是一款装置在终端电脑上的杀毒软件 。分歧于传统杀毒软件“被动挨打”的防护思路 ,我们能够通过云端威胁谍报、机械进建、异常行为分析等方式 ,自动发现内表部安全威胁 ,并自动化阻止、取证、补救和溯源 ,从而有效保险网络安全 。


2021年下半年 ,为加快EDR研发进度 ,部门抽调了各领域专家和骨干组成终端防护预研幼组 。其时 ,“端”侧安全还没有落地 ,各人都没佑装端上安全卫士”开发的经验 ,面对未知的领域都有些发怵 。想到之前在钢厂实习时我做过类似的开发 ,我鼓起勇气向时任乾坤云终端安全团队的掌管人王亮请缨:“我以前做过一些端侧软件 ,要不我来试试吧!”


正本 ,我还不安亮哥会由于我是个初出茅庐的幼兵而犹豫 ,没想到他直接点了头:“太好了 ,居然是‘初生牛犊不怕虎’!团队在这个新战场上还没有太多的技术堆集 ,这件事做起来注定会很难题 ,但我相信只有你能扎进去、好好干 ,咱肯定能做出成就!”


亮哥的激励让我劲头十足 ,怀着既兴奋又忐忑的表情 ,我随即投入到“端侧安全」剽个新战场 。仔细钻研后 ,我发现这件事约有我最初想的那么单一:从软件的装置部署到网络通讯 ,再到主题的采集、指令执行的能力 ,甚至整个软件工程的编译构建 ,所有都将是从零起头 。一时之间 ,我竟然迷茫到不知从何下手 。


静下心来仔细想想 ,我又给自己打气:我背后还有一支壮大、靠谱的行列 。有什么问题 ,边问、边学、边解决就好了!调整好心态 ,我起头一壁履历业界产品的职能和业务场景 ,一壁钻研同类开源产品的技术实现 。


通过亮哥的推荐 ,我还辗转找到公司安全网关部门的张伟双、软件锻练杜鹏和李钊等技术大佬 ,自动进建、相识产品的技术道理和实现细节 。那段功夫 ,我的脑壳里装满了“若何保障网络通路的安全”“怎么第一功夫采集到攻击者的恶意行为”“怎么高效地执行云上杀毒指令”……等一系列问题 。为了能第一功夫约到专家 ,我蹲点等着专家的WeLink头像“变绿” ,到专家工位“围追堵截” ,甚至厚着脸皮约着专家去撸串 ;嵋槔艘淮斡忠淮 ,肉撸了一串又一串 ,手上的难题也终于一个又一个被攻克 。


其中 ,有一个问题让我印象深刻 。在开发勒索行为检测这一职能时 ,我们发此刻某些机械上的检测延长极度高 ,夸大到勒索行为产生5分钟后 ,贝斯特软件才提醒自动拦截 ,但这显然已经是“马后炮”了!


0f2b07a5fc2bd215439db150ceac2ca4.png


延长功夫这么久 ,意味着防勒索职能已经失去意思 ,我们必必要攻克这一技术难题 。我们团队重新到尾排查下来 ,发现是“事务上报机能不及”导致了如此大规模的延长 。勒索软件一秒钟可能产生上千条异常事务 ,但云侧上传接口每秒最多允许我们挪用十余次 ,这是百倍的机能差距 。打个譬喻 ,这就像忙乱的高速公路上忽然出现一个“龟速”收费站 ,只允许车辆慢慢通过 ,而后面又有车辆源源不休地涌入 ,顿时就会出现几公里的“大型堵车现场” 。


问题看上去很单一 ,我提出了扩建“收费站”的解决法子 。然而 ,专家很快就驳回了这个思路 ,由于扩大的成本难以估计 ,会影响产品的整体竞争力 。这个问题只得另想他法 。


问题无解 ,放工后 ,我们一行人结伴前往地铁站 。


“高速路上堵车 ,收费站不给力是一方面 ,但路上的车是不是也太多了  ?若是不能刷新收费站 ,那有没有法子削减车的数量  ?”杜锻练在月台上提出了自己的设法 。


“但是 ,‘车’的数量怎么节造呢  ?有些机能很好的电脑 ,勒索病毒一秒钟就能够加密几百个文件 ,产生上千个事务 ,这些事务都得上报 ,这样能力正确判断出是否有勒索病毒 。”我细细想了想 ,无奈地回路 。


“那若是做一个分类器 ,先把这些‘车’归归类 ,做一些初步的信息提炼 ,有没有可能削减事务的数量  ?”杜锻练持续分析路 。


“这个路子注定能够 ,但是我们端侧的分析模型还不健全 ,不具备信息提炼的能力……”我叹了口气 ,思路起头有些混乱 。


聊着聊着 ,地铁进站的播报响了起来 。杜锻练嘿嘿一笑:“这会晚顶峰 ,路上注定堵死了 ,好在坐地铁 。”


嗯  ?我脑中灵光一现:若是我们也让那些“车”去坐“地铁” ,是不是就能够大批量、定时达到主张地  ?


有了这个设法 ,我立马和杜锻练会商起来 。巨量的事务若是依照挨次一个个上报到云上 ,必然会造成通路拥挤 ,但若是我们建一辆按时启动的“地铁” ,让它们都按班次运行 ,一次就能够运送近千条数据 ,应该就能解决此刻的困境!第二天 ,我们起头尝试这一解决规划 ,居然有戏!后续 ,为了更充分地提高机能 ,除了“按时启动” ,我们还造订了“车满即走”的数据发送战术 ,进一步预防了高延时拦截的狼狈 。


最终 ,我成功实现了挑战工作 ,顺利交付了初版端侧软件 。当一个恶意过程在靶机上产生高级威胁时 ,贝斯特终端软件瞬间能采集到它的行为信息 ,并上报给“云上安全大脑” 。随后 ,安全大脑通过度析研判 ,迅速下达措置指令 ,收到指令的终端软件立即阻断恶意行为 ,并能将恶意过程隔离在安全区内 ,成功;ち酥斩松璞傅陌踩


在这个新战场上 ,初出茅庐的我首战得胜 ,急剧成长 ,荣获了华为漯河钻研所“年杜着秀新员工”的荣誉 ,也成为了一名Committer(代码提交者) 。这些荣誉和责任 ,更让我对软件开发维持敬畏心 ,时刻占有对索求未知领域的无限周到与勇气 ,充斥持续进取、持续成长的动力 。


9e1defdd55aea66fc8a53c2f055528af.png

漯河钻研所优良新员工颁奖(右二为作者)

03
匠心打磨代码 ,成为一名卓越工程师

2022年上半年 ,随着业务的急剧推动、开发投入力量增多 ,贝斯特软件代码量起头飞速膨胀 ,从一路头的“精彩幼巧”变得痴肥起来 。更令我们头疼的是 ,它似乎慢慢造成了一间“破败的屋子”:代码分层混乱、业务间耦合严沉 ,上新增职能时必必要极度幼心 ,一不把稳就会“牵一发而动全身” 。在版本月度迭代中 ,时时要先花上半个月建复旧bug ,再花半个月“写出”一堆新bug ,这种情况让我极度抓狂 。这些痴肥、甚侄裣癌“丑恶”的代码 ,我越看越不好看 。因而 ,我刻意来一次彻底“翻新”:沉构业务  ?榇耄


我将这个斗胆的设法通知PL(项目掌管人)后 ,他震惊后仰:“够斗胆 。〕凉刮抟墒怯蟹缦盏 ,你要思虑好两个问题 ,已有的职能怎么保障正常  ?新代码的质量怎么保障  ?”


还记得 ,软件锻练李钊教员曾为我解答“什么是好代码”的猜疑 ,这个答案我一向服膺:“首先 ,让人看得不爽的代码通常都不是好代码!你看得不爽时 ,八成写代码的人的思路也不畅达 。其次 ,好测试的代码通常都是好代码!好测试就意味着分层合理、职能内聚 ,并且测试周全的代码也很少出bug!”


记起钊哥的领导 ,我瞬间有了方向 。首先 ,我把我所掌管的业务  ?槟谒写攵嫁哿艘槐 ,一壁理解一壁画出业务流程图 ,将让我感应“不爽”的代码全纪录下来 。接下来 ,我起头梳理哪些流程沉复、哪些分层不合理 ,哪些处所能够补充测试用例……最后 ,我将这份“沉构”思路整顿成文档 ,分享到组内 ,让各人一路助忙审核优化 。


反复打磨之后 ,我起头正式着手沉构 。这次 ,我打算选取TDD(测试驱动开发)模式编写代码 。我着沉思考了业务的使用场景 ,依此编写测试用例 ,在测试用例跑通后再沉写内部逻辑 ;艘桓龆嘣碌墓Ψ ,我成功将数据采集、指令执行两大职能的架构底座抽取了出来 ,沉新助“屋子”打好了靠得住的“新地基” 。代码写完后 ,我还拉着软件锻练一路反复优化 ,针对沉构的代码逐咬文嚼字地反复调整……


沉构代码交付后 ,新问题引入为零 ,测试覆盖率由原来的不及20%提升到80% ,软件机能也有了进一步的提高 ,我们还获得了总架构师的点赞 。


有了这个“地基” ,我们在拓展新业务时简直轻松了不少 。截至目前 ,这个“地基”已经支持20多项业务安稳且急剧发展 ,它还让我荣获2022年ICT产品与解决规划“卓越工程师”的荣誉 。在这次的沉构中 ,我也将源自《代码整洁之路》、公司提倡的clean code步骤论付诸实际 ,学到了好多器材 ,将来也会身段力行地持续钻营好代码、输出好代码 。


4306d7b56c411bef897601dfa258cfb9.png

ICT产品与解决规划“卓越工程师”


入职两年多 ,怀着对软件的酷爱 ,怀着对“工程师」剽一角色的强烈认可 ,我从一个“学院派”的软件幼白慢慢成长为一名“卓越工程师” ,这个过程中有压力、有崎岖、有支出 ,更有收成 。正如《软件整洁之路》的作者Bob大叔所说:“做软件就像‘画画’ ,编程的性质是一门工艺 。”我但愿我能一向当好一名工匠 ,用手中的键盘一丝不苟地雕镂手中的代码 。


我相信 ,我会心怀酷爱 ,用代码勾画出占有无限可能的将来!

a19b48362bb705c8b3f2c6435ab9c68e.png


文章起源:心声社区


选择贝斯特 ,选择专业

关注公家号
查看更多分享内容

贝斯特 - 全球最奢华的游戏平台
【网站地图】