技术Leader远离代码,就是自废武功?

新闻 开发工具
个人从程序员到技术 Leader 经历了不少的心路历程,目前在带一支十几人的技术团队(控制团队人数主要是遵循亚马孙 CEO 贝索斯提出的两个披萨原则)。

 个人从程序员到技术 Leader 经历了不少的心路历程,目前在带一支十几人的技术团队(控制团队人数主要是遵循亚马孙 CEO 贝索斯提出的两个披萨原则)。

[[336885]]

 

图片来自 Pexels

我记得刚开始带团队的时候我是非常抗拒的,因为总觉得管理太多的“杂事”占用了很多写代码的时间,目前虽然已经是一支十几人技术团队的 Leader,但是我平时也还是偏爱技术多一些。

在业余时间,我都会抽空写写代码或者在 Leetcode 刷刷题,在从事管理工作这些时间里我看过很多书,也踩过很多坑,总结了很多经验。

想必也有很多程序员正跌跌撞撞的走上技术 Leader 的岗位,所以写下这篇文章希望可以帮助到有需要的人。

文章大纲如下:

  • 技术管理者需要哪些综合能力?如何在团队拥有 Leadership ?
  • 从工程师到团队 Leader 有哪些转变 ?
  • 如何提升技术团队的工作效能 ?
  • 如何提升团队的凝聚力 ?
  • 沟通的技巧 ?
  • 管理者的自我认知和成长

技术管理者需要哪些综合能力?如何在团队拥有 Leadership ?

既然说到管理技术团队,那么管理的对象自然就是程序员,那么程序员是一个什么样的群体?大多数程序员的特点是:“聪明且傲娇”。

比如这个网上流传的段子,如何正确的向程序员提 Bug:

 

技术 Leader 对个人综合素质要求很高(技术好的管理者,带技术团队是有一定优势的)。

先说说我认为技术 Leader 需要哪几个比较重要的综合能力:

  • 技术能力和基础知识(能看懂技术表象背后的原理)。
  • 沟通表达能力(逻辑,同理心,情绪控制)。
  • 业务抽象能力(架构和演化)。

技术 Leader 必须要看透技术的本质,因为技术 Leader 平时的工作内容大多包含:技术选型,技术方案评审,代码审查,技术氛围的营造。

如果管理者本身不是技术出身,可能无法和技术团队建立共识,沟通成本极高,最终让团队变成一个非常低效的组织,人浮于事,那么如何才能拥有这些能力,可以在技术团队拥有 Leadership ?

我个人总结有以下几点:

  • 吃透基础技术和弄懂技术背后的原理(万丈高楼平地起,再流行的框架和技术,剥离华丽的外衣也离不开操作系统,网络,数据结构这些原理型的知识)。
  • 了解细节,永远在写代码(不熟悉代码就无法提出真正可落地的方案,就无法感知技术团队的痛点在哪里,也就无法团队提高效能)。
  • 持续的学习,持续的为团队带来新的知识和理解(技术 Leader 已经是团队技术问题的终结者,不可能再上传递了,所以不要成为技术团队的天花板)。
  • 有一个真心帮助大家的心态(帮助大家成长,提高效能,最终组织效能也得到提高,实现共赢的局面)。

总结了以上经验和方法论之后,我们肯定会思考,上面所说的都只是过程和执行,那么管理者的目标或者说是工作的结果是以什么形式体现的?

总体概括来说的话,管理者的目标和工作结果主要体现在两方面:

 

  • 做事:成本、效率、质量。
  • 带人:人才、梯队、成长。

以上的方向又太抽象,其实管理者很多时间的大部分工作都在选择和权限,主要包含以下几个方面:

  • 有限资源的限定下,选择最大化的产出方案。
  • 做出符合当前环境的技术决策,帮助公司产品取得成功。
  • 用方法和工具不断优化和提升生产效率和质量。

举一个实际的例子:

 

  • 比如公司 A 在创业期,还没有稳定的市场和客户,这个时候技术管理者的决策要倾向成本+效率,例如:技术团队偏向全栈型,工作流偏敏捷,快速交付功能获取用户和市场的反馈用于升级和迭代产品。
  • 比如公司 B 在成熟期,有固定的市场和客户,行业已经没有新的蛋糕,这个时候需要比拼的就是效率+质量,技术团队偏向专家型,注重产品质量和客户体验用于形成行业口碑和用户粘性。

从工程师到团队 Leader 有哪些转变 ?

其实工作变化还蛮大,所以很多人刚开始管理团队会出现很多的不适,我总结了如下几个方面。

我们先看看工程师的工作视角:

  • 这个功能怎么做?
  • 这个需求写完,我今天的工作就完成了。
  • 业余时间只看技术相关的内容。
  • 看看今天领导分配了什么工作给我。

作为技术 Leader 的工作视角:

  • 我们先阶段要做什么?
  • 团队未来向哪里发展?团队成长不如预期怎么办?公司今年的业绩指标如何可以完成?
  • 除了技术,还需要沟通,判断,组织,协调,看方向的能力。
  • 规划 Q1 季度的工作目标,分解到团队成员去实施,保证工作内容和每个团队成员的能力相匹配。

看到这里大家可能会感慨到,不同于工程师工作内容的“明确性”,管理者的大部分工作是“不确定性”的,而且几乎没有尽头,也没有一个明确的时间用于标示“完成”状态,所以这对于习惯“确定性”思维的工程师来说,挑战极大。

我个人用通俗的比喻来总结就是,我以前写代码时候的感受是一人吃饱全家不饿,轻松且自由,现在感受是既当爹(做事),又当妈(带人),而且还上有老(上级),下有小(团队),感觉压力山大!!

如何提升团队的工作效能

很多人都在谈高效,但是软件行业的高效度量指标是很难的,总体来说工作效能的提升,实际上是事+人的结合,我们先聊聊事情,再聊聊人。

从事情的角度,我们先说说让团队开发工作变的高效的几个条件:

  • 给员工配置高性能的电脑(工欲善其事必先利其器,脱离工具谈高效就是在耍流氓)。
  • 工作流是否流畅(Git 服务器网络慢,合并代码要写表格走流程申请?形式主义就不要谈高效二字)。
  • 自动化工具是否完善(没有自动扫面,自动测试,代码就被合并了?那么接下来就是无尽的生产 Bug,修复的死循环)。

以上侧重的是工具和流程,开发的效率和开发的体验对团队的效能都至关重要,流畅的工作流可以让开发者持续进入心流状态,产生高质量的功能和代码,不会频繁的被电脑卡死,频繁的打断,开发流程等待的阻塞降低工作的积极性。

下面我们从人的方面聊聊如何提高团队效能。程序员的工作大多是本质知识工作者,管理学大师彼得德鲁克说过:“对于知识工作者是无法进行严密的督导”。

所以我倾向提供一种积极,主动,自驱的工作氛围给团队,让团队在这种土壤里面逐渐的形成高效能团队。

每个团队都会有懈怠的员工,有时候管理者不要急于否定员工,看看管理者是不是没有洞察到他的心理诉求。

高产出员工的两个特质是:

  • 能力(专业知识,技术能力)。
  • 意愿(团队文化,价值观,喜欢的氛围)。

有一种情况,我们常常会发现相同的员工在不同的环境,有不同的产出,所以有时候发现懈怠的员工,不仅要从员工身上找问题,还可以去思考看看是不是我们周围的人,事,环境,工作方法,价值观等地方找出问题。

毕竟有一句话叫做“橘生淮南则为橘,生于淮北则为枳”。

外部激励

 

除了团队和个人,还可以从外部找原因来持续的激励团队,可以理解为是外部激励。

主要包含以下几个方面:

  • 安全感和成就感(稳定的工作环境,完成有难度的挑战,及时反馈 BIA)。
  • 学习和成长环境(和优秀的人共事,感知到自己成长)。
  • 和管理者定期沟通(让员工感到自己被重视,收集员工建议并且做出工作上的调整)。

自驱力和凝聚力

很多企业都期望员工可以有 Onwer 精神,但是如果想要团队保持足够的自驱力,管理者可能要思考是否对团队做到以下几点:

  • 给予员工自主性(工作内容上的自由度,工作方法上的自由度,工作时间和地点上的自由度)。
  • 成长(明确的工作目标,内容有挑战,工作发挥其优势)。
  • 意义和使命(共同的目标和愿景,价值观)。
  • 信任和放权(共同面对挑战,团队内的对抗活动)。

沟通的技巧

为了简单先说明沟通的重要性,我们先了解一下关于圣经中《通天塔》的故事,故事大概如下:

《圣经·旧约·创世记》第 11 章故事中人们建造的塔。根据篇章记载,当时人类联合起来兴建希望能通往天堂的高塔;为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,因为不能沟通无法达成共识,人类之间相互猜忌,内斗,无法团结,最终计划因此失败,人类自此各散东西。

总结一下就是,如果人们不愿意,或者不会沟通,那么就很容易产生分歧,误解,从而导致大家分裂,大家的目标就会失败,那么管理者很多事情是需要通过沟通传达,让团队达成方向共识,齐心协力,最终完成企业的目标。

[[336888]]

说完故事,那我们了解一下良好的沟通能带来什么?

 

  • 管理者对团队的总体认知和判断力得到提升。
  • 和团队成员之间建立信任和默契(信任的前提是充分的沟通,信任程度越高,沟通成本越低)。
  • 高质量的沟通可以帮助管理者在团队建立和累积影响力。

因为很多程序员可能不是很善于沟通,可能需要一些原则和指导,那么在沟通中有哪些方面可以遵循或者注意事项?

我个人总结如下三点经验:

  • 认清个体差异(每个人的生活环境不同,对于不同的角色要学会用不同的沟通和表达方式)。
  • 基于目标沟通 (明确各自沟通的意图和目的,减少不必要的误会,避免情绪对抗)。
  • 多用我来回放(可以把:你是不是这个意思,换成你看看我理解的是否准确)。

沟通技巧的核心在于学会倾听,对于还未掌握沟通技巧的同学,推荐一个沟通工具 3F 倾听,照着做也可以称为沟通小能手。

情绪控制

 

聊到沟通不得不聊情绪控制,为什么管理者要避免情绪化,学会控制情绪 ?

我们先看看知识的原理:我们常常会因为出现情绪,导致沟通常常脱离事情本身,转移到情绪的对抗上,我们的大脑皮层处理本能情绪的优先级是高于理性的,例如愤怒,恐惧,饥饿等,所以我们经常可以看到被本能情绪覆盖的人,往往会失去某种理性。

所以我们在沟通的时候需要时刻以下两点:

  • 控制情绪。
  • 保持理性。

文字可能比较枯燥,我们通过一张冰山图来了解原理:

了解情绪控制后,我们往往会在工作中遇到,跨部门沟通,跨团队沟通,这种情况往往都会有“部门墙”的存在。

 

这种情况往往不能诉求于共同的上级,往往出现“部门墙”的情况就是因为之间没有共同的上级,也无法相互影响。

遇到这种情况可以通过如下几个切入点去达成沟通的共识:

  • 人格:有口皆碑的人品和正直的人格可以让别人更加容易信任你说的内容,并且被你影响。
  • 历史表现:你曾经成功完成过相同的事情,就是成功案例,可以让别人更加容易相信你。
  • 影响力:你是行业的知名人物或者是团队公认的专家,权威的力量。
  • 逻辑:你的内容前后呼应有着紧密的逻辑,可以增加说服力。
  • 激情和情怀:心怀某种远大的理想主义,并且有使命感有激情,比较容易获得人们的帮助和认同,可以参考锤子手机的成功案例。
  • 互惠:明白对方的需求,沟通的目的是建立在满足双方的需求上。

说完沟通技巧,那我们来看一下平常沟通中有哪些常踩的坑?可以对照下自己以前是否有踩过:

  • 沟通给人贴标签,对人不对事(例如:你这个人怎么这么笨,这点事情都做不好)。
  • 没有管理自己的情绪,负面情绪对团队造成影响。
  • 沟通没有闭环,消息和邮件发出去就默认对方收到了。

[[336889]]

 

熟悉计算机网络的朋友应该很熟悉 TCP 协议和 UPD 协议,沟通有没有闭环就可以对应计算机网络中的 TCP 协议(可靠网络传输)和 UDP 协议(不可靠的网络传输),我个人建议大家在沟通中尽量多的使用 TCP 协议。

管理者的自我认知和成长

为什么说管理者要比团队拥有更快的成长,因为管理者是团队的天花板,你不成长则团队不会成长。

那么管理者的自我认知首先要体现在哪些方面?

  • 认知:管理者的价值是体现在团队业绩上,不要跟团队抢功劳。
  • 心态:归因于己,归功于外,有错都是管理者的错,有功劳都是团队的努力。
  • 担当:不要推卸责任,就算是客观原因,也要反省和复盘避免,而不是把责任推给外部。

能做到以上三点,我相信已经会是一个很优秀的管理者了,那么如何保持稳定和高效的成长呢?

我的个人秘诀的管理者要做好自己的精力管理,因为大家的时间都差不多,尤其是三十左右刚刚成家的管理者(比如说我),可以抽出的时间基本是少之又少。

如果还想在赛道上赢得竞争力,你就要保证自己有足够的时间和身体的健康,那么通过什么来获取呢?

答案就是精力管理,我个人总结的精力管理分为以下几个方面:

  • 运动(每天定期的运动,可以让你保持一个持续充沛的精力,也更加容易专注)。
  • 饮食(健康饮食,少吃多餐)。
  • 睡眠(早睡早起,不要熬夜)。
  • 健康(定期检查,避免久坐)。
  • 情绪(放松,感恩,好心情)。

说完角色认知和精力管理,有人会思考,我们持续努力的目标在哪里?具备以上两点,就像一辆高性能的好车,高速道路已经铺好,但是要如何开往目的地?

这个就要因人而异了,毕竟每个人的目标和理想都是不同的,先说说我个人,我是技术出身,到目前为止我也是偏爱技术的,转管理岗位更多的是想要锻炼自己的软技能。

所以我持续努力的目标是有两个:

  • 软技能的提升:产品思维,项目规划,带团队,带人,沟通,执行力。
  • 硬技能的提升:架构,设计,算法,网络,操作系统,编程语言。

以上仅仅是代表我个人的目标,也可能是多数技术 Leader 的目标,对于技术管理者很多人总是有误解,认为已经是团队 Manger 就不需要去做具体的执行工作的,起码这一点对于技术管理是行不通的。

我个人认为技术管理者要一直写代码,因为如果不了解技术细节就无法做出有效的决策。

而且管理者如果脱离技术,也是很危险的一件事情,因为市场对管理者的需求并不多,市场需要更多的工程师去写代码,管理者更多的价值是依附于企业,其很多业务知识也并非可迁移的技能。

如果管理者放弃技术的话可谓是“自废武功”,也会让自己陷入一个很尴尬的境地,比如的性格发现自己不适合做管理的话,甚至都不能退回去做工程师了。

总结

最后跟工程师,管理者或者正在走上管理路上的同僚提两点建议:

个人而言,做技术还是管理都不是很重要,找到自己最大的价值才是最重要的。

不要被别人走过的路限制住,也不要被职业限制住,没有谁可以定义你的发展。

中国的官本位思考挺严重,很多人以为做管理就是当官,但是在软件行业其实并不存在这一现象。

目前大多数互联网公司都是偏向扁平化管理,管理者在工作中并没有本质上的不同,而且管理者的工作更多的是偏向“打杂”(工程师视角)。

如果抱着当官这种心态去做管理,我想说初衷就已经错了,我先在这里劝退,因为最终也可能会走向失败。

管理者更多的是要有利他精神,空杯和开放的心态,真正愿意去帮助团队成功,通过成就他人来收获成就感。

关于技术管理的道理长篇大论说了很多,道理都很简单,能不能走好管理路,还是要在“事上练”,自己感悟出来的道理才能真正的为自己所用

参考资料:

  • 彼得德鲁克 《卓有成效的管理者》

https://book.douban.com/subject/1322025/

  • 刘建国《知行:技术人的管理之路》

https://book.douban.com/subject/33463986/

  • 极客时间:《技术管理实战》

https://time.geekbang.org/column/intro/113

作者:xiao2shiqi

编辑:陶家龙

出处:转载自公众号小二十七(ID:drak-phoenix)

责任编辑:武晓燕 来源: 小二十七
相关推荐

2023-02-17 15:15:53

2021-01-19 09:59:02

招聘管理团队

2021-04-15 21:21:59

代码热Python函数

2019-10-12 09:28:50

技术业务危机

2022-07-07 10:33:17

技术领导管理

2021-08-26 11:21:34

技术代码计算

2014-06-11 17:57:00

代码IDE

2019-11-04 09:48:35

KPIOKR管理

2021-01-25 08:00:20

团队管理阿里

2019-05-05 09:49:17

Leader主管技术

2020-06-01 20:57:27

Leader技术工作

2021-06-26 08:15:21

Spring BooJar 项目

2021-01-05 05:27:32

业务Leader团队

2020-11-02 08:24:34

Leader技术团队

2020-06-22 13:43:46

代码编码语言

2020-02-14 10:40:13

技术研发指标

2013-06-18 10:52:12

大数据

2018-06-19 16:48:42

华为

2020-01-13 09:06:34

CRONLP算法

2016-07-15 11:34:56

技术产品译文
点赞
收藏

51CTO技术栈公众号