读书笔记-《程序员成长课》

前言

花了一周多的时间阅读完了《程序员成长课》,以下是我们在阅读《程序员成长课》记录下来的笔记,有时候发现一个人学习比较枯燥,但幸运的是,我有一帮朋友和我一起学习,一起成长。

最后欢迎大家加入知识星球“大前端交流”,我在星球内开展了读书打卡、健身打卡活动,加入我们一起见证属于我们的成长之旅。

如何选择技术方向

技术成长三阶段模型

我们在一个专业领域内的成长,基本上都会经历三个阶段:

  • 专项能力的提升
  • 技能体系的构建
  • 融合创新

1、初级阶段:专项能力的提升

必须先具备某些基础能力,比如从事软件开发工作,要学会某种语言、某个IDE、某种技术框架。

让自己能够迅速搞定一些别人安排给你的事情,体现出你的价值。

2、中级阶段:技能体系的构建

拥有一组技能,围绕某个方向构建了自己的知识图谱,能够用自己的方式来解决问题。

3、融合创新

具有丰富的实践经验,具备了T型知识结构,形成了自己的思维框架和解决问题的框架,能够融合不同领域的知识,组合各种资源,创造性地解决各种问题。

❝❝

进入这个阶段非常重要的一种标志就是,你遇到问题,不再从下而上去思考(即从技术实现细节来考虑问题好不好实现、拿技术去裁剪问题或重定义问题),而是从实现细节跳脱出来,站到更高的层面,自顶向下去思考、去分析,先运用框架、逻辑去分析真正的问题是什么、问题的目的、问题的现状、如何去解决。搞明白这些之后,你才会沉降到技术层面去考虑实现的选择,而且实现时,你也不会拘泥于某种技术,而是什么技术合适就用什么技术。

❞❞

选择技术方向都要考虑哪些因素

1、就业机会

考虑的是哪种技术更容易就业,需要结合特定地区、特定行业来看,因为你找工作是面向地区和行业的。

这中间又有两种典型的策略,热门的和冷门的。

热门和冷门是相对的,根据开发者多少、市场需求而定。

2、自我感觉的难易程度

难易程度与人相关,所以最好的方法,就是把你感兴趣的语言,都学学试试,可能每种语言花上一到两个星期,你就可以做出判断。

3、兴趣

很多人做开发可能是出于某种兴趣。

4、薪水高低

大多数人选择技术的出发点是工作和未来发展前景,而选择工作时一定会把薪水作为参考因素,而且是非常重要的因素。所以我们在选择技术时,也可以考虑某种技术对应职位的薪水高低。

5、技术在将来的发展前景

选择技术时存在两种考虑:一种是选择稳定的、经典的技术,一种是卡位将来的市场缺口,选择将来可能需要用到的技术。

回顾历史,经典技术都是从新技术发展来的,展望未来,一定也有一些现在的新技术会发展成将来的经典技术。如果你能抓住它,就可以享受它带来的技术红利。

要抓住可能成为经典技术或热门技术的新技术,就要应用卡位策略。

卡位策略是指看到某种技术会在未来具有稀缺性,非常有价值,选择提前介入,让自己在未来具备竞争优势。

运用卡位策略时,有两种方式。

一种卡位方式是根据市场需求和未来预期。

还有一种卡位方式,是根据技术本身的发展程度。

6、你接触的人的推荐

我们是否选择某种技术,和我们看到的可能性有非常大的关系。只有看到它,它才会进入你的选择范围,如果你看不到它,它再牛,对你也没意义。

7、相近性

当我们已经掌握了一些技术,要学习新技术时,就可以根据一种技术是否和自己已经掌握的技术比较接近来选择。相近的技术,学起来会更容易上手。

8、互补性

和相近性类似,互补性也常用在拓展我们技术能力的情景下。它指的是,有一些技术可以和你已经掌握的技术互相补充,组合在一起,形成更完整、更系统的技术图谱,给你带来更大的竞争力。

9、团队的技术图谱

我们所在开发团队的技术图谱,也可能会影响我们的选择。

入行时怎么选择技术方向

为了明确自己的求职目标,可以问问自己下面的问题:

  • 在哪个城市工作
  • 想在哪些行业、领域发展
  • 想去什么样的公司
  • 想做什么产品

当你能够勾画出工作目标的大概轮廓时,对应的技术方向就会浮现出来。

当你可能在想做开发时并没有明确的职业目标,此时你考虑的是这些因素:

  • 就业机会
  • 薪水高低
  • 难易程度
  • 他人推荐
  • 兴趣

构建技能树时选择技术方向

当我们过了专项能力提升的初级阶段之后,就应该开始构建自己的技能体系了。在为搭建技能树而选择技术时,通常考虑下面两个原则:

  • 相近原则
  • 互补原则

1、相近原则

相近原则指和你当前所用语言、技术框架比较接近的其他语言和框架。

2、互补原则

互补原则指那些组合在一起完成特定任务的技术。

技术转型时的方向选择

做了几年开发工作之后,你很可能会面临技术转型。通常有两种情况:

  • 有新技术、新市场出现,你想试试
  • 你掌握的技术的应用场景萎缩,前景黯淡,你想跳出来

有经验的开发者做技术转型时,通常有三种情况。

  1. 在原有技术的基础上做关联转型
  2. 抛弃原来所用技术
  3. 卡位,学习将来稀缺的新技术是非常不错的选择

方案选型

当你构建了自己的知识图谱、能够胜任比较复杂的工作后,在团队中就会越来越重要,就有机会参与到新项目、新产品、新服务的方案选型中来。

做方案选型时,目标是得出现实可行、成本可接受的方案,需要综合考虑各种因素。

1、某种技术适合解决某类问题

很多开发者容易犯“拿着一把锤子看什么都是钉子”的错误,用自己熟练的语言、技术来解决一切问题。

我们在为新产品、新服务、新项目选择技术方案时,一定要跳出自己已经掌握的技术,首先站在问题域去考虑,想想这个问题到底是什么、哪种技术更适合问题场景,这样才能选择好方向,后期开发、维护才会更顺利。

2、新技术的成熟度

做技术方案选型时,一定要考虑这种技术有没有顶级公司支持、有没有知名产品。

3、生态

4、团队的技术图谱

我们做方案选型时,也要考虑团队已有的技术积累。

5、技术引入的成本

引入一种新技术的成本,包括:

  • 学习成本
  • 招聘成本
  • 时间成本
  • 机会成本

如何在技术上持续精进

开发者的迷茫分两个层面:

  • 方向上的迷茫,即自己到底是否做开发,是否要继续在开发的路上走下去。
  • 执行层的迷惑,即自己继续做开发,该怎么找目标,学点什么,学到什么程度,如何能持续精进。

做开发还是转管理

有三种方法可以帮助你进行判断

  • 工作的三种维度
  • 成就感来源
  • 未来的样子

1、工作的三种维度

根据交互对象不同,工作可分为三类:

  • 数据和信息处理
  • 人际交互
  • 事务型操作

假如你发现自己更愿意围绕着人际交互来做事情,希望自己的工作中大部分时间都在和人打交道,那么你可能更适合做管理、销售、市场、客服、咨询等方面的工作。

假如你发现自己更愿意做操作性的工作,比如修理电脑、组装电脑、搭建局域网、修理汽车等,那么软件开发工作可能不太适合你,运维或者网管也许和你更匹配。

假如你觉得信息很迷人,很享受与信息和数据之间这种确定性、一致性、可预期性较高的互动方式,也很享受通过组织、修改、整合、创造信息来解决问题这种工作方式,那么你现在正在做的开发工作,基本上和你的偏好是吻合的,因为开发者偏重于和数据、信息打交道,以信息和数据为输入,也以信息和数据为输出。

2、成就感来源

可以遵循下面的步骤寻找成就感来源:

  • 回顾你做过的事情,找出那些让你情感反应强烈的,记录下来。
  • 分析你的情绪底色,是快乐、高兴、振奋、愉悦、充实等积极情绪,还是沮丧、灰心、挫败、失落、空虚、失望等消极情绪。
  • 挑选出带给你强烈积极感受的事件,它们就是你的成就感事件。
  • 分析成就感事件,看看它们用到了什么知识、技能、软技能,看看在这些事件中,你印象深刻的交互对象是什么(数据、人、事务)。

3、未来的样子

问自己两个问题:

  • 一直做开发,我会变成什么样子?
  • 如果转向管理,我会变成什么样子?

找到激励你前进的动力

从倦怠期走出来,有两个方向:

  • 为你的工作重新赋予意义
  • 为你的工作引入变化

做软件讲究迭代,讲究热更新,我们个人也是一样的,要不断自我探索和更新,找到技术在不同阶段对自己的不同意义,只有找到开发工作对个人的意义所在,你才可能有动力去精进。

学习型心态

所谓学习型心态,指的是:有主动学习的意识,时刻以学习的眼光和心态来看待发生在自己身上的事情。

技术精进之道

1、对标管理法

对标管理法模型中有三个要素:

  • 现状
  • 目标
  • 执行计划

要想日有寸进,必须要在日常的开发工作中找到努力的目标。

下图是实践对标管理法指导个人成长的基本过程。

读书笔记-《程序员成长课》_第1张图片

在针对个人运用对标管理法时,可以从4个方面来寻找标杆:

  • 优秀的人
  • 一般性规律
  • 技术本身的知识层次
  • 项目指标

2、从优秀者身上找目标

3、一般性规律

所谓一般性规律,指的是那些通用的、可以指导我们在什么时候做什么事情的规律。

对于开发者来讲,要关注专业能力成长的一般性规律,即技术成长三阶段。

在技术领域内的成长,基本上都会经历三个阶段:

  • 第1阶段,专项能力的提升,这是初级阶段,你为了做事情,必须先具备某些基础能力。
  • 第2阶段,技能体系的构建,这是中级阶段,你拥有了一组技能,围绕某个方向构建了自己的知识图谱,能够用自己的方式来解决问题。
  • 第3阶段,融合创新,这是高手阶段,你具有了丰富的实践经验,具备了T型知识结构,形成了自己的思维框架和解决问题的框架,能够融合不同领域的知识,组合各种资源,创造性地解决各种问题。此时你跳出了具体的技术束缚,站在了更高的层面,用底层认知和思维来指导你的工作。

4、技术本身的知识层次

一般来讲,学习一门技术时,有三个阶段:

  • 第1阶段,基础开发,了解API,基于API开发应用。
  • 第2阶段,熟悉内核原理,主要是了解框架的设计原理,阅读源码,洞悉内在机理。
  • 第3阶段,优化框架,主要是针对框架已有功能的不足进行完善、优化,或者使用框架提供的机制扩展框架功能,或者对框架进行定制,让它适合特定情境。

5、项目指标

开发者的工作往往是由一个又一个项目串起来的,每个项目都会有预期结果,都会界定怎么样才算是完成,然后会有一系列的指标用于衡量项目做得怎么样,比如Bug率、延期时间、并发用户数、持续运行时间、单元测试覆盖率、安全性等,

6、拿来即用的自我提升方法

下面给出一些经过验证切实有效的提升策略:

  • 尝试用同一技术的不同模块或API来实现,能让你更了解所用技术。
  • 看看你正在用的技术,想想你处在三个层次的哪一层,找到继续提升的空间,去学习、实践。持续这么做,能让你从泛泛的了解、基础的使用,进阶到熟悉、精通。
  • 了解和当前所用技术相关的技术,可以拓展你的知识图谱。
  • 尝试用不同的技术来实现,能加深对问题的理解,也能淬炼新的技术。
  • 看看别人用的技术点、技术栈,尝试了解,能拓宽你的视野。
  • 看看同一项目内他人的设计和代码,有助于理解整个项目。
  • 尝试新的设计,能加深对问题的理解,更能淬炼自己的架构和设计能力。
  • 看看整个项目的需求、设计文档。不要局限于自己负责的模块,这样可以提升全局观和系统观。
  • 迭代式重构老代码,迭代式重构可以解决时间不够用的问题。
  • 阅读优秀源码,看到好的,思考好在哪里,琢磨自己怎么做到的,这样你就会日有寸进,终至千里。
  • 参与开源项目。
  • 写作技术博客,有利于写作、逻辑思考、讲授、设计等能力的提升,也有利于系统化你的知识。
  • 讲给别人听,锻炼讲授、演讲、沟通、归纳总结、逻辑思考等能力,对知识的内化与系统也很有帮助。
  • 与优秀的人和团队在一起。

目标的设定与执行

当我们运用个人对标管理法从人、规律、技术、项目4个方面找到目标后,还要仔细地考虑两个问题:

  • 这个目标适合自己吗?
  • 如何完成这个目标?

1、适合性评估

先来看看如何判断某个目标是不是适合自己。有两个方面:

  • 这个目标和自己的职业规划是不是一致?
  • 这个目标和自己当下的工作是不是可以关联起来?
❝❝

如果只能在一个技术方向上做到出类拔萃,你的选择是什么?当你确定了这个方向,就拥有了主线剧情,可以运用个人对标管理法来确保主线剧情充足发展,同时也可以在必要的时候引入支线剧情,辅助主线剧情的发展。

❞❞

2、如何完成目标

当你选定了与你相关的某个目标后,如何完成呢?有两个关键点:

  • 目标必须是有效的
  • 找到下一步行动

精进的4个习惯

1、对标管理

2、三个问题

  • 我昨天完成了什么
  • 我遇到了哪些问题
  • 我今天做了什么

3、刻意练习

一旦我们养成刻意练习的习惯,就可能在很多领域内称为高手。

❝❝

推荐《刻意练习》一书

❞❞

4、复盘

复盘分两种:

  • 事件触发型复盘:比如项目抵达里程碑节点。
  • 周期性复盘:比如周、月度、年度、每五年。

通过复盘我们可以知道,事情结果比预期好还是坏,在执行过程中,有哪些环节做得好,哪些环节做得差,好的总结经验,差的反思原因,这样我们就可以获得成长。

❝❝

推荐《复盘:对过去的事情做思维演练》和成甲的《好好学习:个人知识管理精进指南》

❞❞

习惯养成指南

1、找到内在驱动力

要想让一个习惯真正在自己身上落实,这个习惯必须是由你发自内心的渴望驱动的,只有从你自身出发,由衷地想要去做,你才可能养成这个习惯。

2、降低改变的难度

很多时候我们无法养成一个习惯,源自于开始时给自己设置的难度太大。

3、让改变可视化

即便你找到了内在动力,想长期坚持做一件事时,还是会有很大的困难。要走出这种状况,提高成功率,一个切实可行的方法就是:让改变可见。

这样的感觉会激励你继续前进。

4、奖励

当你完成一件事情、坚持了一星期以后,就可以给自己一个奖励。这样你的坚持就会更好玩儿,更有趣,更值得期待。

5、允许例外

在养成一个习惯的过程中,一定要允许自己有例外。偶尔有一两次例外没什么关系,修复一下,继续执行,只有这些低频的例外不影响整体的效果,就不用纠结。

培养技术层面的核心竞争力

人的能力分为三类:资源、应用流程、价值观。

所谓资源,包括知识、技能、时间、金钱、人脉、天赋等。

资源往往是显性的、外在的,非常容易被自己和别人感知。

应用流程指的是解决问题的方法、思维的框架、分配资源的方式、自我管理的模式等。

应用流程是内在的,容易被人忽略,但它却是解决问题的真正能力,当你拥有应用流程能力之后,才能很好地利用资源来解决问题,创建价值。

一个人的价值观,是其最根本的能力。价值观决定了你在哪个方向做、以什么原则去做。没有价值观,你就会像浮萍一样,东飘西荡,很难做出有长远意义的选择,就很难形成有效的应用流程,也很难积累能被社会感知的资源。

❝❝

决定程序员是否具有优势,是应用流程方面的能力,即逻辑能力、思维能力、想象力、架构设计、解决问题的框架、快速学习、自我管理、创新与创造等。

❞❞

公司内的职业规划

  • 自己的下一个台阶在哪里?技术、架构、职位
  • 怎样做才能站上下一个台阶?精进技术、文档、设计、组织...

很多公司都对各个职级有描述,比如阿里的工程师,职级从P3~P10每一级的要求都有,可以查到。

你可以去研究这一级别的岗位定义和职能描述,看看它需要什么知识、技能、经验,有针对性地去准备。

成为技术管理者

从开发者到管理者,并不是简单直接的职位晋升,而是一种转型,这种晋升,发生了职能转换。开发者更多的是做事,亲自解决具体问题,而管理者,更多的是领导团队做事,通过他人完成工作,以团队的成绩来界定自己的工作结果。

理解管理者

管理者通过他人完成工作。这是管理者的定义。

管理者有两大任务:

  • 完成工作目标
  • 培养下属

优秀管理者应当做到这几点:

  • 下属可以各尽所能,都能得到成长,个人目标可以在实现团队目标的过程中得以实现。
  • 下属信任你,愿意跟着你干。
  • 实现团队目标。
  • 上司信赖你,愿意把团队交给你管,愿意把复杂的事情交给你的团队去做。
❝❝

《代码之道》中说:“成为一名优秀的管理者,所有你要做的就是确保你的人能够工作,并且把他们当人(而不是资源)去对待”。

❞❞

走向技术管理的4种方式

  • 技而优则管
  • 从打杂到管理
  • 从大公司跳入小公司
  • 获取PMP证书,切换到有需要的环境

1、技而优则管

“技而优则管”一般分为三步:

如果你的技术能力很强,在某些技术方向上有深厚的积累,能够解决复杂的问题,在项目中做出了成绩,那么你往往会被领导注意到,会让你带一些新人或者不如你资深的同事。这是走向技术管理的发端,第一步。

你带人带得不错,小伙伴们跟着你能够快速成长,你就可能被安排带项目,带着你的小伙伴一起做项目,此时你因为技术能力强,又有带人的经验,一些项目管理、人员管理的事情就会由你来完成。这是走向技术管理的第二步。

当你带着一个小团队,完成了项目,并且结果还不错,符合领导的预期时,你就在领导那里留下了“某某可以带团队做管理”的印象。如果你持续带人、带项目,就会不断加强领导心中的这种印象。

最后,若有做管理的机会,你就会顺理成章成为技术经理或研发经理。

2、从打杂到管理

真正决定你是否能做好管理的,并不是技术是否出色,而是你是否能把打杂打好,即:

  • 能不能准确理解需求并传递给程序员
  • 能不能了解每个人擅长什么、想要什么
  • 能不能合理地安排任务,让每个人既能干擅长的,又能遇到一些挑战
  • 能不能协调各种资源,让程序员可以顺利开展工作
  • 能不能屏蔽高层、需求、产品、市场、售后等相关干系人的干扰,让程序员可以在一个时期专注地做一件事
  • 能不能做好项目计划并跟踪执行
  • 能不能做好团队或部门规划
  • 能不能给程序员创造成长的机会

上述事情的结果,并不取决于你的技术多厉害,而取决于你是否真心想为大家服务、为项目服务、为公司的目标服务。

3、从大公司跳入小公司

用你现在的大平台为你背书,跳到小公司做技术管理。

4、获取PMP证书

这条路有两点需要注意:

  • 考取PMP资格证书
  • 在实际开发工作中,把自己放在项目经理的角度上去看待项目,使用PMP的理论、方法、工具等来复盘所做项目的管理过程,提升项目管理能力

怎样为成为管理者做准备

一个人的能力其实分为两个层面:知识和技能。

所谓知识,就是你知道的、能引发你改变的信息。

所谓技能,就是你运用知识解决实际问题的能力。

要为技术管理者做准备,可以从知识和技能两方面着手。

首先,你要储备管理知识,这一点可以通过阅读来完成。其次,你要想办法实践你学到的知识,把各种管理知识内化为你的技能。

❝❝

推荐书籍如下:
《管理的实践》
《卓有成效的管理者》
《管理:任务,责任,实践》
《巨变时代的管理》
《创新与企业家精神》
《21世纪的管理挑战》
《人月神话》
《成为技术领导者》
《人件》
《项目管理知识体系指南(PMBOK指南)》
《软件工程》
《软件工程:实践者的研究方法》
《项目百态:深入理解软件项目行为模式》
《所谓情商高就是会说话》
《关键对话》
《内向者沟通圣经》
《带人的技术:不会带人你就自己做到死》
《别让猴子跳回背上》
《交办的技术:职场晋升第一课》
《目标管理实务手册》
《高效演讲》
《金字塔原理》
《演讲的力量》
《影响力》
《横向领导力》
《你的团队需要一个会讲故事的人:用故事思维解决问题》
《认同感:用故事包装事实的艺术》
《小强升职记》
《搞定》
《高效能人士的七个习惯》
《做事的常识:事情一来,马上就知道怎么做》

❞❞

当你储备了技术管理所需的知识之后,就要努力去发现工作中管理相关的机会,去应用你所学到的知识,把这些知识慢慢地变成你的技能。

要在工作中发现管理相关的机会,关键在于你要跳出工作内容和岗位职责的范围,放眼全局来思考。分三个方面,第一方面是产品或项目本身,多想想自己要做的软件到底要解决什么问题,给用户带来什么价值,为什么要做成这个样子,它是怎样被用户使用的;另一个方面是工程实践,思考整个项目,从立项、需求、开发、测试、交付、运维、项目生产工具,分析哪个环节做得不好,哪个环节改善之后效果可以被看见,主动去做这些事情,主动成为衔接不同环节、不同人员、不同部门的桥梁;第三方面,发现领导的目标是什么,他看重什么,他在为什么困惑,自己能不能帮到他,因为从某种意义上讲,你的工作,就是为了让领导的工作更顺利,你的工作目标,就是实现领导的目标。

站在项目管理角度看问题

站在项目管理角度看问题,琢磨现在的项目是怎么管理的,有哪些问题,怎么改善。给自己定一个目标,争取每天挑出一个问题来琢磨解决之道。

主动承担职责外的杂事儿

主动承担与组织、协调、沟通、管理相关的事情,比如组织会议、跟踪计划、分派任务、推动多干系人协作等。

设想你是技术管理角色

站在管理者的角度思考,向身边的管理者学习,复盘身边的管理者,看他们哪里做得好、怎么借鉴,哪里做得不好、怎么改进,设想如果自己是管理者会怎么做。

找一位职业楷模

在组织内找一个从事技术管理岗位的人作为自己的职业楷模。

寻找这样的职业楷模时,要考虑他实际的管理水平、团队的状态、他个人的行事风格是否与你的价值观相符。

技术管理新人面临的挑战

读书笔记-《程序员成长课》_第2张图片

角色转变

从技术岗位晋升而来的管理者,在他们刚开始做管理工作时,往往会顶着管理者的头衔做执行者的事情。

可能经常会拿自己的技术水平衡量团队的其他人,当一个技术领导因为担心下属会出错或不能按自己预期完成任务而收回这个任务自己做时,会让下属自己觉得自己无能,或是让下属觉得这个领导越俎代庖不干他该干的事,这就会产生严重的不良影响,不利于团队成员自己成长、自己解决问题。同时,这位技术领导也会因为过分关注技术细节而忽略其他的组织、领导工作,导致“只见树木,不见森林”,严重影响整个团队的效率和生产率。

技术管理者,除了管理自我之外,还要管理他人。团队需要你做规划、定目标、跟踪计划、协调资源,他人更需要你辅导而非代替他们做事情。

❝❝

谨记,一定要把更多的精力放在人、流程、项目上,你的工作是保障别人的工作能够顺利开展,是创建一个可以让大家各尽所能、实现团队目标和个人成长的环境。

❞❞

要顺利完成角色转变,下列事情可能有帮助:

  • 和你信任的同级别小伙伴多聊聊
  • 阅读,多读领导力和管理方面的书籍
  • 培训,根据你所处阶段,持续接受适合你状况的领导力和管理技能培训
  • 导师

被动管理

刚上任的技术管理者往往还习惯于做具体的事,把大部分精力放在设计、编码、解Bug等具体工作上,只留少部分时间和精力给管理,有问题了才需要管,没问题则不用管。

这种被问题驱动的管理方式,就是被动管理(消极管理)。

管理者应该以积极、主动的态度实施管理。

对一个项目、应该在前期花费更多的资源,明确任务的目标、资源、时间、反馈机制、沟通方式、风险、制定相应的计划和应急预案,同时在实施计划的过程中周期性地采集状态,根据项目状态动态调整计划,及早解决各种问题,确保所有项目参与者和干系人步调一致,最终顺利交付。

对一个人,应该在工作中经常性地和他沟通,无论是工作上还是生活上的事情,都要有所了解,要了解他为什么在这里工作,要帮助他制定成长计划,要让他感到自己是特别的、被重视的,让他愿意在这里工作。

弄不清职责

要想尽快搞明白你的职责,下面几个策略可以帮到你:

  • 与你信任的、有经验的其他同级经理多聊聊。
  • 和你的上司多沟通,
  • 和支持部门(人事、行政、财务等)多沟通。

委派任务

要想比较好地委派任务,需要做到以下几点:

  • 了解项目目标
  • 做好项目任务的分解
  • 了解团队成员的技术能力和个人意愿
  • 分配任务时,遵循两方面的原则,既要让某位成员做其擅长的,还要给他一些超出能力范围带些挑战的;既要给某位成员他愿意做的任务,也要给他一些他可能不是特别乐意做的任务。
  • 以交付为目标,以人人满荷为策略,统合不同成员的任务关系。

目标管理

作为技术管理者,首先要和自己的上级沟通团队的目标,然后再把团队目标拆解到每个人身上,形成个人目标。

资源管理

管理者的一个重要工作是保证下属能够开展工作,不要让任何资源阻碍开发者开始工作。

关于开发或者测试所用的资源,协调不来往往有客观原因——没钱、要审批、等待发货等等,但如果管理者不想办法尽快解决,不但会产生很多隐形浪费,还会大大打击开发者的积极性。

还有一种无形的资源——开发者的时间,也需要好好管理。这方面需要提醒几点:

  • 不要把开发者的时间排满,到70%就可以了。
  • 安排工作时不要把加班时间计算在内。
  • 要遵循串行工作的原则,不要给一个开发者同时安排多个任务。
  • 如果必须给一个开发者安排多个任务,也请做好时间规划。

压力管理

管理者要尽量避免用消极的行为应对压力,要努力积极地面对压力,勇于承担责任,一切以解决问题为目标。

可以从两个方面进行压力管理:

  • 换个角度看问题
  • 宣泄

冲突管理

作为管理者,冲突处理是必修课,只有恰当地处理冲突,才能维护关系健康,促进团队合作,塑造团队文化。当你再次面对冲突时,一定要先停下来想一想:

  • 冲突的原因是什么?
  • 自己准备用哪种方式处理冲突?
  • 还有更好的处理方式吗?

这样有助于你用恰当的方式解决冲突,避免给团队造成严重的不良影响。

绩效变差

从技术岗位晋升到管理岗位后,你往往是不能胜任工作的,在上任后到那个绩效评估周期内,你所得到的结果,大概率是比你做普通员工时差。

面对这样的时刻,你肯定会有情绪,这是自然反应,可以理解。但在情绪过后,你应该换个角度来看:其实技术领导岗位上,你是从0开始的,有一个爬坡曲线也是符合逻辑的。

担心失去技术竞争力

技术管理新人会陷入纠结中,一方面想提升整个团队的工作效率而不得不做很多的组织、激励、领导、协调等工作,另一方面,这些非技术方面的工作会占用他们大部分精力,导致无暇深研技术而产生焦虑感。

其实,此时更重要的是视野。你可能对技术细节了解得少了,但对技术方案选择、技术类别、技术的影响力等可能了解得更多,会形成更为广阔的视野,这足以弥补你在技术深度上的欠缺。而且,其实你之前达到的技术深度仍然存在,甚至会发酵,反过来滋养你的技术视野。

有效到反馈机制

有了反馈机制,就可以知道自己做得怎么样,哪些地方好、哪些地方坏,找到改进的方向。

在构建反馈机制时,可以从4个维度来考虑:

  • 自我评估。这里有两个方面,一是项目评估,二是关键目标分析。
  • 来自下属到反馈。
  • 来自同级到反馈。
  • 来自上级到反馈。

别人到议论

无论你做什么事情,都不可能符合所有人利益,总是有人会议论,为此而战战兢兢实无必要。

和下属进行一对一沟通

  • 在开始时阐明目的,为沟通定调
  • 分享事实经过和你的想法
  • 征询对方的观点,鼓励对方作出尝试

注意在谈话过程中要保持尊重,不要批判对方的人品,不要随便打断对方的说话,不要随便批判对方的话。

怕犯错

其实犯错也是一种成长,没有犯错就很难成长,把错误当作练习和机会,错误就可能变为财富。

要想少犯错,从犯错中成长,请记得以下几点:

  • 勇于承担责任。
  • 时刻牢记公司目标、团队目标、项目目标。
  • 因人而异进行管理。
  • 重视思想和认知到改变。
  • 建立反馈机制。
  • 善用清单。
  • 复盘。

时间管理

时间管理的重点就是:管理下属占用的时间。

管理下属占用的时间,重点是交办与授权。

激励他人

薪水是我们找工作的保障因素,是显性到,那些激励因素(有挑战性、获得认可、责任感、成就、个人成长)则是隐形到。

管理者如何创造隐形价值,可以从以下几个方面进行改善。

  • 了解员工为什么在这里工作
  • 让每个人都有参与感
  • 改善分配工作到方式

向上管理

向上管理指为了给公司、给上级及自己取得最好到结果而有意识地配合上级一起工作的过程。

提升领导力和管理能力

领导的职责就是创造这样一个环境,每个人都能在其中发挥出更多到能力。

跳槽8问

读书笔记-《程序员成长课》_第3张图片

要想越跳越好,有两个要点:

  • 明确职业目标或个人未来愿景,指导跳槽
  • 如果目标不确定,就要周期性(每次跳槽时)地回顾,慢慢发现自己的目标。

为什么要跳槽

跳槽可能会有很多原因。

读书笔记-《程序员成长课》_第4张图片

回顾以下工作中让你感到不能接受的事情,一一列下来,形成一个“不能接受”清单,对清单中的每一项问三个问题:

  • 我不能接受它是因为什么?
  • 我愿意因为它离职吗?
  • 采取哪些措施,可能会消除这一项?

把你不愿意因为它离职的、可以通过做点什么事情来消除的事情,都从不能接受清单上划掉。重复做这一步,直到清单只有三项,那就可能是你离职的直接原因。

你如果因为无法忍受某些事情而想离职,那么一定是这些事情触动了你内心的某个原则或你认为很重要的东西,你认为很重要的这个东西,就是你的需求,也就是你的职业价值观。我们需要把它找出来,这样就把离职这件事彻底想明白了。

什么时候跳槽好

跳槽的最好时机就是:你觉得真的该离开了,一天也不愿意再待下去了。

有四种方法判断你自己是否真的该离开了:

  • 消耗感
  • 周末探视法
  • 盖洛普的Q12
  • 需求供给分析法
消耗感

你留在这个地方,一直用已经熟悉的技能、方法被动地完成事情,不再有成长,你处在营养流失阶段,一点点被消耗。

周末探视法

在周日的晚上,想到周一要去工作,你的心情是:沮丧、拒绝、低落、痛苦、担忧,还是期待、高兴、兴奋、还是无所谓?

盖洛普的Q12

盖洛普的Q12可以用来测试你对当前工作环境的满意度。12个问题如下:

读书笔记-《程序员成长课》_第5张图片

需求供给分析法

你选择一种职业,往往是因为你看重什么,也就是你的行为价值观决定你的选择。

什么是好的跳槽和坏的跳槽

职业目标,简单地说,就是你要在什么领域、做什么事情、取得什么样的成就、成为一个什么样的人。

职业目标应当与你的人生目标和规划关联起来,这样你的工作才能帮助你实现人生规划。

按时间可以把职业目标分为短期(1~2年)、中期(3~5)、长期(5~10年)。想想3年后自己在做什么?每年审视、更新你的中期规划。

跳槽还是卧槽

跳槽的一个关键属性:不确定性。无论你权衡多少因素,都无法保证这次跳槽一定比上一次好。

所以跳槽时一定要优先考虑某个机会是否有助于实现自己的中长期目标,这样才能大概率地做出有价值的选择,避免越跳越糟。

持续性积累非常重要,不管是跳槽还是卧槽,我们都要以自己能否在某个方向建立积累为原则。符合你职业目标的跳槽,能持续为你在某个方法带来积累,能让你的职业生涯更上一个台阶,就是好的选择。

要不要追薪式跳槽

最理想的跳槽是:既符合职业发展方向,薪水又高。

我们看到一个Offer,不仅要关注薪水数字,更要关注:它能提供给我们什么发展空间和成长机会。

选大公司还是小公司

做选择的关键在于:你自己想要什么工作特质。

假如你很难确认自己想要什么,但又必须作出选择,考虑到“从大公司进入小公司容易,从小公司进入大公司比较难”这种现状,那就选择大公司,去享受它的各种好处。这样当你发现了自己的职业目标或者厌倦了大公司,需要离开时,这段经历也可以为你的履历增色。

去大城市还是小城市

城市大小对个人职业选择与发展有较大影响,可以从下面四点来看:

  • 城市与产业结构
  • 城市大小与公共资源
  • 城市与生活成本
  • 城市节奏与个人性格

自己的选择是明智的吗

我们会在多个机会前纠结,难以选择,往往是因为想要这个选择能有一个确定的、好的、100%有保障的结果。然而,遗憾的是,所有的选择,都可能有坏处。

我们能做的就是:接纳不确定性,尽量明智地去选择。

  • 选择之前,可以判断这个机会是否符合你的职业目标。
  • 选择之后,你可以观察自己的感受。

简历优化指南

简历优化模型

HR通常会快速扫描以下这些信息:

  • 目标职位
  • 从研发部分那里拿到的技术关键词
  • 学历、学校
  • 工作年限
  • 工作过的公司(名字、规模),有知名公司会加分

简历优化在于提高匹配性、突出亮点。

读书笔记-《程序员成长课》_第6张图片

围绕着这个核心,我们的简历优化可以分为下面几步:

1、明确你想要的工作特征
2、盘点你的价值和亮点
3、寻找机会
4、招聘信息分析
5、简历优化

明确你想要的工作特征

当我们更换工作时,心中都有期待。你对工作的期待,就是你希望这份工作具备什么特征。

只有你明确了对工作的期待,找到了你想要的工作必须具备的特征后,你才能有选择地、有效地寻找工作。

可以从两方面找出你想要的工作特征:

1、你想要什么样的工作
2、你对当前工作有什么不满

盘点你的价值和亮点

找到你的价值,对自己有个客观的认识,这对你撰写自己的简历非常有帮助,也是找到理想工作的关键所在。

个人的商业价值体现在5个方面:

读书笔记-《程序员成长课》_第7张图片

对开发者来讲,在简历中,通常会重点体现知识、技能、经历这3个方面。

在投递简历时,可以优先考虑人脉推荐的方式,它的成功率是海投简历的好几倍。

寻找机会

寻找机会可以分为四步:

1、分析可能的职位
2、确认哪些公司提供这些职位
3、了解公司和职位信息
4、确定自己感兴趣的公司和职位

招聘信息分析

要想让你的简历在3~5秒的时间内抓住目标公司筛选人员的眼睛,就必须要细致入微地研究招聘信息。

一份好的招聘信息应该包括:工作内容、工作收获、工作成就、工作伙伴、工作认可与奖励、任职要求。

可以从6个方面提取招聘信息中的关键字:

  • 学历
  • 工作年限
  • 知识
  • 技能
  • 项目经历
  • 软能力

分析目标职位招聘信息的过程,逻辑上分为两步:

1、拆解关键词
2、对照自己的价值筛选匹配点

简历优化

当你筛选出招聘信息中和你匹配的关键词后,就可以有针对性地优化你的简历了。

简历优化主要分为两部分:

1、技能评价栏
2、项目经历

「「技能评价栏的优化」」

优化技能评价栏时,要瞄准招聘信息中的关键词,列出匹配的三五点足矣。

「「项目经历的优化」」

在简历中梳理呈现你的项目经历时,请遵循下面4点:

  • 略去无关项目经历
  • 突出项目过程中用到的与你目标职位匹配的技能
  • 描述你做的事情
  • 描述取得的成绩(显化、量化)

检验简历优化效果

有3种方法:

1、设想自己是HR或研发部门的程序员,根据招聘需求来评估简历
2、请他人担任简历筛选人员,让他根据招聘信息来评估你的简历
3、选取一些公司的职位,优化简历,投递实验

如何提高简历投递成功率

  • 确立求职目标
  • 梳理知识、技能、经历并记录在案,形成基础简历
  • 筛选招聘信息,选择匹配自己目标的公司和职位
  • 针对每个招聘信息进行分析,提取关键词
  • 根据关键词,结合基础简历,优化技能描述和项目经验,生成一份有针对性的简历

如何在跳槽时获得想要的薪水

薪水不是谈判出来的,而是取决于双方的匹配度。

决定薪水的7大因素

薪水由下列因素决定:

  • 市场行情
  • 个人基于自我价值和市场行情的自我评估
  • 公司的薪酬结构
  • 公司基于需求和行情的评估(产生公司的预期薪水范围)
  • 个人价值与公司需求的匹配度
  • 公司需求的紧迫性
  • 公司需求的重要性

我们能直接控制哪些因素

能直接控制的只有个人自我评估和匹配度。

我们在跳槽时,就应该把精力花在这两方面。同时围绕这两点所做的工作,影响力还可能扩散,带动其他因素产生积极的变化。

匹配度这个因素的核心就是“知己知彼”。

“知己”这部分,在个人评估的过程中完成。

“知彼”这部分,主要是了解公司、产品、职位三方面的信息。

如何为薪水做准备

1、明确你想要的工作特征

2、盘点你的价值点

3、寻找与你价值点匹配的工作机会

4、了解市场行情

5、自我评估

自我评估时,以市场行情为基准,上下浮动20%~30%即可。

6、搜集目标职位的可能薪水范围

7、有针对性地优化简历

8、搜集常见的面试题、精心准备

薪资谈判的6个秘密

1、谁来拍板你发多少薪水

不是HR,虽然HR会负责和你谈薪水,但决定你的薪资的不是他们。

能决定给你发多少薪水的,是招人的部门领导或者他的领导。

2、谈钱伤感情,不谈才伤

3、薪水是可以谈的

很多公司给每个职位都有一个预期的薪水范围,最低多少,最高多少。

瞄准你和目标职位的匹配度精心准备,让面试管觉得你就是他们想要的那个人。

4、绝不要主动谈论薪水,除非他们问你

5、千万别先提数字

6、福利

什么时候可以降薪求职

当薪水之外的某个因素被你排在了清单的第一位时,你就可能会选择降薪求职。

薪水与幸福成正比吗

金钱在你贫穷时会带来比较直接的幸福感,而一旦你的生活离开了贫穷状态,金钱的增加可能会降低幸福感——因为你为获得更多的金钱而牺牲了更多东西,比如时间、兴趣爱好、陪伴家人和朋友。

转型

你真的不再喜欢开发工作了吗

从两个角度来体会:

  • 工作时的感受
  • 对时间的感觉

程序员转型的难处

常见的难点5个:

1、路径依赖导致的隐藏假设

长时间做某件事,就会对它产生依赖、认同。一旦我们习惯了某件事,就会被它植入相应的隐藏假设——你必须做这个,进而在我们必须选择时影响我们选择。

这种路径依赖和隐藏假设牢牢地束缚住我们,一方面是因为我们不愿意放弃经年累月辛苦积累起来的价值,另一方面是因为我们低估了自己的潜能,高估了在新领域取得成绩的难度。

关于在开发经历中的积攒起来的价值,在转型时并不会归零,你在这条路上积累的经验、阅历、做事流程与方法、逻辑思维与分析等,都是通用的,可以迁移到新的领域。

2、薪水落差

我们习惯性地认为职场只能一个台阶一个台阶往上走,习惯性地认为薪水只能一年比一年高,我们不能接受成长过程中的凹陷。

如果我们能回到“为什么工作”这个元问题,这样的不舍和纠结就会瞬间散去。

3、缺乏技能

人的能力分为专业能力和通用能力。

专业能力是指只能在某个专业领域发挥作用的能力。

通用能力指的是可在不同领域间迁移的能力,比如学习、演讲、组织、沟通、计划、管理等能力。

如果你一直将焦点放在专项能力的淬炼上,忽略沟通、协调、管理、讲授、分析等能力,久而久之,你就会发现自己在工作上很难再有大的突破。

❝❝

所有问题,最终都是人的问题。而要解决人和人之间的问题,你必须综合运用你的各种通用能力。

❞❞

4、他人的期待

别人会对你有期待,他们希望看得懂你,不希望你带给他们看不懂的意外。

别人会因为你做了软件开发工作,就把你等同于程序员这一身份,会一直强化你的优势——技术,而不看你别的方面。

❝❝

当你因为别人给你贴的标签而举步不前时,要想想:
你不是你的工作,你不是你的技术,你不是你的成功,你不是你的失败,你是一个立体的、多元化的人,你具有多重角色和身份。所有的角色都是你,但没有一个单一的角色代表全部的你。

❞❞

5、对不确定性的抗拒

转型充满了不确定性,你可能会选错方向,也可能最初的方向正确但做上一段时间发现不喜欢,还可能做了几年也没什么起色,所以开发者在不能确定转型100%会成功时,往往很难迈出第一步。

要想让工作和生活走出枯井无波的状态,就要引入一些变化,承受这些变化发生过程中伴生的不确定性。

转型的分类

我们把职能分为5类:管理、专业技术、自有职业、创业、投资。

与开发者相关的转型方向

转型时,在行业或职能上有一个维度相关,就会相对容易一些。

比如你只是不想做开发了,还想做和软件相关的事情,就可以考虑如下方向:

  • 项目经理
  • 产品经理
  • 需求分析人员
  • 文档开发人员
  • 测试人员
  • 讲师
  • 技术作家
  • 运维人员
  • 等等

如何确认哪个职业适合你

遵循下面5个步骤,就可以快速找到你想做的职业:

1、罗列你感兴趣的或印象深刻的人、事、物。

2、分析它们可以关联的职业,形成清单。

3、对清单中的职业做信息搜集分析,筛选出你感兴趣的职业。

4、选择某个职业,学习相关知识、技能。

5、业余时间做做看,或者找兼职、实习机会做做看。

转型的最佳实践

按照下列步骤推进是比较现实的:

1、找到转型方向

  • 与软件开发相关的方向
  • 通过人事物寻找新的职业目标

2、储备目标职业所需知识、技能

3、找机会实践,体验,看自己是否还愿意继续做,如果不愿意,回到1

4、在目标工作地区,寻找感兴趣的公司和职位。

5、针对每一个公司的每一个职位,准备一份简历,突出你与目标职位匹配的知识、技能、经历。

6、优先考虑通过人脉、内推等方式获取面试机会

重复上面的过程,迭代,优化,直到找到工作。

在转型时有两种选择:

  • 离职,全力转型
  • 一遍继续当前的工作,一边利用业余时间转型

读书笔记-《程序员成长课》_第8张图片

你可能感兴趣的:(程序员,android)