来自 Tech Lead 的经验教训:角色、职责和建议

2025-05-28

来自 Tech Lead 的经验教训:角色、职责和建议

我在几家不同的公司担任技术主管多年。每个职位都各有特色,但经历之间也有一些共通之处。在本文中,我想与大家分享什么是技术主管,他们的工作内容,以及我在此过程中学到的一些经验教训。


什么是 Tech Lead

首先要知道的是,技术主管不是经理。技术主管仍然是一个独立的贡献者,在帮助团队的同时,也需要高效地完成工作。技术主管通常是团队中级别更高的成员,但并非总是如此。由于技术主管没有任何直接下属,他们不会与团队成员进行一对一的沟通,也不会进行绩效评估。不过,他们会帮助指导团队成员。


Tech Lead 的职责

技术主管身兼数职。他们同时扮演着架构师、项目经理、软件工程师、导师和队友的角色。

技术主管负责推动团队当前工作的高层架构讨论。他们负责主持设计会议和技术分解。他们会提出问题,并努力找出想法中的漏洞,确保涵盖所有边缘情况。

技术主管通过将功能史诗分解为故事和任务来帮助组织工作。他们可以单独完成这项工作,也可以与团队其他成员一起完成,具体取决于公司的情况。他们帮助确定工作的优先级,并确保在正确的时间完成正确的事情。

技术主管负责帮助消除阻碍。这可能包括为产品负责人、用户体验设计师或其他团队的工程师追查问题的答案。也可能包括与团队成员合作,明确工单上的一些验收标准。这通常包括每天进行代码审查,并确保拉取请求不会长时间无人关注。

技术主管还会指导团队成员,并负责帮助团队提升水平。他们确保最佳实践得到实施和遵循。他们通过结对编程和代码审查进行教学。他们经常分享文章、建议和想法。

简而言之,成为一名技术主管是一种没有直接权力的影响力的实践。


经验教训

现在我们已经对技术主管的定义和工作内容有了坚实的了解,让我们来看看我在整个经历中学到的一些经验教训。


优先考虑团队的需求

作为 Tech Lead,你不再只关注自身的成功。你会关注整个团队的成功。这意味着团队的需求高于个人的需求。

我通常会用一天中的前 1-3 个小时来审查所有未完成的拉取请求,通过 Slack 回答问题,并对新的 bug 进行分类。简而言之,我会尽我所能,让团队成员从他们正在等待的事情中解脱出来。只有在完成所有这些工作后,我才会开始自己当天的工作。在一天的剩余时间里,我也会查看 Slack 或进行代码审查,但只会在自然的停顿点进行,以免打断我的思路。


时间管理

平衡个人工作和团队工作的时间非常困难。有时你会处于“创造者日程”,需要花大量时间埋头苦干。有时你会处于“经理日程”,需要参加很多会议,经常被打扰,没有时间进行深度工作。大多数时候,你会处于两者兼而有之的状态。

如果你总是在做代码审查或回答队友的问题,那么你自己写代码的时间就会非常少。学会设定界限,在日历上划出一些不受干扰的时间段,专注于自己的工作。想办法让你的团队更独立,帮助他们找到自己问题的答案。确定哪些任务是可以委派的。


代表团

试图独自完成所有事情是错误的。团队的意义在于分担重担,共同完成比任何一个人单独完成的更多。如果你试图独自承担这个重担,你肯定会精疲力竭。

棘手的部分是知道何时自己做某事以及何时委托他人做某事


流程改进

如果您发现自己经常为团队解决问题,请花一点时间反思这些问题的根本原因。

例如,你的团队成员是否反复问同样的问题?利用这个机会记录你的流程,这样下次出现同样的问题时,你就可以引导大家访问你的维基页面。

你是否发现团队中每个拉取请求都必须审核?为什么?花点时间设定团队的期望,确保每个团队成员都有责任审核代码。告诉他们要审查哪些内容,并引导他们了解你的思路。同时,记录这些代码审核的最佳实践和指南。即使只是分担几个代码审核任务,也能为你每周节省数小时。

你是那种每次遇到难题都会被拉去解决的人吗?好好利用这些机会学习。找一位团队成员陪你一起学习,或者和你一起结对编程,一起诊断问题、排除故障。这样,下次遇到这种情况时,团队里就会有第二个人可以提供帮助。


优化开发者体验

寻找需要优化的地方,使开发过程更容易,并帮助您的团队提高工作效率。

缺少文档吗?创建它。

大家知道如何在本地运行某个代码库的应用吗?请在 README 文件中记录具体步骤。

在经常出错的区域是否缺少测试?编写这些测试。

CI 流水线运行缓慢吗?看看流水线中是否有可以并行运行的步骤、可以精简重复测试的测试套件,或者其他可以加快速度的方法。

你的团队是否有培训机会提升水平?与每位团队成员单独沟通,找出他们技能上的差距,并制定计划帮助他们弥补这些差距。


学会给予严厉的反馈

作为领导者,最难的部分之一就是给出负面反馈。学会进行艰难的对话。正如金·斯科特在其著作《彻底坦诚》中所说,你应该亲自关心并直接提出质疑。

提出好的问题。以鼓励团队成员成长的方式挑战他们。

如果有人没有尽到自己的责任,请与他们一起找出根本原因,并共同集思广益,找到解决方案。这个问题是动力问题还是技能问题?如果是技能问题,他们是否有其他更适合自己技能的任务或项目可以参与?

技术主管和经理之间的界限在这里变得有些模糊,因此在这种情况下与你的经理密切合作非常重要。作为技术主管,你不负责进行绩效谈话或做出解雇决定,但你的意见确实会产生重大影响。尽你所能帮助你的团队成员取得成功。不过,有时,最仁慈的做法是帮助某人继续前进。


做出正确的判断

当前进的道路充满不确定性时,你的队友常常会向你寻求建议或指引方向。软件工程充满了权衡,你需要权衡技术决策的短期和长期后果。

例如,我们应该为这个功能编写测试吗?一般来说,答案几乎总是肯定的。但是,如果代码库是五年未动过的遗留代码,使用了过时的技术栈,并且没有现成的测试套件,该怎么办?除了编写特定的测试之外,您是否会花时间为这段代码搭建测试基础架构,或者在这种情况下是否应该跳过编写测试?

或者,考虑以下场景:您即将发布一个新功能,但在发布截止日期之前发现了一个错误。您会推迟代码发布以便修复该错误吗?还是会允许该错误继续投入生产?答案取决于错误的严重程度、代码发布频率以及您认为修复该错误的速度等因素。

这里的要点是,你经常需要做出艰难的决定,而这些决定并非100%正确的解决方案。学会运用良好的判断力,在有限的信息下做出决定,并坚持自己的决定。当事情出错时,承认自己的错误,并从中汲取教训。


永远保持学习

最后,不要自满。你需要持续学习,才能不断帮助你的团队提升。通过树立持续改进的榜样,你可以营造一种学习的文化。一定要分享你正在阅读的有趣文章和书籍,或者你正在进行的业余项目。这些会为你提供丰富的灵感,与你的团队分享。


结论

Tech Lead 的角色要求很高,但也充满了成长机会。总而言之,如果你能做到以下几点,你的工作会顺利得多:

  1. 优先考虑团队的需求而不是个人的需求

  2. 明智地管理你的时间

  3. 学会授权

  4. 寻找改进流程和文档的方法

  5. 寻找优化开发人员体验的方法

  6. 学习如何给予严厉的反馈以及如何进行严厉的对话

  7. 相信自己能做出正确的判断

  8. 始终保持学习

感谢阅读!

文章来源:https://dev.to/thawkin3/lessons-from-a-tech-lead-roles-respons-and-words-of-advice-ldj
PREV
React Clean Code - 编写更好、更干净的代码的简单方法
NEXT
捍卫代码整洁之道:Bob 大叔的 100 多条永恒建议