TL Cop
怎么做好互联网公司的技术团队负责人?
对这个问题有些兴趣,不请自来。
先审个题:怎么做好互联网公司的技术团队负责人?
首先技术团队负责人这个表述可以有多种理解,我将其分为两种:一线Tech Leader与其他。Tech Leader往上可以有一些层级,直至CTO, 取决于公司扁平程度与规模,不同的角色其实需要思考解决的问题是不一样的。
其次题主特意提到了互联网公司,我在传统软件行业与互联网行业各自摸爬滚打过几年,跟过不同风格的“老大”,见过不少优秀的Leader, 自己也在不同行业有过带技术团队的经历。以我个人的感受来说,互联网与否,对技术团队负责人的要求并没有太多区别,区别来自于公司或团队文化,来自于技术对于公司而言的重要程度。
仅就如何做好一线Tech Leader谈一下我自己的看法,很多地方自己还做得不够,与大家共勉。
马天宇 的回答很好,其划分是比较合理的,基本上做好业务、团队、技术三个方面就很不错了,我换个角度补充几点:
业务
要充分理解业务,不仅理解自己的产品,也要关心竞品,业内趋势,如果能对趋势有自己的判断最好不过了,没错就是要把自己当半个PM。
积极参与业务目标的拟订形成过程,比如每个季度或每个月的大体规划,在充分理解业务的基础上,你就可以更有底气地发表自己的看法,确保在大的业务方向上,团队不至于走太多弯路。
一旦目标拟订,就要尽量与之保持一致,唯有整个团队形成合力才能最大化战斗力。
在具体执行层面,比如细化到每个迭代的具体任务时,要思考如何利用现有资源合理安排,还是以业务目标为优先,计划做的这个feature是不是与目标一致?对关键目标的达成有多大帮助?就是考验你何时Say Yes,何时Say No。然而这并不是要你拍脑袋,而是要根据自己的专业素养,综合考量权衡事情的重要程度与开发成本。尤其是要敢于Say No, 很多时候不做某件事,比瞎折腾一顿要更加重要,别总怕大家没活干,除了做feature, 有意义的事情还有很多,微信就是一个典型的例子,不难想象他们肯定拒绝过非常之多的花哨feature。
业务数据的跟踪与透明。产品的激活,留存率、活跃,评分,crash rate,各种feature的转化率等等,这些产品的关键指标,作为Tech Leader也要关心,不仅如此,还需要共享给团队全员,大家每天不停地做着一个又一个feature, 做完上线之后一个一个石沉大海,貌似跟我没关系,这种氛围很糟糕,自己做的东西受大家欢迎,成就感是很棒的。产品各项关键数据飙升,大家会跟打了鸡血一样。我听说一些团队直接把产品的关键指标放到电子屏幕墙上,挂在公司显要位置。然而因为一些你懂的原因,很多公司产品的关键数据是严格保密的,但我们仍然应该在可行范围内做到尽可能的公开透明。
团队
首先我觉得最重要的,是在条件允许的范围内,保证团队成员的质量,虽然常说一手烂牌也要能打好,但谁都想要两个王四个二吧。现实情况是,在大部分情况下团队成员都是已经决定好的,给我们选择的机会不多,但在补员的时候,还是有机会调整的,其实就是在说招聘,关于如何做好招聘话题很大,一个关键原则就是新来的不能在团队中位线以下,否则团队质量会逐渐下滑至失控,后面想要再做提升调整,耗费的精力会大得多。关于招聘我有个回答大家可以看看:
面试时,问哪些问题能试出一个 Android 应用开发者真正的水平? - 汤涛的回答团队成员一旦确定,团队建设的重点要放在如何提升大家的水平上,这不仅是每个人所期望的,也是一个Tech Leader的职责与担当,不能帮助大家提高姿势水平,也就是失职的Leader。如何做好这点,有几点建议:
1)首先要充分了解每个组员,包括大家的专业技能水平与性格特点。
2)针对每个人,要定期的1对1谈话,了解大家对自身、对团队的期望。
3)根据每个人自身的期望,以及你自己对他的了解,结合现有业务,给大家制定合理的目标,目标不宜太大或太小,跳起来刚好够得着的那种。目标的制定过程也是要与他单独沟通确定,尊重对方的想法,可以在定期绩效考评的时候做这些事情。
4)每隔一段时间的1对1谈话中,与之回顾之前目标的达成情况,对他的工作进行评价,提出表扬或改进建议。除了给每个人专门拟订的计划外,团队还应该有一些整体的方案用以提升水平,比如培训、技术分享、集体的代码评审会议。尤其是技术分享氛围的建设,应该是要重点关心的。
其他的关于明确职责,充分授权,团队沟通,团队协作,Team Building之类,@马天宇 已经提到过,我也不再赘述。我个人的观点是:团队里的每一个人,都应该同时具备很强的单兵作战与团队合作的能力,只要把人的姿势水平提升上去了,大家合作起来就会愉快很多,经过一定程度的磨合,很多团队管理过程中的问题,也就不是问题了。
技术
相信如果有机会成为Tech Leader, 在团队内部而言,技术水平应该是没问题的。关于技术可以再补充几点:
你的水平也许只是在团队内部还不错,在行业内如何呢?世界范围内呢?如果对技术还有追求,不要停下追求技术进步的脚步。
作为一线Leader, 不仅仅要做好团队管理工作,代码还是要坚持写,时间安排上,至少要做到对半开,不然失去了对技术细节的了解,很多工作也就不好开展。
时刻牢记团队的输出最大化才是最终目标,而并非事事亲力亲为,总担心别人做不好,容易陷入微管理的困局,这是很多新晋Leader常犯的错误,要相信大家能做好,及时review工作,必要时给予帮助就好。
思考如何提升开发团队的工作效率,积极引入业内领先的技术方案或开发工具,保持团队技术水平不要落后于时代。
关键的技术问题或技术决策上,要积极发挥作用,面对技术债务,也不要退缩保守,鼓励大家积极改进代码质量,要有担当。
最后想说,关于这个问题,大家心里其实早就有一个简单的答案:
能为大家争取利益(有钱途),跟着你能成长、能做成事(有前途)。
无论哪个团队都想成为拥有超强技术实力的团队,而建设一支这样的团队也是每一位组长、技术主管、架构师的责任之一,要问起怎样建设,会得到很多种回答,有人说涨工资,有人说搞绩效,有人说多聚餐,有人说去旅游……那么哪种方式能低成本高收益的提升团队的技术能力呢?
当然,答案肯定不是唯一的,这个答案既会随着企业文化变化,也会随着管理者风格变化,但是我认为,提升团队的技术实力首选的还是进行技术培训。
显然,技术实力的提升要靠团队成员的技术能力来保障,因此提升每位成员的技术实力就尤为重要。在本文中我们暂且不讨论技术培训的重要性,而是把关注点放在如何进行技术培训上。
一.培训目标
在一个理想的软件团队中,技术实力可以大致分为三种:一种是基础技术能力,这种能力可以认为是一个初级软件工程师应该具备的知识和技能;第二种是中级技术能力,可以认为是一定的分析设计能力;第三种是高级技术能力,可以认为承担软件全局的设计或架构的能力。
比如一个手机软件团队,通常大部分人在从事Android、iOS等具体平台下的编码工作,这部分工程师熟悉某平台的API接口、平台特性,可以完成对给定类的代码实现,也具有一定的网络、UI等知识,可以实现指定的功能,这可以被认为是一种基础技术能力。还有一小部分人承担了更复杂的更大粒度的模块开发,可以对复杂功能进行设计工作,并分解为更小的单元,可以指导其他成员的开发工作,可以看到代码中不合适的地方并进行重构,这可以被认为是中级技术能力。另有一位或几位负责软件全局的结构设计、质量保证等工作,对软件的质量属性有保证能力,这可以被认为是高级技能。
通过这样的分解,就可以进行针对性的培训目标设定了。如果软件中的低级bug较多,可用性降低,可能是在基础技能上需要加强,可以考虑由经验丰富的开发人员进行经验分享,或者针对特点问题进行重点剖析,从而提升基础技能。如果复杂功能的实现不够顺畅,可靠性降低,灵活性降低,可以寻找是不是功能的设计上不合适、类结构上不合理,耦合度是否太高,并针对性的进行中级技能的培训。当然,如果想提高架构等能力,就可以进行高级技能培训。
二.培训周期
在培训目标中说了很多,可见其太重要了,目标不对或没有目标的培训只是在浪费时间。在明确了培训目的以后,需要设定培训频度。这个就相对容易进行了,对基础技能的培训频度可以高一些,比如每周一次,对中级技能的培训频度可以略低一些,比如两周一次甚至更长,对高级的当然可以周期更长。另外也不必拘泥于固定周期,但固定周期往往能让被培训成形成习惯,所以还是建议这样进行。
三.培训内容
培训内容的选择就要根据自己的实际情况了,举个例子,比如进行Android平台开发的团队,可以进行Android平台本身的培训,也可以进行Java语言能力、OO设计、重构、设计模式等培训,这些一定要具体团队具体分析,要有针对性而不是盲目从众,否则会有费力不讨好的嫌疑,造成收效不高的结果。
四.培训讲师
培训师的选择最好是在内部产生,这样设计的内容更有针对性,甚至可以直接通过项目代码进行实际演示,往往事半功倍。这是重点的是内容设计,不仅要难易适中,更重要的还是针对性,不务虚,不泛泛。对有兴趣为大家分享一些知识的成员,也可以安排时间来作讲师,形成良好的交流氛围。记住,这是内部培训,形式不那么重要,重要的是高效的知识传达。即使请外部的培训师,也一定要在内容设置上把好关。
五.参加人员
参加培训的人员既可以是指定的,也可以是成员自愿的,当然也可以二者结合。重要的是不要遗漏目标受众。对于个别不愿参加的人员,可以通过建议等方式邀请参加。在这个过程中,一方面可以发现成员的技术取向,另一方面可以补充某些成员薄弱的知识环节,有利于知识体系的完整。
六.培训反馈
培训结果反馈是最容易忽视的一环,往往培训完了就结束了,但恰恰这才是最重要的一步。结果反馈不是随便填一张调查表,而是针对每位参加培训的成员进行回访,进行一对一的谈心和效果反馈,征求意见和建议,指导他在实际工作中的知识运用,并寻找对后续内容的期望。这种反馈未必每次都进行,但一定要进行,并且通过观察长期的bug数量等指标来评估培训的成果。
相信通过以上这些描述,我大体上能展示出技术培训的主要环节和实施方法,这些内容可以根据企业或团队特点进行灵活处理,但不管怎样,作为团队建设的重要环节,培训是低成本高收益的事,也是各团队负责人或技术负责人的一项责任,同时是成员取得团队认同和技术能力提升的重要方式,需要长期坚持,在潜移默化中团队的已经具有了超强的技术实力了。
TL Cop的更多相关文章
- TL认证和运作经典案例评选
评选背景: 1.TL能力模型推出一年多时间以来,各地区.部门的TL认证和运作如火如荼,中开社上已有部分案例输出: 2.有部门在认证和运作上希望能借鉴优秀案例的经验,并且更希望能得到本地其他部门的帮扶: ...
- Atitit 编程语言编程方法的进化演进 sp COP ,AOP ,SOP
Atitit 编程语言编程方法的进化演进 sp COP ,AOP ,SOP 1.1. Sp oop>>COP ,AOP ,SOP1 1.2. Sp oop 结构化方法SP(Stru ...
- Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系
Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...
- TL(简单)
TL time limit per test 2 seconds memory limit per test 256 megabytes input standard input output sta ...
- soa vs cop
soa强调分层:底层为高层提供服务: cop强调分块:有明确的职责和服务提供接口,为外部提供服务. SOA 原则非常强调将服务使用者和服务提供者分离开来,关于此类分离实际的含义,有很多不正式但非常有用 ...
- 鼠标到哪tl到哪
$(".navcon a").mouseover(function(){ var that = $(this), index = that.index(); that.addCla ...
- 双足步行机器人的ZMP与CoP检测
静态步行与动态步行 机器人步态分为静态步行和动态步行.当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制.静态步行稳定性采用机器人的重心地面投影点(Center of G ...
- aix操作系统的版本中TL SP 含义
AIX 分为四个主要的操作系统级别:版本.发行版.技术级 (TL) 和服务包 (SP).版本和发行版通常指的是 AIX 的名称,例如AIX 7.1.TL 是包含重大更新的操作系统的发行版,而 SP 包 ...
- 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)
http://blog.csdn.net/hjf19790118/article/details/6919265 1.什么是面向对象编程(Object-Oriented Programming)? 面 ...
随机推荐
- FPC and Qt
Introduction There are a number of Qt bindings available: Qt3 A QtC based binding by Theo Another Qt ...
- ubuntu 下python环境的切换使用
如何在Anaconda的python和系统自带的python之间切换 一般ubuntu下有三种python环境,1. 系统自带python2,3;在/usr/bin路径下:2. anaconda下安装 ...
- WebService入门Demo
以前写博客最主要的就是不知道写什么东西,现在感觉能写点东西,就是感觉博客随笔的标题挺难取的,最近工作中刚好用到了WebService,刚好可以写一篇博客.去年工作的时候自己也用到过,只是知道调用一些W ...
- android linux 内核层
Android依赖于Linux2.6内核提高的高核心系统服务,例如安全,内存管理,进程管理,网络斎等等方面内容.内核作为一个抽象层,存在与硬件层和软件层之间.android对Linux下面内容做了增强 ...
- Web项目MySQL配置文件运维
root@mysqltest:/etc/mysql/mysql.conf.d# cat mysqld.cnf # # The MySQL database server configuration f ...
- 大智慧专业财务PFFIN(N,M)函数N的取值一览表
每股指标 1001 摊薄每股收益 1002 净资产收益率 1003 每股经营活动现金流量 1004 每股净资产 1005 每股资本公积金 1006 每股未分配利润 1007 每股主营收入 1008 扣 ...
- (C++)关于拷贝构造函数 Copy Constructor
题目: In which of the following scenarios is a Copy Constructor called or invoked? A. When no conve ...
- Office办公 WPS如何设置页边距
打开页眉页脚,在选项里面可以设置顶部的一行文字距离边界的距离 此外在页面布局,页边距也可以查看和修改
- Skyline开发4-IProject接口
IProject接口可以访问工程设置和打开保存工程的基本方法. 属性 FileVersion:返回 ITEVersionInfo.表示当前运行的TerraExplorer的版本,可通过ITEVersi ...
- 微软BI 之SSAS 系列 - 自定义的日期维度设计
SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库.但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞 ...