刚入职那会儿,我也以为写代码就是敲键盘,改Bug就是修修补补。直到进了华为这种体量的公司,我才发现,所谓的“华为软件开发流程”根本不是你想的那样。
很多人一听这套流程,脑子里全是厚厚的文档、无尽的会议、还有永远在审批的OA。
说实话,刚接触时我也烦过。
觉得这是在搞形式主义,是在浪费时间。
但干了三年,带过几个项目,我才明白,这玩意儿能活下来,是有它的狠道理的。
先说个真事儿。
去年我们组接了个物联网网关的项目,客户催得急,说两周上线。
项目经理老张没急着让开发动手,而是拉着产品、测试、运维开了整整两天的需求评审会。
我当时就在下面打瞌睡,心想这能有多难?不就是个数据采集嘛。
结果第二天,产品经理甩出一张图,指着某个边缘场景说,如果断网超过5分钟,数据怎么存?
我当时就懵了。
我们之前只想了正常联网的情况。
这就是华为流程里最让人头疼,也最值钱的一点:极端场景全覆盖。
它逼着你把那些“不可能发生”但“发生了就死定”的情况,提前想清楚。
所以,第一步,别急着写代码,先死磕需求。
不是那种“大概齐”的需求,而是把每一个异常分支都列出来。
我见过太多项目,因为需求没对齐,后面返工返到怀疑人生。
在华为,需求评审不通过,开发有权拒绝进入编码阶段。
这不是推诿,这是保护。
第二步,代码规范不是摆设。
别觉得这是大公司才搞的虚架子。
我们用的代码扫描工具,一旦发现有内存泄漏风险,或者逻辑死循环的可能,直接阻断合并。
刚开始我也抵触,觉得影响效率。
直到有一次,我自己写的模块因为一个变量作用域没搞清楚,导致线上服务间歇性崩溃。
排查了两天,最后发现是个低级错误。
要是当时有规范检查,半小时就能定位。
所以,严格执行代码审查(Code Review)是必须的。
别怕丢脸,被大佬挑刺是常态。
但挑刺的过程,就是你成长最快的过程。
第三步,测试左移。
很多团队是开发完了再交给测试,然后测试提Bug,开发改,测试测,改完再测。
循环往复,最后上线前全是坑。
华为的流程强调测试用例要在设计阶段就介入。
甚至,测试人员会参与需求评审,从可测试性的角度提意见。
这意味着,在写第一行代码前,测试思路已经成型了。
这样上线后的Bug率,能降低至少30%以上。
这不是我瞎编的,是我们组上个季度的真实数据。
当然,这套流程也有它的弊端。
比如,沟通成本极高。
一个小小的功能变更,可能要拉齐五个部门的人。
有时候为了一个接口定义,能吵到下班。
但你要知道,在大型分布式系统里,一致性比速度更重要。
你一个人快,整个团队都跟着慢。
所以,适应这套“华为软件开发流程”,核心不是学会填表,而是学会协同。
你要明白,每一个流程节点,都是为了消除信息不对称。
最后,给想进大厂或者做大型项目的同学几个建议。
第一,别抗拒文档。
文档不是写给领导看的,是写给未来的你和队友看的。
六个月后,你绝对记不清当初为什么这么设计。
第二,拥抱自动化。
人工测试是填坑,自动化测试是挖坑。
把重复的劳动交给机器,你才能腾出手来思考架构。
第三,保持敬畏。
代码是易碎的,系统是脆弱的。
每一次发布,都要如履薄冰。
这套流程看似笨重,实则是在用确定性对抗不确定性。
在这个充满变数的行业里,确定性就是最大的竞争力。
别嫌它啰嗦,等你被线上故障折磨得睡不着觉时,你会感谢当初那些繁琐的检查点。
毕竟,成年人的世界,没有容易二字,只有责任二字。
希望这篇大白话,能帮你透过现象看本质。
少走弯路,就是最大的捷径。