最近在看一本书《技术领导力》,做了一些笔记,打算把自己从一个新人阶段被带领成长,以及对带新人的思考,与读书笔记都记录一下。

一、关于带新人

被新同学请教问题实际上是处于一个比较难的境界的,因为他们都是在预设你工作两年一定会答出他们的问题。

所以我首先要思考的是 「他人请教问题时,会有哪些问题的种类」 ,然后再思考「有没有办法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 帮忙解答的。

其实后续思考这类问题,基本每一个问题都要先看完一本厚书,遇到这类问题如果之前没有相关的知识储备,比较完善的流程是:

    1. 先明确是什么问题,想要解决什么问题(这一步非常重要,很多时候新同学是被即将使用到的技术唬住了,实际上要解决的问题并不是多难)
    1. 给出解决方法\帮忙解决问题\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. 组建团队

最好可以自己出面试题。

3. 影响团队因素