程序员都讨厌被管理,而乐于被领导。管理的角色由PM(project manager)扮演,具体来说,PM负责提需求、改改改。大多数情况,PM是不懂技术的,这也是程序员觉得PM难以沟通的原因。而后者由技术领导(technical leader)担当,当然技术领导更接地气的叫法是组长、老大,后文统称为技术Leader。技术Leader复杂带领程序员重逢陷阵,实现PM的需求,技术Leader同时担当研发与管理两重角色。一般说来,技术Leader的专业技能都比较牛逼,组员都比较信赖,因此愿意被领导。
本文讨论的是互联网行业中比较常见的小团队,即由几个、十几个成员组成的技术小组中,一个好的技术Leader者是怎么样的。“好”的定义有两方面,第一是对公司而言,保质保量完成项目,培养人才;第二是对团队成员而言,带领大家前进,获得精神与物质上的报酬。前者是核心,后者是达成前者的重要条件。程序员都有一个共识,选择一个好的团队、领导有时候比选择一家公司更为重要。
以下是我对优秀技术Leader的一些思考,排名不分先后
本文地址:http://www.cnblogs.com/xybaby/p/7629392.html
对新技术保持敏感
互联网行业,每年都有大量的新技术出现,作为技术Leader,需要对新技术保持敏感,特别是领域相关的知识。不管这些新技术能否用上,作为知识储备总是必要的。对于技术Leader而言,甄别、了解一门新技术并不是很难,一来在《怎样才算得上合格的程序员》一文中也提到,有了良好的计算机基础能更加本质的看待新技术;而来,技术Leader能有更丰富的资源,比如来自其他小组或者本小组成员的技术报告。
谨慎使用新技术
了解、掌握新技术是一回事,但在业务中使用新技术是另一回事,特别是在已经上线的、复杂的产品中。决定是否采用新技术不能看噱头、追潮流,而要考虑诸多因素,比如替换旧技术的必要性、新技术的优缺点、是否开源、新版本发布频度、社区是否活跃、上手难度、组内是否有靠谱的同事深刻掌握。很多时候,新技术听起来很酷,但不一定适用于当前的团队和任务,选择合适的,而不是追逐最好的。
不存在技术单点
在之前介绍分布式相关的文章中,都提到,分布式中最怕的就是单点故障。团队中也是如此,任何比较复杂的逻辑,或者技术难度比较高的部分、或者涉及到多方合作的业务,都应该有两个人了解、负责,至少一主一辅,否则当有人撂担子的时候,事情就很难办了。团队成员解决不了的问题,最终都需要技术Leader来解决,维持standby也就减轻了自己的负担。
以团队产出作为核心任务
普通程序员到技术Leader的角色转变中,需要意识到,对自己的考核不再是代码写得多好,而是整个团队的产出。工作重心是让整个团队高效的协作,将任务分解给适当的人员,而不是事必躬亲。
代码不一定要写的多,但一定要写得好
技术型的领导、管理还是要以“技术”服人,牛逼的技术才能征服程序员。但术业有专攻,技术Leader也不可能在方方面面都是专家,但至少需要在业务领域有所深度 。代码也不一定写很多,但写出来的代码一定有足够好,可以作为组内示范。如果是新项目、新业务,技术Leader一般会参与基础模块的开发,这个时候就一定要把代码写好,因为这部分代码会接受跟多人的检验。
解决线上问题的能力
线上突发问题,更能考验一个人的能力和心里素质,当大家都一筹莫展的时候,如果技术Leader能够抽丝剥茧、定位问题,自然能够让诸多程序员佩服不已。
鼓励改进,公开表扬
有上进心的程序员都愿意自发的改进、优化代码。小的粒度比如提取共用接口、增加文档;大的粒度比如重构一些基础性模块、引进新的思维或者技术。且不论效果如何以及最终是否采纳,这种行为都是值得鼓励的,作为技术Leader要多给大家点赞。在对外分享、讲PPT的时候,将功劳归功于组员,首先表扬、感谢组员。程序员的职业认同感还是很强的,需要来自业内人士的肯定。
为组员争取利益
当团队的利益与组员的利益不冲突的时候,应该尽量为组员争取利益,精神层面和物质层面的,前途与钱途。一味的画饼而不兑现只会失信于人,程序员是单纯但并不傻,而且大家都要养家糊口,少来点虚的。
冷静理智
在《怎样才算得上合格的程序员》就提到,合格的程序员需要管理好自己的暴脾气,优秀的技术Leader更应该如此。不管是面对重复犯错的菜鸟,还是不负责任的老鸟,发火都不利于解决问题。先解决好问题,然后再私下与当事人沟通、批评。
剔除老鼠屎
在团队中,一两个技术弱一些的同事问题也不太大,只要态度认真,且愿意学习。最怕的是“老鼠屎”:不负责任、难以沟通、整天抱怨、传播负能量。对于这种人,不管技术水平如何,技术Leader都应该利用手中的权利,在沟通、警告无效的情况下,将其驱逐出团队,当断则断。
知人善任
在一个团队里,自然有不同性格的人。有的人喜欢钻研技术,有的人善于交流沟通。不同的人适合不同的工作,扮演不同的角色。技术Leader应该了解大家各自所长,在达成团队目标的情况下,尽量安排各自喜欢的工作。
团队的成就感与成长
经常看到有人说,如果在当前的公司、团队学不到东西的时候,就可以考虑跳槽了。这就是说,大家在这个团队里面,是希望有所成长的,所做的产品是能够得到认可的。技术Leader应该多促进组内、组外的技术分享,推荐好的学习资源,让大家共同进步。
总结
综上所述,个人觉得,要做一个好的技术Leader,首先得培养自己的技术魅力和人格魅力,技术是安身立命之本,是服众的武器。其次也得利用好手中的权力,为成员谋福利、争取利益,同时将老鼠屎剔除团队。
程序员特别是新手程序员,如果能遇到一个好的领导是一件非常幸运的事情。
以上只是我的一点思考,而我还不是一个技术Leader,所以请轻拍