目录
(备注说明:本篇读书笔记供自己知识回顾和他人参考,所整理内容和书籍具体章节的内容不对应,感兴趣的小伙伴可阅读原著。)
1 作者简介
安晓辉,职业规划师,资深开发者,十余年开发与管理经验,经历过软件开发工程师、研发经理、项目总监、研发总监等职位,著有《解忧程序员》、《大话程序员》、《副业赚钱之道》、《程序员的成长课》 、《Qt Quick核心编程》 等多本图书。
2 内容简介
本书的自我定位是“高薪编程、求职面试与成长转型宝典”,适用于“面试、求职、升职、跳槽、加薪、转型、成长、修炼”等程序员的整个职业生涯,对应书籍的四大章节内容:自我发现与选择、跳槽与薪水篇、成长之路、管理迷思。每部分内容结合具体的案例进行分析,并提供了一些实用工具或切实可行的建议,对于初入职场的小白有较多帮助。
3 第一章节:自我发现与选择
本章主要通过一些工具模型来判断个人是否真的适合做软件开发,进而定位自己的职业兴趣。对职场小白有很好的启示作用。
1)职业四象限模型
该模型可以帮助迷茫的职场人进行职业定位、选择和转型,其划分依据是根据喜欢和擅长两个坐标轴因素划分的,如下图:
(1)首选第一象限,做自己既喜欢又擅长的职业;第二象限和第三象限分别为自己喜欢但不擅长、擅长但不喜欢,可作为备选职业;第三象限的职业迫不得已尽量选择,其工作自己既不喜欢也不擅长。
(2)可以从四个方面来判断自己是否喜欢从事的职业:工作内容和对象、工作所用到的知识和技能、工作环境和工作中的人际关系。
(3)理想的职业转型是从第二、三、四象限过渡到第一象限,或者从第二象限到第四象限,或者从第三象限到第二、四象限。总之就是向好的方向转变。
2)两种目标类型
(1)接近型目标:多源于内心对个体成长的积极渴望,会主动迎接挑战,所付出的坚持和努力是自发的行为,个体不会觉得心累。如果我做了X事,就能达成Y事;
(2)回避型目标:多源于对无法生存的恐惧,所付出到的努力是基于“不得不”的前提条件,因为害怕自己不这么做就会遭到惩罚或惨败,动力往往会不足。如果我不做X事,Y事就不会发生。
要尽量将回避型目标转化为接近型目标。
3)职业连连看模型
(1)个人战略三要素:现状、目标、计划。——如何从镶钻出发,抵达你选择的对你具有重要意义的目标。
(2)职业连连看模型是基于个人战略三要素展开的,具体的模型介绍见下图。内圈表示个人现状,外圈表示理想的职业目标,内圈和外圈的阶梯型连线表示多个阶段性的计划和目标。
(3)现状分析(内圈):知识、技能、经历、人脉、天赋。——个人商业价值。
(4)理想职业(外圈):现有工作的延伸、成长的各个时期梦想、榜样和偶像、不考虑金钱压力想从事的职业等等。
4)职场上日常规划
凡事预则立,不预则废。在日常职场生活中,要对自己有规划,要谨记你不是为公司、领导和薪水工作,而是为自己工作,培养自己的学习能力和解决问题的能力,提升个人品牌价值。规划可分为两个方面:
(1)工作任务规划:根据部门领导要求,指定工作计划路线图,可以是日计划、周计划或月计划等。
(2)个人成长规划:硬实力、软实力提升。
5)职业价值观
每个人看中的东西不同,这种倾向体现在职业上(offer的选择上),就是职业价值观。从不同职业价值观出发,同一种职业在不同人眼里意义就不同。常见的几种职业价值观:
工资高,福利好;工作环境(物质方面)舒适;人际关系良好;工作稳定有保障;能提供较好的受教育机会;有较高的社会地位;压力小,工作不紧张;能充分发挥自己特征;社会需要或贡献大。
上述的9中职业价值观在每个人心里分量均不同:最重要的、次重要的、最不重要的、次不重要的。
6)程序员价值体现的三要素
(1)知识和技术:最基本的和最浅的层面,比较容易习得。包括编程语言、应用框架、开发工具等等具体知识和技术。(没有最好的语言,只要最合适的语言。)
(2)技术能力和阅历:对具体知识和技术的应用水平,决定了一个程序员自身的技术价值,其需要在不断的运用知识和技术解决现实问题过程中培养。(学习能力和解决问题的能力。)
(3)业务积累:业务和行业紧密相关,纯粹的代码没有意义,必须与具体的行业中的业务挂钩。(隔行如隔山。)
7)程序员职业晋升通道
(1)技术通道:初级工程师-->高级工程师-->中级-->高级-->架构师(专家)-->技术总监-->CTO 。
(2)管理通道:工程师-->项目组长-->项目经理-->项目总监-->技术总监-->CTO。
(3)转行:开发转测试、产品经理、HR、售前售后等等。
8)STAR原则
(1)S( Situation),背景情况,包括面临的障碍、限制或困难。
(2)T(Task),任务,目标,想完成的事情。
(3)A( Action),行动计划与步骤,如何克服障碍、达成目标。
(4)R( Result),对结果的描述,重点关注你取得了什么成就。
该原则可以用来书写简历中的项目经历。
注:9)内容为作者另一本书籍《大话程序员》中内容,因内容高度关联,故整合在一起。
9)职业规划图
4 第二章节:跳槽与薪水篇
1)个人商业价值
知识、技能、经历、人脉、天赋。在3节中介绍过,其中最重要的是天赋。
2)内生涯和外生涯
理清个人的内生涯和外生涯,就知道自己在哪些方向可以努力提升,进而提升薪资和待遇等。
(1)内生涯:即常说的内在,一旦拥有,别人夺不走。例如知识、技能、阅历经验、行为习惯、心理素质、视野、职业心态、个人成长等等。
(2)外生涯:即常说的身外之物,别人或组织赋予的。例如职业目标、经济收入、工作环境、时间、内容、薪资福利等等。
(3)二者关系:内生涯决定外生涯,外生涯拉动内生涯。学而优则仕,是内生涯决定外生涯的一种体现,如知识技能达到一定程度可以做架构师CTO等;当外生涯高于内生涯时,压力会促使自己学习各种知识和技能,最终与外生涯匹配,当超越外生涯时,可以升职或加薪,这是外生涯拉动内生涯体现。
3)职业
(1)定义:职业 = 行业 * 职能。
(2)行业:由若干个经济活动性质相同或相近的组织构成,如软件行业是由各种软件公司构成。
(3)职能:对业务活动的细分与归类,以具体的职位(岗位)体现,指一个职位所承担的任务、作用和功能。
(4)转型和跳槽:只有更换了行业或职能才叫转型,两个都没换而只换了公司叫跳槽。
4)职业本质
(1)职业本质:价值交换。职场人士首先要给别人创造价值,个人的价值是通过为别人创造价值而体现的。
(2)工资本质:企业为自己需要的价值点而支付给员工的劳动报酬。
(3)个人的(商业)价值体现在知识、技能、天赋、经历、人脉5个方面,是个人的内在价值,在一段时期相对稳定。薪酬不代表个人的整体价值,要想通过薪酬最大化体现自己的价值,就要寻找与自己商业价值最匹配的环境。
5)简历
对自己进行现状分析,知道自己的商业价值(知识、技能、经历、人脉、天赋),并对知己的职业价值观进行等级分类(最重要、次重要、最不重要、次不重要),同时结合行业前景、公司前景筛选出一批符合自己现状和价值观的行业、企业、岗位后,最后针对不同公司岗位进行简历优化。
优化有三个要点:
(1)分析招聘信息,提取知识、技能、职责中的关键词;
(2)根据招聘信息里的关键词,帅选个人知识、技能和经历;
(3)将匹配的知识、技能、经历重新组织和呈现。
在修改简历时,尽量使用招聘信息里出现的字眼(关键词匹配),便于HR识别。投递简历时可将企业和职位分为A、B、C三类,A类最符合自己的心仪岗位,B类与自己最核心的诉求匹配,C类可能抵触了自己的某些核心价值观。投递顺序是从C到A,不断积累经验和优化简历。
注:6)内容为作者另一本书籍《大话程序员》中内容,因内容高度关联,故整合在一起。
6)简历投递误区
(1)一份简历到处投递。(要针对不同企业的岗位定制对应的简历)
(2)不顾需求方要求,随意罗列信息。(要进行关键词匹配,便于HR识别)
(3)项目介绍中部突出自己所做之事和产生的效果。(使用STAR原则,突出重点,少出废话)
5 第三章节:成长之路
1)T型人才
(1)程序员最理想的技能结构为T型结构,即广度+深度,如下图所示。
(2)程序员在职场中要有两种学习策略:一是横向拓展,即广度学习,掌握足够多的知识和技能;二是纵向深入,即深度学习,精通某一领域知识。达到一专多能。
2)程序员能力拓展模型
人们的能力拓展模型符合“你知道的越多,你不知道的就越多”规律,如下图:
3)程序员个人品牌
可从以下几点经营个人品牌:产品、所在公司和团队背景、开源项目、技术博客、出版技术书籍、专利、证书、职场口碑。
4)目标设定原则:SMART原则
(1)S( Specific):目标必须是具体的,要对标特定的工作指标,不能笼统。
(2)M( Measurable):目标必须是可衡量的,衡量的指标是数量化或者行为化的,验证这些指标的数据或者信息是可以获取的。
(3)A( Attainable):目标必须是可实现的,在付出努力的情况下可以实现。
(4)R( Relevant):与其他目标有一定的相关性。
(5)T(Time-bound):必须有明确的时间截止期限。
5)程序员的三种境界
(1)迷茫前行:‘昨夜西风凋碧树,独上高楼,望尽天涯路’,此第一境也;
(2)追逐目标:‘衣带渐宽终不悔,为伊消得人憔悴’,此第二境也;
(3)终有所获:‘众里寻他千百度,回头蓦见,那人正在灯火阑珊处’,此第三境也。
上述的三种境界与下面的禅言有异曲同工之妙:
看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水。
6)工作周报
(1)每天记录工作笔记:每天工作结束,记录工作进度(搞明白的部分),记录疑问,记录第二天要弄明白的部分,使自己的当天的工作状态入栈,第二天开班时很容易出栈,快速进入工作状态。
(2)工作笔记内容可从三部分着手:今天完成了什么、今天遇到什么问题、明天要做什么。
(3)利用每天的工作笔记可以10分钟搞定工作周报,轻松解决给领导汇报工作问题。周报内容可从三部分着手:上周完成工作、遇到问题、本周工作计划。
注:7)8)9)10)11)12)13)内容为作者另一本书籍《大话程序员》中内容,因内容高度关联,故整合在一起。
7)开发者成长路径图
(1)普通开发者和熟练开发者关键区别:知识体系。普通开发者的知识不成体系,而熟练开发者构建了与某个应用场景相关的知识体系。
(2)普通开发者进阶熟练开发者的关键点:构建自己的知识体系。
(3)知识体系两个关键要素:专项知识、组织结构。即若干相互联系的、可以用来解决特定场景问题的知识的组合。
(4)知识体系养成办法:在开发过程中修炼专项能力,积累专项知识;梳理整合各种知识,将他们组织在一起形成知识体系。
8)程序员技术成长三阶段
(1)初级阶段:专项能力提升。此阶段对应成长期中的进入期,是程序员刚入行或新学一门技术的阶段,该阶段主要目标是快速掌握基础知识,形成知识地图,能够完成别人安排的基础任务,体现个人价值。
(2)中级阶段:技能体系构建。此阶段对应成长期中的快速成长期,此时需要围绕已拥有的一组技能来构建自己的知识图谱。
(3)高级阶段:融合创新培养。此阶段对应成长期中的高原期和突破期,需要程序员不断构建自己的T型技能树,将不同领域知识融会贯通,创造自己的“核心竞争力”。
9)提升专项能力两个阶段
(1)第1阶段:一般开发者往往只有第1个阶段,即了解某语言或框架的基础层,以目标为导向优先交付分配给自己的任务;
(2)第2阶段:积极主动的开发者往往在项目交付后进入第2阶段,即回顾、梳理整合,进而更新知识体系,这样工作和学习过程才能形成完整的闭环模式,良性循环,相互促进,知识体系才能更快更好的构建起来。
(3)专项能力对应专项知识,专项知识的有机组合构成知识体系。
(4)回顾、梳理整合:回顾可分为周期性回顾和项目节点式回顾;树立整合分为归类和分层。
10)专项能力修炼方法
一门编程语言或框架的知识层次存在深浅,在学习时有先后顺序和一般性规律,大致可分为三个层次:
(1)基础层:了解基础API,基于API开发简单功能。(以目标为导向优先交付分配给自己的任务)
(2)进阶层:阅读源码,熟悉内核及框架设计原理等。(如果程序员只是简单的会调用API完成项目,那他永远不可能精通某一种技术)
(3)改造层:针对框架不足进行完善和优化、或对框架进行定制等。(进入改造成,才算称得上“精通”某一种技术,可从框架使用者、框架测试者、框架设计者和最终用户四个角色来深入看待某一项技术)
11)开发者成长期
(1)进入期:开发者要完成的第一个跨越是从普通的程序员进阶为熟练开发者,突破自己的第一块天花板,建立某个应用场景的知识体系,之后才能看到更多的职场可能性(高级开发工程师、架构师、技术专家、经理等)。
(2)快速成长期:成为熟练开发者后,会快速汲取知识,不断构建自己的T型技能树,成为高级开发工程师。
(3)高原期:熟练开发者经过快速成长期会进入自己的高原期,此时因为很难再进步而容易产生懈怠情绪;
(4)突破期:高级开发工程师要再次努力突破自己的第二块天花板,更上一层楼,成为专家级人士。
12)开发者山行图
13)架构师成长路线
6 第四章节:管理迷思
1)个人目标与团队目标关系
(1)自然态:个人目标与团队目标一致,团队和个人契合度最高,个人不用他人督促就自发奋进。
(2)可燃态:个人目标与团队目标有所偏离,但实现团队目标对个人目标也有所收获,此时有适当激励和监管,个人也能把工作完成的很好。
(3)不燃态:团队目标的实现对个人目标无任何帮助,个人完全没有动力工作,会敷衍了事。
(4)阻燃态:团队目标与个人目标背道而驰,非但不为团队效力,可能还会阻碍团队进展。
2)汉堡原理(Hamburger Approach)
(1)原理:指在进行绩效面谈的时候按照鼓励、指出问题、肯定支持的步骤进行的方式,具体为:先表扬特定的成就,给予真心的鼓励; 然后提出需要改进的“特定”的行为表现;最后以肯定和支持结束。
(2)作用:在于提醒管理者,绩效面谈的作用在于帮助员工改善绩效,而不是抓住员工的错误和不足不放,因此,表扬优点,指出不足,然后肯定和鼓励,才是最佳的面谈路线。
3)共情
指一种能进入到对方内心世界并体验对方内心感受的能力,然后将对方感受的理解用自己的言语表达出来,使对方感受到被理解被接纳。即换位思考。
4)管理者影响力的三个方面
(1)行政权力:管理者职位对应的权利,如给员工评绩效、加薪、指派任务等;
(2)专业技术魅力:学而优则仕,一般管理者是从底层程序员工爬起的,即技术超群够硬。
(3)个人魅力:影响力和感召力。
5)管理者的责任
(1)完成工作任务:目标整合,让团队齐心协力完成领导布置的任务,进而达成公司目标。
(2)培养下属:团队中每个成员的培养。
要尽量确保团队目标与公司目标一致,个人目标与团队目标一致,只有这样才能发挥团队最大效用,实现预期。
6)胡萝卜加大棒理论
(1)胡萝卜加大棒通常指的是一种奖励与惩罚并存的激励政策,是指运用奖励和惩罚两种手段以诱发人们所要求的行为。
(2)它来源于一则古老的故事“要使驴子前进”就在它前面放一个胡萝卜或者用一根棒子在后面赶它。
(3)奖励:升职、加薪、颁奖、表扬等等;
(4)大棒:末位淘汰、末位降薪、末位降职等等。
7)马斯洛需求层次理论
(1)是心理学中的一种激励理论,包括人类需求的五级模型,通常被描绘成金字塔内的等级。
(2)从层次结构的底部向上,需求分别为:生理(食物和衣服),安全(工作保障),社交需要(友谊),尊重和自我实现。
(3)图示结构:
8)执行者和管理者区别
执行者自己做事,管理者通过他人完成事情。
9)开放式问题
开放式问题的对立面试封闭式问题,所谓封闭式是常用是、否、行不行、可以吗等“非此即彼”式的提问。
举例:前者为封闭式问题,后者为开放式问题。
(1)这个建议行不行?—— 能谈谈对这个建议的看法吗?
(2)你一定非常喜欢运动吧?—— 你平时都喜欢做些什么呢?
(3)您觉得这里要不要改进呢?—— 您有怎样的改进意见呢?
(4)你是不是能说会道?—— 你是怎样达到今天的高度的呢?
(5)你喜不喜欢这款产品?—— 你试用的感觉怎么样?
(6)你喜欢这个知识吗?—— 你看完以后感觉怎么样呢?
10)时间管理
管理者的时间通常被且分为5部分,即:
(1)老板占用的时间:完成老板要求任务;
(2)组织占用的时间:平级部分之间相互协调支持;
(3)外界占用时间:客户、供应商、投资者等;
(4)下属占用的时间:开会、布置任务、谈话等;
(5)自己可支配时间:自己个人时间。
前三部分管理者很难改变,因此管理者的时间管理重点在第四部分,即管理下属占用的时间,要妥善的交办和授权。
11)向上管理
指为了给公司、上级和自己取得最好的结果而有意识地配合上机一起工作的过程。
7 共勉
仕而优则学,学而优则仕。——子张篇《论语》
苟日新,日日新,又日新。——儒家经典《大学》
我们终此一生,就是要摆脱他人的期待,找到真正的自己。——武绮诗《无声告白》