书名:程序员的成长课
副标题:无
作者:安晓辉
豆瓣评分:7.0
内容简介:知道和做到之间有一道鸿沟,要想跨越它,你不但要努力,还要讲究方法。《程序员的成长课》不仅传授知识,更教给读者如何做到极致。《程序员的成长课》中的理念、方法、工具可以指导读者更好地看清定位及发展方向,设计未来。如果读者不知道选择什么技术栈来学习,困惑于怎样在技术上持续精进,想转技术管理却没途径,想有章法地为跳槽加薪做准备,或者想转型却不知道自己除了技术还能干什么,建议认真读本书,它提供的方法和工具可以帮助读者很快找到答案。《程序员的成长课》适用的读者:所有程序员,IT相关专业的学生、教师、培训机构学员等。
读完日期:20201008

前言

要想赚到更多的钱,就要回到问题的原点,想想个人赚钱的本质是什么。个人赚钱的本质是——出售时间!对吗?从出售时间的角度来看:个人收入=每天可售时间数量×单位时间价格×单位时间出售次数在这个公式里,有三个要素,简单描述就是:·每天可出售的时间数量·单位时间价格·同一份时间的出售次数

第1章,介绍如何选择技术方向,我们结合技术成长三阶段模型,讨论在入行、构建技能树、技术转型、团队技术方案选型等常见场景中如何选择适合自己的技术,提高增值的效率。

第2章,讲述如何在技术上持续精进,着重讨论如何在工作中将持续提升自我能力和价值落在实处。为此我们引入了个人对标管理法,让你从优秀的同行者、一般性规律、技术自身的深浅层次和软件项目指标四个方面出发,找到随时随地可以引领自己前进的小目标、小台阶,再配合职业目标的指引,小步快跑,日有寸进。

第3章,探讨了开发者无法回避的发展方向——技术管理。从开发者到管理者,不是职位序列自然发展的结果,而是一种转型,且并不适合所有人,因此我们提供了一些工具和方法,让你自测一下,看看自己是否适合。

第4章,讨论了技术管理新人面临的18种常见挑战,比如角色适应、委派任务、激励他人、冲突管理、一对一谈话等。

第5章,介绍了开发者在跳槽时常见的8个问题。比如什么时候跳槽好、依据什么跳槽、选大公司还是小公司、去北上广深等一线城市还是找个小地方享受生活等。

第6章,讨论了如何针对匹配度来优化你的简历。最关键的要点有两个,一是一个岗位一份简历,二是分析目标职位的要求,针对要求呈现你的价值点。

第7章,如何在跳槽时获得想要的薪水,这恐怕是每个人都关心的话题

第8章,转型,也许有一天,我们会离开软件,想要去做别的事情。那么你还适合做什么?想做什么?如果你“拔剑四顾心茫然”,可以看看这里的人、事、物模型和发现职业方向的5步法。

第1章 如何选择技术方向

你成为技术负责人或者研发经理,需要决定团队的技术图谱,需要为团队承接的新项目选择技术方案,要考虑哪些因素呢?

作为个人,你会掌握怎么选择一个适合自己的技术方向,好的方向会让你越来越有竞争力,越来越值钱;作为团队的一员,你会知道在为某个项目选择技术时该如何综合考虑,在风险、成长、代价之间进行权衡。

1.1 技术成长三阶段模型

我们在一个专业领域内的成长,基本上都会经历三个阶段:·专项能力的提升·技能体系的构建·融合创新

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

专项能力提升阶段是初级阶段,你为了做事情,必须先具备某些基础能力,比如从事软件开发工作,你要学会某种语言、某个IDE、某种技术框架。

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

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

3.融合创新

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

我们根据成长阶段的划分,挑选了下面几个可能需要选择技术方向的时机,分开来讲在这些时机怎么选择技术方向。·入行·构建技能树·技术转型·方案选型

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

  1. 就业机会
    1. 两种典型的策略,热门的和冷门的。比如Java和JavaScript是典型的热门语言
  2. 自我感觉的难易程度
  3. 兴趣
  4. 薪水高低
    1. 大多数人选择技术的出发点是工作和未来发展前景,而选择工作时一定会把薪水作为参考因素,而且是非常重要的因素。
  5. 技术在将来的发展前景

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

  • 前者考虑的是林迪效应,即:对于不会自然消亡的事物,生命每增加一天,则可能意味着更长的预期寿命。
  • 要抓住可能成为经典技术或热门技术的新技术,就要应用卡位策略。

卡位策略是指看到某种技术会在未来具有稀缺性,非常有价值,选择提前介入,让自己在未来具备竞争优势。比如2007年Google发布了Android Beta操作系统的SDK,就有人预见到Android开发需求将会爆发,果断学习Android开发

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

  • 一种卡位方式是根据市场需求和未来预期
  • 还有一种卡位方式,是根据技术本身的发展程度来说看。采用高德纳曲线
  1. 你接触的人的推荐我们是否选择某种技术,和我们看到的可能性有非常大的关系。

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

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

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

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

在为搭建技能树而选择技术时,通常考虑下面两个原则:·相近原则·互补原则

1.5 技术转型时的方向选择

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

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

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

  1. 在原有技术的基础上做关联转型
  2. 抛弃原来所用技术
  3. 卡位这个时候卡位市场缺口,学习将来稀缺的新技术是非常不错的选择。而且在这个阶段,也必须积极主动去探索,最好每年给自己定一个学习某种新技术的目标,在工作之外完成它。

要实现这种过渡,一个现实的策略是:一边工作,一边学习。

1.6 方案选型

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

  1. 某种技术适合解决某类问题
  2. 新技术的成熟度有的开发者喜欢新技术,什么新用什么,把公司的项目、产品当作新技术的试验田,而不考虑试错的代价。
  3. 生态
  4. 团队的技术图谱我们做方案选型时,也要考虑团队已有的技术积累。
  5. 技术引入的成本引入一种新技术的成本,包括:·学习成本·招聘成本·时间成本·机会成本

时间成本主要是指引入一种技术,从学习到产出结果之间的时间周期。这个时间周期分为两部分:验证周期和产品化周期

机会成本有两层含义:

  • 你可能选错了技术,导致后期开发、维护成本高昂;
  • 很可能另一种技术更适合你的产品或服务,而你已经在不那么适合的技术上投入了太多,改弦更张的代价太高,导致你很难回头。

1.7 工具推荐

全球最大的IT咨询公司高德纳提出了一个“技术热门度曲线”模型,把一门技术的发展过程分为启动期、泡沫期、低谷期、爬升期和高原期5个阶段。https://stateofdev.com/这个网站根据高德纳的模型,做了各种开发技术的曲线。

招聘热度挖掘像智联、51job、猎聘、拉勾、100offer、大街网等招聘网站,都是很好的技术需求数据来源,你可以用某个关键字(比如“Java开发工程师”)来搜索,看相应的招聘需求是否旺盛。

薪酬报告以“互联网人才流动报告”“开发者薪酬报告”“互联网薪资调查”“程序员薪酬报告”“互联网薪酬报告”等为关键字在百度搜索,就可以搜到拉勾、智联等网站发布的互联网人才薪酬报告,可以根据这些内容了解某些岗位的薪资状况。

第2章 如何在技术上持续精进

一般来看,开发者的迷茫分两个层面:

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

先讲如何确认自己要继续做开发还是转管理,这部分会提供一些方法(比如工作的三种分类、成就感来源等),让大家能够自我觉知和判断;然后我们会沿着开发这条线继续前进,看看如何在技术上持续精进,这部分最重要的是对标管理法及其四种典型标杆;再接下来会讲怎样设定有效目标,找到下一步行动;最后,我们会介绍四个习惯,让精进成为你自身的一部分。

2.1 做开发还是转管理

做开发还是转管理?

  • 有三种方法可以帮助你进行判断:
    • 工作的三种维度;
    • 成就感来源;
    • 未来的样子。
  1. 工作的三种维度根据交互对象不同,工作可分为三类:·数据和信息处理;·人际互动;·事务型操作。
  2. 成就感来源
    1. 可以遵循下面的步骤寻找成就感来源:
      1. 回顾你做过的事情,找出那些让你情感反应强烈的,记录下来。
      2. 分析你的情绪底色,是快乐、高兴、振奋、愉悦、充实等积极情绪,还是沮丧、灰心、挫败、失落、空虚、失望等消极情绪。
      3. 挑选出带给你强烈积极感受的事件,它们就是你的成就感事件。
      4. 分析成就感事件,看看它们用到了什么知识、技能、软能力,看看在这些事件中,你印象深刻的交互对象是什么(数据、人、事务)。
  3. 未来的样子问自己两个问题:
    1. 一直做开发,我会变成什么样子?
    2. 如果转向管理,我会变成什么样子?

2.2 找到激励你前进的动力

找到激励你前进的动力

2.3 学习型心态

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

2.4 技术精进之道

对标管理法在专业领域成长的一般模型如图所示。
image.png

模型中有三个要素:·现状·目标·执行计划

因此我们引入原本用于企业的对标管理法,帮助自己在日常工作中找到贴合自己的目标。一旦我们找到目标,对比现状,就可以找到差距和前进方向,有了方向,就可以制定计划,稳步前进,获得提升。

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

image.png

以下解释来自百度百科:对标管理,由美国施乐公司于1979年首创,均将其视为现代西方发达国家企业管理活动中支持企业不断改进和获得竞争优势的最重要的管理方式之一,西方管理学界将对标管理与企业再造、战略联盟一起并称为20世纪90年代三大管理方法。

所谓“对标”就是对比标杆找差距。

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

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

【拿来即用的自我提升方法】
下面给出一些经过验证切实有效的提升策略,你可以拿来直接用。

  • 尝试用同一技术的不同模块或API来实现,能让你更了解所用技术。
  • 看看你正在用的技术,想想你处在三个层次的哪一层,找到继续提升的空间,去学习、实践。持续这么做,能让你从泛泛的了解、基础的使用,进阶到熟悉、精通。
  • 了解和当前所用技术相关的技术,可以拓展你的知识图谱。
  • 尝试用不同的技术来实现,能加深对问题的理解,也能淬炼新的技术。
  • 看看别人用的技术点、技术栈,尝试了解,能拓宽你的视野。
  • 看看同一项目内他人的设计和代码,有助于理解整个项目。
  • 尝试新的设计,能加深对问题的理解,更能锻炼自己的架构和设计能力。
  • 看看整个项目的需求、设计文档。不要局限于自己负责的模块,这样可以提升全局观和系统观。
  • 迭代式重构老代码,迭代式重构可以解决时间不够用的问题。
  • 阅读优秀源码,看到好的,思考好在哪里,琢磨自己怎么做到,这样你就会日有寸进,终至千里。
  • 参与开源项目,参与开源项目比阅读开源代码的要求高得多,你要能够理解已有的代码,找到你可以做贡献的地方(issue、feature 等),你的代码要符合该项目的规范,还会被项目owner或其他成员Review,这些都是非常大的挑战,能让你快速成长。
  • 写作技术博客,有利于写作、逻辑思考、讲授、设计等能力的提升,也有利于系统化你的知识。最好的学习方式是输出。
  • 讲给别人听,锻炼讲授、演讲、沟通、归纳总结、逻辑思考等能力,对知识的内化与系统化也很有帮助。当你能够把一个知识点讲到别人也能听明白时,你就是真明白了。
  • 与优秀的人和团队在一起,镜像神经元会让你自动学习优秀者的做事方式,所谓“见贤而思齐焉”。

2.5 目标的设定与执行

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

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

首先你要确保所选择的目标是有效的,符合SMART原则。

2.6 精进的4个习惯

习惯是很强大的力量,要把精进落实到日常习惯中。精进可以有这4个习惯,供参考:

  • 对标管理
  • 三个问题
  • 刻意练习
  • 复盘

【三个问题】

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

【刻意练习】
刻意练习推荐仔细阅读《刻意练习》一书。我们可以把刻意练习简单地理解为4个要素:目标、Focus、Feedback、Fix it。

刻意练习循环参考本链接。

【复盘】
所谓复盘,就是在头脑中对过去所做的事情重新“过”一遍。它通过对过去的思维和行为进行回顾、反思和探究,实现能力的提升。

复盘分两种:

  • 事件触发型复盘,比如项目抵达里程碑节点(或重大状态改变)。
  • 周期性复盘,比如周、月度、年度、每五年。

下面这个清单,可以作为我们复盘的框架:

  • 项目(事情)预期的目标是什么。
  • 现状如何。
  • 执行过程分析。
  • 决定是如何做出的,有没有其他可能。

2.7 习惯养成指南

只要你能做到以下5点,习惯培养就会容易很多:

  • 找到内在驱动力。
  • 降低改变的难度。
  • 让改变可视化。
  • 奖励。
  • 允许例外。

2.8 超越技术层面的核心竞争力

《你要如何衡量你的人生》一书中有提到“应用流程”能力。人的能力分为三类,如图所示。

image.png

所谓资源,包括知识、技能、时间、金钱、人脉、天赋等。
所谓应用流程,指的是解决问题的方法、思维的框架、分配资源的方式、自我管理的模式等。
所谓价值观指的是,你觉得什么是重要的,你要什么、不要什么、如何做决策

软件开发有两个层次:体力化的编码与思考层面的创造。我把程序员的工作过程绘制成图,可以简单明了地说明这一点,如图所示。

屏幕快照 2020-10-11 上午12.31.37.png

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

让自己的能力与价值随着年龄和阅历的增长而增长,就可以多多通过思考层面的创造来进行工作:谋定而后动,做得更少,但更关键,也更好。这才是更高效、更经济、更有价值的工作方式。

2.9 公司内的职业规划

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

job model很多公司都对各个职级有描述,比如阿里的工程师,职级从P3P10,管理人员,职级从M1M5每一级的要求都有,可以查到。

比如你是P5(高级工程师),那么你的下一个台阶就是P6(资深工程师,相当于M1)。去研究这一级别的岗位定义和职能描述,看看它需要什么知识、技能、经验,有针对性地去准备。

第3章 成为技术管理者

3.1 真的要做管理吗

每个人的成就感来源都不一样,假如你像我一样,最关注的点在于自己动手解决具体的技术问题,那么开发工作就更适合你;假如“领导和管理别人、通过别人完成工作、看到别人成长”让你更有成就感,那么管理工作适合你。

老陆对技术管理工作有清晰的认识,从事技术管理工作,能够带领团队完成更大的目标,做出更好的产品,它需要你慢慢放弃对技术执行层面成就感的追求,转而把自己当作催化剂,来激发别人的潜能,让团队发挥最大的效力。

3.2 5大职能定位

5大职能定位常见的5大职能定位:

  • 专业技术者
  • 自由职业者
  • 管理者
  • 创业者
  • 投资者
  1. 专业技术者专业技术者通过将自己嵌入组织中,运用自己的专业技能解决问题,其价值通过组织的产品或服务体现。他们需要接受组织的规章制度约束,但是能够获得稳定的工作环境和保障。

    1. 不确定性会让他们感到不快乐或者恐惧,稳定性、确定性和一致性才能让他们安心。
    2. 大部分开发者都是这类专业技术者,希望在某个组织内工作,拥有好的薪酬、福利,获得好的职业发展。
  2. 自由职业者自由职业者喜欢为自己做事情,希望自我支配,不想受组织约束,渴望自由和独立性。

    1. 所以自由职业者会脱离组织,自己当自己的老板。他们直接面对客户,向客户提供自己的产品和服务,自己决定以什么方式赚钱、赚多少钱,自己决定何时工作、何时休息。
    2. 但是自由职业者的收入是否稳定,依赖于自己对客户的开发与维系,很可能充满波动性,这个月分文皆无,下个月盆满钵满,这都是常有的事。
    3. 自由职业最大的优点是自由、做自己想做的事、按自己想要的方式做事。但反过来看,为了能够赚到足够的钱,他们也需要看客户的脸色来行事,并不享有绝对的自由。
  3. 管理者和专业技术者一样,管理者也是组织的雇员。不同的是,专业技术者在执行层面做事,亲力亲为,专注于如何做好执行层面的任务,而管理者通过他人完成工作,把组织目标拆解成执行层面的任务,委派给专业技术者等执行人员,通过组织、管理、计划、激励、反馈等管理策略,领导他人完成任务,实现组织目标。

    1. 我会给自己一些不在关键路径上的开发任务,会做一些新技术探索,会做些架构设计的事情,这样可以保持对技术的敏感,能够始终了解一线开发者的工作和想法,可以更好地帮助我完成管理工作。
  4. 创业者创业者特别想要拥有自己的产品或服务,特别想建立自己的企业,特别想通过自己的产品、服务、企业实现自己的价值,建立自己的影响力,获得成就。

    1. 创业者必须具备远见、定见、勇气和韧性,在成为企业家的路上,他们还需要不断锤炼自己的领导艺术和商业技能。
  5. 投资者投资者自己不拥有企业,他们通过投资别人的企业来获取收益。他们相信资本的力量,让钱为他们工作。

    1. 很多创业者成功后,会转身成为投资者,兼具企业家和投资者双重身份。比如360的周鸿祎,新东方的俞敏洪,当当网的李国庆。

开发者更多的是做事,亲自解决具体问题,而管理者,更多的是领导团队做事,通过他人完成工作,以团队的成绩来界定自己的工作结果。

3.3 理解管理角色

让我们再来理解一下管理角色。管理者通过他人完成工作。这是管理者的定义。

管理者有两大任务:

  • 完成工作目标
  • 培养下属
  1. 管理者没那么轻松很多开发者羡慕管理者轻松、钱多、职位高,因而想做管理者。但实际上,一个管理者,要想把工作做好,并没有那么轻松,甚至非常困难。
    1. 不是资源不足,而是人手不够《代码之道》中说:“成为一名优秀的管理者,所有你要做的就是确保你的人能够工作,并且把他们当人(而不是资源)去对待。”

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

  1. 常见的技术管理岗位常见的技术管理者类型如下:
    1. 技术主管(经理)
    2. 项目经理
    3. 研发部门经理
    4. 研发总监
    5. 研发副总裁
    6. CTO

大公司,技术主管、项目经理往往是分开的,一个偏重技术层面的管理,一个偏重项目本身的管理。

1)技术管理职责·技术方案评估与选择·关键技术决策·工作量评估·任务分解·委派任务·代码规范管理·代码审核·技术风险识别与控制·团队技术能力管理·关键代码实现·技术督导·技术培训·售前或售后技术支持

2)项目管理职责·项目中的人员管理与调配·项目计划制定·研发任务管理·项目进度管理·协调沟通·教练指导·复盘总结·组织间接口协作(测试、产品、需求、市场、销售、售前、售后、客户)

3)人事管理职责·招聘、面试·解聘·人员调配(包括调度、任免、角色安排)·资源协调·绩效考评·职级评定·薪水调整·管理制度评估·人员预算·财务预算

【技术管理需要什么能力】

技术管理,着眼点还是在“管理”二字,因此除技术方面的积累和见识外,更重要的,还是要习得管理者所需的各项能力:·共情(同理心)·委派任务·沟通·反馈·激励·目标统合·向上管理·时间管理·绩效评估·知人善用·规划·计划·组织·协调·管理·选择·责任·辅导·讲授·演讲·复盘·承压·勇于挑战

共情领导者不能把人当作完成任务的机器,一定要尊重下属,把下属作为活生生的、独特的个体来看待。

所谓共情,是指一种能进入到对方内心世界并体验对方内心感受的能力,然后将对对方感受的理解用自己的言语表达出来,使对方感受到被理解、被接纳。共情是从对方的角度,而不是从自身的参照体系出发去理解对方的能力。

职场上很少存在非黑即白的情景,也很少有人能只凭逻辑正确和就事论事就把工作做好,相反,每个人都是情绪化的,往往只有情感才能让一个人自发自愿做事情。而要撬动情感的力量,共情,就是一种必需的基础技能,有它的加持,工作才能越做越顺。

明确职责边界,交给合适的人假如你现在是技术经理或项目经理:

  • 你能明确区分出来哪些事情是你必须做的、哪些事情是其他团队成员必须做的吗?
  • 你能顺畅地把其他人必须做的事情委派给他们去做吗?

分配任务时,遵循两方面的原则:

  • 既要让某位成员做其擅长的,还要给他一些超出能力范围的、带些挑战的;
  • 既要给某位成员他愿意做的任务,也要给他一些他可能不是特别乐意做的任务。

只有个人目标与团队目标一致时,个人才有最大的意愿去实现团队目标。所以,作为领导者一定要考虑:实现团队目标,对个人而言意味着什么。

所以,领导者的另外一个关键角色就是:目标解释者。他一方面要具备解释公司目标、团队目标的能力,能够将团队目标准确地描述出来,另一方面,他又要能共情,能理解每个团队成员的诉求。

及时地、有效地给予下属反馈是很多技术领导(尤其是刚从执行者转过来的技术领导)都比较欠缺的地方。

要做好反馈,可以从感谢、建议、评估这三个方面入手(参见《横向领导力》):

  • “感谢”是把你对他人努力工作的感激和赞许之情表达出来。这是一种情感上的表达,目的是满足对方情感上的需要。
  • “建议”(或“指导”)是指出你认为对方的哪些具体行为应该坚持,哪些应该改变。此时你的关注点是评价工作而不是评价人。
  • “评估”是根据一组明确或默认的标准以及其他人的表现对对方的表现做出评价。

辅导,教练式管理你晋升为管理者后,就拥有了职位附带的一些势力:

  • 报酬势力,比如决定下属调薪,奖金发放等。
  • 强制势力,比如能够对下属进行赏罚,能够决定下属的职位升迁。
  • 正当势力,比如具有指示下属、命令下属的正当权力。

《高绩效教练》一书详细讨论了教练技术,并提出了一个简单易行的GROW模型:

  • 目标设定(Goal),本次教练对话的目标,以及教练的短期目标和长期目标。
  • 现状分析(Reality),探索当前的情况。
  • 方案选择(Options),可供选择的策略或行动方案。
  • 该做什么(What),何时(When),谁做(Who),意愿(Will)。

你会发现,你突然多了很多事情,突然要应对很多不同层次的人,你没有自我支配的时间了。

假如你不能区分什么人重要、什么任务重要、什么事情紧急,来者不拒,那你就会自陷泥沼,无力挣扎,整天一团忙乱,但总是不出成果,甚至还会在关键时刻掉链子。

你付出了更多时间和精力,领导对你却不满意,下属对你充满抱怨,同级也指责你配合不力……

这个时候,选择的能力就变得尤其重要了。你要围绕着你的目标进行选择,识别关键要务,遵循要事优先的原则。

目标整合”上来,只有你明确了公司的目标、团队的目标、自己的目标,才能围绕着目标进行选择——那些有助于你实现关键目标的事情,就是你的关键要务。

所以,你要牢记目标,承担选择的后果,承受来自领导、同级、下属、客户等各方关系人施加给你的压力。

作为管理者,你做得好坏,不再是你一个人的事情。你的一个错误决定,就可能让整个团队的所有努力白费。而要领导团队完成目标,是高难度的任务,管理者必须在每一个项目(或者每一个里程碑)交付后回顾总结:

  • 这次项目的目标是什么?
  • 现状是什么?
  • 现状和目标之间有哪些差距?
  • 项目管理哪里做得好?是怎么做的?是否可在类似背景下应用这次的经验?
  • 项目管理哪里做得不好?为什么?有什么办法可以改进?
  • 团队里谁做得好?好在哪里?他做了什么关键事情导致了好的结果?
  • 团队里谁做得不好?哪里不好?是能力、方法、态度等哪方面有问题?改善哪方面可以让他更高效?
  • 自己在领导、管理方面,哪些做法取得了好的效果?是怎么做的?是否可在类似背景下应用这次经验?
  • 自己在领导、管理方面,哪些做法带来了不良影响(对团队成员、对事情推进、对最终结果、对自己成长)?是能力、方法、态度等哪方面的问题?有什么可以改善的?
  • 上司对项目结果满意吗?满意哪些方面?他为什么对这些方面满意?
  • 如果上司对结果不满意,是哪些方面让他不满意?他为什么对这些方面不满意?
  • 在和上司的沟通协作中,有哪些地方做错了?有哪些地方可以改进?有哪些地方做得好?能不能固化成经验?学习→实践→复盘→学习→实践→复盘……这是成长的循环,这里面尤为重要的是复盘,只有你带着审视的眼光去看待你做过的事情,一遍一遍深入回顾总结,这些事情才能升华出经验和教训,指导后续的学习和实践。

复盘是经历炼化的关键。很多研发团队,项目一个接一个,节奏快,时间紧,往往是做完一个扔一边,再做完一个再扔一边,丢掉了最佳的成长机会。这是极为可惜的,只做不想、只做不复盘,你成长的速度、团队成长的速度,都会极慢。

3.4 走向技术管理的4种方式

怎样才能从开发岗位走到管理岗位?通常来讲,有4种路线:·技而优则管。·从打杂到管理。·从大公司跳入小公司。·获取PMP证书,切换到有需要的环境。

参考技术领导者成长模型。

营销展示很重要。

这条路有两点需要注意:·考取PMP资格证书。·在实际开发工作中,把自己放在项目经理的角度上去看待项目,使用PMP的理论、方法、工具等来复盘所做项目的管理过程,提升项目管理能力。

3.5 怎样为成为管理者做准备

要成为有准备的人,关键就在于:你还没负责某事时,就做好了相关的方案你还不是某个角色时,就准备了它所需要的能力。

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

  • 首先,你要储备管理知识,这一点可以通过阅读来完成。
    • 学习管理知识,最便捷有效的方法是阅读。在阅读时,可以先学习纲要,再学习专项。
    • 书单参考
  • 其次,你要想办法实践你学到的知识,把各种管理知识内化为你的技能

要在工作中发现管理相关的机会,关键在于你要跳出工作内容和岗位职责的范围,放眼全局来思考。

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

在工作中,在还未成为管理者之前培养相关能力,有4种策略。

  1. 站在项目管理角度看问题
  2. 主动承担职责外的杂事儿
    1. 主动承担与组织、协调、沟通、管理相关的事情,比如组织会议、跟踪计划、分派任务、推动多干系人协作等。
    2. 比如团队开会时,你每次都可以主动做会议记录,事后发送给大家;
  3. 设想你是技术管理角色
  4. 找一位职业楷模
    1. 寻找这样的职业楷模时,要考虑他实际的管理水平、团队的状态、他个人的行事风格是否与你的价值观相符。他一定要是你想要成为的那种人。
    2. 一旦你找到榜样,就可以主动结识他,向他学习。可以有几种学习方式:
      1. 请他做你的导师,请他指点你、辅导你。
      2. 三不五时地找他聊聊天。
      3. 观察了解他的事情,复盘他的管理行为。

组织活动,比如春游、读书会、同学聚会、主题沙龙等,可以锻炼领导、管理、组织、协调、沟通等各种能力。

第4章 技术管理新人面临的挑战

本章会介绍技术管理新人经常遇到的18种挑战:
1)角色转变
2)被动管理
3)弄不清职责
4)委派任务
5)目标管理
6)资源管理
7)压力管理
8)冲突管理
9)绩效变差
10)担心失去技术竞争力
11)有效的反馈机制
12)别人的议论
13)和下属进行一对一沟通
14)怕犯错
15)时间管理(领导者时间被拆分为5份)
16)激励他人
17)向上管理
18)提升领导力和管理能力

4.1 挑战1:角色转变

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

  • 和你信任的同级别小伙伴多聊聊,看看他们每天的时间是怎么安排的,他们是怎么看待他们的工作的,
  • 阅读。多读领导力和管理方面的书籍,很多前人的经验都能在这里找到
  • 培训。有一个很奇怪的现象,很多开发者会希望参加某种技能培训
    • 根据你所处阶段,持续接受适合你状况的领导力和管理技能培训。
  • 导师。你需要一位更理解研发团队管理的人来做你的导师,在你遇到问题时可以向他请教,你还可以周期性地和他沟通,从他那里获得反馈和指导,这样你会以更大的加速度前进

4.2 挑战2:被动管理

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

这种被问题驱动的管理方式,就是被动管理(消极管理),和故障驱动式开发(开发工作被迫围着故障开展)类似。

就是被动管理。你在一开始并没有做计划,也没有风险评估和备案,开发过程中也没有定期跟踪任务状态,更没有根据袁大头的工作状态调整计划,只是到了交付这一天,验收时发现延期,于是被动地安排加班赶进度,这样你、袁大头、测试、产品等相关人员,都因此而陷入了被动,都不得不被“袁大头任务延期”这个问题牵着走。

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

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

4.3 挑战3:弄不清职责

然而没做过的人,看那些毫无生气的官方描述也是挺让人头疼的,看着都是汉字,每个字都认识,但看了以后就是不知道、不明白什么意思,和没看差不多。

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

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

4.4 挑战4:委派任务

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

  • 了解项目目标。
  • 做好项目任务分解。
  • 了解团队成员的技术能力和个人意愿。

分配任务时,遵循两方面的原则:

  • 既要让某位成员做其擅长的,还要给他一些超出能力范围带些挑战的;既要给某位成员他愿意做的任务,也要给他一些他可能不是特别乐意做的任务
  • 以交付为目标,以人人满荷为策略,统合不同成员的任务关系。

除了基本的原则,还有很多情感上、习惯上的因素需要考虑:

  • 和团队其他成员的关系,从同级变为上下级,不知道怎样对待才更自然,分派任务时担心引起异议。
  • 之前习惯了接受别人安排,没有练习过如何分配任务。
  • 担心他人做不好,不愿授权。
  • 担心项目整体进度,倾向于让每个人做最熟悉的事情,忽略别人的意愿。
  • 倾向于给能干的、愿意配合的人安排更多的任务。

4.5 挑战5:目标管理

管理者所必需的能力——目标统合——时提到了三种目标:公司目标、团队目标和个人目标。

作为技术管理者,首先要和自己的上级沟通团队的目标,尽量使其符合SMART原则

这算什么任务?不知道要做成什么样,违反了S(Specific)原则;尽快交付,没有具体时间,违反了T(Time-bound)原则。

4.6 挑战6:资源管理

实体资源的问题,我们总可以想到办法来解决,比如:·申请购买。·公司内部不同部门间协调借用。·借用私人设备。

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

  • 不要把开发者的时间排满,到70%就可以了。
  • 安排工作时不要把加班时间计算在内。
  • 要遵循串行工作的原则,不要给一个开发者同时安排多个任务。·如果必须给一个开发者安排多个任务,也请做好时间划分,这周做这个,下周做这那个,或者这三天做这个,那三天做那个,尽量不要这个小时做A,下一个小时做B,工作状态保存和情境切换非常耗时,每次切换,也会经历工作效率爬坡,导致整体工作效率低下。

4.7 挑战7:压力管理

心理学家Richard S. Lazarus(拉扎勒斯)提出:压力是由于事件和责任超出个人应对能力范围时所产生的焦虑状态(紧张状态)。

不过也有方法,你可以从两方面进行压力管理:

  • 换个角度看问题
  • 宣泄

用这种解释,阿金接下来的行为(C)就可能改变:对领导的生气表示理解,向领导道歉,然后召集开发人员开会,和大家一起研究项目数据,请大家分析延期的原因,讨论改进的策略,重新制定计划,给出新的发布日期,并取得大家的承诺,然后给领导承诺。

怎么避免这些下意识的不良反应呢?学会暂停。当领导批评你、同事指责你、下属埋怨你、产品经理说你的软件没有按需求实现、客户要求你……时,你都先暂停10秒钟再来反应,避免被打或者逃的本能控制。

电视剧《武林外传》中的郭芙蓉通过一句话——“世界如此美妙,我却如此暴躁,这样不好不好”——来控制自己的暴躁反应,这是一种仪式。仪式化可以帮助我们控制自己的情绪。

你也可以建立自己的仪式,比如默念三声“解决问题”,或者深呼吸三次,或者闭眼10秒钟。

宣泄应当以不伤害他人为原则。常见的宣泄方式有:

  • 倾诉。
  • 声音。
  • 哭。
  • 运动。散步、跑步、爬山,都成,找到适合你的运动方式吧。
  • 睡觉。

4.8 挑战8:冲突管理

托马斯-基尔曼冲突模型(2003年提出),是世界领先的冲突解决方法,它从坚持度和合作度两个方向出发,划分了5种常见的冲突处理方式:竞争、回避、退让、妥协和合作。

模型明细见https://www.yuque.com/woniu666/tools_and_notes/person_grow#YWa9y

屏幕快照 2020-10-11 上午7.43.41.png

  • 当事情又重要又紧急,必须快速做出决策时,管理者可以采用竞争策略,强制性地解决冲突。
  • 当事情重要但不紧急时,可以努力寻求以合作的方式解决冲突。
  • 回避策略可用于以下情况:
    • 冲突的事件微不足道,不重要也不紧急;
    • 问题根本没办法解决;
    • 解决问题的时机还不成熟,收集信息比立刻决策更重要;
    • 冲突双方都在非理性的情绪中;
  • 技术管理者应该意识到的一点:不是什么事情都有必须坚持的原则,不是什么时候都必须要赢过下属。
  • 妥协策略可用于下列情况:
    • 目标十分重要但过于坚持己见可能会造成更坏的后果;
    • 对方做出承诺不再出现类似的问题;
    • 时间十分紧迫必须尽快采取一个妥协方案,问题又不是原则性问题;
    • 问题很复杂,在要求期限内很难完美解决;
    • 事情紧急但不是很重要,或者属于非原则性问题。

当你再次面对冲突时,一定要先停下来想一想:

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

4.9 挑战9:绩效变差

我在最开始时,是在用开发者的思维做研发经理的工作,沿袭了做开发时的习惯,把主要精力放在了架构设计和核心模块代码实现上,只是在不得不做管理时才处理一下问题,结果整个部门其实是经常处于无序状态的。我真正应该做的是,把自己当成催化剂,激发部门员工的潜力和积极性,让团队的产出和质量获得提升。

我没有很好地完成从自我管理到管理他人的角色转变。

我也不具备管理技能,没有经过任何的训练和学习就想做好管理工作,这简直是痴人说梦呢。

我的糟糕经历可以说明一个问题:从技术岗位晋升到管理岗位后,你往往是不能胜任工作的,在上任后的那个绩效评估周期内,你所得到的结果,大概率是比你做普通员工时差的。

你应该换个角度来看:其实在技术领导岗位上,你是从0开始的,有一个爬坡曲线也是符合逻辑的。

4.10 挑战10:担心失去技术竞争力

其实,此时更重要的是视野。你可能对技术细节了解得少了,但对技术方案选择、技术类别、技术的影响力等可能了解得更多,会形成更为广阔的视野,这足以弥补你在技术深度上的欠缺。

要么你认识到自己更适合做什么,对自己的才干和能力边界有更为清晰的认知,而一旦有了这种认知,再做其他事就会得心顺手

你会更容易找到自己喜欢做的事情并带着热忱义无反顾地投入进去。

4.11 挑战11:有效的反馈机制

这里说的反馈机制**,指的是一组渠道和方法,能够定期对你的行为和你所做的事情进行评估,给你提供评价和建议。**

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

  • 1)自我评估。
    • 一是项目评估,在开始项目时,会界定范围、目标、测量指标、交付时间,当项目结束时,就可以收集项目数据,看看和既定的目标之间有何差距,然后分析差距是怎样造成的,找到原因(可以采用鱼骨图),制定改进策略
    • 二是关键目标分析,可以采用 MBO(目标管理)或者OKR(目标和关键成果),比如你把建立代码审查机制作为你的关键目标,那么就可以列入MBO,制定实现策略和结果指标,然后就可以周期性地评估做得怎么样。
  • 2)来自下属的反馈。收集下属反馈的方式很多,如一对一谈话(参考挑战13)、周期性会议(周会、月会、季会等)
  • 3)来自同级的反馈。同级可以是关联部门的负责人,比如测试、产品、需求、售前、运维、售后人员等
  • 4)来自上级的反馈。非常重要,一定要主动、持续、周期性地让上级给你反馈,往往他一句话就能让你迷途知返。

对于正面反馈,琢磨:

  • 好在哪里?
  • 做了哪些事情导致了好的结果?
  • 在什么样的条件下,可以重复类似的策略,收获类似的结果?

对于负面反馈,琢磨:

  • 坏在哪里?·做了哪些事情导致了坏的结果?
  • 做错了什么选择?这些选择,是在什么情况下做出的?
  • 如果重新来过,该怎么做?
  • 以后再做事情,这些反馈中,有哪些可以规避?怎样规避?

4.12 挑战12:别人的议论

如果你做不到“但行前路”,可以试试下面3个策略:

  • 1) 观察事情的结果是否到达预期
  • 2)定期和下属进行一对一沟通,获取他们对你的反馈。
  • 3)定期和上司沟通,了解他对你的评价,聆听他的建议。

4.13 挑战13:和下属进行一对一沟通

  • 分享事实经过和你的想法。
  • 征询对方的观点,鼓励对方做出尝试。

4.14 挑战14:怕犯错

勇于承担责任,遇到问题,出了差错,少辩解,多负责,多想想如何解决。·时刻牢记公司目标、团队目标、项目目标,不要总盯着问题,不要陷入到具体问题中跳不出来,要学会回到目标来重新思考你的做法、团队的做法是否正确。

因人而异进行管理,每个人都是不同的,要用适合的方式来管理,比如对喜欢技术挑战的开发者,就给他有难度的任务;对思想单纯、服从性强的开发者,就多给执行层面的指示;对独立性强、喜欢自由度的开发者,就设定目标让其自行寻路实现…

重视思想和认知的改变,结果是由某种行为导致的,行为是由想法触发的,想法是由思想产生的。一个人在思想上不认同你、不认同团队的目标,就很难很好地去执行,自然也很难取得好的结果

建立反馈机制,参考挑战11。·善用清单,委派任务、项目验收、发布软件……都可以先列清单,再依据清单检查执行,就可以避免疏漏,少犯错误。

复盘,定期复盘(每天、每周、每月、每季度、每年等),按项目里程碑复牌,突发事件复盘,养成复盘的习惯,这样才能越来越好。

4.15 挑战15:时间管理

当你成为领导后,时间就会被切分成5部分:

  • 老板占用的时间(用来完成老板所要求的工作)。
  • 组织占用的时间(平级部门之间相互协调支持)。
  • 外界占用的时间(客户、供应商、投资者等占用的时间)。
  • 下属占用的时间。
  • 自己可支配的时间。

总是没时间做自己必须亲力亲为的事情——比如规划各个产品版本的开发计划、制定计划、审核开发者的设计文档、更新项目状态、撰写代码等,而这些必须亲自做的事情,就只能推到下班后、干扰少的时间来做。

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

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

很多管理者一方面不放心把事情交给下属去做,总担心他们做不好;另一方面又觉得下属总是不成长,什么事都得靠自己亲力亲为。

4.16 挑战16:激励他人

我说:“下属积极性不高,其实很重要的原因是领导在沟通、目标统合、管理等方面做得不够到位,还有很多可以改进的地方。其中,你是真的关心下属的需求、发展、目标,还是只把下属当作完成任务的机器,有很大差别。只有下属感到你真的关心他、认可他时,他才会积极。”

怎样才能有效激励一个人积极投入工作?

  1. 传统的经济刺激理论
    1. 它认为经济刺激能有效调节甚至决定人的行为模式,因为人们是“拿多少钱办多少事”的。
  2. 大棒
    1. 大棒政策源于这样一个假设:只有当人们受到生存威胁的时候,才会集中精力、激发思维、提高效率。
  3. 动因理论
    1. 以弗雷德里克·赫茨伯格为代表的动因论者认为:人们需要报酬,但物质激励不是真正的“动因”,人们做某件事的动因是:发自内心地想做。
    2. 根据动因理论可知:超过一定的临界点,改善保障因素带来的激励效用是递减的。这正好可以解释经济刺激和大棒政策为什么会失效。
  4. 工作的隐性价值
    1. 薪水是我们找工作时的保障因素,是显性的,那些激励因素(有挑战性、获得认可、责任感、成就、个人成长)则是隐性的。保障因素到达临界点后,就不再能有效激励员工,此时动力因素就显得更为重要,它就决定了员工对工作的投入程度。
  5. 管理者如何创造隐性价值
    1. 1)了解员工为什么在这里工作
    2. 2)让每个人都有参与感
    3. 3)改善分配工作的方式:分配工作有三个目标:
      1. 每个人都有能力完成他所分配的工作任务
      2. 每个人的任务都有足够的挑战性
      3. 每个人都尽可能地投入工作中。

如果管理者在分配任务时能征求每个人的意见,那么任务就有可能到达最适合做的那个人那里。

4.17 挑战17:向上管理

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

这里有一个问题清单,可以帮助你检视自己在向上管理方面的状态:·你的表现符合上司的期待吗?·你的上司信任你吗?·你了解上司这个人吗?·你了解上司的管理风格吗?·你能说出上司的优点吗?·你了解自己的需求与期待吗?·你与上司讨论过自己的职业生涯规划吗?·你了解上司的文化背景吗?·你能适应与多位上司共事吗?

4.18 挑战18:提升领导力和管理能力

《成为技术领导者》这么定义领导的职责:领导的职责就是创造这样一个环境,每个人都能在其中发挥出更多的能力。

第5章 跳槽8问

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

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

5.1 为什么要跳槽

作为开发者,你跳槽可能有很多原因:·领导差劲,微管理、不尊重人、厚此薄彼·技术氛围太差·团队里没有牛人·产品没前途·技术太Low·薪水太低·薪水倒挂·福利太差·不被尊重·不被认可 ·被边缘化·没有发展空间·团队死气沉沉,很压抑·无意义的加班太多·失去激情·工作没有挑战·过于清闲·无法成长·行业衰落·公司平台很差·编程让自己越来越内敛,不能接受·年龄大了,干不动了

5.2 什么时候跳槽好

跳槽和时间到底有什么关系,现在我倾向于认为,它们是内在和外在的关系。

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

那么怎么判断自己真的该离开了呢?有四种方法(从简单到复杂):

  • 消耗感
  • 周末探视法
  • 盖洛普的Q12
    • 盖洛普的Q12盖洛普的Q12可以用来测试你对当前工作环境的满意度。12个问题如下:1)我知道公司对我的工作要求吗?2)我有做好我的工作所需要的材料和设备吗?3)在工作中,我每天都有机会做我最擅长做的事吗?4)在过去的7天里,我因工作出色而受到表扬过吗?5)我觉得我的主管或同事关心我的个人情况吗?6)工作单位有人鼓励我的发展吗?7)在工作中,我觉得我的意见受到重视吗?8)公司的使命目标使我觉得我的工作重要吗?9)我的同事们致力于高质量的工作吗?10)我在工作单位有一个最要好的朋友吗?11)在过去的6个月内,工作单位有人和我谈及我的进步吗?12)在过去一年里,我在工作中有机会学习和成长吗?
  • 需求供给分析法

第6章 简历优化指南

6.3 盘点你的价值和亮点

个人的商业价值体现在5个方面:1)知识2)技能3)经历4)人脉5)天赋

  • 知识:能引发你改变的信息。比如C多态和虚函数,是知识。
  • 技能:《辞海》将技能定义为“运用知识和经验执行一定活动的能力”。运用C中的多态和虚函数设计一个抽象工厂,解决对象创造问题,是技能。

盘点知识和技能时,可以从以下3个方面考虑:

  • 技术
  • 管理(领导力、组织、协调、制定计划、委派任务、辅导、目标整合、规划)
  • 通用(演讲、写作、授课、沟通、共情、反馈、时间管理、目标管理、激励)

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

7.3 如何为谈薪水做准备

除了招聘信息,还有如下渠道可以尝试:

  • 1)向身边的在目标公司工作过的朋友、同事、同学等打听
  • 2)在看准网、脉脉、职友集等平台搜索
  • 3)在技术社群(QQ群、微信群等)中询问

7.6 薪水与幸福成正比吗

《小狗钱钱》一书中,陶穆老太太解释了金钱和幸福的关系要想过更幸福、更满意的生活,人就得改变自身。这和钱无关,金钱本身既不会使人幸福,也不会带来不幸。金钱是中性的,既不好,也不坏。只有当钱属于某一个人的时候,它才会对这个人产生好的影响或坏的影响。钱可以被用于好的用途,也可以被用于坏的用途。一个幸福的人有了钱会更幸福;而一个悲观忧虑的人,钱越多,烦恼就越多。

第8章 转型

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

工作时的感受下面是我总结的和工作本身相关的几个问题,算是一个自我测试框架,通过问自己这些问题,你可以判断自己是否真的喜欢软件开发工作。

  • 1)看到代码是否有“似曾相识燕归来”的温暖?
  • 2)隔一段时间不写代码,是否会充满怀念,有想打开IDE写点什么的冲动?
  • 3)是否经常有这样的时刻:看着自己的代码,有种“相看两不厌,唯有敬亭山”的喜悦?
  • 4)有没有那么一些时候,你看着自己的代码,会不自觉地想:这里或那里改改是不是更好一些?

8.3 转型的分类

这里要注意的是,开发者的行业属性有两重:计算机软件和所做软件所属行业。举个例子,猿题库的开发者,就有计算机软件和教育两个行业属性,而且,往往与你所做软件相关的行业属性更重要。

8.5 如何确认哪个职业适合你

所谓“想要指数”,指的是你想做某种职业的强烈程度。

怎么确定自己的想要指数呢?有两种方法:

  • 1)想象未来三年自己的样子(你的形象、你在做什么事情、你和什么人在一起、你过着什么样的生活),或者更远,这辈子,你最终想成为什么样子。
  • 2)如果不做这件事,自己会有多痛苦。痛苦越强烈,对应的想要指数就越高。
    • 这一点,我特别喜欢《反脆弱》中的观点:如果你做某事的理由超过一个,那就不要做。这并不意味着一个原因比两个原因更好,只是说,通过努力想出一个以上的原因,你实际上正在试图说服自己做一些事情。显而易见的决定(在错误面前是强韧的)不需要一个以上的原因。

1)、2)两点设计的信息,可以通过招聘信息、搜索引擎、问答平台(在行、分答、值乎、微博问答、知乎Live)、社交渠道(微信群、QQ群、朋友圈、人脉)等获取到。

先说工作中的机会。比如你是软件开发工程师,想转UI设计,那么你自己学习绘画、AxurePro、PS等技能后,就可以自己制作原型图、效果图、切图等,就能够锻炼。

再来看兼职,机会更多,平台更多。比如程序员客栈、兼职猫、猪八戒、在行等线上平台,有很多兼职可做的事情。

博主点评

适合程序员或者想要成为程序员的人群阅读,偏职场经验和规划。本书沉淀了作者从业多年的知识体系,认知体系和实践经验,值得后来人借鉴,更好的进行职场成长。

我给四分,一份给分享精神,一分给清晰的框架,一份给简洁易懂的文笔,一分给颠覆我新知的一些新概念。

技术精进

【技术精进】

  • 开发 or 管理
    • 工作的三种维度
    • 成就感来源
    • 未来的样子
  • 前进的动力
  • 学习型心态
  • 精进之道
    • 成长模型
    • 个人对标管理法
    • 借鉴优秀者
    • 技术成长阶段模型
    • 技术本身的层次
    • 项目指标
    • 拿来即用的提升策略
  • 目标设定与执行
    • 适合性评估
    • 有效目标(SMART)
    • 下一步行动
  • 四个习惯
    • 对标管理
    • 三个问题
    • 刻意练习
    • 复盘
  • 习惯养成指南
    • 内在动力
    • 降低改变的难度
    • 让改变可视化
    • 奖励
    • 允许例外
  • 技术之外的核心竞争力:应用流程
  • 公司内的职业规划:下一个台阶