谷歌工程生产力团队(EngProd)

Posted by Shi Hai's Blog on July 16, 2024

一、背景

谷歌早期只有少数软件工程师负责开发、测试和发布软件。但随着用户规模的增长,工程师开始专注于特定角色,从而在开发过程中实现更大的规模:

  • 测试工程师(TE: Test Engineer):测试新产品和系统集成;
  • 发布工程师(RE: Release Engineer):将代码发布到生产;
  • 站点可靠性工程师(SRE: Site Reliability Engineer):24小时*7天的管理系统和数据中心。

测试工程师(TE)

TE最开始是非常依赖手动测试,但随着谷歌产品和服务的越来越多,手动测试拖慢了功能发布节奏,所以谷歌通过自动化测试来提升发布效率,在这个手动测试过渡到自动化流程中,Google开始出现两个独立的测试角色:

  • 测试工程师(TE: Test Engineer):专注于测试内容;
  • 测试软件工程师(SET: Software Engineer in Test):构建实现自动化所需的框架和软件包,发布了很多测试工具:GoogleTestMartin Proxy等,另外组织了一些外部的测试自动化峰会,如:GTAC

GTAC会议从2006年举办到2017年,经过这么多年的发展,GTAC实际成为了测试领域往前探索的标杆导向,但因为举办方在2017年考虑工程生产力和GTAC的关系,想对GTAC的内容、形式等进行调整,但一直没有再等来重新回归。

2017.07 GTAC和工程生产力的变革

通过这些努力,测试周期大幅度缩短,但因为开发周期的其他阶段效率没有提升导致整体发布效率没有提升,SET就对其他环节进行改进,如:扩展IDE、自动化发布验证、在线测试、开发人员效率测量等;因为SET工作内容的扩展,所以SET头衔被改为了SETI(Software Engineer in Tool&Infra),这个头衔也是大家投票选出来的,91%的人选择了这个头衔。

2016.03 从QA到工程生产力

二、工程生产力团队(EngProd)

  • 团队目标:工程生产力团队是为这个生态提供动力的学科。1000名软件工程师+10名EngPod工程师=10000名软件工程师
  • 三个顶层原则:效率、易用性、质量;(个人备注:易用性实际也是效率的一个维度)。
  • 团队成员画像:喜欢持续学习软件工程、喜欢尝试、不断学习打破常规的思维,能够编写代码及解决问题。

2018年的情况:2100名EngProd工程师,20亿行+代码,60k+的代码提交/每天,开发和EngProd工程师比例是18:1。

到目前为止,EngProd团队的岗位和岗位要求有:

  • 测试工程师(TE):提升测试覆盖率和质量、通过对复杂系统和产品的分解来提升开发和发布效率、并协调跨职能团队来合作;
  • 工具&基础设施软件工程师(SETI):设计和实现工具来提升开发生产效率;
  • 发布工程师(RE):设计和实现工具来提升发布效率;

Working on Google's Engineering Productivity team 谷歌EngProd团队门户网

参考文档