每位读完这本书的人都会说:如果早点读到这本书就好了!
知道和做到之间有一道鸿沟,要想跨越它,你不但要努力,还要讲究方法。《程序员的成长课》不仅传授知识,更教给读者如何做到木及致。《程序员的成长课》中的理念、方法、工具可以指导读者更好地看清定位及发展方向,设计未来。如果读者不知道选择什么技术栈来学习,困惑于怎样在技术上持续精进,想转技术管理却没途径,想有章法地为跳槽加薪做准备,或者想转型却不知道自己除了技术还能干什么,建议认真读本书,它提供的方法和工具可以帮助读者很快找到答案。
《程序员的成长课》适用的读者:所有程序员,IT相关专业的学生、教师、培训机构学员等。
第4章 技术管理新人面临的挑战
在“成为技术管理者”一章中,我们看到,开发者走向技术管理岗位,是从自己做事转变为通过他人完成工作,是从执行角色转变为管理角色,是职能上的转型。这种转型,是从管理自我到管理他人的转变,管理自我所需要的能力与管理他人差异巨大,这种巨大的差异,往往会给刚转型来的技术管理新人带来严峻的挑战。
本章会介绍技术管理新人经常遇到的18种挑战:
1)角色转变
2)被动管理
3)弄不清职责
4)委派任务
5)目标管理
6)资源管理
7)压力管理
8)冲突管理
9)绩效变差
10)担心失去技术竞争力
11)有效的反馈机制
12)别人的议论
13)和下属进行一对一沟通
14)怕犯错
15)时间管理(领导者时间被拆分为5份)
16)激励他人
17)向上管理
18)提升领导力和管理能力
4.1 挑战1:角色转变
从技术岗位晋升而来的管理者,往往是某个技术领域的优秀者,具有很强的执行力和解决问题的能力,在他们刚开始做管理工作时,往往会顶着管理者的头衔做执行者的事情,成为一个“super-doer”。
因为他们在技术上很厉害,可能经常会拿自己的技术水平衡量团队的其他人,觉得这个任务张三很难处理好,那个任务李四铁定犯错误,于是不放心把事情交给别人来做,或者交给别人做了又因为看到要出错,忍不住自己伸手去做,把分给团队成员的任务再拿回来自己做。
当一个技术领导因为担心下属会出错或不能按自己预期完成任务而收回这个任务自己做时,要么会让下属自己觉得自己无能(或者让下属猜测领导认为自己无能),要么会让下属觉得这个领导越俎代庖不干他该干的事,这就会产生严重的不良影响,不利于团队成员自己成长、自己解决问题。同时,这位技术领导也会因为过分关注技术细节而忽略其他的组织、领导工作,导致“只见树木,不见森林”,严重影响整个团队的效率和生产率。
当你作为开发者时,是个人贡献者,管理好自我即可,你有过硬的专业技能和到位的职业意识,可以积极追求并实现个人的高绩效。但你一旦成了技术管理者,角色就变了,除管理自我之外,你还要管理他人。你的工作是通过他人完成的,一定要重视管理工作,而不是凡事亲力亲为(不管出自什么原因)。
团队更需要你做规划,定目标,跟踪计划,协调资源,他人更需要你辅导而非代替他们做事情,甚至你告诉他们怎么做他们也会厌烦——因为每一个合格的开发者都希望自己搞明白怎么做,都希望自己搞定而不是成为你的某一只手,时刻被你控制。你也许更擅长发现并解决问题,你看着他们找不到方向会难以克制替他们解决的冲动,但你依然应该袖手旁观,让下属自己搞定——顶多给予指导。这样他们才能成长。
谨记,一定要把更多的精力放在人、流程、项目上,你的工作是保障别人的工作能够顺利开展,是创建一个可以让大家各尽所能、实现团队目标和个人成长的环境。
要顺利完成角色转变,下列事情可能有帮助:
和你信任的同级别小伙伴多聊聊,看看他们每天的时间是怎么安排的,他们是怎么看待他们的工作的,你可以从他们那里获得启发、方法、工具,然后结合自己的具体情况,看看哪些适用、哪些不适用,做做实验(还记得“如何在技术上持续精进”那一章介绍过的“对标管理法”吗?这里也用得上)。
阅读。多读领导力和管理方面的书籍,很多前人的经验都能在这里找到,我们在上一章也列出了很多书籍。
培训。有一个很奇怪的现象,很多开发者会希望参加某种技能培训,比如Qt开发培训(需要的话联系我好了),比如机器学习的培训,但是当一个开发者被晋升为管理者时,他却很少想要去接受领导力和管理技能的培训——似乎管理是自然而然就会的事情。不但开发者这么做,很多中小型公司的高层管理者也在这么做:把一个不懂管理的技术人员提拔到管理岗位,不提供任何培训就希望他们能做好管理工作。这是多么令人费解的事情啊!正确的做法是,在成为管理者之前就接受管理方面的培训,走上管理岗位后要接受管理培训,做了一段时间管理工作后还要接受管理培训,即:根据你所处阶段,持续接受适合你状况的领导力和管理技能培训。
导师。你需要一位更理解研发团队管理的人来做你的导师,在你遇到问题时可以向他请教,你还可以周期性地和他沟通,从他那里获得反馈和指导,这样你会以更大的加速度前进,快速完成从执行到管理的转变。导师必须是你充分信任的且和你没有直接利害冲突的人。
4.2 挑战2:被动管理
刚上任的技术管理者往往还习惯于做具体的事,把大部分精力放在设计、编码、解Bug等具体工作上,只留少部分时间和精力给管理,甚至会认为管理岗位没什么可做的,有问题了才需要管,没问题则不用管。
这种被问题驱动的管理方式,就是被动管理(消极管理),和故障驱动式开发(开发工作被迫围着故障开展)类似。
假定你安排了一个模块给袁大头,要求他两周后(2017年8月10日)交付,然后你就写自己的代码去了。等到8月10日,你想起袁大头的任务该提交了,就过去问他:“怎么样,代码提交了没?明天要联调。”袁大头看看你,说:“没做完,估计还得一周。”于是你生气了,指责他工作不积极主动、不负责任、明知道做不完也不想办法赶进度。于是你责令袁大头在接下来的几天里每天晚上加班,周六、周日加班,必须赶在8月14日提交。袁大头满腹怨言地开始工作……
这就是被动管理。你在一开始并没有做计划,也没有风险评估和备案,开发过程中也没有定期跟踪任务状态,更没有根据袁大头的工作状态调整计划,只是到了交付这一天,验收时发现延期,于是被动地安排加班赶进度,这样你、袁大头、测试、产品等相关人员,都因此而陷入了被动,都不得不被“袁大头任务延期”这个问题牵着走。
周一(2017年8月28日)下午开完周会,袁大头找你说:“老大,有没有时间?我想找你聊聊。”你满腹疑惑地找了个会议室,问袁大头什么事情。袁大头说:“老大,我准备离职。”你大惊,赶忙说:“哎呀大头,怎么回事儿啊,不是干得好好的嘛,为什么突然要离职?”袁大头说,“老大,那边催得很紧,我已经答应他们9月11日入职了,你看这两周能不能安排个人和我交接。”你更惊:“你为什么要离职啊?再说这时间也太紧了,一时半会儿不好找人接替你的工作,你看能不能再考虑一下?”……
这也是被动管理。“一直都好好的”,突然你就碰上了“袁大头离职”这个问题,不得不找人接替他的工作,不得不向上级请示,不得不安排招聘,不得不向袁大头所属项目的相关干系人解释……
被动管理对个人、对团队、对公司,都有百害而无一利。
管理者应该以积极、主动的态度实施管理。
对一个项目,应该在前期花费更多的资源,明确任务的目标、资源、时间、反馈机制、沟通方式、风险,制定相应的计划和应急预案,同时在实施计划的过程中周期性地采集状态,根据项目状态动态调整计划,及早解决各种问题,确保所有项目参与者和干系人步调一致,最终顺利交付。
对一个人,应该在工作中经常性地和他沟通,无论是工作上还是生活上的事情,都要有所了解,要了解他为什么在这里工作,要帮助他制定成长计划,要让他感到自己是特别的、被重视的,让他愿意在这里工作。
第1章 如何选择技术方向 1
1.1 技术成长三阶段模型 2
1.2 选择技术方向都要考虑哪些因素 4
1.3 入行时怎么选择技术方向 9
1.4 构建技能树时选择技术方向 12
1.5 技术转型时的方向选择 13
1.6 方案选型 16
1.7 工具推荐 20
第2章 如何在技术上持续精进 28
2.1 做开发还是转管理 29
2.2 找到激励你前进的动力 32
2.3 学习型心态 34
2.4 技术精进之道 34
2.5 目标的设定与执行 44
2.6 精进的4个习惯 47
2.7 习惯养成指南 50
2.8 超越技术层面的核心竞争力 54
2.9 公司内的职业规划 58
第3章 成为技术管理者 60
3.1 真的要做管理吗 61
3.2 5大职能定位 62
3.3 理解管理角色 66
3.4 走向技术管理的4种方式 82
3.5 怎样为成为管理者做准备 90
第4章 技术管理新人面临的挑战 97
4.1 挑战1:角色转变 98
4.2 挑战2:被动管理 100
4.3 挑战3:弄不清职责 101
4.4 挑战4:委派任务 103
4.5 挑战5:目标管理 104
4.6 挑战6:资源管理 107
4.7 挑战7:压力管理 108
4.8 挑战8:冲突管理 112
4.9 挑战9:绩效变差 118
4.10 挑战10:担心失去技术竞争力 119
4.11 挑战11:有效的反馈机制 120
4.12 挑战12:别人的议论 121
4.13 挑战13:和下属进行一对一沟通 122
4.14 挑战14:怕犯错 124
4.15 挑战15:时间管理 125
4.16 挑战16:激励他人 128
4.17 挑战17:向上管理 134
4.18 挑战18:提升领导力和管理能力 137
第5章 跳槽8问 139
5.1 为什么要跳槽 139
5.2 什么时候跳槽好 142
5.3 什么是好的跳槽和坏的跳槽 148
5.4 跳槽还是卧槽 149
5.5 要不要追薪式跳槽 152
5.6 选大公司还是小公司 152
5.7 去大城市还是小城市 156
5.8 自己的选择是明智的吗 158
第6章 简历优化指南 160
6.1 简历优化模型 160
6.2 明确你想要的工作特征 161
6.3 盘点你的价值和亮点 163
6.4 寻找机会 167
6.5 招聘信息分析 175
6.6 简历优化 177
6.7 检验简历优化效果 182
6.8 如何提高简历投递成功率 183
第7章 如何在跳槽时获得想要的薪水 184
7.1 决定薪水的7大因素 185
7.2 我们能直接控制哪些因素 188
7.3 如何为谈薪水做准备 189
7.4 薪资谈判的6个秘密 195
7.5 什么时候可以降薪求职 197
7.6 薪水与幸福成正比吗 198
第8章 转型 200
8.1 你真的不再喜欢开发工作了吗 201
8.2 程序员转型的难处 203
8.3 转型的分类 208
8.4 与开发者相关的转型方向 211
8.5 如何确认哪个职业适合你 212
8.6 转型的最佳实践 222
附录A 实用图表、方法、工具索引 225
附录B 私房书单 227
附录C 值得订阅的技术类公众号 233
市面上介绍专业技术的书很多,介绍程序员成长的书并不多,难得的是作者也是从一线程序员成长起来的业内的专家。本书的内容很平实,接地气,对于想选择这个行业或者已经进入、这个行业希望去了解如何发展的同学是一本好书。
——美丽联合集团技术副总裁 曾宪杰
晓辉的文字富有感染力,细细品来,润物细无声。字里行间充满对程序人生的洞察和见解,又不失邻家大哥哥般的关怀。娓娓道来,入情入理,时时让人会心一笑。希望大家都能在这本书中看到自己的影子,在作者的指引下找到继续前进的方向。
——爱奇艺技术总监 陆其明
晓辉是我见过的为数不多的既懂技术又懂生涯规划的人,真希望我还是程序员的时候就能认识他啊。
——时间管理入门经典《小强升职记》作者 邹小强
一本迫使你开始全面反思程序员成长生涯的书,我在想,要是早年的困惑期能读到这样具有指导意义的书,也许很多选择会不太一样,建议每一个还在成长路上的程序员都认真阅读。
——京东成都研究院资深架构师,技术委员会负责人,胡峰
程序员的路上有太多选择与迷茫,要选用什么架构?要不要做管理?怎样才能走到管理层?从最初的开发,走向不用开发的管理,相当于现在正在做着一个将来不再做的工作,会不会失去竞争力?相信你读过本书后,将会知道自己想要什么,在未来的职业生涯中,能够有的放矢,不断进阶。
——阿里巴巴无线技术专家 潘辰星
当你走在程序员的十字路口不知所措的时候,打开这本书,按照书中所讲的理论逐渐剖析自己,然后参照书中的实践刻意练习,或许不久你就能找到属于自己的出口。
——ThoughtWorks咨询师,移动开发工程师 黄磊
我一直使用三个维度来评价技术候选人,广度、深度和高度,技术人除了低头做事,还要抬头看方向、看趋势、做正确的选择,做正确的事比正确的做事要重要得多,本书则是指导技术人如何攀得高、走得远的真经,既有转型管理的窍门,又有跳槽的实践经验,还有选择方向的心得,是每一位技术人员都应该修炼的内功级经典图书。
——易宝支付产品中心架构组负责人,《分布式服务架构:原理、设计与实战》作者 李艳鹏
规划自己的职业生涯,保持不断进步,持续激励自己,一步一步迈向更高的台阶。除技术本身之外,更重要的是通过我们掌握的技能改变自己,改变世界。这正是当下许多正在努力奋进的程序员亟需了解的,安老师的书给了我们相当准确细致的指导。
——FreeCodeCamp中国 余博伦
晓辉是我软件开发路上遇到的头一个非技术影响者,他的文章,内容贴近实际,富有极强的感染力,不仅让读者阅读起来容易,而且不浮夸。丰富的阅历熏陶下的文字会让你眼前一亮,学会怎样积极做事,让你的职业生涯不再波折!
——平安安卓工程师 刘永奎(Tamic)