海博论坛hibet

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

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

史恭标

日期: 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分钟后,海博论坛hibet软件才提醒自动拦截,但这显然已经是“马后炮”了!


0f2b07a5fc2bd215439db150ceac2ca4.png


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


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


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


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


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


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


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


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


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


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


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


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


9e1defdd55aea66fc8a53c2f055528af.png

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

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

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


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


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


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


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


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


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


4306d7b56c411bef897601dfa258cfb9.png

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


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


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

a19b48362bb705c8b3f2c6435ab9c68e.png


文章起源:心声社区


选择海博论坛hibet,选择专业

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

海博论坛·hibet(中国)官方网站
【网站地图】