EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
前言3 j0 F% Y7 b7 n4 D, p/ x; s+ Y0 N6 w
5 Z) h' v1 B4 A: q个人从程序员到技术 Leader 经历了不少的心路历程,我目前在带一支十几人的技术团队(控制团队人数主要是遵循亚马孙 CEO 贝索斯提出的两个披萨原则)我记得刚开始带团队的时候我是非常抗拒的,因为总觉得管理太多的“杂事”占用了我很多写代码的时间,包括目前虽然已经是一支十几人技术团队的 Leader,但是我平时也还是偏爱技术多一些,在业余时间都会抽空写写代码或者在 Leetcode 刷刷题,在从事管理工作这些时间里看过很多书,也踩过很多坑,总结了很多经验,想必也有很多程序员刚开始跌跌撞撞的走上技术 Leader 的岗位,所以想写一篇文章跟大家分享一下,希望可以帮助到需要的人,文章大纲如下:1 F1 e. W0 f% P' c, Z
' `+ B9 f+ v) D8 k/ r) I3 J: b
- 技术管理者需要哪些综合能力? 如何才能在团队拥有 Leadership ?
- 从工程师到团队 Leader 有哪些转变 ?
- 如何提升技术团队的工作效能 ?
- 如何提升团队的凝聚力 ?
- 沟通的技巧 ?
- 管理者的自我认知和成长8 E% L9 C4 ?! W! Z4 T# u! f
& K P7 e. Q w1 [/ ~2 E, a3 X. ~技术管理者需要哪些综合能力? 如何才能在团队拥有 Leadership ?8 k; R! [" D3 n" m' B4 a
+ J4 U! D0 Q0 F6 L$ f8 M( B7 S
既然说到管理技术团队,那么管理的对象自然就是程序员,那么程序员是一个什么样的群体?大多数程序员的特点是:“聪明且傲娇”. W/ I( E) k6 }4 F3 a/ ]% S
5 C2 F% Q$ V+ F! O" a6 l/ B7 W. d比如这个网上流传的段子,如何正确的向程序员提BUG:0 K$ p, ~: ?" o6 e+ k; R
" Q& R3 T7 B' a) a8 k
' n$ V" p( {1 n% P1 B
: _9 o: }. p3 I+ m4 W$ K! r1 q技术 Leader 对个人综合素质要求很高(技术好的管理者,带技术团队是有一定优势的),先说说我认为技术 Leader 需要哪几个比较重要的综合能力2 q" o( s) R; @3 f9 A
* Q; L5 C( v* M. H
- 技术能力和基础知识(能看懂技术表象背后的原理)
- 沟通表达能力(逻辑,同理心,情绪控制)
- 业务抽象能力(架构和演化)
6 Y- u7 _8 X2 E8 ?
|3 x$ u& Z* Q! x2 K
技术 Leader 必须要看透技术的本质,因为技术 Leader 平时的工作内容大多包含:技术选型,技术方案评审,代码审查,技术氛围的营造,如果管理者本身不是技术出身,可能无法和技术团队建立共识,沟通成本极高,最终让团队变成一个非常低效的组织,人浮于事,那么如何才能拥有这些能力,可以在技术团队拥有 LeaderShip ? 我个人总结有一下几点: ?7 X, F1 U* H9 c+ F+ h
. ^* F/ ^$ w% A1 D9 e - 吃透基础技术和弄懂技术背后的原理(万丈高楼平地起,再流行的框架和技术,剥离华丽的外衣也离不开操作系统,网络,数据结构这些原理型的知识)
- 了解细节,永远在写代码(不熟悉代码就无法提出真正可落地的方案,就无法感知技术团队的痛点在哪里,也就无法团队提高效能)
- 持续的学习,持续的为团队带来新的知识和理解(技术 Leader 已经是团队技术问题的终结者,不可能再上传递了,所以不要成为技术团队的天花板)
- 有一个真心帮助大家的心态(帮助大家成长,提高效能,最终组织效能也得到提高,实现共赢的局面)
R1 x& f0 L( i* Z
5 l, h" X- D( P# o% A5 _
总结了以上经验和方法论之后,我们肯定会思考,上面所说的都只是过程和执行,那么管理者的目标或者说是工作的结果是以什么形式体现的?/ m0 D8 K& @8 x% v& R; U
& C7 P% z6 T+ d
" [" ?( G# t* ]3 l0 @" j
: k0 P! m4 d% Y8 o/ I" A9 c/ R总体概括来说的话,管理者的目标和工作结果主要体现在两方面:
; A+ a% T1 T' g( h* X' x6 ?4 A+ E/ P$ d* F
- 做事:成本、效率、质量
- 带人:人才、梯队、成长
1 h1 X1 u3 Q* z! w. ]9 f: X
) z0 ]& ?4 p5 n* R
以上的方向又太抽象,其实管理者很多时间的大部分工作都在选择和权限,主要包含以下几个方面 R' ^) k! a2 J% Q) @
8 {2 z) P$ s. R6 y5 R - 有限资源的限定下,选择最大化的产出方案
- 做出符合当前环境的技术决策,帮助公司产品取得成功
- 用方法和工具不断优化和提升生产效率和质量
$ Y9 `: T/ A8 {* K, i 1 r2 z8 e, f# i
2 w' G5 [2 W3 ~! U o
& _% h5 R' E! }, L$ U6 Z3 S举一个实际的例子:( I2 R$ L* C" \
3 ^4 z& t, J9 g& G
- 比如公司A在创业期,还没有稳定的市场和客户,这个时候技术管理者的决策要倾向成本 + 效率,例如:技术团队偏向全栈型,工作流偏敏捷,快速交付功能获取用户和市场的反馈用于升级和迭代产品
- 比如公司B在成熟期,有固定的市场和客户,行业已经没有新的蛋糕,这个时候需要比拼的就是效率 + 质量,技术团队偏向专家型,注重产品质量和客户体验用于形成行业口碑和用户粘性
, W8 K5 E) [/ b: [+ B0 m; Y
" `+ E$ d6 c1 ^: _从工程师到团队 Leader 有哪些转变 ?
3 Z0 m" O6 P! c, \: t `8 C4 |0 }6 N+ N9 @- c: M" @
其实工作变化还蛮大,所有很多人刚开始管理团队会出现很多的不适,我总结如下:8 d; c5 M) ^$ E
9 _( n+ U0 r# a& x
我们先看看工程师的工作视角:
* Q4 _: z6 z9 Z2 O- C! M( g
- z- ^% V5 e2 V1 R: g2 h m
- 这个功能怎么做 ?
- 这个需求写完,我今天的工作就完成了
- 业余时间只看技术相关的内容
- 看看今天领导分配了什么工作给我
+ H+ x$ x3 Q/ J5 y! Y, |1 i
1 c+ a% C9 X" F. L
作为技术 Leader 的工作视角:
& I$ c! m1 V. b3 [% W; H o& u, b& M" G( s
- 我们先阶段要做什么 ?
- 团队未来向哪里发展? 团队成长不如预期怎么办? 公司今年的业绩指标如何可以完成 ?
- 除了技术,还需要沟通,判断,组织,协调,看方向的能力
- 规划 Q1 季度的工作目标,分解到团队成员去实施,保证工作内容和每个团队成员的能力相匹配' T5 W0 v6 p8 u( ^* q
Y2 s) _ l+ Q' J
看到这里大家可能会感慨到,不同于工程师工作内容的“明确性”,管理者的大部分工作是“不确定性”的,而且几乎没有尽头,也没有一个明确的时间用于标示“完成”状态,所以这对于习惯“确定性”思维的工程师来说,挑战极大
: w+ K: B. C+ J$ j4 ~" V+ T1 o7 H, w5 I/ M$ B
我个人用通俗的比喻来总结就是,我以前写代码时候的感受是 一人吃饱全家不饿,轻松且自由, 现在感受是 既当爹(做事),又当妈(带人),而且还上有老(上级),下有小(团队),感觉亚历山大!!6 \! Q, M3 U' P5 g
8 S/ V) l5 J C7 ?# H如何提升团队的工作效能! D4 j8 [+ _) h- o
, ^- w* u) G0 s* f3 V' @" H0 c* x
很多人都在谈高效,但是软件行业的高效度量指标是很难的,总体来说工作效能的提升,实际上是 事 + 人 的结合,我们先聊聊事情,再聊聊人: B) j ? ~( `- o
( h* {' W5 o8 S$ D从事情的角度,我们先说说让团队开发工作变的高效的几个条件:' r# K. {6 l; X( A( ^
. |, l$ `" c2 h4 g* T" W0 I5 b- y - 给员工配置高性能的电脑(工欲善其事必先利其器,脱离工具谈高效就是在耍流氓)
- 工作流是否流畅(Git 服务器网络慢,合并代码要写表格走流程申请?形式主义就不要谈高效二字)
- 自动化工具是否完善(没有自动扫面,自动测试,代码就被合并了?那么接下来就是无尽的生产 Bug,修复的死循环)8 `2 k; O( V- G+ i: S5 E. {
& s" I5 n- h$ t( y& S7 E以上侧重的是工具和流程,开发的效率和开发的体验对团队的效能都至关重要,流畅的工作流可以让开发者持续进入心流状态,产生高质量的功能和代码,不会频繁的被电脑卡死,频繁的打断,开发流程等待的阻塞降低工作的积极性,下面我们从人的方面聊聊如何提高团队效能
9 i: c+ `1 t: T9 |- Y" B- M: L0 n" _- n: x* G$ \! U
程序员的工作大多是本质知识工作者,管理学大师彼得德鲁克说过:“对于知识工作者是无法进行严密的督导”,所以我倾向提供一种积极,主动,自驱的工作氛围给团队,让团队在这种土壤里面逐渐的形成高效能团队4 t" H7 E1 y" }! i: J) T
, c! k: H+ H" j/ m. g( u1 P4 |" z每个团队都会有懈怠的员工,有时候管理者不要急于否定员工,看看管理者是不是没有洞察到他的心理诉求,高产出员工的两个特质是:/ D) S( p7 N( H& c V' b, ? n# V
t; Y8 t# z8 l; L( G
- 能力(专业知识,技术能力)
- 意愿(团队文化,价值观,喜欢的氛围)7 ^: a& B" H- S5 w: E! W
+ K1 i' O. o2 P1 k5 ?4 J* j
有一种情况我们常常会发现相同的员工在不同的环境,有不同的产出,所以有时候发现懈怠的员工,不仅要从员工身上找问题,还可以去思考看看是不是我们周围的人,事,环境,工作方法,价值观等地方找出问题,毕竟有一句话叫做“橘生淮南则为橘,生于淮北则为枳”
/ V+ F+ v7 S) H$ r: @
- C; t! A( D$ e- L2 U1 E- `
( ]) W7 ]5 J3 `4 S. }" N {
3 N6 I* |) V1 x5 B% v0 G2 T9 e4 Y' @外部激励/ D0 z7 ~( L+ ^. h
1 q6 e2 C5 i4 ^* x除了团队和个人,还可以从外部找原因来持续的激励团队,可以理解为是外部激励,主要包含以下方面:
2 ?" D( g5 C* X) o! V! d- V+ Q! N; N# D: F1 [
- 安全感和成就感(稳定的工作环境,完成有难度的挑战,及时反馈 BIA)
- 学习和成长环境(和优秀的人共事,感知到自己成长)
- 和管理者定期沟通(让员工感到自己被重视,收集员工建议并且做出工作上的调整)7 F2 g% Z1 ?) _$ D
# k8 R( X' S F0 e( K自驱力和凝聚力
9 L, H( ?$ s: T V6 K. h0 g/ P
2 Z3 K) \9 T9 Q, |* v很多企业都期望员工可以有 Onwer 精神,但是如果想要团队保持足够的自驱力,管理者可能要思考是否对团队做到以下几点:
) n4 z. `9 `+ S
- M9 V- l* j. i$ I3 b/ F! d
- 给予员工自主性(工作内容上的自由度,工作方法上的自由度,工作时间和地点上的自由度)
- 成长(明确的工作目标,内容有挑战,工作发挥其优势)
- 意义和使命(共同的目标和愿景,价值观)
- 信任和放权(共同面对挑战,团队内的对抗活动)
; D( |' p( V3 `0 C. d& z
, [! g" e' a% [8 H3 g3 U6 j4 x沟通的技巧
( R) n5 d& V& C C/ p; Y+ S4 z3 K% g7 |1 W
为了简单先说明沟通的重要性,我们先了解一下关于圣经中《通天塔》的故事,故事大概如下:
( Q6 X$ c6 u: f5 O3 D Q, w1 b) Q/ S7 k5 k9 X4 F+ z% _ Y; u! m
《圣经·旧约·创世记》第11章故事中人们建造的塔。根据篇章记载,当时人类联合起来兴建希望能通往天堂的高塔;为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,因为不能沟通无法达成共识,人类之间相互猜忌,内斗,无法团结,最终计划因此失败,人类自此各散东西。
- a5 ]) ^* ?, I: s
4 R) c& m, l2 x9 ~+ D5 T$ }总结一下就是,如果人们不愿意,或者不会沟通,那么就很容易产生分歧,误解,从而导致大家分裂,大家的目标就会失败,那么管理者很多事情是需要通过沟通传达,让团队达成方向共识,齐心协力,最终完成企业的目标! |9 g; s0 G1 e8 m5 E% L/ B) G( x
6 Y) u a3 E$ Z, p# Y2 g
3 X0 X3 h. p l t- g" F. J+ c8 v/ `! h/ V1 E* {
2 G& P/ j t. J7 u
说完故事,那我们了解一下良好的沟通能带来什么?
) ^" Q( Q9 n1 T, E- x/ |! s. X& [, \; l: g
- 管理者对团队的总体认知和判断力得到提升
- 和团队成员之间建立信任和默契(信任的前提是充分的沟通,信任程度越高,沟通成本越低)
- 高质量的沟通可以帮助管理者在团队建立和累积影响力
" f, s2 \; F: G/ s
# F& z/ \( i8 F+ L5 T4 c
因为很多程序员可能不是很善于沟通,可能需要一些原则和指导,那么在沟通中有哪些方面可以遵循或者注意事项,我个人总结如下 3 点经验
# H# p' v C9 M& J1 l
, E1 g& {. c0 g" g2 ? - 认清个体差异(每个人的生活环境不同,对于不同的角色要学会用不同的沟通和表达方式)
- 基于目标沟通 (明确各自沟通的意图和目的,减少不必要的误会,避免情绪对抗)
- 多用我来回放(可以把:你是不是这个意思,可以换成,你看看我理解的是否准确)
z) R |" h2 t( T4 F6 a' W
6 v( b2 e8 k* \% g" i3 q
沟通技巧的核心在于学会倾听,对于还未掌握沟通技巧的同学,推荐一个沟通工具 3F 倾听,照着做也可以称为沟通小能手:6 @+ |% B( G* }: A$ t J
: w3 c4 d+ k A& K2 r9 |! j o! [
) m" k: |% G/ ]5 A3 d [1 h
" @: g: S a4 j) t情绪控制
* [4 y% U \2 P- e1 t8 U1 ~) s! }0 D7 B" Q- J
聊到沟通不得不聊情绪控制,为什么管理者要避免情绪化,学会控制情绪 ? 我们先看看知识的原理:我们常常会因为出现情绪,导致沟通常常脱离事情本身,转移到情绪的对抗上,我们的大脑皮层处理本能情绪的优先级是高于理性的,例如愤怒,恐惧,饥饿等,所以我们经常可以看到被本能情绪覆盖的人,往往会失去某种理性,所以我们在沟通的时候需要时刻以下两点:
1 ~7 B. k l# V, S6 a! _+ b" m$ Y& E
- 控制情绪
- 保持理性% ?5 h4 C4 |6 B2 p& u5 p5 X/ n
' n4 k. s# d7 E% z9 V7 ?7 M; r
文字可能比较枯燥,我们通过一张冰山图来了解原理:
0 R0 a+ j' `, W; Y
1 z) g$ h' g! O* E: T1 _% O' h
, ^! u/ J8 q3 L9 K
" ]+ a: |3 A4 h; f% g# c了解情绪控制后,我们往往会在工作中遇到,跨部门沟通,跨团队沟通,这种情况往往都会有“部门墙”的存在,这种情况往往不能诉求于共同的上级,往往出现“部门墙”的情况就是因为之间没有共同的上级,也无法相互影响,遇到这种情况可以通过如下几个切入点去达成沟通的共识
# z4 P, U- U+ }0 ^
* ~8 S; D, K0 N6 r6 H
- 人格:有口皆碑的人品和正直的人格可以让别人更加容易信任你说的内容,并且被你影响
- 历史表现:你曾经成功完成过相同的事情,就是成功案例,可以让别人更加容易相信你
- 影响力:你是行业的知名人物或者是团队公认的专家,权威的力量
- 逻辑:你的内容前后呼应有着紧密的逻辑,可以增加说服力
- 激情和情怀:心怀某种远大的理想主义,并且有使命感有激情,比较容易获得人们的帮助和认同,可以参考锤子手机的成功案例
- 互惠:明白对方的需求,沟通的目的是建立在满足双方的需求上
1 `. T9 h+ I7 d. Z: K
- i8 Q A6 B0 x5 X# q; O
说完沟通技巧,那我们来看一下平常沟通中有哪些常踩的坑?可以对照下自己以前是否有踩过- G3 ]3 [4 M4 V/ k/ _
- f4 x; N8 J8 v4 e2 S/ W0 B
- 沟通给人贴标签,对人不对事(例如:你这个人怎么这么笨,这点事情都做不好)
- 没有管理自己的情绪,负面情绪对团队造成影响
- 沟通没有闭环,消息和邮件发出去就默认对方收到了,参考下图; o( N% T7 W) }0 E
3 U% T! @( g, Y/ y* t r t! X3 \
熟悉计算机网络的朋友应该很熟悉 TCP 协议和 UPD 协议,沟通有没有闭环就可以对应计算机网络中的 TCP 协议(可靠网络传输)和 UDP 协议(不可靠的网络传输),我个人建议大家在沟通中尽量多的使用 TCP 协议
7 @8 ?" i% ^! ]
- [% @1 W2 c; U- F: i管理者的自我认知和成长
$ O3 R( g! J" X2 f; e
* M: V( P) M1 Q! U B3 v$ [为什么说管理者要比团队拥有更快的成长,因为 管理者是团队的天花板,你不成长则团队不会成长,那么管理者的自我认知首先要体现在哪些方面? Z; N: z- m& o5 O5 S4 Q
3 O" g" n& t$ s5 ]) q- N - 认知:管理者的价值是体现在团队业绩上,不要跟团队抢功劳
- 心态:归因于己,归功于外,有错都是管理者的错,有功劳都是团队的努力
- 担当:不要推卸责任,就算是客观原因,也要反省和复盘避免,而不是把责任推给外部
3 ?8 Y& i q. V9 l( p& x$ B# T- \0 d
$ R: h7 Z% j% H* R' F
能做到以上三点,我相信已经会是一个很优秀的管理者了,那么如何保持稳定和高效的成长呢?我的个人秘诀的管理者要做好自己的 精力管理,因为大家的时间都有差不多,尤其是三十左右刚刚成家的管理者(比如说我),可以抽出的时间基本是少之又少,那么还想在赛道上赢得竞争力那么就要比其他人,那么你就要保证自己有足够的时间和身体的健康,那么通过什么来获取呢?答案就是精力管理,我个人总结的精力管理分为以下几个方面:: E0 Y+ J; H. D" U: s. m' \
9 E A8 l9 K( M - 运动(每天定期的运动,可以让你保持一个持续充沛的精力,也更加容易专注)
- 饮食(健康饮食,少吃多餐)
- 睡眠(早睡早起,不要熬夜)
- 健康(定期检查,避免久坐)
- 情绪(放松,感恩,好心情)
) F5 Y- m0 n" @1 u8 ?; E
$ N4 j9 S+ Q+ j说完角色认知和精力管理,那么有人会不仅的思考,那么我们持续为止努力的目标在哪里?具备以上两点,就像一辆高性能的好车,高速道路已经铺好,但是要如何开往目的地?这个就要因人而异了,毕竟每个人的目标和理想都是不同的,先说说我个人,我是技术出身,到目前为止我其实也是偏爱技术的,转管理岗位更多的是想要锻炼自己的软技能,所以我持续努力的目标是有 2 个:
& I0 |! N# k/ m6 F$ T
3 { v0 v) B2 J
- 软技能的提升:产品思维,项目规划,带团队,带人,沟通,执行力
- 硬技能的提升:架构,设计,算法,网络,操作系统,编程语言
* W7 Z6 t# S% C+ e6 f1 u/ i8 C
/ |2 ^' _/ r8 J以上仅仅是代表我个人的目标,也可能是多数技术 Leader 的目标,对于技术管理者很多人总是有误解,认为已经是团队 Manger 就不需要去做具体的执行工作的,起码这一点对于技术管理是行不通的,我个人认为技术管理者 要一直写代码,因为如果不了解技术细节就无法做出有效的决策,而且管理者如果脱离技术,那么也是很危险的一件事情,因为市场对管理者的需求并不多,市场需要更多的工程师去写代码,管理者更多的价值是依附于企业,其很多业务知识也并非可迁移的技能,如果管理者放弃技术的话可谓是“自废武功”,也会让自己陷入一个很尴尬的境地,比如的性格发现自己不适合做管理的话,甚至都不能退回去做工程师了
& f6 O8 ?9 w0 p' A) J( M
& g) k& Z- d; s4 r; X5 q总结: A E6 a! J4 U: H- T. C
+ I4 D* s/ I1 X# }# b
- 个人而言,做技术还是管理都不是很重要,找到自己最大的价值才是最重要的
- 不要被别人走过的路限制住,也不要被职业限制住,没有谁可以定义你的发展
5 z# L# a1 h H: c5 B
4 O! i( \0 X8 s: K
中国的官本位思考其实还是挺严重,很多人以为做管理就是当官,但是在软件行业其实并不存在这一现象,目前大多数互联网公司都是偏向扁平化管理,管理者的大家在工作中并没有本质上的不同,而且管理者的工作更多的是偏向“打杂”(工程师视角),如果抱着这种心态去做管理,那么我想说初衷就已经错了,我先在这里劝退,因为最终也可能会走向失败,管理者更多的是要有利他精神,空悲和开放的心态,真正愿意去帮助团队成功,最终实现自己,通过成就他人来收获成就感,关于技术管理的道理长篇大论说了很多,道理都很简单,能不能走好管理路,还是要在“事上练”,自己感悟出来的道理才能真正的为自己所用
' |, D4 {: u, E4 ] p" A
& h/ K+ ~5 p: h- a+ \) l# v* E |