全栈团队的角色构成
0. 引言
本专栏一直在讲基于 Web 的全栈工程师,这里的"全栈团队"并非指一群全栈工程师组成的团队,而是说一个团队具备较多方面、较多层次的技能,联合协作去解决某一具体领域的问题。本文结合作者在华为、Amazon、Oracle 三家公司的实际经历,梳理全栈团队中常见的角色构成及其协作方式。
1. 华为:基线团队与定制团队
像华为这样的公司做产品,最大的优势就是"全面":具备足够的人力和财力去打造全渠道、完整体系的解决方案。整个产品团队后来分为基线团队和定制团队两部分:
- 基线团队:打造具备基础功能的产品,是产品交付的基础;
- 定制团队:有多个,将基线版本根据不同的业务需求定制化(功能裁剪、添加、专项优化),卖到不同的国家和市场。
当时基线产品研发团队中有几个核心角色:
| 角色 | 职责 |
|---|---|
| 项目经理 | 项目总负责人,跟随项目走,一个版本(约一个多月)可指定不同项目经理;基层项目经理多为程序员出身,对技术决策有较大影响力 |
| SE(系统工程师) | 相当于现在大多数公司的产品经理:从市场部门承接需求,做业务系统的"系统性设计",不关心技术实现但精通业务流程;一个项目一般只有一个 SE |
| 测试 | 华为早期测试和开发在组织架构上完全分开,通过"转测试"流程交付;测试与开发比例约 1:2 到 1:3 |
| 架构师 | 分平台架构师和解决方案架构师,像幕后高手,只在重大项目中带领 SE 搞定架构设计 |
| UCD 工程师 | 与用户沟通紧密,主导界面设计和使用设计,输出设计方案文档 |
| 美工 | 负责设计的美工将方案落实为 psd 设计文件,负责快速原型的美工再落实为 HTML 原型 |
| QA | 不做测试,专门监管流程质量,检查测试覆盖率、圈复杂度、代码重复率等指标 |
| 开发 | 人数最多的程序员大军,按功能特性划分任务而非软件层次,技术栈上看是真正的"全栈" |
不同公司中不同角色的"地位"有差异:腾讯产品经理话语权更大,Google 工程师占主导,华为市场部门是老大,SE 是二者沟通的桥梁。
2. Amazon:Dev Manager 与 SDE
在亚马逊,作者经历了两个较大的全栈团队——销量预测团队和成本利润计算团队。二者实时性高、数据量大,技术栈涉及机器学习、大数据处理、分布式任务管理、数据可视化等,角色构成也较为丰富:
| 角色 | 职责 |
|---|---|
| Dev Manager | 团队经理,多数是软件工程师出身;一般规模的项目由其牵头,小项目由资深工程师自己牵头,项目经理角色并不常提起 |
| TPM(Technical Project Manager) | 担任产品经理角色,负责业务需求的分析、设计和跟踪;跨团队项目由专职 TPM 负责协调 |
| SDE(Software Development Engineer) | 主力军也是粘合剂,从需求澄清、功能分解、任务跟踪到开发、测试、部署、维护全部承包;亚马逊戏称"Someone Does Everything" |
| WDE(Web Development Engineer) | 类似国内"前端工程师"的角色,当前端工作量需求特别大时规划招聘;内部对其衡量标准颇受争议 |
| Data Analyst | 数据分析师,与软件工程师比例约 1:3,SQL 熟练,经常扎到数据堆里调查业务问题 |
| Data Scientist | 更多涉足机器学习,基于数据建立模型;戏称"Data Scientist is Data Analyst in California" |
| Program Manager | 擅长和用户打交道,回答用户问题,很少负责用户需求 |
| Supporting Engineer | 做运维(Ops)的活儿,在 SDE 干不过来时(尤其非工作时间)处理线上问题 |
亚马逊的团队普遍很小,每个团队只有几个人,被称为"Pizza Team"——团队的人用两张披萨就能喂饱,规模扩张到超过这个程度就要拆分。
有趣的是,亚马逊大多数团队没有设置 QA 职位:SDE 把测试的活儿承包了,也把大部分运维的活儿干了,通过运维的痛苦来反哺开发,即所谓"吃自己的狗食"(Eat Your Own Dog Food)——自己开发的坑自己要半夜爬起来响应解决。
3. Oracle:SDE 承担更多
作者所在的 OCI 团队依然是一个全栈团队,主要角色类型与 Amazon 差不多。但由于团队普遍比较新,一些以往需要专职角色干的活儿,目前还是由 SDE 来完成。
4. 小结
从华为的 SE 驱动的层次化分工,到 Amazon 的 SDE 全栈承包 + Pizza Team 模式,再到 Oracle 的新团队 SDE 承担更多,不同公司的全栈团队在角色构成上差异明显:大型公司分工细致(项目经理、SE、架构师、QA、测试各司其职),而互联网风格团队则更强调工程师的"全栈"能力,让开发自己承担测试与运维。团队的文化决定了角色构成,角色构成又反过来塑造工程师的能力模型。
下一章我们将讲解渐进式增强与优雅降级——一种让网站在不同环境(有无 JavaScript、新旧浏览器)下都能保持核心功能可用的前端设计理念。