techlead

Tech Lead Toolbox

我们并不需要一个 Tech Lead

原文链接:We don’t need a Tech Lead

对于大中型团队而言,全职 Tech Lead(技术负责人)负责重要的领导活动是非常普遍的。这些活动诸如:

  • 指导项目技术愿景
  • 分析风险和跨功能需求
  • 教练经验不足的人
  • 利益相关者和团队之间的沟通

一般而言,被指定为 Tech Lead 的人都具有良好的技术经验和良好的沟通技巧。他/她将对项目的技术方向负责,并担任跨团队互动的首选人。

我们是否需要一个 Tech Lead?

Pat Kua 在两年前写了一篇文章(Do we need a Tech Lead),他支持这样的观点,即大多数软件团队都需要 Tech Lead 的存在。 用他的话说:

人们反对这个角色,并声称一个运作良好的开发人员团队,可以做出决策并优先考虑重要的工作。我完全同意这个理想世界的立场。可悲的是,理想的世界很少存在。

根据我的观察和个人经验,我倾向于以两种方式不同意这种观点:

  • 运作良好的团队,人们分担责任并不罕见
  • 当团队运作不良时,分配 Tech Lead 可能会使情况变得更糟

Tech Lead是一个解决方法吗?

要说 Tech Lead 是必要的,因为理想条件很少是说 Tech Lead 是一种解决方法 - 而不是根本原因的解决方案。这意味着角色就在那里,因为情况不是最理想的。当一个团队运作不良时,可能会有一些破窗需要解决。Tech Lead 只能减轻后果。

然而,在他的文章中,Pat Kua 给出了一个示例场景,其中需要技术主管:

技术辩论在开发团队中经常发生。没有什么比团队达成冷冻状态时更糟糕的了。

Tech Lead 有责任帮助团队向前发展……促进和谈判技巧对于 Tech Lead 来说是非常宝贵的资产。

那么,在这种情况下,我们可能需要的是调解员。任何具有协助和谈判技巧的人都可以根据需要发挥这一作用。将多种技能期望推向一个人是不可扩展的;它压倒了负责人,破坏了整个团队。

Tech Lead 会让情况变得更糟吗?

大约四年前,我写了一篇文章 More Testing, Less Testers,它是关于人们锻炼不同技能,并在团队中扮演多重角色的重要性。

我见过的最成功的团队分享了这样一个事实:人们是多功能和自我管理的,从某种意义上说,每个成员都会积极参与 a)帮助企业找出并定义需求,b)直接工作 关于功能的开发,c)直接研究相关活动的测试。

我坚信也可以扩展到 Tech Lead 活动中。角色轮换背后的主要思想是降低风险。无论 Tech Lead 的经验水平如何,角色的存在都存在各种风险。而随着团队变得更大,这些风险的严重程度会增加。

对于 Tech Lead 风险

  • 活动超载 - 对单个人的期望过高。
  • 由于持续的上下文切换,缺乏对细节的关注。
  • 单点故障 - 当信息集中在 Tech Lead 上时。
  • 责备文化 - Tech Lead 通常是对失败负责的人。
  • 距离 - 当 Tech Lead 远离团队时。
  • 缺乏同伴感 - 当 Tech Lead 不再被视为团队成员时。

对团队的风险

  • 缺乏集体所有权 - 当关键决策不是集体决策时。
  • 瓶颈 - 当所有决定必须通过 Tech Lead。
  • 公交因素 - 当团队无法在没有 Tech Lead 的情况下运营。
  • 对动机的影响 - 当团队成员感到无能为力和无声时。

除此之外还存在另一种心理风险:在两人或两人以上具有足够 Tech Lead 技能的团体中,如何选择其中一人作为 Tech Lead,而不让其他人感到贬值?

总之,这些问题是全职 Tech Lead 存在的直接后果。Tech Lead 带来的最终好处,通常不会减轻必须应对风险的负担。

Leadership

我们还需要软件团队的领导力吗? - 我们肯定会这样做。但领导力是一种技能,而非个人角色。

在最近的一次采访中,Fred George 提出了一种季节性和分散的领导模式,在这种模式中,领导者自然会在特定时间根据项目需求出现。

  • 当有新人时,我们需要一位强大的教练。
  • 当存在架构挑战时,我们需要经验丰富的架构师。
  • 当存在内部冲突时,我们需要一名调解员。
  • 当有外部阻滞或缺乏资源时,我们需要看门人。
  • 当我们需要与其他团队进行谈判和整合时,我们需要一位大使。

这只是一些例子。对一个人(Tech Lead)设定所有这些能力的期望显然不是一个好主意。另一方面,建立一支能够有效发挥作用的互补能力的团队似乎更合理。

关于分散领导的另一个观点是 Features Lead(最初由 Pat Kua 提出,并且我的同事 Ryan Oglesby 也讨论过:You’re a Champion)。在该方法中,Tech Lead 被分解为开发中的系统的相关功能和或正交方面的片段。它有助于通过将领导活动,分散到多个人来最小化风险。

结论

那么,我们真的需要技术领先吗? - 当条件不理想时,也许是的。但 Tech Lead 几乎肯定无法将条件变为理想状态。在次优情况下,运营的团队通常会破坏窗户和拦截器。很多时候,您会在 极限编程 中找到您的团队正在寻找的确切答案。除此之外,如果你找不到合适的人与你合作,就没有灵丹妙药,所以招聘在这里发挥了重要作用。

总的来说,在团队中分配一名全职 Tech Lead 是有风险的,可能会使事情变得更糟。健康和高效的软件团队很可能不需要 Tech Lead 。