最近在看一本书《技术领导力》,做了一些笔记,打算把自己从一个新人阶段被带领成长,以及对带新人的思考,与读书笔记都记录一下。
一、关于带新人
被新同学请教问题实际上是处于一个比较难的境界的,因为他们都是在预设你工作两年一定会答出他们的问题。
所以我首先要思考的是 「他人请教问题时,会有哪些问题的种类」 ,然后再思考「有没有办法100%解答别人的问题」。
1. 他人请教问题时,会有哪些问题的种类
(1)业务类型
这种问题的请教是最多的,工作得越久做得业务也越多,有新同学来加入业务时,就需要来请教之前业务的逻辑。
因为业务逻辑都是自己写的,所以这类问题基本上都可以进行解答。
另外业务逻辑如果能写一份完整的issue,将测试用例和技术方案都进行覆盖,那么对测试同学、产品、新接入的同学都是一种福利,所以目前我基本都会将做完的业务落地一份issue。
Tips:
业务逻辑 是一个人在当下最重要的价值,它和技术无关,你知道就是知道,不知道就得去看代码,效率非常低。
但同时作为开发者也要注意,除了一些赋有创新性的业务外,大多数业务对项目外的意义并不大,所以要多做业务,但同时也要明确对业务本身的定位:
业务应该是督促思考,校验技术落地的途径,而不是提升技术的主要渠道。
所以要多做业务,但也要勤于学习业务外的知识。
(2)Debug
新同学请教Debug大致可以分为两类:
- 千奇百怪的bug,比如环境配置、分支管理等等
- 技术相关的bug,比如卡顿、crash等等
a. 千奇百怪的bug,比如环境配置、分支管理等等
每个公司的操作都有一套流程,老员工工作时间长都默认按流程进行操作,但新同学不清楚流程,很可能会遇到环境配置、分支管理等问题,解决这类问题的最好方法是把标准流程介绍工作前置,在新同学进行环境配置、git操作前,就完成标准操作流程的介绍,避免不必要的损耗。
b. 技术相关的bug,比如卡顿、crash等等
请教这类问题多是在具体业务场景下,这类问题的解决方向可以是:
- 提供Debug方法,新同学采用相应方法debug:这类多是在业务不相关的背景请教下,比如我自己负责A场景的业务,有新同学请教B场景的卡顿逻辑,那么这种情况下提供Debug方法即可,因为B场景业务自己不熟,帮忙上手Debug实际是一种浪费大家时间的行为。
- 上手帮忙Debug,这种场景多数出现在自己负责的A业务下,有新同学反馈了相关的bug,这种情况下上手帮忙Debug是效率最高的,但如果是想先历练一下新同学,也可以先提供Debug方法,如果搞不定再上手帮忙Debug也是可以的。
(3)纯技术方案
纯技术方案,比如 Flutter内嵌、CPU流水线、视频合成IP帧、音视频播放 等等,这种问题都是我被请教过的,当时没有给出一个自己满意的答案,最后是通过 Google 帮忙解答的。
其实后续思考这类问题,基本每一个问题都要先看完一本厚书,遇到这类问题如果之前没有相关的知识储备,比较完善的流程是:
- 先明确是什么问题,想要解决什么问题(这一步非常重要,很多时候新同学是被即将使用到的技术唬住了,实际上要解决的问题并不是多难)
- 给出解决方法\帮忙解决问题\Google
最好的解决方案还是逐步提升自己的技术能力,尽可能全且深入地覆盖所有技术。
但技术是学不完的,无论再怎么学习都有可能被问到知识盲区,所以培养解决问题的能力尤其重要:Google或者请教相关领域的专家。
2. 自己对于管理和招新人的态度
这部分主要是聊看完《技术领导力》的思考:
技术管理者 自己首先是一个技术达人,有着比较深厚的技术背景,如果一个对技术不感冒的人做了技术管理者,那对团队是一个灾难。
技术管理者 和 其它行业的大部分管理者 不同,技术管理者的要求更高,它求真、求实,技术你会就是会,不会就是不会,错过了学习新技术就是落后,花里胡哨是不被尊敬的;而 其它行业的管理者 可能更多地强调是信息差管理。
对于招聘新人,看完这本书的感悟是:一个优秀的员工可能需要具备十几点品质,技术能力强只是其中一种,不要仅仅因为技术强而接收一个人,技术强的人很多,但优秀的员工应该是多面的。
二、《技术领导者》读书笔记
前言
技术领导者应该具备什么样的素质呢?
1. 技术,技术,技术
(1)技术管理不等于产品经理,要保持技术敏感度和技术决策力
(2)如何用好当下的技术解决现实中的问题、什么阶段引入什么技术、什么时候重构、什么时候重写、如何利用技术驱动产品、如何构建技术平台…这些都是技术领导者需要思考并确定的问题,这些都依托于你强大的技术背景。
2. 信任
(1)选对人,相信团队解决问题的能力
(2)真解决不了问题时,协调资源或自己提到上阵。
3. 鼓励和批评
无节制的鼓励会导致你成为一个烂好人,而随时随地的批评会打击团队自信心,要找到自己的平衡。
4. 团队作战
要明白不是团队离不开管理者,而是管理者离不开团队。
当团队取得成绩时,不要沾沾自喜。
5. 善用人才
(一)技术管理工作
1. 管理问题与管理者能力
(1)不同阶段的管理问题:
(2)作为技术团队管理者,无论具体管几个人,最好能够拥有以下能力,才能满足各个需求方提出的需求:
- 深入理解一门或多门编程语言
- 深入理解多种流行的框架
- 系统架构能力强,拥有复杂系统的设计经验
- 积极跟随开源社区
- 积极了解业界技术发展
- 沟通能力强,情商高
- 有产品意识,不是技术迷
- 会带人,服从领导,责任心强
- 会写专利
- 再会点别的更好
- 随叫随到、工资不高
Tips:”随叫随到、工资不高”这句有点讽刺了…
2. 工作品质定位
(1)成熟
(2)勇敢
Tips:”你若下地狱,我决不上天堂”,这句话不错
(3)热爱技术
(4)勤奋
(5)脚踏实地
(6)逻辑能力
(7)公平、透明
(8)一线作战精神
(9)决策能力
(10)开放姿态
(11)为人处世
(12)真诚
(13)宽容
(14)仔细
(15)终身学习
(16)时间管理
(17)以人为本
(18)保持身体健康
3. 何时成为技术管理者
4. 工程师的等级
Tips:我现在的目标就是通过学习,让未来的自己顶的上现在10个我。
5. 坚持做正确的技术管理
Tips:对愚蠢的忍耐力是0。
(二)团队建设、人员管理
1. 职业素材
Tips:所以即使是你的朋友,但如果做的是和你所在工作有交集的事情,涉及机密的数据和技术方案,都要注意机密。
2. 组建团队
最好可以自己出面试题。