经历了很多从程序员到技术leader的心路历程,目前带领着一个十几人的技术团队(团队人数的控制主要遵循AmazonCEO提出的两个pizza原则贝索斯)。图片来自Pexels。记得刚带团队的时候我是很抗拒的,因为总觉得管理太多的“杂务”占用了很多写代码的时间。虽然我已经是一个十几人的技术团队的leader了,但是我平时更偏爱技术。在空闲时间,我总是找时间写代码或者在Leetcode上刷题。在管理工作中,看了很多书,踩过很多坑,总结了很多经验。想必也有很多程序员是跌跌撞撞走上技术负责人的位置的,所以写这篇文章希望对有需要的人有所帮助。文章提纲如下:技术管理者需要具备哪些综合能力?如何在团队中发挥领导作用?从工程师到团队负责人有哪些变化?如何提高技术团队的工作效率?技术经理需要了解和成长哪些综合能力?如何在团队中发挥领导作用?既然要管理技术团队,那么管理的对象自然是程序员,那么程序员是一个什么样的群体呢?大多数程序员的特点是:“聪明而自大”。比如网上流传的这个段子,如何正确给程序员提bug:技术leader对个人综合素质的要求很高(技术好的管理者在带领技术团队时有一定的优势)。先说说我认为一个技术leader需要具备的重要综合能力:技术能力和基础知识(能够理解技术表象背后的原理)。沟通技巧(逻辑、同理心、情绪控制)。业务抽象能力(架构和演化)。技术负责人一定要看透技术的本质,因为技术负责人平时的大部分工作内容包括:技术选型、技术方案评审、代码评审、技术氛围营造。如果管理者不是技术出身,他可能无法与技术团队建立共识,沟通成本极高,最终将团队变成一个人浮于事、效率极低的组织。我们如何才能拥有这些能力并在技术团队中发挥领导作用?我个人的总结有以下几点:吃透基础技术,理解技术背后的原理(高楼拔地而起,再火爆的框架和技术,也离不开操作系统,网络、数据结构等原理性知识)。了解细节,永远写代码(如果不熟悉代码,就无法提出真正的解决方案,无法感知技术团队的痛点,也就无从下手)提高团队效率)。不断的学习,不断的给团队带来新的知识和理解(技术leader已经是团队技术问题的终结者了,不可能再传下去,所以不要成为技术团队的天花板)。有真诚帮助每一个人的心态(帮助每一个人成长,提高绩效,最终提高组织绩效,实现双赢)。总结了以上的经验和方法论之后,我们一定会好好思考一下。上面说的只是流程和执行。那么管理者的目标或者工作的结果是以什么形式体现的呢?一般来说,管理者的目标和工作成果主要体现在两个方面:做事:成本、效率、质量。领人:人才、梯队、成长。上面的方向太抽象了。事实上,管理者大部分时间都花在了选择和授权上,主要包括以下几个方面:在有限资源的限制下,选择产出最大化的方案。做出适合当前环境的技术决策,帮助公司的产品取得成功。用方法和工具不断优化和提高生产效率和质量。举一个实际的例子:比如A公司在初创期,没有稳定的市场和客户。这时候技术经理的决策应该倾向于成本+效率。例如:技术团队偏向全栈,工作流偏向敏捷,快速交付等特性获取用户和市场反馈,对产品进行升级迭代。比如B公司处于成熟期,有固定的市场和客户,行业内没有新的蛋糕。这时候需要比的就是效率+质量。技术团队偏向专家,注重产品质量和客户体验,形成行业口碑和用户。粘度。从工程师到团队负责人有哪些变化?其实工作变化挺大的,所以很多人刚开始管理团队的时候都会有很多的不适应。我总结了以下几个方面。我们先来看看工程师的工作视角:这个功能怎么做?写完这个需求,我今天的工作就完成了。我只在业余时间看技术相关的内容。看看领导今天给我布置了什么工作。作为技术负责人的工作视角:第一阶段我们应该做什么?团队未来往哪里发展?团队成长不如预期怎么办?公司今年的业绩指标如何完成?指挥能力。规划Q1季度的工作目标,分解到团队成员去执行,确保工作内容与每个团队成员的能力相匹配。看到这里,大家可能会觉得,与工程师工作内容的“明确”不同,管理者的工作大多是“不确定”的,几乎没有尽头,也没有明确的时间标示“完成”。”状态,所以这对于习惯了“确定性”思维的工程师来说是一个很大的挑战。我个人用一个通俗的比喻来概括,写代码的时候感觉一个人吃饱了,一家人都不饿了,轻松了而且自由。有上级(上级)和下级(团队),感觉压力很大!!如何提高团队工作效率软件行业。一般来说,工作效率的提升,其实是物+人的结合,先说物,再说人。从物的角度,先说说使团队发展的几个条件工作更高效:为员工配备高性能电脑(工欲善其事必先利其器,没有工具谈效率就像耍流氓)。ooth(Git服务器网络慢,合并代码需要写表格跟流程申请?不要在形式主义中谈论效率)。自动化工具是否完善(没有自动扫描和测试就合并代码?那么就会有无穷无尽的生产bug和无穷无尽的修复循环)。以上重点是工具和流程。开发效率和开发经验对团队的效能至关重要。顺畅的工作流程可以让开发者持续进入心流状态,产出高质量的功能和代码,而不会在开发过程中频繁被电脑卡住,频繁被打断,被等待阻塞等降低工作积极性。下面我们从人的角度谈谈如何提高团队效能。程序员的大部分工作都是必不可少的知识工作者。管理大师彼得·德鲁克说:“严格监督知识型员工是不可能的”。因此,我倾向于为团队提供积极主动、自我驱动的工作氛围,让团队在这片土壤中逐渐形成高绩效团队。每个团队都会有闲散的员工。有时候管理者不要急于否定员工,要看管理者是不是没有洞察到他的心理诉求。高生产率员工的两个品质是:能力(专业知识、技术能力)。意愿(团队文化、价值观、喜欢的氛围)。有一种情况我们经常会发现同样的员工在不同的环境下产出是不一样的,所以有时候我们在发现懈怠的员工的时候,不仅要从员工身上找问题,还要想想是不是我们身边的人,事物、环境、工作方式、价值观等地方找出问题所在。毕竟有句话叫“橙生淮南橙,橙生淮北橙”。外部激励除了团队和个人之外,还可以从外部找原因不断激励团队,可以理解为外部激励。主要包括以下几个方面:安全感和成就感(稳定的工作环境,完成高难度挑战,及时反馈BIA)。学习成长环境(与优秀的人一起工作,感受自己的成长)。定期与管理者沟通(让员工感受到被重视,收集员工建议,做出工作调整)。自我驱动力与凝聚力很多公司都希望员工有Onwer精神,但如果想让团队保持足够的自我驱动力,管理者可能要考虑是否要为团队做到以下几点:给员工自主权(在工作方面内容)自由度、工作方法的自由度、工作时间和地点的自由度)。成长(明确的工作目标,富有挑战性的内容,努力发挥自己的优势)。意义和使命(共同的目标和愿景、价值观)。信任和权力下放(团队内部的共同挑战、对抗活动)。沟通技巧为了简单说明沟通的重要性,我们先来了解一下圣经中《通天塔》的故事。故事大致如下:《圣经·旧约·创世记》第11话故事中人们建造的塔。据该话记载,当时人类联合起来建造希望通向天堂的塔;为了阻止人类的计划,上帝让人类说着不同的语言,使人类无法相互交流,因为没有交流就无法达成共识,而人类之间相互猜忌,内斗,无法团结,最终计划失败,人类从此四散。综上所述,如果人们不愿意或无法沟通,那么就很容易产生分歧和误解,导致大家分裂,大家的目标都会落空。所以对于管理者来说,很多事情都需要通过沟通来传达,让团队达成方向共识,齐心协力,最终实现企业的目标。讲完故事,我们来了解一下良好的沟通能带来什么?管理者对团队的整体认知和判断力得到提升。与团队成员建立信任和默契(信任的前提是充分的沟通,信任程度越高,沟通成本越低)。高质量的沟通可以帮助管理者建立和积累对团队的影响力。因为很多程序员可能不太擅长沟通,可能需要一些原则和指导,那么在沟通中可以遵循或注意哪些方面呢?我个人总结了以下三个经验:承认个体差异(每个人的生活环境不同,针对不同的角色,学会使用不同的沟通和表达方式)。有针对性的沟通(明确每次沟通的意图和目的,减少不必要的误解,避免情绪对抗)。用我多回放(可以换成:你是那个意思吗,换成你看看我的理解对不对)。沟通技巧的核心是学会倾听。对于还没有掌握沟通技巧的同学,我推荐一个沟通工具3FListening。这样做也堪称沟通小能手。说到情绪控制和沟通,就不得不说到情绪控制。管理者为什么要避免情绪化,学会控制情绪?先来看知识原理:我们经常会有情绪导致沟通脱离事情本身,转向情绪对抗其实我们的大脑皮层处理本能情绪的优先级高于理性,比如愤怒、恐惧、饥饿等等,所以我们经常可以看到,被本能情绪所掩盖的人,往往会失去某种理性。所以我们在交流的时候,需要时刻做到以下两点:控制情绪。要理性。文字可能比较枯燥。我们用一个冰山图来理解原理:理解情绪控制后,我们在工作中经常会遇到跨部门沟通、跨团队沟通。这种情况往往有“部门墙”的存在。在这种情况下,往往无法诉诸一个共同的上级,“部门墙”就经常出现,因为没有一个共同的上级,无法相互影响。在这样的情况下,可以通过以下切入点达成沟通上的共识:性格:知名度高,性格正直,更容易让别人相信你说的话,更容易受到你的影响。历史表现:你以前成功做过同样的事情,是成功案例,可以让别人更容易相信你。影响力:你是业内知名人物或团队认可的专家,具有权威性。逻辑:你的内容前后呼应,逻辑严密,可以增加说服力。激情与情怀:心怀某种崇高的理想主义,有使命感和激情,更容易得到人们的帮助和认可。可以参考锤子手机的成功案例。互惠:了解对方的需要,沟通的目的是满足双方的需要。说完了沟通技巧,我们来看看平时沟通中常踩的坑?你可以看看你以前有没有踩过:沟通给人贴上标签,对人是错的(比如:你怎么这么笨?什么都做不好)。如果不管理好自己的情绪,负面情绪就会影响团队。沟通没有闭环,发信息和邮件的时候,就假设对方已经收到了。熟悉计算机网络的朋友应该对TCP协议和UPD协议不陌生。通信是否存在闭环可以对应计算机网络中的TCP协议(可靠网络传输)和UDP协议(不可靠网络传输)。尽量使用TCP协议。管理者的自我认知与成长为什么说管理者的成长快于团队,因为管理者是团队的天花板,你不成长,团队就不会成长。那么管理者的自我认知首先应该体现在哪些方面呢?认知:管理者的价值体现在团队的业绩上,不要向团队争功。心态:归功于自己,归功于外界,失误都是教练的错,功劳都是团队的努力。责任:不要推卸责任,即使是客观原因,也要反省检讨规避,而不是把责任推到外面。如果你能做到以上三点,相信你会是一个优秀的管理者,那么如何保持稳定高效的增长呢?我个人的秘诀是,管理者一定要管理好自己的精力,因为每个人的时间都是有限的。几乎,尤其是三十多岁才成家的管理者(比如我),能抽出来的时间基本很少。如果你还想在赛道上有竞争力,你需要保证你有足够的时间和健康的身体,那么你能做些什么来获得呢?答案是能源管理。我个人对精力管理的总结分为以下几个方面:运动(每天规律的运动可以让你源源不断,更容易集中注意力)。饮食(健康饮食,少食多餐)。睡眠(早睡早起,不要熬夜)。健康(定期检查,避免久坐)。心情(放松、感激、好心情)。谈完角色认同和精力管理,有人会想,我们不断努力的目标是什么?有了以上两点,它就像一辆高性能的好车。高速公路已经铺好了,但是如何开到目的地呢?这会因人而异。毕竟每个人的目标和理想都不一样。先说说我自己吧。我来自技术背景。到目前为止,我也更喜欢技术。当我转任管理职位时,我想多锻炼身体。自己的软技能。所以我不断努力的目标有两个:软技能的提升:产品思维、项目策划、带队、带人、沟通、执行。硬技能提升:架构、设计、算法、网络、操作系统、编程语言。以上仅代表我个人的目标,也可能是大部分技术负责人的目标。很多人总是对技术经理存在误解。他们认为自己已经是团队管理者就不需要做具体的执行工作。至少这是对技术领导者而言。管理不行。我个人认为技术经理应该始终编写代码,因为不了解技术细节就无法做出有效的决策。而且,如果管理者和技术分开,也是很危险的,因为市场对管理者的需求并不多,市场需要更多的工程师来写代码。管理者更多的价值是依附于企业,其很多业务知识也不是可以转移的技能。如果管理者放弃技术,可谓是“弄巧成拙”,也会陷入非常尴尬的境地。比如,如果他们的性格发现自己不适合做管理,可能连工程师都回不来了。总结最后,我想给工程师,管理者,或者正在管理道路上的同事们提两点建议:个人而言,做技术和做管理者都不是很重要,最重要的是找到自己最棒的地方。价值。不要被别人走过的路所限制,也不要被自己的事业所限制。没有人可以定义你的发展。中国官本位思想很严重。很多人认为当经理就是当官,但这种现象在软件行业其实并不存在。目前大部分互联网公司都倾向于扁平化管理,与管理者的工作没有本质区别,管理者的工作更倾向于“做家务”(工程师视角)。如果你抱着做官的心态去管理,我想说你的初衷已经错了。我是来劝你放弃的,因为最后也可能导致失败。管理者要多一些利他主义,空杯开怀,真正乐于帮助团队成功,通过成就他人获得成就感。上面讲了很多技术管理的原理,原理很简单。要想走好管理之路,还是要“行于事”,让自己领悟到的道理真正为自己所用。参考资料:PeterDrucker《卓有成效的管理者》https://book.douban.com/subject/1322025/刘建国《知行:技术人的管理之路》https://book.douban.com/subject/33463986/极客时间:《技术管理实战》https:///time.geekbang.org/column/intro/113作者:xiao2shiqi编辑:陶家龙来源:转载自公众号小二七(ID:drak-phoenix)
