成为 Tech Lead 之前你需要知道的五件事
综上所述
也许你正在考虑接受这份工作,或者刚刚开始思考你作为一名开发者职业生涯的下一个发展点是什么。你不想完全专注于项目管理,因为说实话,谁会真的想参加那么多会议呢?你也不想被无休止地分配工单,因为你很确定公司可以雇佣一个实习生来执行大部分这些“改进请求”。技术主管的职位似乎很吸引人,但通往这个职位的途径是什么呢?
我曾经开过一些轻松的玩笑,讲述我是如何偶然获得第一个技术主管职位的,但这之前确实需要做很多准备工作。我必须弄清楚自己是否愿意承担这个职位,然后还要弄清楚如何才能实现这个目标。以下是我遵循的简短而精妙的蓝图,以及我为实现每一步所采取的步骤。
了解技术
我就直说了。你得懂行。不懂技术的话,就没资格当 Tech Lead。
你需要成为一名 10 倍工程师,或者像现在流行的“独角兽开发者”那样吗?不。你甚至不需要成为团队里最强的程序员,我知道我不是。
但是,您需要了解您将要工作的领域。这意味着您需要对以下一般主题有更深入的了解:
- 设计模式
- 企业集成模式
- 扩展性,以及你正在开发的项目所需的特定语言。对我来说,主要是Spring Framework、Activiti和Apache Camel。
相当专业,但我们正在为相当大的商品销售公司编写一个工作流管理工具,这种架构非常适合我们公司的需求。
我了解 Spring 框架的方方面面吗?不,差远了。我把很多工作委托给了别人。我的团队里有一位成员接手了 Spring Security 的研究,并在第二个冲刺结束时成为了 SME。他们是极其宝贵的资源,因为我不可能掌握所有信息,只能掌握其中很大一部分。
了解团队
如果你不了解他们,你就无法领导他们。
当然,这不是你的第一次,以后还会有其他项目。你可以加入一个新团队,利用之前的经验来融入团队。但是,作为第一次,你需要一个之前合作过并且信任你的团队。
过了一段时间,“了解他们”就变成了“了解他们的原型”。
你需要有能力领导各种各样的人。
- 和你相处融洽的人和不和你相处融洽的人。
- 与您一起工作的人和远程工作的人。
- 和你说同一种语言的人和一点也不懂讽刺的人。
因此,了解您当前的团队并弄清楚您可以从在那里建立的每一种关系中获得什么。
了解项目
您需要了解实际项目本身的来龙去脉。
- 预计发布节奏是怎样的?
- 项目经理希望每周或每两周看到什么?
- 项目下一阶段的计划是什么(总会有下一阶段)?
- 客户想要但尚未获得的功能有哪些?
你还需要了解项目周围的人,因为在这个新角色中,你会与他们有更多、更频繁的互动。你不是经理,但你需要知道如何巧妙地向上管理并管理预期。
了解环境
每个公司都有特定的工作环境或氛围。
你可能是一家自称“敏捷”的公司,但仍然需要预先制定路线图和具体的交付成果。又或许,架构师不同意首席技术官的整体技术方案。或许,只有懂得如何与下游员工建立良好关系,才能让产品负责人听取你的意见。
这些都是你需要知道的事情。
没有人能真正为你定义这份清单,但你需要弄清楚它,才能真正有效地履行你的职责。因为当你需要成为团队的倡导者时,可能只有一种方法能让所有人摆脱那荒谬的“强制”会议。你最好了解这一点。
了解自己
从定义上来说,这有点儿像元语言。你需要知道你为什么要这么做。我之前在这篇文章和其他文章
里都提到过,但我并不是团队里最强的开发人员。这有点儿像冒名顶替综合症,但又有点儿像谦卑派。不过,没关系。
我知道,我其实更擅长帮助别人,而不是写出完美的代码。所以,猜猜我最适合做什么?技术主管 (Tech Lead)。
完成前两个项目后,我对自己也有了更多的了解:
- 我知道,一旦我的团队中有超过 4 名开发人员,我就无法再有效地领导。
- 我知道,一旦我连续四周接近 60 小时,我就无法再像在常规工作/生活中那样造句了。
- 我知道如果我的血糖太低,我的代码审查就会变得过于迂腐。
- 我知道我的自嘲式幽默并不适合所有人,我正在努力改正。
综上所述
如果你对所从事的技术、合作的团队以及你将要领导的项目缺乏深入的了解,你将无法取得成功。但是,如果你不能诚实地观察自己或你的工作环境,你甚至可能一事无成。
一旦您可以说自己对这五个领域感到满意,那么您就很有可能向领导层介绍您想要扮演的角色。
这份清单并非详尽无遗,但它是我在接受这份职位之前考虑的一些要点。我已经在本地团队工作多年。我与远程团队合作了近6个月,感觉相当融洽。技术对我来说已经相当熟悉了,我经常协助现任技术主管进行设计会议。项目经理坐在我隔壁两排,系统架构师坐在我后面,所以我对自己即将进入的环境非常了解。
当我意识到即使不开发也能为项目做出更多贡献时,我便准备辞去目前的职位,成为一名 Tech Lead。但你呢?是什么促使你这么做的?或者你认为是什么阻碍了你?
请在下方留言告诉我。