北美科技公司对工程技术角色的区分
科普一下北美科技公司对工程技术角色的区分,比如 EM(Engineering Manager)、TPM (Technical Program Manager) 都代表什么意思,分工有什么不同?
通常北美的工程技术相关的职业分成以下五个类别:
- 开发工程师 SE / SDE(Software Engineer / Software Development Engineer)
- 工程经理 EM / SDM(Engineering Manager / Software Development Manager)
- 技术主管 TL / TLM (Tech Lead / Tech Lead Manager)
- 技术项目经理 TPM (Technical Program Manager)
- 产品经理 PM (Product Manager)
这些角色之间的差别很难描述,知名技术专栏 The Pragmatic Engineer 的作者,前 Uber 的工程经理 Gergely Orosz 写过一篇文章:《Engineering Leadership Skill Set Overlaps》,从三个维度来区分这些角色之间的差别,相对比较准确客观。
文章中这三个维度分别是:
- 战略对齐:明确组织的愿景、使命和战略;与团队工作在一起,保持战略上的一致,避免资源上的浪费;保持各团队之间信息通畅,处理好团队之间的依赖关系,让团队一起协作。
- 人员管理:确保团队健康,帮助团队成员成长,推动团队的执行。
- 软件开发:与生成产品代码直接相关的工作,比如系统设计、编码、代码审查、部署、监控等等。
虽然这三个维度不足以覆盖各个工程角色中的所有活动(比如行政、招聘),但确实可以很好的用可视化的方式来区分各个工程角色的差别。
让我们具体看一下各个角色的主要工作职责:
开发工程师 SE / SDE(Software Engineer / Software Development Engineer)
- 开发工程师主要以技术开发为主
- 资深的工程师会参与一些跨团队的协作,以及指导新手工程师
- 不会涉及人员管理
工程经理 EM / SDM(Engineering Manager / Software Development Manager)
- 工程经理则以人员管理为主,要花大量时间在团队建设和帮助员工成长上面
- 需要将组织的战略和团队以及团队成员对齐,确保团队做的事情和部门或公司的目标是一致的
- 要和产品经理、技术项目经理协作,参与项目管理,设定项目目标,制定项目计划,推动项目进展
- 软件开发相关的工作占比极少,通常只是参与技术决策和代码审查,即使参与开发也不应负责关键模块,否则容易成为团队瓶颈
技术主管 TL / TLM (Tech Lead / Tech Lead Manager)
- 技术主管会直接参与开发,和工程师相比比例要低一些,还要帮助团队做出技术决策
- 技术主管有少量的人员管理职责,以技术指导为主,一般不会涉及绩效、人事相关
- 技术主管会和产品经理协作推动项目进展,偏项目执行层面
技术项目经理 TPM (Technical Program Manager)
- 技术项目经理主要职责是管理推动跨多个团队的大型复杂项目
- 通常不涉及人员管理,除非是资深的 TPM 下面还带 TPM
- 要花大量时间和 stakeholders(利益相关方)沟通协作,从而推动项目进展
产品经理 PM (Product Manager)
- 产品经理需要将组织的战略转化成产品设计
- 产品经理需要花大量时间和 SDE、EM、TPM 一起协作,确保产品设计能被理解和执行
- 产品经理通常不涉及人员管理,除非是资深产品经理或产品总监,有直接下属
- 职责和角色的对应关系
除了上面说的软件开发、战略对齐和人员管理三种维度,还有一种更简单直接的区分方法是按照职责来划分,将职责划分成:项目管理 (Project Management)、人员管理 (People Management) 和技术 (Technical Leadership) 三部分。
- 工程经理(EM) 以人员管理为主,但是也会兼顾一部分的技术和项目管理
- 技术主管(TL) 以技术为主,兼顾少量项目管理和人员管理
- 项目经理(TPM) 以项目管理为主,不怎么参与人员管理和技术
以上就是通常北美的大型科技公司在技术公司工程团队中各个角色的介绍,以及区分。
不同的体量的公司中各个角色分别负责什么?
不同的公司由于团队规模不一样,所以角色划分也有所不同,上面的划分主要是针对大型科技公司的组织架构来划分的角色,对于中小公司其实没有那么细。比如创业公司老板什么都做,中小型公司没有 TPM(技术项目经理),只有大公司才会有专门的 TPM 去组织管理跨多个团队的项目。
如果我们把一个项目按照 WWHWW 拆分:
- Why? 为什么要做?
- What? 项目的目标是什么?做成什么样?
- How? 项目要如何完成?技术方案、系统架构是什么?
- When? 项目何时可以交付?Roadmap 和计划是什么?
- Who? 安排谁来做这个项目?
那么通常产品经理(PM)是负责解决 Why 和 What 的,解释清楚为什么要立项,要做成什么样。也就是我们通常说的立项和项目需求。
在确定需求后,工程经理(EM)就要负责去评估时间(When),安排人手(Who),和团队的工程师一起做出技术方案(How)并推动项目完成。通常 EM 只负责本团队的项目。
在大公司,一些复杂的项目需要多个团队一起协作,这种情况下单靠 PM 和 EM 是不够的,所以这时候通常会需要技术项目经理(TPM)的帮助,对于跨团队的大项目,TPM 和 PM 以及各个团队的 EM 一起协作,定义好 Roadmap(When),任务分解到各个团队(Who),解决项目中的问题,推动项目的执行。