前言
Hi 你好,我是东东拿铁,一个正在探索个人IP&副业的后端程序员。
每个程序员在当下都会有属于自己的职场阶段:
- 动作执行层:绝大部分程序员的状态,看prd,开发需求
- 任务执行层:带领项目、小团队完成任务
- 战略管理层:资源分配、优先级选择,团队建设、管理
- 战略决策层:既决定方向,也决定团队生死
不知道你属于哪个阶段呢? 今天想和大家聊的Tech Lead,就是第二个阶段,任务执行层。
什么是 Tech Lead?先说说我的理解
Tech Lead:带领着团队成员一起工作,他不一定是你的领导,但是从技术角度来说,你愿意听他的,并且也能获得很好的技术成长。
Leader:负责你的绩效、薪资,负责整个团队的管理工作。
其实,Tech Lead就是团队的"技术管理者",他一样和你在一线编码,但承担了项目上的技术决策,比如框架、中间件的选择等,在技术上你愿意跟随、学习他们。
如果你在团队时间够长,或者你就是那个最熟悉项目、业务的人,身边的同事,遇到业务、技术问题都会咨询你,你也正在指导着大家的工作,那么恭喜你,你已经成为了这个团队的Tech Lead。
如何成为 Tech Lead?
运气 有一句话:"把领导熬走了,你就是领导。" 和你的工作经验无关,或许你毕业只有一年,当团队内有人员变动时,恰巧你又是最熟悉项目、业务的那个人,那么这个坑位就很有可能空出来给你,你就会成为Tech Lead。
当然,或许你有着丰富的经验,但是在团队内是属于"第二梯队",但一只有一个人技术、业务都要比你好,如果他还很稳定,那不知道要熬到什么时候,你才能真正的"上位"。
实力 虽然上面说到了运气,但在机会来临之前,一定要有充分的准备,才能更好的胜任Tech Lead的角色,这部分我们放到后面,来为大家介绍需要做好哪些准备。
当然,在当前互联网行业比较饱和的情况下,我个人认为,运气更重要一点。
成为Tech Lead 需要哪些能力?
上面说到,成为Tech Lead,离不开运气,但更重要的是你要有这个实力来胜任工作,下面我我会从三个纬度,来介绍成为Tech Lead的必备能力有哪些
- Developer
- Architect
- Leadership
Developer
作为优秀的开发人员,常见的编程技能如面向对象、DDD、函数式编程,设计模式、重构、自动化等也都是必备素质。
任何一个Tech Lead一定是从一名开发工程师成长起来的,Developer阶段,抛开上面的技能不谈,我觉着两个重要的点是皮实、靠谱。
皮实 皮实是经得起折腾的意思。程序员在工作之路上,解决不完的Bug、产品、老板改来改去的需求,一个又一个的新系统开发,加班熬夜是常态,而且在很多小公司,依然是"政治正确"。 高强度的工作压力下,需要我们能够扛住成长的压力,新系统、新产品的开疆拓土,所以说皮实,是作为开发人员很重要的一个点。
相信你也接受不了频繁请假、天天喊累的同事对吧。
靠谱 更好、更快的完成工作,我觉着是形容一个工程师靠谱必要的两个条件。 如果系统今天出了故障,明天又有需求延期不得不去协调,甚至合作团队都来投诉效率、质量问题,别人就需要为他的问题买单,不被干掉就不错了,更难说得上靠谱了。
总结一下,成为Tech Lead之前,首先要在技术领域有足够的积累。这包括熟悉常用的编程语言、掌握常用的技术框架、了解最新的技术趋势等。此外,还要通过实践不断提高自己的技术实力,解决各种技术难题,支持业务的日常工作,为日后成为Tech Lead打下坚实的基础。
Architect
作为项目中的架构师,考虑的因素可能包含产品的业务背景与全生命周期,设计更好的演进式架构,技术选型中做好技术决策与系统设计,对周期的迭代计划做好充分的评估与风险管理。
架构师阶段,我认为重点要培养提升的有两个方向 关注业务 如果说在Developer阶段,关注的是业务的一部分细节,做好每一个功能,那么在架构阶段,你需要对业务有一个整体的理解。
对业务有了整体理解之后,后续在做技术规划的时候,就能够结合业务的发展方向来规划技术的发展,而且在这个阶段,可以给产品提供想法与建议。
熟悉竞品 和自己产品的整体差异,更好的理解业务的规划。
技术 提升技术宽度。如果说在Developer阶段,要把重点放在学会、学深。那么在Architect阶段,还要提升技术宽度。
举个最简单的例子,如果你是Java后端,那么你的框架是选择单体架构、还是微服务架构?如果你是前端,那么你就要知道React和Vue框架如何选择。
Leadership
想作好一名技术Lead,有较多的软技能需要提升,比如团队沟通、向上沟通,冲突管理,跨团队协调,影响力构建等。
既然是Lead,那么你不在是单独奋斗,最小可能也会领导一个3人左右的项目组,而且也要跨团队沟通、协调资源,学会与人打交道、学会沟通是对一名工程师很大的考验。
不同阶段的Tech Lead
项目启动期
Tech Lead在项目启动期,主要承担了团队的架构师工作。在这个阶段,需要设计出符合项目需要的架构(废话)。 但在技术选型过程中,还需要考虑多种因素
- 公司架构限制,比如你想引用新的中间件,但是运维团队没有成熟方案,或者资源限制
- 时间限制,可能更好的架构,需要付出成倍的时间,这对于业务来说,是不能接受的
- 利益相关者沟通,比如技术委员会、架构组、算法等,架构需要满足多方需求
在启动阶段,还要做但不限于以下工作
- POC架构验证,验证系统架构是否可靠、可落地
- 搭建CI/CD,或者利用公司已有流程
- 编写示例代码,以符合系统架构风格的方式,完成业务编写,给其他人做参考
- 对项目成员进行培训
- 部署、监控报警配置
技术回补期
在项目快速启动阶段,我们一定会面临的一个问题就是:因为妥协于开发进度,忽视一些技术上的追求,导致项目快速膨胀,垃圾代码成山。
我个人认为,绝大部分项目,都将长期处于这样一个阶段,因为在技术回补阶段,如果做不好下面的几个基础工作,在快速迭代阶段,问题将会持续累加,陷入恶性循环。
因此,在技术回补期,Tech Lead需要建立一系列计划与规范
- 完成技术债梳理,开始尝试与计划完成技术债修复
- 完善团队开发规范,也就是自己的团队文化,同步业务gap
项目稳定期
在这个阶段,作为Tech Lead,工作也趋于稳定,可能在技术方面需要投入的精力,比之前的两个阶段大大减少,但是需要关注的内容仍然有两部分
- 架构演进,寻找在性能、效率更好的方式,解决现有的问题,四个字:降本增效
- 人员培养和成长,绝大部分开发人员在这个阶段,因为缺乏新内容、新技术的刺激,已经感觉到"无聊",需要找到新的成长点
Tech Lead要注意哪些事情
精力分配
新晋级Tech Lead,非常容易陷入到两个误区 事必躬亲 和 甩手掌柜。
先说说事必躬亲。
在字节刚成为团队的Tech Lead时,我就陷入到了这个误区中,说说自己的几个具体表现。 群里有报警,如果我第一时间看到了,我会立刻去排查一波原因,因为自己对业务、项目都很熟,所以定位起来也很快,然后直接告诉值班同学,需要怎么去处理。忽略了值班同学需要有排查时间的可能性。 Oncall来了(产品、运营反馈问题),我也第一时间先回复,或者直接去看看错误,而不是让值班同学跟进排查。
其实,归根结底,还是自己认为,所有的事情都和自己有关系,所有的线上问题自己都有责任,因此拼命干活,总觉着自己能力强,就继续多干些,遇到问题为团队兜底。短时间来看,团队的问题处理速度很快,也没暴露出什么大的事故。
但是弊端很明显,那段时间我可以说是精疲力尽,本身一部分管理工作就超出了我的能力范围,但是要做的事情、承担的责任变多,感觉很快吃不消了。
第二个弊端就是,大家可能会感受不到我的信任,影响大家的积极性,在一定程度上,我帮他们解决问题,也是限制了他们的发挥空间。
再说说甩手掌柜。
我花了一段时间之后,从事必躬亲的陷阱中走了出来,没想到马上就遇到了第二个陷阱。 成为Tech Lead之后,工作突然就变得忙起来,需求开发、评审、任务分配、开会、面试、团队规划等,占用了很多的时间。此时我已经逐步把一些重要的工作让其他同事去做,因此自己的产出下降非常明显,导致后面在人力使用的review上,从数据看,我很多天是没有具体的任务在做的,但是自己却感觉每天都在疲于奔命。
所以在此时,要学会做精力分配,常见的分配方式如70%用于技术,30%用于团队,大家也可以根据自己的阶段,去灵活调配,切忌走向极端。
影响力构建
成为一名Tech Lead,你需要带领大家工作、奋斗,如何能够在没有管理关系的情况下,让大家更好的配合你工作,除了沟通的艺术,一定要注重自己的影响力构建。
《影响力》(Influence: Science and Practice)一书中,介绍的影响力的六大原则来构建相关的影响力
- 互惠互利:善于帮助大家解决工作中遇到的问题
- 承诺一致:发现问题、提出规划、解决问题
- 社会认同:这个暂时没想好具体的例子
- 好感:做事认真、靠谱
- 权威:技术、业务专业性
- 稀缺:比如在团队中,只有你熟悉某一系统、业务
空降Tech Lead,如何快速适应
当空降到一个团队,想做好Tech Lead是一件不容易的事情,毕竟项目、人对你而言都是陌生的,如何用过往的经验快速落地,我觉着有几个方向供大家参考。
- 优秀的自我介绍,确保大家认识你。
- 找到团队中最熟悉项目的人,协助你快速熟悉项目,了解现有问题
- 了解技术细节,以行动展示能力,比如从一点点技术难题、小部分代码重构开始
- 收集问题,团队沟通,比如团建,拉近与大家的距离
说在最后
好了,文章到这里就要结束了,感谢你能看到最后。
关于Tech Lead相关的内容,肯定还有非常多,成为Tech Lead每一个必备的能力,都能够展开来讲,远远不是一篇文章能总结的完的。
能力有限,结合自己多年工作实践,只能总结这些,抛砖引玉吧,希望能给每一个想成为Tech Lead,或者已经是Tech Lead的朋友一点帮助。
不知道你是不是也想成为一个Tech Lead,或者有没有遇到什么阻碍呢?欢迎在评论区留言,也欢迎加我wx:Ldhrlhy10,一起交流~