作为一个程序员,随着在各种项目上的经验积累,你的技术思维会越来越成熟,经验也会逐渐丰富,开始承担开发团队中的核心工作,掌握项目的业务和技术全貌,大概率你会成为一个Tech Lead。
在很多公司里,组织结构相对稳定,想成为Tech Lead并不是件容易的事情,然而在专业服务公司中,由于项目众多,Tech Lead作为软件开发活动中非常重要的角色,始终是个稀缺资源。
成为Tech Lead可能是突然发生的事情。有些同学可能早就期待着成为一个Tech Lead大展拳脚,在日常的工作中积极朝这个方向努力;也有些同学热衷于技术本身,并不想成为Tech Lead,但由于日常表现突出,能力强,确实是Tech Lead的最佳人选。不管怎样,大家都会带上Tech Lead的帽子,开始一段新的旅程。
把自己定位为为团队解决问题的人
讲一个在我刚加入公司时印象深刻的小故事:
记得在加入公司后的第一个项目上,一次跟老骚窝的沟通中,讨论起了团队里的技术和流程,我说出了在项目上经历过一段时间后看到的一些问题,当时跟那个老骚窝的对话改变了我的很多想法:
我:……
老骚窝:那就把问题解决掉。
我:PM和TL都忙的不行,没时间。
老骚窝:你可以自己Drive解决这个问题。
积极努力解决问题在任何时刻都是被鼓励的,开发人员可以站出来Lead一件事推动解决,作为Tech Lead,更要改变对自己的定位,主动积极解决项目上的问题自然是责无旁贷。
软件开发工作是复杂的,虽然我们在极力用各种工程实践让一切变得有序可控,但它依然是依赖个人能力的一种创造性活动,产品设计是否合理,解决方案是否完备,实施过程是否符合方案预期,实施结果质量是否可靠,每一步都需要团队协作来实施和确认,再加上因成本原因而做的各种妥协,一定会存在各种因知识传递效率、能力差异和协作带来的各种问题。
Tech Lead往往是团队的技术权威,对解决方案涉及的业务和技术理解相对更全面,更有机会发现这些问题,也有责任在交付过程中通过各种手段尽快找到这些问题,并带领团队解决。
不要让自己一个人忙死
然而,成为Tech Lead一段时间的同学都会觉得力不从心,什么事情都应该Tech Lead做,我又不是超人,哪有那么多时间,每天跟各种人开会就花去了大部分时间,还要解决各种突发的问题,连参加Code Review的时间都没有,今天线上出个问题,明天有个需求要估算,后天说开发的速率低交付有风险……
被戴上Tech Lead帽子的那一刻,不管之前是不是有经验(即便是被各种诱惑戴上了Tech Lead的帽子),团队对你的预期并不会改变,既然戴上了帽子,那就要成为一个合格的Tech Lead。但这并不意味着所有的事情都要Tech Lead一个人完成。
从经验数据来看,一个人做稍有挑战的事情,既能得到成长,也会因更专心更投入而获得更好的结果。Tech Lead一般是从团队的核心开发成长起来,在团队中一定有很多非常熟练且可以高效完成的工作,在成为Tech Lead之后,身上自然会多出很多工作,那么自己非常熟练的工作就要让其他人来做,也给其他团队成员一个成长的机会。
时间管理是个永恒的话题,初为Tech Lead,这个问题尤为明显。要解决这个问题,Tech Lead还是要自己问问自己,哪些事情才是非你做不可的内容。要解决时间的问题,方式并不复杂,但执行起来并不简单:
- 首先要把所有的事情梳理一下,排好优先级,把工作安排给合适的人
- 其次就是梯队和人员培养,Tech Lead要清楚当前团队需要的能力以及当前人员的基本情况,才能把工作分配给合适的人
对内、对外构建专业影响力
要把工作安排给合适的人,能把自己的想法在团队内推进,Tech Lead也需要在团队内构建起自己的专业影响力。
Tech Lead在技术上是有优势的,但技术也分很多方向,Tech Lead很难在所有方面都成为专家,前端、后端、基础设施、大数据等等。在项目交付过程中,会有非常多的场景,Tech Lead很难仅仅靠自己就给出好的解决方案,因此,Tech Lead需要了解团队内成员的优势,知人善用,有效利用团队内的技术资源来解决问题,切记凭借自己不多的经验武断的下结论。
Tech Lead对内构建影响力的关键在于帮助团队解决问题,让项目成功,体现团队价值。有些Tech Lead比较强势,喜欢一个人做决定,这往往会让一些技术不错的同学感到不舒服,意见不被尊重,甚至被质疑。团队是一个整体,Tech Lead要能带领团队做决策,解决问题,也需要照顾到团队成员的感受。
除了对内,对外的影响力也是至关重要的,如果说好的Tech Lead对内给团队的感受是靠谱和坦诚,那对外给客户或其他干系人的感受应该是专业。对外的专业体现在Tech Lead对技术的自信,能充分理解对方的需求,而给出相对全面的解决方案。
如果一个Tech Lead无法对外讲清楚自己的技术方案,在遇到相反的观点时轻易修改方案,在遇到别人质疑自己的估算时很难解释清楚,这个专业形象就很难立住。因此,在对外的沟通中,Tech Lead需要做充分的准备,这种准备应该形成一种习惯,进而锻炼自己敏锐的洞察力,找到问题的关键点,给出合理的方案。
持续学习
作为团队的核心,Tech Lead需要和各个角色保持紧密的沟通和协作,这远比一个程序员面对代码要复杂得多,既需要不断扩展自己的技术广度和深度,也需要提升自己的各种软技能。所以,每次遇到难题,Tech Lead都可以把它当做一次挑战,一次学习的机会,不断提升自己,相信回过头来,你会感谢这段旅程。