程序员如何进入职场第二阶段:成为团队的Tech Lead

前言

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在项目启动期,主要承担了团队的架构师工作。在这个阶段,需要设计出符合项目需要的架构(废话)。 但在技术选型过程中,还需要考虑多种因素

  • 公司架构限制,比如你想引用新的中间件,但是运维团队没有成熟方案,或者资源限制
  • 时间限制,可能更好的架构,需要付出成倍的时间,这对于业务来说,是不能接受的
  • 利益相关者沟通,比如技术委员会、架构组、算法等,架构需要满足多方需求

在启动阶段,还要做但不限于以下工作

  1. POC架构验证,验证系统架构是否可靠、可落地
  2. 搭建CI/CD,或者利用公司已有流程
  3. 编写示例代码,以符合系统架构风格的方式,完成业务编写,给其他人做参考
  4. 对项目成员进行培训
  5. 部署、监控报警配置

技术回补期

在项目快速启动阶段,我们一定会面临的一个问题就是:因为妥协于开发进度,忽视一些技术上的追求,导致项目快速膨胀,垃圾代码成山。

我个人认为,绝大部分项目,都将长期处于这样一个阶段,因为在技术回补阶段,如果做不好下面的几个基础工作,在快速迭代阶段,问题将会持续累加,陷入恶性循环。

因此,在技术回补期,Tech Lead需要建立一系列计划与规范

  1. 完成技术债梳理,开始尝试与计划完成技术债修复
  2. 完善团队开发规范,也就是自己的团队文化,同步业务gap

项目稳定期

在这个阶段,作为Tech Lead,工作也趋于稳定,可能在技术方面需要投入的精力,比之前的两个阶段大大减少,但是需要关注的内容仍然有两部分

  1. 架构演进,寻找在性能、效率更好的方式,解决现有的问题,四个字:降本增效
  2. 人员培养和成长,绝大部分开发人员在这个阶段,因为缺乏新内容、新技术的刺激,已经感觉到"无聊",需要找到新的成长点

Tech Lead要注意哪些事情

精力分配

新晋级Tech Lead,非常容易陷入到两个误区 事必躬亲甩手掌柜

先说说事必躬亲

在字节刚成为团队的Tech Lead时,我就陷入到了这个误区中,说说自己的几个具体表现。 群里有报警,如果我第一时间看到了,我会立刻去排查一波原因,因为自己对业务、项目都很熟,所以定位起来也很快,然后直接告诉值班同学,需要怎么去处理。忽略了值班同学需要有排查时间的可能性。 Oncall来了(产品、运营反馈问题),我也第一时间先回复,或者直接去看看错误,而不是让值班同学跟进排查。

其实,归根结底,还是自己认为,所有的事情都和自己有关系,所有的线上问题自己都有责任,因此拼命干活,总觉着自己能力强,就继续多干些,遇到问题为团队兜底。短时间来看,团队的问题处理速度很快,也没暴露出什么大的事故。

但是弊端很明显,那段时间我可以说是精疲力尽,本身一部分管理工作就超出了我的能力范围,但是要做的事情、承担的责任变多,感觉很快吃不消了。

第二个弊端就是,大家可能会感受不到我的信任,影响大家的积极性,在一定程度上,我帮他们解决问题,也是限制了他们的发挥空间。

再说说甩手掌柜

我花了一段时间之后,从事必躬亲的陷阱中走了出来,没想到马上就遇到了第二个陷阱。 成为Tech Lead之后,工作突然就变得忙起来,需求开发、评审、任务分配、开会、面试、团队规划等,占用了很多的时间。此时我已经逐步把一些重要的工作让其他同事去做,因此自己的产出下降非常明显,导致后面在人力使用的review上,从数据看,我很多天是没有具体的任务在做的,但是自己却感觉每天都在疲于奔命。

所以在此时,要学会做精力分配,常见的分配方式如70%用于技术,30%用于团队,大家也可以根据自己的阶段,去灵活调配,切忌走向极端。

影响力构建

成为一名Tech Lead,你需要带领大家工作、奋斗,如何能够在没有管理关系的情况下,让大家更好的配合你工作,除了沟通的艺术,一定要注重自己的影响力构建。

《影响力》(Influence: Science and Practice)一书中,介绍的影响力的六大原则来构建相关的影响力

  • 互惠互利:善于帮助大家解决工作中遇到的问题
  • 承诺一致:发现问题、提出规划、解决问题
  • 社会认同:这个暂时没想好具体的例子
  • 好感:做事认真、靠谱
  • 权威:技术、业务专业性
  • 稀缺:比如在团队中,只有你熟悉某一系统、业务

空降Tech Lead,如何快速适应

当空降到一个团队,想做好Tech Lead是一件不容易的事情,毕竟项目、人对你而言都是陌生的,如何用过往的经验快速落地,我觉着有几个方向供大家参考。

  1. 优秀的自我介绍,确保大家认识你。
  2. 找到团队中最熟悉项目的人,协助你快速熟悉项目,了解现有问题
  3. 了解技术细节,以行动展示能力,比如从一点点技术难题、小部分代码重构开始
  4. 收集问题,团队沟通,比如团建,拉近与大家的距离

说在最后

好了,文章到这里就要结束了,感谢你能看到最后。

关于Tech Lead相关的内容,肯定还有非常多,成为Tech Lead每一个必备的能力,都能够展开来讲,远远不是一篇文章能总结的完的。

能力有限,结合自己多年工作实践,只能总结这些,抛砖引玉吧,希望能给每一个想成为Tech Lead,或者已经是Tech Lead的朋友一点帮助。

不知道你是不是也想成为一个Tech Lead,或者有没有遇到什么阻碍呢?欢迎在评论区留言,也欢迎加我wx:Ldhrlhy10,一起交流~

相关推荐
罗政14 分钟前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端
麒麟而非淇淋43 分钟前
AJAX 入门 day1
前端·javascript·ajax
2401_858120531 小时前
深入理解MATLAB中的事件处理机制
前端·javascript·matlab
阿树梢1 小时前
【Vue】VueRouter路由
前端·javascript·vue.js
拾光师2 小时前
spring获取当前request
java·后端·spring
随笔写2 小时前
vue使用关于speak-tss插件的详细介绍
前端·javascript·vue.js
史努比.2 小时前
redis群集三种模式:主从复制、哨兵、集群
前端·bootstrap·html
快乐牌刀片883 小时前
web - JavaScript
开发语言·前端·javascript
miao_zz3 小时前
基于HTML5的下拉刷新效果
前端·html·html5
Java小白笔记3 小时前
关于使用Mybatis-Plus 自动填充功能失效问题
spring boot·后端·mybatis