前注:知乎上偶尔看到一个关于前端团队管理的话题,请允许我这个人好奇心比较重,深扒了下,加上自己的一些理解,做了点学习和领悟,梳理出来分享给大家,我不生产团队管理知识,我只是团队管理知识的搬运工。如果说做任何一门学问(比如技术,万事虽表现不同,但原理想通)都是一个理论加实践的过程,那么团队管理也不例外,接下来就先来理论一下。

  作为技术开发人员,我们常常接受上级leader的委托去和其它成员协作完成项目任务,而且也常常专注于自己的事情,或赶项目进度,或研习各类技术。不过试想,如果你和你现在的leader调换角色,你会为你的团队做些什么?怎样去解决团队中存在的问题?你又应该如何去做好团队中各类事情的协调工作呢?

  总结了各路前辈的说法,最终认为,如果你要做好一个前端团队的管理,至少应该从下面几个方面去考虑你手头的工作。

1. 持续不断的自我提高和认知转变。

  首先必须承认,作为团队管理者,自身的认知和视野往往会成为整体团队水平的天花板。试想如果你跟着你个水平还不如你的leader手下工作,你会怎么想,最后做事情的结果也可想而知。但是常常,一个技术领域的内容是有限的,例如前端,一般在大公司工作两年以后,就会很快看到前端的天花板。这时作为管理者,可能需要关注的就是面向扩展与面向未来去做一些事情。

  先引一张图:

  • 面向扩展,你就需要去横向了解除前端外的其它内容,例如后端、底层架构设计、移动端开发、甚至产品经理思维等各方面知识和技术。

  • 面向未来,你就需要敏锐地了解未来的技术趋势和市场变化,例如Web VR、通用型Web Native View的开发等趋势,首先要有认知。当然也可以做适当的调研尝试,调研尝试不必亲力亲为,可以分配给团队里面时间相对充裕并有能力完成这一任务的人,这样既给了团队成员机会,也可以让团队帮助你更快速地学习。

  另外即使管理者各方面水平都达到一定的高度,另一方面也需要多听其它成员的意见,目前尽管业界内优秀的前端工程师比较缺乏,但也往往不缺乏牛人,兼听则明,偏信则暗,自古如此。

  此外也要认识到自己从技术开发角色到团队管理角色认知的转变,确实如月影前辈所说:要成为优秀的技术人员,最重要的是要知道和善于发挥自己的长处,很多优秀的技术牛人熟知并且善于此道,所以牛人往往有个性,因为他们的特点和长处鲜明。而作为合格的管理者呢?最重要的不是发挥自己的长处和宣扬自己的个性,而是要看到自己的短处,要磨圆自身,在此之上,要知道和善于发挥他人的长处,容忍他人之短。作为一名合格的管理者,很多时候就不能仅仅在自己的立场上考虑问题了。

2. 团队培养。

  团队培养往往针对团队中的新人或工作技能还有所欠缺的成员,其核心目标是尽可能快速提高新成员的工作能力和效率,以便后面能胜任更多的工作。通常也有一些有效的方法和机制来帮助他们快速提高。

  • 导师制度。

  对于进入团队的新人,一般会推荐有导师带领指导,这样可以帮助他们解决一些日常知识或经验性问题,避免他们自己去摸索折腾导致效率较低。同时导师也可以对新人做技术性学习的指导,能很快帮助新人快速提升。

  • 必要的培训。

  必要的项目经验培训可以帮助新人快速地了解并接手项目中的工作,缩短了新人了解项目开发所需要的时间周期。另外,也可以定期组织知识性的培训,帮助新成员拓宽技术视野。

  • codereview。

  定期的codereview则可以帮助新成员发现项目代码的问题和不规范的地方,有利于团队成员的基本功培养和项目开发规范的推进实施,另外书写规范的代码也是工程师必备的技能。

  • 鼓励文章输出。

  鼓励新人写技术文章,能起到一个很好的引导入门作用,有助于帮助他们提高自学能力和解决问题的能力。

  • 多学习分享。

  如果有空余时间,鼓励新人多学习积累并学会分享,以提高工作中各方面的素质和能力。

  • 职业规划。

  帮助团队成员做职业规划,给团队成员定目标时可以适当提高,但是最终期望要有所降低,常言,取法其上,得乎其中;取法其中,得乎其下。总之,让每个人对自己都有明确的成长目标和方向,这样才不容易迷茫。

3. 团队文化。

  团队文化则比较灵活,各个团队不一样,各个公司不一样,同个公司不同团队也不一定一样。但无论怎样,建立舒适的工作氛围尤其重要,例如定点上下班、上班需要穿啥衣服等细节在互联网公司就不大适用了,技术开发相对来说有点偏向创作性质的工作,如果因为这些条条框框会让人很不适。而且团队成员常常有较多聪明的的大牛,他们个性鲜明,自然不喜欢这些传统的规定。再者目前互联网公司内部工作中加班已成常态,如果还加上这些条条框框限制,就令人更不满了。

  另外,为了缓解日常工作的压力,可以周期行地组织一些团建活动,例如聚餐、周边游等可以帮助大家转移注意力、缓解大家平时工作中的压力,同时也是促进团队成员之间相互了解和交流的机会。

4. 项目管理。

  团队的日常工作中主要还是以完成项目任务为主,对于开发团队管理者,则需要做好项目工作的开展和监督工作,例如项目开发前期参与需求评审,中期向上级反馈项目进度,推动项目流程,后期监督项目完成质量,推进优化工作等等。而在各项工作的开展过程中,需要做的是要将项目完全委托给对应的项目成员,信任并支持他的工作,这时对项目开发实现细节的过分监督就会让下面人觉得没有自己信任度。通常团队成员也都是团队leader招的或接触过,对其能力必须是已经认可的,应该向下尽量放权给项目owner或开发负责人。这点主要对于团队管理者来说最重要的则是信任团队的其它成员能做完做好手头的工作。

  除了工作上的信任和放权,另一点则是给团队中有潜力的成员提供机会。例如一个技术较强的人很想尝试下新的技术,例如想在项目中使用react、前后端同构等新技术,这时要尽量创造并提供机会让他们去尝试实践,否则长期在一个固定成熟的项目base上重复开发需求是很容易失去激情的。一个技术

  而大多数管理者则希望维持稳定可控的开发模式来提高绩效产出,抱着无过即有功的态度,这样确实能在开发中尽可能减少意外问题的发生,但团队的成员如果没有新技术的尝试激励,一段时间后就会失去战斗的热情,没有成就感,觉得阻碍了自己的技术的成长,久而久之,问题就出现了。

5. 团队绩效与奖惩评定。

  从以人为本的角度上再来看,大家无论从事技术、产品、运行还是管理,最初衷的目标当然还是希望得到一定的经济回报,而团队成员得到的回报则往往和团队完成项目工作的绩效和待遇来体现,作为团队管理者尽可能为团队成员争取更好的回报则是建立威望的最佳方式。

  除了尽可能争取更好的团队回报,对于绩效的分配则可能是一个及其麻烦的问题。工作上,团队成员之间是同事,是兄弟,但是你也不能指望光靠情怀让大家努力工作。对于做事情积极主动的员工,可以考虑给予更好的项目和提升机会;而对于主动性稍微欠缺的成员,则可以给予暂时性的惩罚性措施,例如绩效评级暂时性地给2星或者C。

  说是以人为本,但其实团队绩效与奖惩评定可以说是团队管理中最复杂的一个环节。而且对于人的认识则更难,对于表现优秀积极的员工,把最好的项目交给他,让他很快提升,但可能到了他预期的级别或到他认为的天花板就很快跳槽了;对于积极性稍差、表现不佳的员工,得到了较差的绩效,但是他感觉做的事情工作量和其他人差不多,同样是一起加班干活,如果连续两次以上被评级为2星或C以下,那基本肯定就离职了;而对于中间段的一部分人,比较优秀,表现积极努力,但是由于leader手上的资源有限,你只能给予他正常的绩效,如果长期连续如此,期望和结果存在一定的差距,那可能也呆不长了。

  所以对于绩效的分配可以考虑尽可能惠及大多数人的立场上考虑。避免部分人因为连续拿优升得太快而离职,也不能让另一部分看不到希望。不患寡而患不均,不患贫而患不安,要想通过团队绩效与奖惩评定来稳固团队成员的信心重要的不是奖惩制度本身,而应该是对人性的理解,知道怎样恩威并重。

  很多时候你可能并不了解他们,最终他们很不理解地得到你给的考评,由于团队管理的对象是你的下级,可能因为面子问题(脸皮薄)可能你得不到他们的这方面的反馈,这也就需要你多去了解和接触下属来知道他们自己的需求了。

例如(来自@泡泡):

1、一个入职2年,但是一直没有怎么晋升的同学,那么他目前可能最需要的是晋级。那么,你认为他要做哪些工作才能晋级?让他负责一个牛X的项目,还是在业务上玩出了什么新花样?找他谈谈,然后给他一点帮助。

2、一个技术比较强的同学,天天写页面做业务,没什么挑战。然后你发现他想做点有技术难度的,有挑战的内容。那么你可以让他负责组内的框架设计、基础组件开发,让他造几个轮子。

3、一个同学一直还没拿过5星或者3.75A。虽然他能力没组里其他同学强,但他却非常希望拿个好考核。怎么办?分配个项目给他负责,让他做PM,督促他发个好看的进度邮件,总结邮件,让他积极一点,年底给他打个3.75。

6. 团队招聘。

  对于一个正常的项目团队来说,由于项目的成长,总需要补进更多的人进来,即便不是这样,正常的人员异动(离职或被离职)也是很难避免的。所以对于团队来说,团队招聘是一项长期工程,而且笔试面试会花掉大量的人力,但是必须要做,而且现在招人通常也越来越难。团队招聘的原则是,明白自己需要招什么样的人,这一条不能变。既然如此,那当然尽量招进更优秀的人为好,这些人也能够带动团队内部的技术氛围。

7. 对外提高团队影响力。

  另外作为任何一个想成长团队,对外提高团队影响力尤为重要。影响力的提升有助于团队成员的成就感和认同感,对此,以下几个方面的事情则可以考虑去做。

  • 团队技术社区。可以考虑为团队建立开发技术社区,将团队内部的产出结果对外宣传,提高团队知名度,也可以建立交流群等供其他人学习交流,从而提高业内知名度。

  • 对内外演讲交流。鼓励团队成员去知名技术论坛会议分享团队内部研发成果,可以大大增加团队成员的成就感和对团队的认同感。

  • 团队书籍编写等。也可以组织团队成员编写书籍,最大限度地提高团队的业内影响力,同时这也是提高团队成员认同感的一个有效方式。据我所知,国内不少优秀的前端团队都在从事这样面的事情。

8. 对上级争取团队话语权,关键时刻能扛责任。

  作为团队管理者,自然最重要就是为整个团队争取机会,例如争取尽可能多的任务,让自己的团队在老板眼里变得不可代替,老板的工作和团队的关系越大,就会越受重视,拥有的话语权也就越多。反之,如果前端的工作后台同学也能做,那还要前端团队干什么,所以那就需要发挥前端本身的优势了,凭借高效可靠的工作产生来获取老板的信任。

  在团队项目的运营进展中,有时会出现运营事故等,这就需要leader出来说话了,当然如果你是leader也可以把责任指定给某个开发人员,这样就只用一个员工的离职代价就可以渡过这个问题。但如果能够争取到问题处理过程中的话语权,降低问题的责任后果,或者在自己可接受的范围内承担这份责任,这样就能让大家知道团队的重要性和老大的威信。当然,这么说可能太理想了,团队管理者也是出来工作的,下属的问题最后为啥要你来承担责任呢。不同人不同做法,这也就因人而异了。

  要说的就这些,如果有不正确的地方,请见谅。总之,从事技术研究,接触的是唯物主义内容,经过一段时间学习,都是可以认识把握的;而管理面对的是人(或者说是聪明人),唯心主义的方式就因人而制了。管理是一门科学,也是一门艺术,我们能确定的部分算是科学,并不难;而不可确定的部分则是艺术,关键在于管理者自己的智慧,能因人而辨,因地而辨,因时而辨。

知乎原贴与文章:

https://www.zhihu.com/question/30093712

https://www.zhihu.com/question/28373692

http://jing-ui.com/blog/57