原文出处:如何成为一名优秀的技术 Leader?

剧照:小谢尔顿

作者:架构精进之路

来源:架构精进之路相信大部分人对于团队管理和技术管理在认知上,存在一定隔阂,无形之中会将【管理岗】和【技术岗】进行对立比较。
在国内一些大研发团队,一般会同时设置两类角色来更好地做团队运行管理。

本文结合本人自身一些浅薄的技术管理认知,跟大家聊一下如何成长为优秀的技术Leader。

是否需要一个技术Leader?

首先,第一个问题:我们是否需要一个技术Leader?也许会有人反对这个角色,并觉得优秀的开发人员可以自己做出决策,并做好部分技术Leader的工作。即使存在以上这些完美的情况,在团队成员间公开谈论彼此,在达成一致同意的解决方案之前讨论利弊,这些种种工作vs利益间微妙的平衡,或许需要技术Leader这样的一个角色。我觉得不应该关注于这个角色是否应该存在,而最好将重点放在其职责可能会带来的收益上。

技术Leader 与每个领导职位一样,糟糕的领导者会使事情变得更糟。

技术Leader需要具备什么能力?

可以明确的一点是:一个合格的技术 Leader 有责任来帮助团队的进步。作为该角色的人员,他应该具有非常不错的技术视野/经验以及良好的沟通技巧。他对项目或产品的技术方向负责(准确地说是对结果负责),并作为跨团队沟通的首选人。对于大中型团队而言,Tech Leader 主要的职责包括:

1)指导项目的技术设计及制定开发规范

例如。我们将使用什么技术,我们将如何交付项目,我们将使用哪些模式等。

2)分析风险和跨功能要求

分析风险意味着降低风险:我们可以选择某种方法,还是说有太多未知数。 在承担一定风险时,对项目的影响是什么?例如。介绍您在会议上看到的新技术。

3)指导/教练经验不足的新人

很可能在你的团队中有不同的经验的同学。一旦谈到项目成本,考虑匹配技能和经验时,它就变得很有意义。因此,需要重视对经验不足新人的培养。

4)关注跨团队协助与沟通

一个项目团队包含各个相关联角色群体,研发、测试、产品、运营甚至需求业务方等等,其他角色同学可能在技术上不如开发人员,他们将使用不同的语言,技术Leader将需要关注于这一点,并做好协调与沟通。

如何做一个合格的技术Leader?

正如职位所描述的那样,技术 Leader是一份包含技术和管理双重责任的工作,准确地说应该是:先技术,后领导。那在实际工作过程中,需要注意做好哪些点呢?

1)倡导技术创新与变革

倡导技术创新与变革,建立积极的思维模式。当一个流程缓慢或者繁琐时,要尝试去改变它,使其变得更好。这样做的一种方法是使用 OODA 循环:

为了正确观察缓慢或繁琐的流程细节,最好的方式就是成为其中的一员(例如:著名的现场主义),并体验与团队中其他人一样的痛苦。你应该采取一种不断改善某种状况的心态。日本称之为“Kaizen”(改善法,其起源于丰田公司在生产、机械和商务管理中持续改进的管理法)。在我们的研发过程中,希望改进的是团队的效率和乐趣,以及软件项目的最终交付。

2)坦然面对失败与成功

事情有可能会失败,不用过分担心失败

技术方案落地可能失败,项目开发建设可能失败、部署上线可能失败、系统重要监控点可能被遗漏、系统宕机崩溃可能会发生。如果你已经为失败做好了十足的准备,那么应该会比较容易应对。当事情失败时,不要寻找责怪的人!你是技术 Leader,有承担的责任和义务。花费你的精力来解决手头的问题并从中吸取教训。当然,不要在一个坑里摔倒两次,如果你需要经历两次相同的失败来解决同一个错误,那么你应该是做出了错误的决定。从失败中汲取教训,将塑造您的方向,并在未来做出更好的决策。

学会为成功喝彩

当团队有成就感时,成员们会感受到快乐,同时积极的情绪会让后面的工作尽可能做到最好。庆祝阶段的小成就非常重要,例如成功地冲刺或完成的功能。当有人想出一个新想法时,也许是他们在会议上看到的一种方法或框架,如果这个想法得以实现,重要的是任何带有新想法的人都应该被认可。这是非常有益的,将带来更多的合作,创造力和开箱即用的思维。形式也许没那么重要,一顿小午餐,也许是一个团队建设都是一个很好的想法,同样可以凝聚一个快乐和积极的团队。

3)保持技术

技术主管有很多非编码职责,但不要忽视实践技术活动是非常重要的:

大多数(如果不是全部)开发人员将乐于定义框架,提倡某些方法等。但是,一些非功能性需求(也称为质量属性)(如网络,安全性,部署和一致性)经常被忽视。

4)良好的时间管理

作为技术Leader,您应始终为您的团队服务;提问、支持、指导或做出决定。

5)成为团队导师

一个好的技术 Leader:

分担责任,给予所有权,但同时要保持负责。

6)学会做评估

霍夫施塔特定律:即使考虑到霍夫施塔特定律,它也总是比你预期的要长。——Douglas Hofstadter

项目工时评估很难,如果你经常这样做,你会变得更好,但你仍然会有可能犯错。作为 Tech Leader,可能需要在团队实际需求开发之前进行预估。更便于了解实现成本及优先级的安排调整。为了达到这个目的,我建议使用三点估计,做一个乐观的(Optimism 简称:O),一个最好的猜测(Best Guess简称:BG)和一个悲观的估计(Pessimism 简称:P),并使用这个公式:

(O + 4BG + P)÷ 6 //得到加权平均值

估计代表了团队执行的能力;不是你自己实施的能力。还要确保,你知道你的可交付成果。这可能不止包括代码和部署工具,例如:代码CR,接口文档等等

掌握评估是一生的旅程,它会让你与众不同。合作方会将你与专业、稳定和高质量的工作联系起来。

7)擅长与外部沟通对接

非技术利益相关者使用的语言可能与开发团队的语言是不同的。技术 Leader 必须找到一种以非技术人员可以理解的方式交流思想的方法。这在 DDD(领域驱动设计)世界中,这意味着建立一种连接上下文通用语言。与客户密切合作,尝试从他们那里检测需求,并不断地将他们的需求与正在进行的实施相关联。作为技术Leader,在外部沟通合作中作为关键联系人,与其他技术Leader 的沟通协作同样也不可或缺。有很多理由将自己与其他技术Leader 联系在一起。

这种协调在较大型的组织或客户时是一个真正的问题。投入一些时间是必要的,以避免超出您的控制范围的意外。

总结

作为技术Leader,也许除了以上列举的几项内容之外,还存在其他很多软性的素质能力。欲求木之长者必固其本, 欲求流之远者必浚其源:

拥抱文化差异,多样性非常宝贵。所有人都不同,过着不同的生活。总结就是:每个人都是团队的一员,应该重视每个人的意见。因为你团队的力量不是单个成员的才能,而是他 们的合作,坚韧和相互尊重的整体效能的体现。