技术团队如何发现和培养Tech lead?

在影响团队长远战斗力的诸多因素中,比较有意思同时也非常关键的一个因素是对tech lead 的选择和培养,这也是我们今天的话题。

千军易得,一将难求

对技术团队来说,怎么强调tech lead的重要性都不算过分。好的tech lead能极大程度提升团队的凝聚力和执行力;严重不合格的tech lead会导致团队迅速崩溃,但好在暴露快、时间短、危害小。接近合格水平的tech lead则既不容易替换,又让产品的进度和质量缓慢、持续下降,处理不好的话会积重难返,最终变成灭顶之灾(接近合格水平的技术经理也一样)。

招聘难,招tech lead更难,相信群里的各位都深有体会。要技术强、要工程经验丰富、要善于协作;要能coding、能设计、能写文档、能演讲;积极主动、抗压好、学习快;沟通必须好、产品必须关注;有团队领导能力、最好还懂管理技巧… 可上九天揽月,可下五洋捉鳖…

总之一句话,我们希望他 ride a white horse and save the day。

在产品进度出问题、质量出问题的时候,tech lead更容易成为万众瞩目的焦点,或者说被放在火上烤。比如在某公司一次线上事故中,几个副总、几个总监加上更多一线经理热火朝天参与的方案(che)讨论(dan)会的背后,是一个默默看代码解决问题的小lead。似乎只有神或者神一样的男人才能做好tech lead。

但从管理的角度看,职位(自然也包括tech lead)是为普通人设计的。你我皆凡人,十全十美不光是臣妾,大家都做不到。

那么问题来了,tech lead 应该做什么?他需要具备什么样的素质?应该怎么找到他?

Tech Lead 的职责

广义上Tech lead有很多种概念。我的理解是:主要从事技术工作;独立负责某个工作方向;带领 1-15 人的技术团队;在团队内没有更细致的管理结构;交付软件开发、测试或研究成果。

1、对结果负责

在技术团队中,tech lead和其他成员的本质区别在于:tech lead不仅要完成技术任务,还『必须对团队的交付结果负责』。

『对结果负责』要求他绝不能沉迷于技术,他要关注产品需求,关注团队和其它团队之间的关系,掌握技术优雅和人力、时间、进度之间的平衡。他是和团队工作在一起的一线架构师,同时也是方案的执行者。如果团队里技术最强的工程师没有这方面的意识的话,那他可以成为团队内的领域专家,但不适合成为 lead。

2、干别人不干的活

以开发组为例,一个成功的开发组需要多种角色来承担如下任务:

  • 需求分析、系统分析、设计、实现、集成、测试、交付
  • 保持团队的工作目标和项目目标一致,拆分长期目标到阶段性短期目标
  • 文档编写、环境搭建、部署、维护
  • 外部协作(软硬件资源、系统依赖、依赖对方、被对方依赖)
  • 工作量估算、任务分配、进度跟踪、任务调整
  • 风险监控(技术风险、进度控制、质量控制),发现、预警、处理风险
  • 汇报、统计、向管理层透明化展示团队的工作状态
  • 其它非技术的沟通管理工作。

不同公司的行政结构、企业文化以及个人能力的差异很大。有些公司除tech lead外,还给团队配备了技术经理、敏捷教练、一二线架构师;有的公司则可能连合格的产品经理都没有,这导致tech lead在不同环境下的具体分工有非常大的区别。

大公司的tech lead可以只做开发相关的具体工作;而小公司的tech lead可能就是CTO。无论分工如何,既然Tech lead要对结果负责,他就必须做团队里(有时包括团队外)没人干的活 —— 不管是没人能干还是没人愿意干。

3、Say People Words(说人话)

一般来说,tech lead要负责的内容有:技术决策 + 掌控进度 + 实现目标 + [改进流程]。

技术决策者:Tech lead应该是团队内技术最全面的人,即使团队内有比自己更精通某个细分方向的领域专家,tech lead也必须是主要技术方向的决策者。

不能深入理解技术方案 -> 很难对进度做正确评估 -> 无法提前发现和控制技术风险 -> 影响目标实现(理解技术方案和理解每一个细节接口和代码是两码事。在一个中型的多功能团队里,希望tech lead掌控每一个细节是不可能的)。

进度掌控者:为了掌控进度,tech lead会持续跟踪(所有人的)进度,及时发现技术和非技术风险(比如对外部的依赖),通过各种手段降低风险危害,必要的时候还会砍掉次要目标以确保主要目标的实现。

4、进阶:流程缓冲加落地

优秀的tech lead除实现目标外,还能成为团队最佳工程实践的推动者。在没有流程的小公司,流程确立靠tech lead;在流程打满无数张A4纸的大公司,流程落地靠tech lead.

最佳工程实践的信条一抓一把,但是具体落到每个公司都不太像那么回事。每个团队都有自己的特定情况,都需要有所变通。区别只是灵活的团队可以搞得心照不宣、随心所欲而不逾矩;而处理不太好的团队就难免搞得鱼死网破。

流程改进是一个持续而漫长的过程,只要团队有成长,成长速度能够跟得上公司的变化,就是最好的团队,不应该苛求团队的行为必须符合教科书上的最佳实践。

我的经验是流程改进和系统设计一样,需要兼顾自顶向下和自底向上,tech lead是两者之间最好的“胶合层”,这样既不至于违背高层的流程设计目标,又给团队保留了足够的灵活度,还有机会向上提供反馈以改进过于僵化的流程框架。

团队是流程最重要的执行单位,在成熟的研发体系和组织架构下,tech lead不必参与流程改进,但是如果能关注并提供反馈就可以给流程的决策者提供有价值的信息,也许有机会避免一些灾难性的后果(虽然在成熟体系下很难撼动既有框架)。

Tech Lead 的特质

作为tech lead,他对技术团队的整体结果负责。他懂得要事先行,他也懂得根据形势动态调整优先级,不拘泥、不固化。如果团队成员的技术能力弱于他,他的任务拆解能力和解决核心技术问题的能力同样重要。如果团队成员的技术水准和他一样高(甚至更高),他的心胸和愿意为团队服务的态度很重要;持开放的心态接受不同意见,关键时刻有自己的决断,并且愿意做其他人不做的脏活累活是他的显著特征。

他关注细节,也关注愿景;关注脚下的每一步,也关注终点的方位和路径。他识别问题,暴露风险,不遮掩,不拖延。他的心中不光有技术,还有成本;不光有目标,还有人;不光有规则,还有变通。他不把个人野心凌驾在团队目标之上。

有一个关于技术副总(engineering VP)和CTO分工的说法:技术副总要带领团队披荆斩棘、穿越丛林,CTO则需要努力飞高一点看明方向。对于一线技术团队来说,tech lead在自己负责的范围内,要成为这两种形象的合体。既要脚踏实地和大家一起快速前进,又要不断跳高远望,确保团队工作在正确的方向上。

简单地说,一只眼要看着整体目标(比如半年、一年的工作目标),一只眼看着自己的短期目标(比如一个星期、一个迭代的目标)。这是tech lead有别于其他成员的核心能力之一。

发现 Tech Lead

我基本上是按照上面的规则按图索骥。

我很赞同 YC创业课上“如何运营公司”中的观点:在没有上下级关系的时候,如果很多人不断跑到一个人的桌子前面去请教问题、去寻求帮助,那这个人就是lead。

另外还有一种lead也同样优秀:在没有上下级关系,同时也没有直接利益关系的情况下(比如不能为对方的绩效考评说话),能带动周围的人共同完成目标。

核心lead的另一个识别特征:在项目前期能有条理地梳理项目的脉络,能清晰地拆分关键技术任务,能够在各方面都还不清楚的时候就有节奏的忙起来,同时又不瞎折腾。核心lead的其它特征:自主性强,在没有明确指导的情况下能够独立完成工作任务,并且主动扩大自己的防区。

培养 Tech Lead

一个人很难同时具有所有的优点,只要具备几个方向的优点,同时没有不可接受的缺点,就有潜力可以培养。欠缺的方面可以由其他人来补充。在培养tech lead方面,大家肯定都有自己的绝招。在这里,我简单介绍下风信现在的实践方法:

作为一个没有什么知名度,也不愿意砸钱挖人的创业公司,一方面我们积极寻找志同道合,愿意共同创业的lead和优秀工程师加入。另一方面,我们更加积极和努力的在内部做人才培养,希望我们现有的团队成员都能在一两年内成长为合格的tech lead。

我们的基本要求是:要带好别人,先带好自己 (to lead others, learn to lead yourself first)。

“lead yourself” 是我们的核心文化之一。作为知识工作者,是否能成为lead不看一个人现在管多少人,而要看他能负责什么东西。

我们曾经有过一个内部会议,讨论的话题是『如果在风信创业失败关门的时候,你只锻炼了一种能力,你希望是什么』。最终的结论是“明白做事情的流程,分清任务优先级,专注工作八小时,成为自己的lead”。这当然不足以让人成为一个合格的tech lead,但应该是成为 lead的必由之路。

我们花非常多的精力在日常工作中锻炼团队的领导能力。包括:

  • 强制每周都要有人做内部培训,话题不限,以锻炼主持人的文字组织能力、演讲和沟通能力、会议主持能力;
  • 努力不放过任何一次大型会议机会,不断的培养主持人、记录员以及参与者的讨论和沟通能力、代办事项的跟踪执行能力等等;
  • 每个月至少一次正式回顾会议(通常在六个小时以上),集体讨论公司发展的问题和建议,我觉得这是我们在领导力培训上最有成果的单项活动(需要有足够深入的参与度);
  • 在团队的沟通协作上,不以解决沟通问题为最终目标,而是通过培养开放、透明、坦诚的文化,努力提升团队成员在沟通中的影响力;
  • 在任务分解、工作安排上,培养要事先行,识别动态优先级的能力;
  • 努力培养大家在一个正确的抽象层次上处理问题——这不仅仅是为了编码;
  • 另外最主要的就是充分信任和授权,允许团队成员犯错误,给大家足够的锻炼机会!

 

摘自:http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650993234&idx=2&sn=8d1d30846352624e127fa63a50d4693a&scene=1&srcid=0706cjkSxLy3z9oYSyrOVz0R&from=groupmessage&isappinstalled=0#wechat_redirect

作者:李国鹏,北京风信科技有限公司CTO。

欢迎关注下方“非著名资深码农“公众号进行交流~

One thought on “技术团队如何发现和培养Tech lead?

发表评论

邮箱地址不会被公开。