techlead

Tech Lead Toolbox

怎样成为优秀的 Tech Lead?

原文链接:What It Takes To Be A Great Technical Leader

大多数成功的项目都有一名工程师负责推动项目的进展,同时确保自信地做出强有力的技术决策。通常,该人被称为 Tech Lead。 他们通常不会管理人员,而是指导他们做最好的工作。

每家公司都不同,但我与之合作的最佳技术领先者中有一些共同点。脱帽致意 (Hat Tip) Brian Stoler、Nathan Hunt、Evan Gilbert 和 Rich Burdon 以身作则。

在本文中,我列出了什么是不好的 Tech Lead,分解为 3A:属性(attributes),活动(activities)和动作(actions)。 其中许多概念适用于生活中的坏蛋。你的里程可能会改变。

属性

随着时间的推移,您应该始终增加三个属性:知识,速度和意识。

1.知识

技术知识为您提供了良好,可靠的决策的洞察力和可信度。强大的技术领导者的知识是广泛而深刻的。如果团队成员询问特定组件或系统的工作方式,您应该能够以有用的详细程度解释它或指向可以的人。

为了保持知识,我按以下顺序做了三件事:

  1. 查看代码
  2. 阅读设计文件
  3. 编写代码(参见ABC:始终编码

顺序很重要,特别是前两个事项。如果工作已经完成,但等待审核,那么您几乎应该放弃自己的工作并帮助推进工作。如果不协助他人,编写代码可以让您在代码库中保持新鲜感。

Tech Lead 应该是几种技术的掌握者。例如:Java,JavaScript,C++,分布式存储系统和客户端 Web 开发,可以让 Tech Lead 的拥有丰富 Web 应用程序知识。

2. 速度

你应该努力做到超级敏感,能够做出即时决定,总是把球向前踢。工程师应该带着期待迅速回应的问题来找你。

我个人为能够快速回应而感到自豪。我的目标似乎无处不在。我的秘密武器是我的收件箱,所以我更喜欢使用紧密的电子邮件集成工具。

例如,您使用哪个问题跟踪,代码审查或生产警报软件无关紧要,但团队成员应该收到电子邮件通知,并能够通过电子邮件对问题发表评论。允许团队中的任何人快速响应新的或更新的问题,并始终掌握所有状态更改,即使是从移动设备。

3. 意识

您应该能够始终保持整个项目的当前状态。否则,您无法意识到潜在迫在眉睫的阻滞者。如果内部或外部的力量威胁到减缓项目的速度,那么你应该知道它。

电子邮件集成再次成为关键。理想情况下,所有状态更改或更新都应以某种形式通过电子邮件传递,即使是离线会议也是如此例如,有人应该始终向整个团队发送会议记录,尤其是在做出重要决策时。

你应该始终改进上面的三个属性,因为你总是可以更快,更有知识,更有意识。

活动

作为一名 Tech Lead ,我发现自己在任何特定时间都在进行五项核心活动。几乎每一个动作都归结为其中一个。 这些年来我学到的是,一个 Tech Lead 所能做的两件最重要的事情,恰好是完全相反的两件事:阻塞和解除阻塞。

1。阻塞

阻塞需要高度的意识和规模,从战略决策到战术工程任务。技术负责人需要对项目中发生的事情保持警惕和意识,随时准备在做出错误的决定之前介入并阻止它们,通常会有更好的解决方案。

例如,如果一个工程师将一些代码发送给项目中的另一个工程师进行审查,这对审查人员来说似乎无害,但实际上引入了新的错误,并且您能够在提交或发布到生产环境之前介入并警告作者,这对作者、审查人员和整个项目都非常有用。

阻塞不应该停止进程,它会纠正,这样事情就可以继续前进。想想安全带,而不是安全网。

2. 解除阻塞

与阻塞相反,阻塞同样重要。通往地狱的路是由懒散的工程师铺成的。如果有人有问题,你应该能够给出一个答案或者让合适的人回答。

帮助我发展这种技能的是接待实习生。最好的实习生有很多问题。如果他们得不到答案,他们往往会陷入困境,或者更糟,沮丧。我必须学会如何提供正确的答案,或者将他们与能够引导他们前进的人联系起来。

3. 重定向

不管你有多好,你都不知道。你不能回答每一个问题。即使从技术上讲你可以,实际上你所有的时间都会花在回答他们上。为了填补这些空白(并帮助你完成自己的工作),你应该在精神上建立一个专家索引,这样你就总能知道在哪里找到答案。一个非常有用的策略是尽早使用,通常是重定向。技术领导者通常是 “人类302”(或人类重定向),将个人联系在一起。如果团队中的工程师不确定某件事情或有一个你不知道确切答案的问题,那么知道将他们发送给谁是非常有价值的,并且可以节省很多时间。

除了重定向问题之外,主动地将合适的人员添加到任何线程或代码审查中也有助于提高工作的整体质量。例如,如果一个工程师正在向一个关键组件添加代码,而这个关键组件不是他们最初编写的,那么向代码评审中添加一个专家将有助于确保正确地实现该特性。

4. 决定

你的部分职责是做决定,你的团队将依赖你。你越快地做出决定,别人就越快地做出决定。通常情况下,没有明确的前进道路,仅仅凭直觉走就是正确的选择。

当你倾听自己的直觉时,一定要做出一个能经得起时间考验的强有力的决定。您的项目可能会在您继续之后继续进行,您不希望继承者在继承您的项目时诅咒您的名称。这通常发生在积累了大量技术债务的项目上。

当面对对一系列选择做出决定时,我自然会经历以下过程:

  • 将选项数减少到 2。任何问题的复杂度都会随着每个选项呈指数级增加。
  • 根据经验或数据快速确定是否有最佳选择。
  • 如果此时正确的答案不明显,是否可以将其重定向到更适合作出决定的人?
  • 如果仍然没有最好的选择,那么可能没有足够的数据,或者提出了错误的问题。要么阻止做出决定,要么用你的直觉去阻止。

上面的步骤应该在你的脑海中一瞬间完成。

决策的质量就像猎鹰适时的猛扑,它能攻击并摧毁受害者。- Sun Tzu

5. 表演

Tech Lead 最重要的一个方面是他们能够通过例子来证明这一点。我们都听过“以身作则”这句话,但我更喜欢,展示,不说。从设计上讲,技术领导者往往不是管理者,因为他们把精力集中在代码上,而不是人上。所以,拥有团队的尊重和信任是很重要的,这最好通过证明你了解自己的东西来完成。

大多数领导者可能会发现很难抽出时间来编写代码,但要想找到时间是非常重要的。我称之为创造时间。即使我可以花一点时间做一些“垃圾工作”,修复恼人的 bug,或者根据需要在这里或那里添加一些有用的代码,我也会这样做;它对您来说比代码本身更有价值。

行动

以下列出了 Tech Lead 经常为推动项目前进所做的事情。它远非详尽无遗。

  • 创建并维护启动,测试和发布计划。
  • 举办有效的工程团队会议。
  • 确保会议在必要时有用且简洁。
  • 帮助创建和堆叠排名项目优先级。
  • 经常对新的或不必要的功能说“不”。
  • 定义问题跟踪的最佳做法。
  • 安装团队修复它,黑客马拉松或错误擦洗。
  • 保持跨职能关系。
  • 创建目标里程碑日期。
  • 随时了解有用的工具。
  • 指导其他工程师。
  • 招募其他团队的工程师。
  • 主持实习生,使他们成功。
  • 详细查看代码并提供有用的反馈。
  • 阅读,编写并提供有关设计文档的反馈。
  • 在正确的时间写出正确的代码。
  • 根据需要为管理人员提供保护。
  • 与其他工程团队合作,尤其是依赖项。
  • 确定技术债务。
  • 解释为什么做出决定。
  • 争取正确的设计决策。
  • 花时间解决技术债务问题。
  • 团队之间的负载平衡工作。
  • 板载新工程师并帮助识别其他工程师作为教练。
  • 根据需要,课程更正并完善目标日期。
  • 保持项目 MVP 的定义。
  • 评估架构决策及其含义。
  • 确保正在为核心功能编写测试。
  • 维持待命和值班流程。
  • 必要时升级阻止问题。
  • 了解产品的隐私和安全问题。
  • 经常产生新的想法和优雅的解决方案。
  • 调试困难的生产问题。
  • … 等等。

成功的技术领导没有处方。最好的是拥有大量实际运输产品经验的多产程序员。但回想一下你曾经使用的最佳线索,以及你上面阅读的内容有多少适用于它们。

要自信,继续前进,并始终提高。