公司研发工程能力的高低直接影响公司的持久创新力和公司在市场上的做为。只有不懈追求卓越的工程能力,才可以带来长期的核心竞争力,才能为每一个用户、每一个企业客户以及整个社会创造价值。长期以来,百度在大量的软件开发经验中总结了许多优秀的工程实践,这些实践来自于公司工程标准和开发工具链的结合。通过长期团队观察和大量研发数据分析,咱们证实这些实践能够有效帮助提升软件开发效率和产品质量。前端
百度软件工程标准制定的目标是为了帮助研发团队持续提高工程能力。工程标准能够快速指导团队采用优秀的软件工程实践和研发工具,使其在研发效率或产品质量上得到提高。同时有了标准和规范,也可以更有效地衡量团队工程能力的水平,让各个团队可以更好地了解自身的工程能力现状,进而设定工程能力提高目标,不懈追求工程卓越。后端
白皮书但愿分享百度在软件工程标准、实践、度量和改进方面的经验,呼吁业界共同增强工程能力建设、研发工具投入、工程标准更新与工程素养提高,共同推动软件工程的发展。并发
百度软件工程标准是由百度DevOps TOC(Technical Oversight Committee)制定并发布的,而且随着公司工程技术的发展不断更新。 首先,DevOps TOC的委员普遍收集各个研发团队的优秀工程实践,以及工程标准实施的反馈,制定工程标准的第一版或修改意见草案。 而后TOC委员将草案提交至DevOps TOC进行充分讨论,若是TOC会议经过,就进行标准修改的公示,同步修改研发工具中的对应规则。同时收集各团队反馈和实际研发数据进行分析,来验证标准实施的效果,并继续准备下一轮的规则更新。less
分别介绍一下以上两个方面的内容:工具
百度公司的软件产品形态有多种,例如App,Browser,PC Client,SDK等。不一样的产品类型其研发过程及优秀实践也不尽相同。在编纂标准的时候,咱们将B/S类型产品的前端和全部类型产品的后端服务统称为Server类型;将Android, IOS的用户可访问的移动端代码称为APP类型,将打包成为移动端SDK的代码成为SDK类型。并根据以上三种类型(咱们正在制订自动驾驶的工程类型)来统一工程实践,这就引出了下面的概念--工程能力地图:开发工具
在每一类软件工程类型中,规则的制定团队定义了此类工程类型从需求和设计的管理,到开发,测试,发布的标准生命周期;不一样的工程类型维护不一样的生命周期。另外,咱们在生命周期的每一个阶段,也定义了不一样的工程实践,以下图:测试
Server类工程能力地图:ui
开发一个Server工程,须要通过需求、开发、代码准入、测试、上线&验证5个阶段; 在Server类的工程能力地图中,咱们定义了33个标准的工程实践: spa
App类工程能力地图:设计
开发一个App工程,须要通过需求、开发、代码准入、测试、灰度、发版6个阶段。在App类工程能力地图中,咱们定义了36个标准工程实践
SDK类工程能力地图
开发一个SDK工程,须要通过需求、开发、代码准入、测试、灰度、交付等阶段;在SDK工程能力地图中,咱们定义了34个标准实践
工程实施标准:
咱们按照团队采纳的深度,为上述地图中的每种工程实践定义了Average, Good, Excellent三种标准,在average的水平,咱们要求团队在采纳广度上达标;但若是团队为了实现good, excellent的表现,就须要在采纳深度上进行努力: 上述是对工程能力地图内容的简单介绍,若是你们对具体的规则以及百度内部实施案例感兴趣,能够在文章最后找到完整版本下载的地址。
经过不断修订工程标准、迭代工程工具落地优秀实践、收集研发数据并可视化工程能力,可使研发团队快速实施优秀工程实践,提高工程能力,进而提升团队开发效率,提升产品质量。
咱们观察了公司8个样本团队的工程实践落地进程和开发周期时间的变化。其中4个团队在观察期内按照本文的工程标准推动了若干工程实践的落地,另外4个团队工程实践作得不多且在观察期内没有推动新的工程实践落地。
咱们发如今选定的时间范围内(横坐标),推动工程实践落地的4个团队(图中高亮的颜色),其开发周期的移动平均值(下图的散点)成稳定降低趋势;没有推动工程实践落地的4个团队(图中背景部分),其开发周期主要成发散上升趋势。同时这8个团队在观察期内的团队人数、开发习惯等团队特征以及产品质量均没有显著变化。这说明工程实践可以对开发周期的缩短产生积极影响。
为了在更大范围内进一步发现工程标准、工程工具对研发效率和产品质量的影响,咱们对百度全部团队6个月时间段内的研发数据进行了定量分析后,获得以下三个结论:
以上分析结论进一步佐证了优秀的软件工程实践可以缩短开发周期
对于一个科技公司来讲,保持并不断提高工程能力是最重要的。百度一直坚持培养工程师的工程素养,建设高效的工程工具,持续推进工程能力提高,Relentless Pursuit of Engineering Excellence,永无止境的追求工程卓越。本白皮书介绍了目前百度工程的标准和工程实践,但愿做为软件工程的实践者为同行或研究机构提供一个参考样本,促进交流,共同提升。百度工程标准也必然会随着公司内外工程技术的不断革新而持续升级。百度软件工程标准但愿及众家之所长,合众人之智慧,以实践为检验标准,促工程能力打造科技产品,用科技让复杂的世界更简单。
关注"百度效率云官方公众号", 在输入框中输入"工程能力白皮书",获取白皮书的网盘地址