百度工程能力白皮书-Relentless pursuit of engineering excellence-LMLPHP

工程能力对百度的意义:

公司研发工程能力的高低直接影响公司的持久创新力和公司在市场上的作为。只有不懈追求卓越的工程能力,才能够带来长期的核心竞争力,才能为每个用户、每个企业客户以及整个社会创造价值。长期以来,百度在大量的软件开发经验中总结了许多优秀的工程实践,这些实践来自于公司工程标准和开发工具链的结合。经过长期团队观察和大量研发数据分析,我们证明这些实践可以有效帮助提高软件开发效率和产品质量。

制订工程能力白皮书的目标和意义:

百度软件工程标准制定的目标是为了帮助研发团队持续提升工程能力。工程标准可以快速指导团队采用优秀的软件工程实践和研发工具,使其在研发效率或产品质量上获得提升。同时有了标准和规范,也能够更有效地衡量团队工程能力的水平,让各个团队能够更好地了解自身的工程能力现状,进而设定工程能力提升目标,不懈追求工程卓越。

白皮书希望分享百度在软件工程标准、实践、度量和改进方面的经验,呼吁业界共同加强工程能力建设、研发工具投入、工程标准更新与工程素养提升,共同推进软件工程的发展。

修订规则

百度软件工程标准是由百度DevOps TOC(Technical Oversight Committee)制定并发布的,并且随着公司工程技术的发展不断更新。 首先,DevOps TOC的委员广泛收集各个研发团队的优秀工程实践,以及工程标准实施的反馈,制定工程标准的初版或修改意见草案。 然后TOC委员将草案提交至DevOps TOC进行充分讨论,如果TOC会议通过,就进行标准修改的公示,同步修改研发工具中的对应规则。同时收集各团队反馈和实际研发数据进行分析,来验证标准实施的效果,并继续准备下一轮的规则更新。


工程能力白皮书的内容

  • 百度软件工程类型
  • 每种工程类型的工程能力地图
  • 地图中每种实践的实施标准

分别介绍一下以上两个方面的内容:

百度软件工程类型:

百度公司的软件产品形态有多种,例如App,Browser,PC Client,SDK等。不同的产品类型其研发过程及优秀实践也不尽相同。在编纂标准的时候,我们将B/S类型产品的前端和所有类型产品的后端服务统称为Server类型;将Android, IOS的用户可访问的移动端代码称为APP类型,将打包成为移动端SDK的代码成为SDK类型。并根据以上三种类型(我们正在制订自动驾驶的工程类型)来统一工程实践,这就引出了下面的概念--工程能力地图:

工程能力地图:

在每一类软件工程类型中,规则的制定团队定义了此类工程类型从需求和设计的管理,到开发,测试,发布的标准生命周期;不同的工程类型维护不同的生命周期。另外,我们在生命周期的每个阶段,也定义了不同的工程实践,如下图:

Server类工程能力地图:

开发一个Server工程,需要经过需求、开发、代码准入、测试、上线&验证5个阶段; 在Server类的工程能力地图中,我们定义了33个标准的工程实践: 

百度工程能力白皮书-Relentless pursuit of engineering excellence-LMLPHP

App类工程能力地图:

开发一个App工程,需要经过需求、开发、代码准入、测试、灰度、发版6个阶段。在App类工程能力地图中,我们定义了36个标准工程实践 

百度工程能力白皮书-Relentless pursuit of engineering excellence-LMLPHP

SDK类工程能力地图

开发一个SDK工程,需要经过需求、开发、代码准入、测试、灰度、交付等阶段;在SDK工程能力地图中,我们定义了34个标准实践 百度工程能力白皮书-Relentless pursuit of engineering excellence-LMLPHP

工程实施标准:

我们按照团队采纳的深度,为上述地图中的每种工程实践定义了Average, Good, Excellent三种标准,在average的水平,我们要求团队在采纳广度上达标;但如果团队为了实现good, excellent的表现,就需要在采纳深度上进行努力: 百度工程能力白皮书-Relentless pursuit of engineering excellence-LMLPHP 上述是对工程能力地图内容的简单介绍,如果大家对具体的规则以及百度内部实施案例感兴趣,可以在文章最后找到完整版本下载的地址。

内部实施成果

通过不断修订工程标准、迭代工程工具落地优秀实践、收集研发数据并可视化工程能力,可以使研发团队快速实施优秀工程实践,提升工程能力,进而提高团队开发效率,提高产品质量。

我们观察了公司8个样本团队的工程实践落地进程和开发周期时间的变化。其中4个团队在观察期内按照本文的工程标准推进了若干工程实践的落地,另外4个团队工程实践做得很少且在观察期内没有推进新的工程实践落地。

百度工程能力白皮书-Relentless pursuit of engineering excellence-LMLPHP

我们发现在选定的时间范围内(横坐标),推进工程实践落地的4个团队(图中高亮的颜色),其开发周期的移动平均值(下图的散点)成稳定下降趋势;没有推进工程实践落地的4个团队(图中背景部分),其开发周期主要成发散上升趋势。同时这8个团队在观察期内的团队人数、开发习惯等团队特征以及产品质量均没有显著变化。这说明工程实践能够对开发周期的缩短产生积极影响。

为了在更大范围内进一步发现工程标准、工程工具对研发效率和产品质量的影响,我们对百度所有团队6个月时间段内的研发数据进行了定量分析后,得到如下三个结论:

  • 团队采用的工程实践数量越多,其开发周期越短;
  • 团队工程实践做得程度越深入,其开发周期也越短。
  • 团队人数越多,实施工程实践对缩短开发周期的作用就越大。

以上分析结论进一步佐证了优秀的软件工程实践能够缩短开发周期

未来与展望

对于一个科技公司来说,保持并不断提升工程能力是最重要的。百度一直坚持培养工程师的工程素养,建设高效的工程工具,持续推动工程能力提升,Relentless Pursuit of Engineering Excellence,永无止境的追求工程卓越。本白皮书介绍了目前百度工程的标准和工程实践,希望作为软件工程的实践者为同行或研究机构提供一个参考样本,促进交流,共同提高。百度工程标准也必然会随着公司内外工程技术的不断革新而持续升级。百度软件工程标准希望及众家之所长,合众人之智慧,以实践为检验标准,促工程能力打造科技产品,用科技让复杂的世界更简单。

下载方式:

关注"百度效率云官方公众号", 在输入框中输入"工程能力白皮书",获取白皮书的网盘地址

百度工程能力白皮书-Relentless pursuit of engineering excellence-LMLPHP

08-29 01:57