读《技术为径》——技术组长

上一篇 读《技术为径》——技术导师 梳理了一下技术管理中技术导师的职责,本文则来梳理一下技术组长的相关内容。

技术组长

技术组长,即 Tech Lead,其是一个基层管理岗位,主要承担一个技术研发团队的管理工作,同时要求至少投入 30% 的时间与团队一起交付代码,比如:移动端负责人、服务端负责人等角色。

个人职业的发展通常会有两条路径:技术专家和技术管理,比如:百度的 T 序列和 M 序列。对于技术管理路线,基本都会要求担任过技术组长一职,因为在更高的职级上更重要的是个人领导力和团队领导力。对于技术专家路线,虽然技术组长一职并不是晋升的必经之路,但也是较为普遍的路径。

主要职责

技术组长的工作核心目标是 推动项目按计划进行并顺利交付。为了实现这个目标,技术组长会在工作中扮演以下几种角色并承担相关职责。

  • 系统分析师
  • 项目计划师
  • 软件工程师
  • 团队沟通者

系统分析师

作为系统分析师,其工作职责是:

  • 找到哪些产品功能是项目的关键需求
  • 分析这些需求对应需要修改哪些系统

为此,技术组长需要充分了解系统的整体架构,同时需要理解如何着手设计对应的系统,这样才能够为项目的可行性、任务排序、工期时长提供可靠的依据。

项目计划师

作为项目计划师,其工作职责是:

  • 对整体工作合理地拆分成小的交付物
  • 对各项任务合理地安排各自的优先级

整体工作拆分的一个难点在于,如何保证团队内部可以保持并行工作、快速工作。如何协调好团队中所有人的时间是一个不小的挑战,这需要技术组长持续地投入精力。

以我个人的经验,我会优先考虑连续性工作,比如:某成员一直在维护播放器方面的工作,那么相关工作仍然会交付给他,一方面可以实现快速交付,另一方面,连贯性的工作也能让成员在此领域有更深入的研究和产出。此外,我会尽可能提前思考项目计划,比如:下一个 sprint 要做 A 项目,下下个 sprint 要做 B 项目,我会根据 B 项目的情况,思考如何规划 A 项目的人员委派。基于多个项目思考全局最优解,避免落入局部最优解。

软件工程师

软件工程师的职责是比较明确的,这里会涉及到架构设计、具体编码等工作。但是,要注意,这不应该是技术组长的主要职责!技术组长的工作时间经常处于碎片化状态,应该避免其担任的编码工作出现重大的阻塞或延误。必要时,技术组长应该把相关工作委派给团队的其他成员。

团队沟通者

团队沟通者的职责是作为团队的代表对外进行沟通。技术组长不应该羞于沟通,比如:当遇到困难时,尽早提出问题并不是一件坏事,反而恰恰是一件好事。高效、主动地沟通可以为团队节省很多工作时间,比如:砍掉不必要的功能、推掉不可行的需求。

注意要点

优秀的技术组长会有很多重要的特点,以下这些是值得关注的。

理解系统架构

如果自己不熟悉系统的整体架构,那么就一定要花时间尽快了解透彻,了熟于心。只有理解了系统架构,才能够理解技术与产品之间的联系。如果不太了解系统架构,是不太可能做好技术组长的角色的。

维持团队氛围

我认为维持团队氛围一个非常容易忽视,但又非常重要的一点。技术组长不应该一味追求向上管理,也要重视向下管理。这要求技术组长有比较高的情商。我认为最关键的一点是:同理心,说直白一点就是要学会换位思考。

以我个人的经验,当我在处理团队事务时,经常会将自己代入一线成员,避免作出一些令大多数成员反感的决策或事情。举一些例子:

  • 尽量不会频繁打断成员的工作节奏,不要让他们参与到低效无聊、可有可无的会议之中。
  • 尽量不要在非工作时间打扰团队成员,比如:临近下班要求团队开会、下班后在群里发消息。
  • 尽量不要单方面要求压缩任务排期工作。
  • 尽量不要事无巨细地跟踪成员的工作情况,应该给予充分的自由度。
  • 学会倾听,民主决策。
  • 学会过滤上级的压力。当遇到线上故障或者任务压力时,上级领导可能会对技术组长施压,技术组长不应该直接转移压力,而应该对压力进行适当的过滤。

主导技术决策

技术组长,必然要是参与团队的技术决策过程的。这里应该避免两个极端:一种是所有决策都是完全由自己完成;另一种是自己完全不作决策,全权由团队决定。这里的难点在于技术组长要学会如何判断哪些决策由自己个人来完成,哪些决策需要授权给团队内部的技术专家来完成,亦或是哪些决策应该由团队的所有成员共同决定。

在做技术决策时,技术组长应该要学会倾听,民主决策。很多技术组长非常偏执,亦或是为了显示权威,总喜欢一意孤行、独裁断决。这种情况很容易打消团队成员的积极性,不再出谋划策。

对内对外沟通

作为技术组长,个人的工作效率和团队的工作效率相比,并不显得那么重要了。这意味着牺牲自己的时间换取团队的时间。其中最典型的就是沟通,与其让全体成员出席会议,不如由自己代表团队出席,将团队的想法传达出去,将外部的信息传递回来。

此外,技术组长还需要注意沟通的技巧和方式。对内沟通时,有些技术组长经常会以居高临下姿态和团队成员沟通,话语中尽显优越和权威。这种不平等的对话,会让沟通的另一方感到不适。长此以往,团队成员也不会愿意主动和技术组长进行任何方面的沟通。对外沟通时,有些技术组长经常会表现出莫名其妙的强势和批判,这会让外部团队感到困惑和无奈,进而也会导致进一步的合作对抗。

以我个人的经验,沟通时应该将自己摆正到平等的位置,以平和的语气进行沟通,不要试图在沟通时压倒或压迫对方,显式自己的权威。

时间管理分配

大多数技术组长都会有一种感觉,每天的时间都会被各种事情所支配,当自己尝试做一件比较耗时的事情时,总是会被各种事情打断,效率极低。这时候需要技术组长必须学会管理和分配时间。尽量有计划地去做事,从自己的日程中切分出合理的、成块的时间给不同的工作。试图在每小时赶一场会议的间隔中穿插从事一些代码工作是不太现实的。

总结

总而言之,技术组长会在工作中扮演多个角色:系统分析师、项目计划师、软件工程师、团队沟通者。这些角色的职责都是为了完成共同的目标,即推动项目按计划进行并顺利交付。

然而,这些只是基本要求,如果希望自己成为一名优秀的技术组长,还有很多需要关注的要点,包括:

  • 理解系统架构
  • 维护团队氛围
  • 主导技术决策
  • 对内对外沟通
  • 时间管理分配

其中的每一项都有我们值得注意和学习的东西。技术组长只是我们职业发展路径的初级阶段,我们需要始终保持谦卑的态度去学习,这样才有机会有更多的发展和成长。