个人从程序员到技术 Leader 经历了不少的心路历程,我目前在带一支十几人的技术团队(控制团队人数主要是遵循亚马孙 CEO 贝索斯提出的两个披萨原则)我记得刚开始带团队的时候我是非常抗拒的,因为总觉得管理太多的“杂事”占用了我很多写代码的时间,包括目前虽然已经是一支十几人技术团队的 Leader,但是我平时也还是偏爱技术多一些,在业余时间都会抽空写写代码或者在 Leetcode 刷刷题,在从事管理工作这些时间里看过很多书,也踩过很多坑,总结了很多经验,想必也有很多程序员刚开始跌跌撞撞的走上技术 Leader 的岗位,所以想写一篇文章跟大家分享一下,希望可以帮助到需要的人,文章大纲如下:
既然说到管理技术团队,那么管理的对象自然就是程序员,那么程序员是一个什么样的群体?大多数程序员的特点是:“聪明且傲娇”
比如这个网上流传的段子,如何正确的向程序员提BUG:
技术 Leader 对个人综合素质要求很高(技术好的管理者,带技术团队是有一定优势的),先说说我认为技术 Leader 需要哪几个比较重要的综合能力
技术 Leader 必须要看透技术的本质,因为技术 Leader 平时的工作内容大多包含:技术选型,技术方案评审,代码审查,技术氛围的营造,如果管理者本身不是技术出身,可能无法和技术团队建立共识,沟通成本极高,最终让团队变成一个非常低效的组织,人浮于事,那么如何才能拥有这些能力,可以在技术团队拥有 LeaderShip ? 我个人总结有一下几点:
总结了以上经验和方法论之后,我们肯定会思考,上面所说的都只是过程和执行,那么管理者的目标或者说是工作的结果是以什么形式体现的?
总体概括来说的话,管理者的目标和工作结果主要体现在两方面:
以上的方向又太抽象,其实管理者很多时间的大部分工作都在选择和权限,主要包含以下几个方面
举一个实际的例子:
其实工作变化还蛮大,所有很多人刚开始管理团队会出现很多的不适,我总结如下:
我们先看看工程师的工作视角:
作为技术 Leader 的工作视角:
看到这里大家可能会感慨到,不同于工程师工作内容的“明确性”,管理者的大部分工作是“不确定性”的,而且几乎没有尽头,也没有一个明确的时间用于标示“完成”状态,所以这对于习惯“确定性”思维的工程师来说,挑战极大
我个人用通俗的比喻来总结就是,我以前写代码时候的感受是 一人吃饱全家不饿,轻松且自由, 现在感受是 既当爹(做事),又当妈(带人),而且还上有老(上级),下有小(团队),感觉亚历山大!!
很多人都在谈高效,但是软件行业的高效度量指标是很难的,总体来说工作效能的提升,实际上是 事 + 人 的结合,我们先聊聊事情,再聊聊人
从事情的角度,我们先说说让团队开发工作变的高效的几个条件:
以上侧重的是工具和流程,开发的效率和开发的体验对团队的效能都至关重要,流畅的工作流可以让开发者持续进入心流状态,产生高质量的功能和代码,不会频繁的被电脑卡死,频繁的打断,开发流程等待的阻塞降低工作的积极性,下面我们从人的方面聊聊如何提高团队效能
程序员的工作大多是本质知识工作者,管理学大师彼得德鲁克说过:“对于知识工作者是无法进行严密的督导”,所以我倾向提供一种积极,主动,自驱的工作氛围给团队,让团队在这种土壤里面逐渐的形成高效能团队
每个团队都会有懈怠的员工,有时候管理者不要急于否定员工,看看管理者是不是没有洞察到他的心理诉求,高产出员工的两个特质是:
有一种情况我们常常会发现相同的员工在不同的环境,有不同的产出,所以有时候发现懈怠的员工,不仅要从员工身上找问题,还可以去思考看看是不是我们周围的人,事,环境,工作方法,价值观等地方找出问题,毕竟有一句话叫做**“橘生淮南则为橘,生于淮北则为枳”**
除了团队和个人,还可以从外部找原因来持续的激励团队,可以理解为是外部激励,主要包含以下方面:
很多企业都期望员工可以有 Onwer 精神,但是如果想要团队保持足够的自驱力,管理者可能要思考是否对团队做到以下几点:
为了简单先说明沟通的重要性,我们先了解一下关于圣经中《通天塔》的故事,故事大概如下:
《圣经·旧约·创世记》第11章故事中人们建造的塔。根据篇章记载,当时人类联合起来兴建希望能通往天堂的高塔;为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,因为不能沟通无法达成共识,人类之间相互猜忌,内斗,无法团结,最终计划因此失败,人类自此各散东西。
总结一下就是,如果人们不愿意,或者不会沟通,那么就很容易产生分歧,误解,从而导致大家分裂,大家的目标就会失败,那么管理者很多事情是需要通过沟通传达,让团队达成方向共识,齐心协力,最终完成企业的目标
说完故事,那我们了解一下良好的沟通能带来什么?
因为很多程序员可能不是很善于沟通,可能需要一些原则和指导,那么在沟通中有哪些方面可以遵循或者注意事项,我个人总结如下 3 点经验
沟通技巧的核心在于学会倾听,对于还未掌握沟通技巧的同学,推荐一个沟通工具 3F 倾听,照着做也可以称为沟通小能手:
聊到沟通不得不聊情绪控制,为什么管理者要避免情绪化,学会控制情绪 ? 我们先看看知识的原理:我们常常会因为出现情绪,导致沟通常常脱离事情本身,转移到情绪的对抗上,我们的大脑皮层处理本能情绪的优先级是高于理性的,例如愤怒,恐惧,饥饿等,所以我们经常可以看到被本能情绪覆盖的人,往往会失去某种理性,所以我们在沟通的时候需要时刻以下两点:
文字可能比较枯燥,我们通过一张冰山图来了解原理:
了解情绪控制后,我们往往会在工作中遇到,跨部门沟通,跨团队沟通,这种情况往往都会有“部门墙”的存在,这种情况往往不能诉求于共同的上级,往往出现“部门墙”的情况就是因为之间没有共同的上级,也无法相互影响,遇到这种情况可以通过如下几个切入点去达成沟通的共识
说完沟通技巧,那我们来看一下平常沟通中有哪些常踩的坑?可以对照下自己以前是否有踩过
沟通给人贴标签,对人不对事(例如:你这个人怎么这么笨,这点事情都做不好)
没有管理自己的情绪,负面情绪对团队造成影响
沟通没有闭环,消息和邮件发出去就默认对方收到了
熟悉计算机网络的朋友应该很熟悉 TCP 协议和 UPD 协议,沟通有没有闭环就可以对应计算机网络中的 TCP 协议(可靠网络传输)和 UDP 协议(不可靠的网络传输),我个人建议大家在沟通中尽量多的使用 TCP 协议
为什么说管理者要比团队拥有更快的成长,因为 管理者是团队的天花板,你不成长则团队不会成长,那么管理者的自我认知首先要体现在哪些方面?
能做到以上三点,我相信已经会是一个很优秀的管理者了,那么如何保持稳定和高效的成长呢?我的个人秘诀的管理者要做好自己的 精力管理,因为大家的时间都有差不多,尤其是三十左右刚刚成家的管理者(比如说我),可以抽出的时间基本是少之又少,那么还想在赛道上赢得竞争力那么就要比其他人,那么你就要保证自己有足够的时间和身体的健康,那么通过什么来获取呢?答案就是精力管理,我个人总结的精力管理分为以下几个方面:
说完角色认知和精力管理,那么有人会不仅的思考,那么我们持续为止努力的目标在哪里?具备以上两点,就像一辆高性能的好车,高速道路已经铺好,但是要如何开往目的地?这个就要因人而异了,毕竟每个人的目标和理想都是不同的,先说说我个人,我是技术出身,到目前为止我其实也是偏爱技术的,转管理岗位更多的是想要锻炼自己的软技能,所以我持续努力的目标是有 2 个:
以上仅仅是代表我个人的目标,也可能是多数技术 Leader 的目标,对于技术管理者很多人总是有误解,认为已经是团队 Manger 就不需要去做具体的执行工作的,起码这一点对于技术管理是行不通的,我个人认为技术管理者 要一直写代码,因为如果不了解技术细节就无法做出有效的决策,而且管理者如果脱离技术,那么也是很危险的一件事情,因为市场对管理者的需求并不多,市场需要更多的工程师去写代码,管理者更多的价值是依附于企业,其很多业务知识也并非可迁移的技能,如果管理者放弃技术的话可谓是“自废武功”,也会让自己陷入一个很尴尬的境地,比如的性格发现自己不适合做管理的话,甚至都不能退回去做工程师了
唠唠叨叨也写了 5000 字,最后总结就写简单点,就像跟工程师,管理者或者正在走上管理路上的同僚提两点建议,就是:
中国的官本位思考其实还是挺严重,很多人以为做管理就是当官,但是在软件行业其实并不存在这一现象,目前大多数互联网公司都是偏向扁平化管理,管理者的大家在工作中并没有本质上的不同,而且管理者的工作更多的是偏向“打杂”(工程师视角),如果抱着这种心态去做管理,那么我想说初衷就已经错了,我先在这里劝退,因为最终也可能会走向失败,管理者更多的是要有利他精神,空悲和开放的心态,真正愿意去帮助团队成功,最终实现自己,通过成就他人来收获成就感,关于技术管理的道理长篇大论说了很多,道理都很简单,能不能走好管理路,还是要在“事上练”,自己感悟出来的道理才能真正的为自己所用
参考资料: