图片
图片
整理 | 钰莹、核子可乐
近日,华为心声社区时隔 5 年再次转发华为创始人兼总裁任正非 2016 年签发的邮件《华为到该炸掉研发金字塔的时候了》,引发了很多开发者对过去五年改革成果的关注。
时隔五年,华为研发金字塔情况如何?

近日,华为心声社区时隔 5 年再次转发华为创始人兼总裁任正非 2016 年签发的邮件《华为到该炸掉研发金字塔的时候了》,这篇文章是一位华为内部署名“泥瓦匠”的海归程序员写下的,从组织、流程、环境、工具等四方面怒斥了在华为做研发之不易,此文被转发到华为心声社区后引起了激烈讨论,更惊动了任正非本人。

当时,任正非给出的评语是:在技术工作的客气是毒品,直面的批评、争论才是良药。

该作者曾在硅谷工作,接触过世界级的开发模式。在其进入华为几年间,和几个做企业业务的产品线有些合作,在此过程中感到华为公司在软件产业的差距还比较大;和中国领先的互联网产品相比,在易用性、贴近用户和产品快速迭代等方面也落后不少。在软件研发领域存在不少问题,这些问题导致华为的 IT 软件产品质量比较低下、开发效率低、产品交付周期漫长,很是让人痛心。具体而言,包括组织、流程、环境、工具四个方面。

即便时隔五年,不少开发者依旧对这篇文章中提到的问题深有同感。比如,在组织层面,架构设计 SE 应与开发分离,一些架构师和专家基本不懂开发;开发者大多为低级别,比较难有技术积累,很多开发者都认为只做开发没有职业前途,都希望成为管理者;多头管理,多头指挥,让开发无所适从,沟通成本巨大;组织复杂,中间层较多,沟通成本高。

在流程上,IPD 流程不太适合需要快速迭代的软件;安全红线的目的是防止产品出现安全漏洞,初衷是好的,但执行起来相对僵化,且效率较低。

在环境上,开发员工长期被困于上述流程、组织问题和客户支持的压力下加班加点,几乎没有时间抬头看路;技术任职资格效果不佳,传帮带困难。

在工具上,研发办公环境落后;相应工具差距非常大;员工受限于公司内网的权限及英文水平习惯通过百度获取知识。

《华为到该炸掉研发金字塔的时候了》及评论:

https://xinsheng.huawei.com/cn/index.php?app=forum&mod=Detail&act=index&id=6124499

五年前,这篇帖子就已经引起了管报、微信、心声社区网友的广泛关注和讨论。

五年后,依旧如此。有网友在最新的转发下面留言称:“回头看大部分问题依然存在,历史证明单独的改变某个领域是收效甚微的,需要把 KPI、目标统一变革”,“ 架构设计 SE 与开发分离,一些架构师与专家基本不懂开发 —- 这一点愈演愈烈”,“现在有些 SE 从来不看代码,也不管能不能实现,实现代价有多大,就靠着理论分析和 YY 来定方案,结果讲的挺好,一顿操作猛如虎,到了实现的时候发现方案不可落地,只能 MDE 和开发来填坑”……

回看五年改革,华为又做出了怎样的改变呢?

软件研发投入不停

2016 年,华为研发投入 764 亿元,占销售收入的 14.6%。

2017 年,华为研发投入 897 亿元,中国第一,全球第六。

2018 年,华为研发投入 113.34 亿欧元,中国第一,全球第五。

根据 2017 年的数据,华为研发人员约 8 万名,占公司总人数的 45%,累计获得专利授权 74,307 件。其中,90% 以上专利为发明专利。

在 2020 年的年报中,华为表示,坚持每年将 10% 以上的销售收入投入研究与开发,特别要加强基础研究与理论突破。近十年累计投入的研发费用超过人民币 7200 亿元。2020 年,华为研发费用支出为 1418.93 亿元,从事研发的人员约 10.5 万名。

在 2019 年任正非签署的公开信中提到:

二十年前的 IPD 变革,重构了我们的研发模式,实现了从依赖个人、偶然性推出成功产品,到制度化、持续地推出高质量产品的转变。至今为止,我们的产品和解决方案已经在 170 多个国家安全稳定运行,并因此积累和赢得了全球数万客户的信任。

……

我们要从最基础的编码质量做起,视高质量代码为尊严和个人声誉。 代码就像是高楼大厦的一砖一瓦,没有高质量的代码,可信的产品就是空中楼阁。我们要优化并遵循公司各种编程规范,遵从架构与设计原则,熟练使用各种编程库和 API,编写出简洁、规范、可读性强、健壮安全的代码。

我们要深刻理解架构的核心要素,基于可信导向来进行架构与设计。 在确保可信的前提下,要在性能、功能、扩展性等方面做好权衡;慎重地定义我们的模块与接口,真正做到高内聚与低耦合;我们要遵循权限和攻击面最小化等安全设计原则,科学设计模块之间的隔离与接口,提升安全性;低阶架构与设计要遵循高阶的架构与设计原则,在充分理解原有架构与设计的情况下,持续优化;我们要熟悉各种设计模式,重用公共成熟组件和服务,避免重复劳动。

我们要重构腐化的架构及不符合软件工程规范和质量要求的历史代码。 我们知道,再好的架构,其生命力也是有限的。随着时间的推移、环境的变化以及新技术、新功能特性的引入,架构也会腐化。面对腐化了的架构,要毫不犹豫地去重构它。同时主动以可信设计原则为导向,去重构不符合软件工程规范和质量要求的历史代码,提升软件架构的生命力。

我们要深入钻研软件技术,尤其是安全技术。 软件技术是我们打造产品的基本工具,技术是否先进,技术选择是否合理,将决定我们软件的高度;我们要深入学习架构与设计、编码、测试、安全、可用性、性能、维护性、体验等技术,并科学运用这些技术。

我们要遵守过程的一致性。 遵守适用的法律法规、遵循业界共识的标准、规范,确保规范到实现的一致性、代码到二进制的一致性。架构要符合架构原则,设计要遵循设计模式,代码要符合编程规范,最终做到需求与实现一致,达成各项对客户的承诺。我们只有脚踏实地做好每一步,才能真正打造出可信的高质量产品。

为此,我们要改变行为习惯,追求精品。我们要开放透明、积极和勇于揭示问题并主动推动改进。软件开发是一种创造性和艺术性的工作,需要充分发挥我们的聪明才智和潜力。我们要改变只重视功能结果、不重视代码质量的行为习惯,要严格遵守软件工程规范;改变被动的修修补补;改变碎片化知识获取,主动去学习提升并贡献经验、代码,形成共享知识库。 我们需要改变的行为和习惯还有很多,对绝大多数人来讲都将是一个痛苦的转变过程,会脱一层皮,但我相信大家能够迎接这种挑战。

更为重要的是,我们将通过变革形成一套适应上述变化的流程、组织与考核机制。 我们要完善并增强透明、可回溯和可审计的全流程管理机制,以可信的视角,从初始设计、完整构建到产品生命周期管理,全面提升软件工程能力和实践。我们将全面强化以 Committer 角色为核心的代码审核和提交机制,代码经过更加严格和系统的审核才能合入版本。为此我们将建立一支更高水平的 Committer 角色群体,负责软件架构的看护、代码的审核和提交,整体保障合入代码的高质量。我们要变革考核机制,要让架构设计好、代码写得好的人脱颖而出,对编程能力不满足要求的人给予帮助和培训。但任何人如果编写的代码长时间不能合入版本,将会被团队抛弃。

过去一百年来,世界上许多成功的公司都因不能适应变化而倒下。要适应外部变化,唯有自我进化,我们必须保持开放和持续变革。董事会已决定,全面提升软件工程能力与实践将以变革的方式来开展,由轮值董事长徐直军总负责,公司初始投入 20 亿美元,计划用 5 年时间,在 ICT 基础设施领域实现为客户打造可信的高质量产品的目标。 希望您支持并积极投入到这一伟大的变革。唯有如此,我们才能实现未来的愿景和使命:把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界。

五年间,华为成立 Cloud BU,加码云计算;布局 5G 和芯片研发;成立智能汽车 BU,并计划研发投资超过 10 亿美金。在受到美国的连续制裁之后,我们也看到了鸿蒙、方舟编译器、openEuler 等一系列自研产品的诞生。

重构从来不是一件容易的事情,这会涉及到相当多的部门和业务,而且重构相当于给正在行驶中的汽车换轮子,一定会发生很多问题。接下来的几年,华为软件研发可能还会处于持续改进之中。

以 Committer 为核心建立流程,这其实就是工程师文化的开端。一方面,这将有利于工程师地位的提升,另一方面,也可以改变外行领导内行的弊病。最重要的是,一个有良好工程师文化的大公司,必将吸纳更多技术人才的加入,也会得到更加良好的软件开发口碑。

Loading

作者 aiforum

发表回复