Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

工程主管有哪些职责?

  • 2020-05-11
  • 本文字数:3758 字

    阅读完需:约 12 分钟

工程主管有哪些职责?

本文最初发布于 Hashtag Coder 博客,经原作者授权由 InfoQ 中文站翻译并分享。


在我的职业生涯中,我很荣幸自己身为组织的一员能不断被组织推动着前行。我刚来到现在任职的公司 Roundtrip 时是一名软件工程师。当时,Roundtrip 是医疗运输领域的一家早期初创公司,包括我在内总共有六名员工。随着团队的成长,我的直属上司,也就是公司的 CTO 需要从日常工作中抽身出来负责更宏观层面的事务,因此我也被提升到了领导岗位上来填补他的空缺。我的责任和职责发生了变化,但当时我在组织结构图中的位置没有改变。


我不知道组织对我有怎样的期望,但是我知道自己必须扩大团队规模,具体做法包括寻找新的工程师,处理技术和个人面试事宜,还要创建诸多流程来推动团队前进。除此之外,我还必须弄清楚我的职责范围。



三年过去了,我终于能自信满满地谈论我的职责,以及我眼中这个职位带给组织的价值了。最近我给自己提出了一项挑战,那就是将我的角色画成思维导图,并将每个部分详细分解为具体的期望。团队领导力

一对一面谈

我的任务是打造一支创建世界一流产品的世界一流的工程团队。要完成这个目标,需要从团队的每一位成员开始行事。我需要了解和管理各位成员的动力、情感、技能和期望水平,帮助他们设定目标,消除个人和职业障碍,并让他们满意自己的薪水和当前的角色,这样才能让他们保持专注并持续输出高质量的成果。我每周都会与我的团队成员一对一会面,以随时把握他们的需求节奏,并为他们提供一个可以倾听自身诉求的平台。

招聘

要打造最好的团队,我们必须找到最优秀的人才。我们招来的每位新人都应该比现有团队的平均水平更强。这样就可以保持较高的团队素质水平,并让每个人都感受到竞争的压力。


招聘不只是要找到符合职位需求的人才。我还要考虑符合团队需求的那些个人特质。为此,我要确定团队的弱点和需求都有哪些,并找到可以弥补这些不足的人员。如果我有强大的执行者,但缺少人员领袖,那么我会请一位擅长领导的人才。总的来说,我需要招来的人有自己的长处,而不是要求他们完美无缺。这样就可以确保我能拥有一支强大而平衡的团队。

绘制工程团队成长蓝图

进步是动力的重要源泉。人们需要知道组织对他们有什么期望,这样才能持续挑战自我。有一句老话说得好:“根据你期望的职位塑造自我”。我也鼓励我的团队采取这种行为,因为随着我们为每个职位设定期望和成功的具体标准,并在一对一交流期间衡量成员与这些标准的距离,我们就能为各位成员定义出明确的职业发展道路,并在他们需要完成具体哪些工作的问题上保持足够的透明度。如果有人表现出色,那么自然就会得到晋升。


我曾经认为辛勤的工作会让员工得到晋升。这是因为当时我不明白不同的岗位之间除了头衔的变化外还有哪些具体的职责差异。现在我的视角就有所变化了。如果我团队中的某位成员正在努力工作,我会让他留在自己的岗位上,因为他正在完成工作。相比之下,我要寻找的是能帮助我打造 10 倍工程师团队的人才——这样的人才不是要成为优秀的工程师,而是要领导他周围的人们都做好自己手头的工作。

加强核心价值观

核心价值观是我用来确保每个岗位上都有合适人才的主要武器。对我来说,如果我认同一个组织的价值观,我也会很愿意加入他们。例如,Roundtrip 有 5 种价值观:


  • 主人翁意识

  • 主动性

  • 弹性

  • 重视倾听

  • 保持简洁


只要让我自己和同事们一直在这些价值观的约束下行事,我们的团队就能保持在较高的水平上。

推动我们朝着使命前进

要让所有人朝着同一个方向划船,最好的方法是将使命视为我们的真相来源和前进道路上的向导。每位成员、每个流程和每种举措都要根据使命来评价,这样我们就能向着目标一步步迈进。


随着 Roundtrip 的成长,我们用使命来提醒自己保持同理心。打造一个只关注付费客户需求的“成长型组织”是很容易的,但是作为一个使命驱动型组织,我们要做的是消除医疗保健领域中的交通运输瓶颈,从而帮助那些没有得到妥善服务的人们;因此我们需要牢记,那些对营收数字贡献不大的客户也是对组织来说同样重要的。每位领导者都有责任不断向团队传达这一信息。

流程管理

软件开发生命周期

良好的软件开发生命周期(SDLC)可以帮助我们以可预测的方式持续提供高质量的软件。尽管我离开一线岗位已有一段时间了,而且工程总监可能都很少有时间来写代码,但我仍然要决定我们的具体工作方式。


在这里,一个平衡点是我自己专注于产出、价值和成本,同时让我的团队专注于具体的成果。我负责报告创建一项功能所需的时间、每个 sprint 可以获得的点数,以及保持团队运营所需的成本。我能管理的必须是我能衡量的事物。

扩大团队规模

我在扩大团队规模时肩负的职责是双向的。向下来说,我有责任为团队找到合适的人选,并要能将他们放在正确的位置上。向上而言,我要为组织考虑成本和优化的问题。我必须在预算范围内招聘新人,让公司的盈利能力不受影响。大手大脚花钱办事是很容易的,但要以一种在财务角度上负责任的方式来解决问题,帮助公司在成长时保持瘦身状态,这就困难得多了。


当新的成员加入我们的团队时,我负责建立入职流程,为他们提供必要的背景信息,让他们准备好踏上成功之路。为此,我将入职过程分为三个阶段。第一步是确保他们“领会”。具体来说就是让新人熟悉组织、问题的范围和我们现有的流程。下一步是确保他们“想要”。在入职期间,我要让新人获得正确的动机和动力。从这里开始,我会根据我们的核心价值观来评价他们,并为他们设定一些目标。最后,我要确保他们“可以做到”。他们能够挑战团队的其他成员吗?他们是晚会主角吗?对我而言,想要成功就需要维持一个不断发展以满足团队需求的过程,而我的措施是塑造一种健康的工程文化。

定义技术策略

Roundtrip 技术团队分为两个部分:工程和产品。工程团队侧重于“方法”,而产品团队则关注“内容”。尽管我不负责定义产品路线图,但我有责任解决团队所面临的挑战。我们每周开会讨论路线图上需要做哪些规划,从解决技术债务到开发基础设施增强措施都可以是规划的内容。


另一部分是设计产品以满足客户不断变化的需求。我曾经更偏重解决方案开发过程中的技术方面,但是最近我需要从这一领域抽身出来,专注其他方面的职责,所以要将技术层面的工作托付给我的团队。

EOS

经营公司是很困难的事情。Roundtrip 尝试了几种不同的系统来帮助组织全体向着同一方向前进,但最适合我们的系统是 EOS。作为组织的领导者,我的职责包括主持团队的 L10 会议,从而掌握我们每周的工作情况,并帮助我们以客观的视角看待业务,从而快速识别和解决问题。

产品方向

为路线图提供资源

Ben Horowitz 提出了一种非常好的理念,那就是将公司定义为两个阶段:和平时期和战争时期。在和平时期,我们会经历长期的增长,在此期间我们专注于构建产品以为客户创建更好的流程。在这一时期,产品团队定义了一个路线图,而我必须确保工程团队有足够的资源来完成工作。在战争时期,比如说当我们处于经济衰退期时,就该优化路线图和流程了。在这一时期内可用的资源可能受到限制,这意味着产品团队必须根据我们现有的资源来定义路线图。战争时期,组织更专注于提高收入和保留/获取客户的计划,因此我的职责也从找到符合岗位需求的合适人员,转变为让现有的员工找到合适的工作,从而尽可能保持预算平衡。

管理部署

作为工程总监,我必须确保我们的交付节奏。如果这里存在障碍,我必须引导我的团队跨过它们。部署通常是软件交付流程中最后也是最困难的部分,因此我的大部分精力都用在了打造可靠的流程上。


我还必须考虑部署对客户和我的团队的影响。我一方面要让客户尽量不受部署行为的干扰,另一方面还要让团队适应特殊的部署时间,保持健康的工作状态,这种平衡实在是很难掌握的

监督整合

与第三方合作可以帮助我们成长,但是从技术角度来看这些计划会带来巨大的风险,因为我们无法控制很多来自第三方的影响。从早期技术讨论到实现和采用过程,我一直在关注那些正在使用的流程,以确保一切顺利进行。归根结底,我们只有一次机会来建立良好的第一印象,因此我需要确保我们能给人展示最好的初始印象。

权限控制

这一部分是要确保人们只能获得自己所需的东西,从而控制风险。但这里也有另一个视角。我想让我的团队感到自己得到了充分的信任,并能主导他们正在创建的产品的控制权。我试着雇用聪明的人来做聪明的事情,将任务委派给他们,让他们获得权限并有掌控全局的感觉。

自行构建还是购买功能

如今,随着可用服务的数量不断增加,我们只需将各种第三方产品拼接在一起就能轻松创建自己的产品。但是这样做会让我们失去很多对功能的控制权,还会降低功能的独特性。作为开发人员,选择自己创建所有内容同样是很容易的。但是这样做会浪费时间并增加复杂性。


在我的立场来看,这就要不断思考并对比“构建与购买”的优劣,从而优化成本结构并简化工作。总的来说,我需要判断哪种决策可以给我带来最佳的投资回报。

总结

工程主管是具有挑战性的岗位。这一职位对人员和技术都要承担很多责任。这意味着你要肩负起最重要的使命,并且在危机时期往往责任也更为重大。没人给你提供时间表或者对未来的预测,而且这并不是那种朝九晚五的工作,而是要全力排除掉前路的障碍才算完事。但如果你能正面迎接挑战,就会在你的员工和产品中看到直接的成果,这会是非常有成就感的事情。

延伸阅读

https://www.hashtagcoder.dev/blog/director-of-engineering


2020-05-11 15:242266

评论

发布
暂无评论
发现更多内容

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

Redis开篇--非关系型数据库

Java学术趴

10月月更

Redis中的数据类型以及常用方法

Java学术趴

10月月更

Vue实战必会的几个技巧

yyds2026

Vue

【牛客刷题-算法】NC11 将升序数组转化为平衡二叉搜索树

清风莫追

数据结构 算法 二叉树 10月月更

React生命周期深度完全解读

夏天的味道123

React

Vue响应式依赖收集原理分析-vue高级必备

yyds2026

Vue

一个dubbo和springboot的兼容性问题

xiaoxi666

Redis--SpringBoot整合Redis(包含工具类)

Java学术趴

10月月更

webpack配置完全指南

Geek_02d948

webpack

面试官:vue2和vue3的区别有哪些?

bb_xiaxia1998

Vue

能否手写vue3响应式原理-面试进阶

helloworld1024fd

JavaScript

使用 RxJs 实现一个支持 infinite scroll 的 Angular Component

汪子熙

前端开发 angular RXJS web开发 10月月更

带你实现react源码的核心功能

goClient1992

React

Spring Lombok 实体类死循环问题

HoneyMoose

JWT 和 JJWT 还傻傻的分不清吗

HoneyMoose

【牛客刷题-算法】NC9 二叉树中和为某一值的路径(一)

清风莫追

算法 二叉树 10月月更

读懂React原理之调和与Fiber

xiaofeng

React

架构师的十八般武艺:业务架构

agnostic

业务架构

SAP 电商云 Spartacus UI 的响应式 UI 实现细节

汪子熙

前端 前端开发 web开发 10月月更 breakpoint

Python基础(七) | 文件、异常以及模块详解

timerring

异常 Python Monad 10月月更

细说react源码中的合成事件

flyzz177

React

React源码解读之任务调度

flyzz177

React

你要的react+ts最佳实践指南

xiaofeng

React

什么是虚拟服务器?一共有多少种虚拟服务器?这篇文章带你扫盲!

wljslmz

10月月更 虚拟服务器

React组件复用的发展史

夏天的味道123

React

写过自定义指令吗,原理是什么?

bb_xiaxia1998

Vue

Collections之 Arraylist源码解读(二)

知识浅谈

ArrayList 10月月更

【LeetCode】检查二进制字符串字段Java题解

Albert

LeetCode 10月月更

React-Hooks源码深度解读

goClient1992

React

【牛客刷题-算法】NC7 买卖股票的最好时机(一)

清风莫追

算法 动态规划 10月月更

工程主管有哪些职责?_大前端_Sha Alibhai_InfoQ精选文章