咱们为何要计划?要回答这个问题,你得先理解自身的需求,还有本身的生涯发展,最后是一我的生终极问题,你若是想本身不留遗憾,计划是很是重要的。html
制定计划以前,先了解马斯洛的需求模型。程序员
该理论认为个体成长发展的内在力量是动机,而动机是由多种不一样性质的须要所组成,各类须要之间,有前后顺序与高低层次之分,每一层次的须要与知足,将决定个体人格发展的境界或程度。 其层次模型的经典金字塔图示以下:算法
马斯洛把底层的四类需求:生存、安全、归属、尊重归类为 “缺失性” 需求,它们的知足须要从外部环境去得到。数据库
而最顶层的“自我实现” 则属于 “成长性” 需求。成长就是自我实现的过程,成长的动机也来自于 “自我实现” 的吸引。就像不少植物具备天生的向阳性,而对于人,我感受也有天生的 “自我实现” 趋向性。编程
人生最激荡人心的时刻,就在于自我实现的创造性过程当中,产生出的一种 “高峰体验” 感。正由于人所固有的需求层次模型,咱们才有了愿望,愿望产生目标,目标则引起计划。后端
著名生涯规划师古典有一篇文章《你的生命有什么可能?》对生涯提出了四个维度:高度、宽度、深度和温度。这里就借他山之玉,来谈谈个人理解。缓存
每一个人的人生发展路线都会有这四个维度,只是不一样人的偏好、愿望和阶段不一样致使了在四个维度分布重心的差别。在不一样维度的选择,都表明了不同的 “生涯”,每一种 “生涯” 都须要必定程度的计划与努力。安全
虽有四种维度,四个方向,但不表明只能选其一。虽然咱们不太可能同时去追求这四个维度,但能够在特定的人生不一样阶段,在其中一个维度上,给本身一个去尝试和探索的周期。网络
因此,这就有了选择,有了计划。而计划会有开始,也会有结束,咱们须要计划在人生的不一样阶段,重点开始哪一个维度的追求,以及大概须要持续的周期。数据结构
有研究说:“咱们最后悔的是没作什么,而不是作过什么。”
计划,就是作选择,你在为将来的你作出选择,你在选择将来变成 “谁”。若是你还在为今天的本身然后悔,那就该为明天的本身作出计划了。
人生的征程中,先是恐惧驱动,地狱震颤了你,想要逃离黑暗深渊;后来才是愿望驱动,星空吸引了你,想要征服星辰大海。
逃离与征服的路,是一条计划的路,也是一条更困难的路,而 “你心里确定有着某种火焰,能把你和其余人区别开来” 才让你选择了它。
富有成效的计划的第一步,即是肯定目标。
在设定目标这个领域,国外一位研究者马克·墨菲(Mark Murphy)曾提出过一种 HARD 方法。HARD 是 4 个英文词的首字母缩写:
如其解释,这是一种强调心里愿望驱动的方法。按这个标准,一种源自心里的强烈需求在你头脑中造成很具体的画面感,其难度和挑战会让你感到既颤栗又激动,那么这也许就是一个好目标。
应用到我的身上,HARD 目标中的 H 体现了你的兴趣、偏好与心灵深处的内核。就拿写做这个事情来讲吧,于我而言,兴趣只是驱动它的一种燃料,而另外一种燃料是心里深处的表达欲望。写做自己不是目标,经过写做去完成一部做品才是目标,就像经过写代码去实现一个系统,它们都是做品,其驱动内核就是一种 “创造者之心”。
而 A 是你对这个目标造成的愿景是否足够清晰,在头脑中是否直接就能视觉化、具象化。就拿我我的来讲,我很是喜欢读书,常在夜深人静的时候,默默潜读,掩卷而思,和做者产生一种无声的交流。这样一种画面,慢慢烙在脑海中,渐渐就激发起了想要拥有一部做品的目标。
R 则是由上一篇文章中的马斯洛需求模型层次决定的。写做一方面本是自带属于第三层次的社交属性,但另外一方面更可能是一种成长性的自我实现需求在激发。完成一部做品,须要明确一个主题,持续地写做,一开始我从每个月写,到每周写,再到写这个专栏,做品也就渐渐成型。
而最后的 D 是其难度,决定了目标的挑战门槛。太容易的目标不值得设定,太难或离你现实太远的目标也不合适。基于现实的边界,选择温馨圈外的一两步,可能就是合适的目标。于我,从写代码到写做,其实也真就只有那么一两步的距离。
假如,你以为现状很差,没法基于现状延伸出目标。那么也许能够试试这样想:假如我不作如今的事情,那么你最想作的是什么?一般你当前最想作的可能并不能解决你的谋生问题,那么在这二者之间的鸿沟,如何去搭建一条桥梁,可能就是一个值得考虑的目标。
咱们为何要立 HARD 目标?有一句话是这么说的:
Easy choices, hard life. Hard choices, easy life. 容易的选择,艰难的生活;艰难的选择,轻松的生活。
目标是愿望层面的,计划是执行层面的,而计划的方式也有不一样的认识维度。
1、时间维度
从时间维度,能够拟定 “短、中、长” 三阶段的计划:
短时间一年能够完成几件事或任务,中期两三年能够掌握精熟一门技能,长期的 “一生” 达成一个愿景,实现一个成长的里程碑。
2、路径维度
从路径维度,订计划能够用一种 SMART 方法,该方法是百年老店通用电气创造的。在 20 世纪 40 年代的时候,通用电气就要求每个员工把本身的年度目标、实现方法及标准写信告诉本身的上级。上级也会根据这个年度目标来考核员工。这种方法进化到了 20 世纪 80 年代,就成了著名的SMART原则。
SMART 也是 5 个英文词的首字母缩写:
今天 SMART 已经很是流行和常见,我就不解释其具体含义了,而是讲讲我如何经过 SMART 来跟踪我的年度计划执行的。按 SMART 方式定义的计划执行起来都是能够量化跟踪的,我一般用以下格式的一张表来跟踪:
其实,一年值得放进这张表的就那么几件事,每件事又能够分解为具体的几个可量化的任务,再分解到一年 50 周,就能够很明显地看出理想计划和现实路径的曲线对比。以下,是我 2017 年的一张计划与实际执行的对比曲线图:
按 SMART 原则方法使用计划跟踪表的优势是:简单、直接、清晰。但缺点也明显:即便百分百完成了全部的计划,也都是预期内的,会缺少一些惊喜感。而由于制定目标和计划会有意识地选择有必定难度的来挑战,因此实际还很难达成百分百。
说到目标的难度与挑战,使用 SMART 方法最值得注意的点就是关于目标的设定和方法的选择。鉴于人性和现实的因素,制定计划时极可能是这样一种状况:基于现实掌握的方法,考虑计划的可达性。这样制定出来的计划看起来靠谱,但却失去了真正挑战与创新的可能。
有时你可能会以为计划没有变化快,或者计划好的人生,过起来好机械,没劲。其实计划是准备,变化才是永恒,而计划就是为了应对变化。为此,我常常会把计划表按优先级排得满满的,但我永远只作那些计划表顶部最让本身感到 HARD 的事情。
变化来了,就把它装进计划表中,看这样的变化会排在哪一个位置,和以前计划表前列的事情相比又如何。若是变化的事总能排在顶上,那么说明你的人生实际就在不断变得更精彩,作的事情也会让你更激动。而若是变化总是那些并不重要却还老是紧急的事情,老打断当下的计划,那么也许你就要从新审视下你当前的环境和自身的问题了。
这样,计划表就成了变化表,人生没法机械执行,只有准备应对。
最后,找到属于你的 HARD 目标,开始有计划且 SMART 的每一天;这样的每一天,走的每一步也许会更重些、累些,但留下的脚印却很深、很长。
一年咱们可支配的时间,大约2400 小时。能用来计划的时间并很少,须要仔细挑选合理的事项,放进计划表,并真正地执行。而实际,一年中你还须要把时间合理地分配在 “短、中、长” 三种不一样周期的计划上。
你能够从时间的维度,看看你计划的时间安排是否合理分配在了不一样周期的计划事项上。若是计划的事项和周期匹配错了,计划的执行就容易产生挫败感从而致使半途而废。
要让计划可行,就是选择合适的事项,匹配正确的周期,创建合理的预期,获得不断进步的反馈。
既然时间有限,那该如何选择有限的事项,才可能更有效地被执行下去呢?
其中有一个很重要的因素:兴趣。
有的人兴趣可能普遍些,有的人兴趣可能少一些,但每一个人多多少少都会有些我的的兴趣爱好。对于兴趣普遍的人来讲,这就有个选择取舍问题,若不取舍,都由着兴趣来驱动,计划个十几、二十件事,每样都浅尝辄止。实际从理性上来讲价值不大,从感性上来讲只能算是丰富了我的生活吧。
我建议你能够从兴趣做为出发点,由于这样更容易启动;而对于中期目标,像学习提高一项技能,只靠兴趣是不足以驱动去有效执行的,甚至达不到预期效果。关于此,吴军有一个观点:
凡事从 0 分作到 50 分,靠的是直觉和经验;从 50 分到 90 分,就要靠技艺了。
凭借兴趣驱动的尝试,结合直觉和经验就能达成 50 分的效果,而要到 90 分就须要靠技艺了。而技艺的习得是靠刻意练习的,而刻意练习一般来讲都不太有趣。要坚持长期的刻意练习,惟一可靠的办法就是对其作出郑重的承诺。
经过兴趣来启动,但要靠承诺才能有效地执行下去。感兴趣和作承诺的差异在于,只是感兴趣的事,到了执行的时候,总能够给本身找出各类各样的缘由、借口或外部因素的影响去延期执行;而承诺就是这件事是天天的最高优先级,除非不可抗力的因素,都应该优先执行。
兴趣让计划更容易启动,而承诺让计划得以完成。
而在现实生活中,让计划不可行或半途而废的常见错误有:
放进计划表的事项是你精心识别、选择并作出的承诺,而承诺也是一种负担,若承诺太多,负担可能就过重,会让你感受本身不堪重负,最后就可能放弃了,到头来又是一场空。其实,一年下来,重要的不是开启了多少计划,而是完成了几个计划。
因此,可行的计划应该是:有限的时间,适合的周期,兴趣的选择,郑重的承诺。
从经济学思惟的角度,作计划就是作选择;而选择了这些事情,就意味着放弃了另外可能作的事情,这里面的成本就是机会成本。机会成本是放弃的代价,选择这些事情从而放弃的其余可能选项中拥有最高价值的事情。
就好像一样一个晚上,有人选择了用来玩网络游戏,你觉得的成本是几小时的点卡钱,但实际你放弃的是用来学习、看书等其余事项的潜在价值与收益。
学习计划是我的成长计划中的一部分,而成长计划中,最大的成本依然是时间。在你早期的学习阶段,虽然时间没那么值钱,但把钱和时间都花在加速成长上,实际上是“成本有限,潜在收益巨大”的选择。
因此,时间在不一样的阶段,价值不一样,那么成本也就不一样。你要敏感地去感知本身时间的成本,去提高时间的价值,根据时间的价值再去调整本身的计划和行动。成长过程当中,早期的成本低而选项多,后期的成本高且选项少。
计划获得了执行,产生了预期的结果,才会有指望的收益。
计划赶不上变化。但其实,变化以后的计划,只是一份更契合实际的计划,而非再也不存在。不少外部因素是你没法预测和控制的,总会来干扰你的计划,因此这给了你足够的客观缘由。但不管有多少客观缘由,你作计划的初衷是:一点点尝试去控制本身的生活,而后获得本身想要的结果。
在得到结果的路上,这个世界上彷佛有两类人:
在我读高中时,现实中就有一种巨大的社会指望和约束施加己身,那就是高考。在这种巨大的社会外部约束和指望下,第二类人能够表现得很是好,好到能够考出状元的分数。但进入大学后,这样的外部约束和指望会瞬间降低,最后可能也就泯然众人之间了。
通俗点说就是,若是有人(能够是别人或本身)对你的指望很高,你会不自觉地行动去知足并符合这种指望;若周围没有这样的指望,最终你可能就是一个符合周围人群平均指望的人。而所谓的自驱力,就是你对本身的指望所造成的推进力量。
要得到好的结果,你就要作第一类人,须要对本身有更高的指望,须要有自驱力。
有时候学习,赚取的不是直接的经济收益,而是间接的结构性收益,加强直接收益结构价值。
那么如何理解收益结构?以我现阶段的状态来讲,已有三个直接收益结构:
专业,天然是指程序专业技能,经过出售本身的时间和人力资源来获取一份相对稳定的工资收入来源。写做,到今天这个专栏出品后,终于能够经过做品的形式产生直接收益,它只需一次性投入时间来完成做品。而理财属于资产性收益,就是任何等价于钱的家庭动产或不动产,能产生利息、分成或租金的收入,它须要长期的收入结余积累。
而英语技能的提高对这三个直接收益结构,都能产生增益做用。程序行业自没必要多说,行业里最好的文章、书籍或专业论文材料等可能都是英文的,只有少部分被翻译了过来,但翻译老是有损失、有误差、有歧义,能直接高效地阅读英语对提高你的专业技能和能力帮助巨大。
而写做,英语给我提供了另一个更广阔世界的写做素材和看待世界的角度。因此,我在时间分配上不只看中文文章,也看一些英文媒体文章和书籍。
至于理财,英语让我更直接高效地接收中文世界之外的信息,从某种角度来讲,具有了更多元化的视角和思惟结构。而思惟和视角是投资理财的核心能力,在这个领域全是选择题,只有作对选择的几率高于作错的几率,才可能得到正收益。
这就是我选择一项长期计划时关于结果与收益的思考,而成长计划的收益,从经济价值来讲,都是远期收益,是为了变得更值钱。也许指望的结果达成,目标实现,真的会变得更值钱。
在考虑付出与收获时,后来读到一句话,大意以下:
生活也许不会像计划那样发生,但对待生活的态度能够是:期待伟大的事情发生,同时也要保持快乐和幸福,即便它没能发生。
如此,面对真实的生活,也当释然了。
计划执行的各个阶段,都存在障碍。
计划的酝酿期,最大的障碍来自心里:理性与感性的冲突。计划的目标是源自心里的,但也是有难度的,如果垂手可得的事情,也就不用计划了。这些须要坚持的事情,一般都 “很差玩”,而人是有惰性的,心里里其实并不肯意去作,这是咱们感性的部分。但理性告诉咱们,去完成这些计划,对本身是有长远好处的。这,就是冲突的地方。
计划的启动期,是计划从静止到运动的早期阶段;这阶段的最大障碍是所谓的“最大静摩擦力”。因此才有一句俗语叫:“万事开头难”。
计划的执行期,是计划实现过程当中最漫长的阶段;这阶段的最大障碍就是容易困倦与乏味。漫长的人生,你须要为本身讲好一个故事。万维钢的一篇文章《坚持坚持再坚持》里也提到:故事的价值不在于真实准确,而在于提供人生的意义。
计划执行时你还会遇到挫败,遭遇挫败,你会进入一种心情与情绪的低谷,这个时候有很高的几率作出放弃的决策。而个人经验是,不要在挫败的情绪低谷期进行任何的选择与决策。能够暂时放下这件事,等待情绪回归到正常,再从新理性地评估计划仍是否该坚持。每经历一次挫败以后,你还选择坚持,那么就已经收获了成长。
计划半途而废,很大多是出在节奏上。
一个计划被制定出来后,咱们一般会根据它的周期设定一个执行的节奏。
一个长期的目标能够是五年,也能够是十年,因目标而异。要精熟一门技能领域,好比编程,确切地说应该是编程中的某一分支领域,对于通常人来讲,可能就须要三五年不等了。而像精通一门外语,可能须要的时间更长。
一个中期的目标,也许是一年。好比,计划用一年时间写一本书,假如一本书 20 万字,那每周大约须要完成 4000 字,再细化到天天就是800 字左右。这就是咱们作一年计划的方式,计划成型后,相应作出分解,分解到周这个级别后,基本的计划节奏就出来了。
一个短时间的目标,多是几个月。好比,我这个 “极客时间” 专栏,计划就是几个月内完成的事情。它上面已经造成了每周三篇更新的节奏,这样的写做节奏对于我来讲基本已经算是全力冲刺了,因此时间就不能拉得太长。
计划的节奏,就像中学物理课上假设的理想的无摩擦力环境,而现实中,摩擦力则老是难以免的,因此你要学会慢慢习惯并适应这真实而有点“意外”的节奏。
跑马拉松的时候,一大群人一块儿出发,最后到达终点时倒是稀稀拉拉。这说明每一个人的节奏是不一样的,即使同一人在不一样阶段的节奏也是不同。
执行长期计划,就如同跑马拉松,原本是一群人一块儿出发,慢慢地你们拉开了距离,再以后你甚至先后都看不到人了。是的,正如《那些匀速奔跑的人你永远都追不上》那篇文章所说:
匀速奔跑的人是那些能够耐住寂寞的人,试想当你按照本身的节奏锲而不舍默默努力地去作一件事情时,是极少会有伙伴同行的,由于你们的节奏各不同,即使偶尔会有也只是陪你走过一段。
有时太急迫地“追赶”,最后反而阻挡了你稳步前进的步伐和节奏。
找到并控制好本身的节奏,才能长期匀速地奔跑,才能更高效地利用好本身的时间和注意力。
对于每日计划的执行节奏,我本身的经验是:把本身的时间安排成一段一段的,高度集中和高度分心交叉分布。
假如某段时间须要高度集中注意力,就能够处理或思考一些比较难的事情。好比,50 ~ 60 分钟,集中注意力处理工做事务,远离手机信息推送及其余各类环境的打扰;而后休息一下子,10 ~ 15 分钟左右,回复一些聊天或邮件这类其实不须要那么高注意力的事情。
有时,当你想去处理一件复杂困难的事情,好比写做,这是一种短期内须要高度集中注意力的活动,但这时脑中老是在同时想着其余不少事情或者被动地接收一些环境信息(周围的谈话声之类的),还控制不住,很难集中注意力。这种状况下,就不用勉强开始,我一般会经过切换环境,从外部去排除一些干扰。
另外,若是感受是比较疲惫,则更不能立刻开始了,这种状态下,通常我都是马上去小憩片刻或者闭目养神一段时间(20 ~ 30 分钟),进入一种浅睡眠状态再恢复过来,精力的恢复感会比较好。
而另一种中长期目标的执行节奏,控制起来可能要更困难一些。
你要找到本身的节奏,就是在天天略感挑战的状态下,造成不断加速前行,直到一个最终接近匀速的状态。匀速是咱们能长期坚持的临界点,它能让咱们跑得更久,跑得更远。
在信息大爆炸的时代,咱们对信息愈加敏锐,信息就越会主动吸引咱们,让咱们产生一种过载的感受。
在面对这股信息与知识的洪流时,有时咱们会不自觉地就进入到了 “疲于奔命”模式中。
进入了疲于奔命状态,咱们不断给大脑喂任务,且不停地切换大脑任务,让它永远处于繁忙甚至超频状态。这样每一个任务的执行效率都会降低且效果也不佳,因此致使执行任务的时间反而延长了,这就给咱们营造了一种“忙碌、充实而疲倦”的虚幻假象。
人脑毕竟不是 CPU,它须要休息,持续的过载与奔命,并不能让咱们学会更多,但却会减小咱们创造新的可能。
那面对大量的信息和知识,咱们该如何应对?这能够从两个角度来考虑:
第一点,信息和知识的价值是一个主观的判断,有一个客观点的因子是获取门槛。若是一个信息或知识随处可得,你们都能接触到,甚至变得很热门,那么其价值可能就不大。吴军老师有一篇文章讲了个道理叫:“众利勿为,众争勿往”,这在对信息和知识价值的主观判断上也是通用的。
第二点,就提出了一个关于如何筛选信息和知识的问题。心理学上有一个 “心智模型” :
“心智模型” 是用于解释个体对现实世界中某事所运做的内在认知历程,它在有限的领域知识和有限的信息处理能力上,产生合理的解释。
每一个人都有这样的 “心智模型”,用来处理信息,解释行为,作出决策。
不过只有少部分人会更理性地认知到这个模型的存在,并且不断经过吸取相关信息和知识来完善这个模型。
更多的众人依赖的是所谓的 “感受” 和 “直觉”。但实际上 “感受” 和 “直觉” 也是 “心智模型” 产生的一种快捷方式,只是他们没有理性地认知到这一点。
“心智” 这两个字合在一块儿是一个意思,分开为 “心” 和 “智” 两个字又能够分别解释为:“心” 是你对须要的选择,从心出发;“智” 是对价值的判断,智力的匹配。
储备了信息,创建了知识,最终都是为了应用。
没有目的的学习是徒劳的,它仅仅是在咱们的头脑中流过一遍,流过的痕迹很快又会被新的信息冲刷干净。
因此,学习也要有选择和取舍。万维钢的一篇文章中有句话是这么说的:
注意力是一种有限的资源,你要是不擅长不集中注意力,你就不擅长集中注意力。
你得挑选那些真正值得作和学的东西去让大脑满负荷运转,但凡投入决心去作的事情,就须要百分百投入。这就是专一于少而精的东西,深刻了解这些东西,进入到更深的层次上。
深能够无止境,那到底多深才合适?个人答案是:让你的心里对取得的效果感觉到满意的深度层次上。它的反面是:但凡心存疑虑,不是那么肯定要全力投入的事情,干脆就不作了。
我的的成长有不少方面,但对于程序员的成长最重要的就是知识体系的构建,这其实就是一个 “点线面体” 的演进过程。
进入任何一个知识领域,都是从一个点开始的。
以下图,是我从大学进入软件开发领域所接触的一系列的点,我将其从左到右按时间顺序排列。红色的部分是目前还属于我 “掌握” 与 “了解” 的领域,其余灰色的部分则是要么被时代淘汰了,要么已经被我放弃了维持与更新。
在你入行后,你可能也会由于时代、公司或项目的缘由,有很大的随机性去接触不少不一样的技术点。但若是你老是被客观的缘由驱动去随机点亮不一样的 “点”,那么你终究会感到有点疲于奔命,永远追不上技术的浪潮。
当造成的点足够多了后,一部分点开始造成线,而另外一些点则在技术趋势的演进中被天然淘汰或本身主动战略放弃。
那你到底该如何把这些零散的点串成线,造成本身的体系与方向呢?以下图,是个人一个成长 “T 线图”,它串联了现在我沉淀下来的和一些新发展的 “点”。
我从成为了一名 Java 程序员开始,在这条 “T线” 上,先向下走,专一于解决业务需求碰到的技术问题。先天然地要向下至少走一层,接触 Java 的运行平台 JVM。而又由于早期作了几年电信项目,要和不少网络设备(包括各种网元和交换机等)通讯,接触网络协议编程;后来又作了即时消息(IM)领域的工做,网络这一块就又继续加强了。而网络编程依赖于操做系统提供的 I/O 模型和 API,天然绕不过 OS 这一块。
在 Java 领域走了多年之后,之前涉猎的技术点就逐步暗淡了。而再从程序员到架构师,就开始往上走,进入更纯粹的 “架构与设计” 领域,在更宽的范围和更高的维度评估技术方案,作出技术决策与权衡,设定技术演进路线。
可是,再好的技术方案,再完美的架构,若是没有承载更有意义的业务与产品形态,它们的价值和做用就体现不了。因此不可避免,再往上走时就会去了解并评估 “业务与产品”,关注目标的价值、路径的有效性与合理性。
在整个纵向的技术线上,最终汇总到顶点,会造成一种新的能力,也就是我对这条纵向线的 “掌控力”。到了这个 “点” 后,在这里能够横向发展,如图中,也就有了新的能力域:领导力和组织力。
一个个点,构成了基本的价值点,这些点串起来,就造成了更大的价值输出链条。在这条路上,你也会有一条属于本身的 “T线”,当这条线成型后,你的价值也将变得更大。
线的交织,将造成面。
当我试着把我最近六年多在电商客服和即时通信领域的工做画出来后,它就织就了下面(如图所示)的这个“面”。
我从最先的聚焦于某个业务点和技术栈,逐步延伸扩展到整个面。由于 IM 这个产品自己具有很深的技术栈,并且也有足够多元化的应用场景,这样整个面就能够铺得特别宽广。这也是为何我已经在这个面上耕耘了六年多之久。
但事实上,我并不掌握这个面上的每一个点,整个团队才会分布工做在整个面上,每一个个体贡献者也只会具体工做在这个面上的某个或某些点。但咱们须要去认清整个面的价值体系,这样才能更好地选择和切入工做的点,创造更大的价值。
而有时候,我也了解到有些程序员的一些说法是这样的:在相对传统的行业,作偏业务的开发,技术栈相对固定且老化,难度和深度都不高,看不到发展方向,指望找到突破口。若你也出现这样的状况,那就说明你从事的业务开发,其单个技术点的价值上限较低,而选择更新、更流行的技术,你就是指望提高单个技术点的价值,但单个技术点的价值是相对有限的。
反过来,若是很难跳脱出自身环境的局限,那么也能够不局限于技术,去考虑这些传统的业务价值,从技术到业务,再上升到用户的接入触达,考虑产品的场景、形态和人群是如何去为这些用户提供的服务、产生的价值。
当你对整个业务面上的价值点掌握的更多,能抓住和把握核心的价值链条,去为更广、更大的价值负责,那么你就能克服本身的成长发展困境,找到了另一条出路了。
同时,你也为本身织就了一张更大的领域之网。在整个面造成了一个领域,在这个面上你所能掌控的每条线就是你的体系。在这条线的 “点” 上,你解决具体问题,是作解答题;但在整个面上你选择 “线”,是作选择题。
体是经济体或其中的单元。
你的 “面” 附着在什么 “体” 上决定了它的价值上限。若是 “体” 在高速增加并造成趋势,你就可能得到更快的发展。
从电力时代到信息时代再到智能时代,互联网、电商、移动互联网,这些都是 “体” 的变化。今天互联网行业的软件工程师,他们面临的挑战和难度不见得比传统的机械或电力工程师更大,只不过他们所从事的 “点” 所属的 “面”,附着于一个快速崛起的 “体” 上,得到了更大的加速度。
“体” 的崛起,是时代的机遇。
总结来讲,就是:在领域知识体系中,“点” 是利器,“线” 是路径,“面” 是地图;而就咱们个体而言,“点” 是孤立知识点的学习掌握,而 “线” 是对这些点的链接,“面” 则构成了完整的知识体系网。
我的,创建好了知识体系,各方面都明了了,但有时作起事来却还会感受发挥不出来。
团队,牛人众多,但感受作出的事情效果却很通常。
这类问题的症结,多就出在从体系积累到输出转化的环节,它涉及两个实体的转化问题:
咱们从学会一个知识,到可以熟练应用其去输出能力,大概会经历以下过程:
因此,对于个体而言,刚创建起一个初步的知识体系,到能真正充分发挥出这个体系的力量,才仅仅是刚开始。
团队的强弱就由两方面决定,一是团队中全部个体造成的体系力量之和,二是由流程规则、工具系统和规范共识共同决定的转化效率。
没有流程规则,团队就不知该如何运转;缺少工具系统支撑,就无法监视和控制这个体系的运转效率与效果;而若是未能在团队造成共识并达成规范,团队就不可能“和谐”运转起来。
流程规则,创建其运行轨道;工具系统,支撑其高效运行;规范共识,造成了协调合奏。
从个体到团队,都是经过搭建体系来积蓄力量,再经过体系的运转来输出能力。
这里的共同思惟方式是:体系化、工具化。
这是一种标准的工程师思惟模式,巧妙的是它依然能够用在非工程的领域。体系,从工程维度看就像生产流水线,而体系的运转就是开动了生产流水线。搭建并调校出一条高转化输出能力的体系生产线,是真正具备核心竞争力和护城河的事情。
要想产生更大的成果,取得更大的成功,咱们须要找到放大个体或团队能力的杠杆支点。曾经,也许咱们也作出过好的产品,产生过好的结果,多是咱们能力不错,但也有可能只是运气不错。也就是说,好产品或好结果并不能成为支点,不断产出好结果或好产品的 “体系流水线” 才是。
咱们须要作的就是不断打磨这条流水线,提高转化输出好产品或好结果的效率与良品率。
个体和团队的强弱,一方面取决于咱们在体系中积蓄的力量的总量,另外一方面在于体系运做的转化输出率。体系决定了力量的总量,而转化决定了拳拳到肉的痛感。
在工做中,你应该碰到过一些这样的状况,有同事工做的时间不短,常常加班加点,工做也很勤勉,但往往晋升时却碰壁了。你可能还会为其仗义执言过。难道这真的只是不公平或者运气不佳吗?
其实这种状况,隐藏在背后更深层次的缘由是:工做陷入了循环与重复,今后中止了成长。
那么,你该如何在工做的同时,保持学习,并持续成长与进阶呢?我想,能够先从分析“程序员的工做本质是什么”开始着手。
程序员,工做以产出代码为主,从初级到高级,代码的负债属性逐步下降,资产属性不断提高,最终成为高品质的我的贡献者。而从完成到追求品质和完美的路上,不只仅是靠工做实践的经验积累,还须要有意识地持续学习。
持续学习,是让你突破不断循环怪圈的不二法门。
现现在是个信息爆炸与知识过载时代,因此学习必需要有选择性。而有选择性的学习就须要找出真正与你近期规划有关的学习路径。
假如你工做入职后公司使用 Java 为主要开发语言,而大学里你一直学习使用 C 或 C++ 编程练习,这里再假设你对计算机相关的基础性学科和知识掌握良好,好比:操做系统、数据库、网络、组成原理、编译原理、算法基础、数据结构等等。那么为了更好地完成工做任务,就须要你先主动学习 Java 编程语言、开发框架等编程技术相关的知识。
而对于学习语言自己我以为最高效的方法就是看一本该领域的经典入门书。好比,对于 Java 就是《Java 核心技术》或《Java 编程思想》,这是我称之为第一维度的书,聚焦于一个技术领域并讲得透彻清晰。
在有了该语言的一些实际编程和工程经验后,就能够看一些该领域第二维度的书,好比:《Effective Java》《UNIX 编程艺术》等,这些是聚焦于特定领域经验总结型的书,这类书最有价值的地方是其聚焦于领域的思想和思路。
而另一些技能,像 Java 开发工做须要大量使用的开源框架又该如何学习?张铁蕾曾写过一篇《技术的正宗与野路子》,其中介绍了如何用真正 “正宗” 的方式去学习并快速掌握这些层出不穷的开源新框架和技术。
这里就借用原文里的一张图(从新按统一风格绘制了下),每一项开源框架或技术相关的学习资料能够组织成下面这张金字塔形的结构图。
Tutorial(指南) 和 API Reference(应用编程接口参考) 层次的信息资料能帮助你快速上手开发,而 Spec(技术规范)和 Code(源代码)会帮助你深入地理解这门技术。而其余相关的技术书籍和文章实际上是做为一种补充阅读,好的技术书籍和文章应该有官方资料中未涵盖的特定经验或实践才算值得一读。
张铁蕾在文中如是说:
每当咱们接触一项新技术的时候,都要把手头的资料按照相似这样的一个金字塔结构进行分类。若是咱们阅读了一些技术博客和技术书籍,那么也要清楚地知道它们涉及到的是金字塔中的哪些部分。
我深觉得然,关于技术学习咱们不能简单地走马观花、复制粘贴、拿来主义,应是去创建你的知识 “金字塔”,造成体系结构,而每次的学习实践都是在不断完善你的 “金字塔”。
保持学习,不断成长,工做也许还在重复,但成长却在迭代上升,而后才会有机会面临更多可选择的路径。
程序员在攀登职场阶梯的道路上,走过了高级,后面还会有好些分叉路线。好比,转到脱离技术的纯管理岗或者技术管理岗。技术主管或架构师某种意义上都属于技术管理岗,不懂技术是作不了这两个角色的;或者继续沿着深度领域走,成为细分领域专家。
面对怎么选路的问题,我近些年学习的收获是这样的:选择走最适合实现我的价值的路。这就是个人基础选择价值观。
程序员的我的价值该怎么实现?该如何最大化?程序员做为我的贡献者,到了必定的熟练阶段,产出基本就稳定了,而技能的成长却呈现对数曲线的增加特征。
任何一个你所尝试提高的事情都有一个增加曲线,这个曲线有两种形态:
增加要么是对数形态,要么是指数形态,不多有线性的。
对数增加也意味着更容易退步,由于起步阶段是如此陡峭(见对数曲线示例图)。好比,学习一门新的技能,不持续去应用,很快就忘了,退回原点。那你应该如何应对这种“窘况”呢?
我建议你在起初的高增加阶段,学习和工做的关注点需放在养成长期习惯上,由于虽然开始增加很快,但须要当心一旦中止努力它可能会向下滑落,因此必定要慎之又慎,坚持造成本身的习惯和节奏。
而指数增加则意味着存在一个拐点的 “突变” 时刻。不少人指望线性增加,但实际倒是按指数增加的,这让许多人在拐点发生前就放弃了。好比,写做,在呈指数增加的领域内,处处都是半途而废者。因此,作本质是指数增加曲线的事情时,柔韧且持久的思惟模式是关键。
工做多年后,技能的增加就又进入了对数的平缓区域,一般其回报呈现递减趋势。也就是说你在其上花的功夫愈来愈多,但你感到愈来愈难产生洞察以得到新的收益。其难处在于找到新的突破点,从新回到曲线陡峭上升的部分。
这就是所谓成长的瓶颈,你要学会应用指数增加的方法,找到价值贡献的放大器。
做为程序员,你有可能很幸运地编写服务于数千万或数亿人的软件服务,这是产品自带的价值放大器。这样同是写一份代码,你的价值就是要比别人大不少。而转管理者或架构师,这些角色无非都是自带杠杆因子的,因此也有价值放大的做用。但我的可否适应得了这样的角色转换,又是另外一回事了。
到此我总结下今天的分享:
程序员的工做形式是编程产出代码,本质是完成需求,交付系统;但在工做中容易陷入不断完成的循环怪圈,要打破它,就须要你持续学习并有意识地关注交付代码的品质和属性,一方面提高了交付质量,另外一方面也得到了我的成长。
而学习的路在时间上是永远持续的,在空间上也是有路径的;有效的学习须要你关注学习曲线的变化,遵循有体系的技术学习框架,匹配适合当前阶段的学习资源。
有人把时间看做流水,任其从指间溜走,你却能够把它看做石头,把它们切割成用来建造大教堂的石材。
面对天然产生的天天一块的“时间原石”,每一个清晨就要肯定:把它切成什么样?由哪些石块组成?哪些是用来建造大教堂的石材?肯定后,将其压在心上,临睡前再记录下今天从心上搬走了哪些石块,以及花了多少时间。这样时间于我就真的变成了一块块石头,比轻烟、流水、薄雾更有形,更易抓住,也没那么容易悄悄地溜走了。
天天搬的石头,不必定都适合建造大教堂,而建造大教堂的时间也可能比咱们预期的要长。
位于梵蒂冈的圣彼得大教堂的建造过程先后历时 120 年,由米开朗基罗设计,而文艺复兴时期的大师基本都曾参与其设计。
“试一试” 的初衷原本就该是好的,它表达了一种好奇心,以及尝试走出温馨区的勇气。可是,“试一试”也可能演变成一种“坏”习惯。
这里,“试一试”的“坏”习惯的“坏”字之因此加上双引号,就在于它的出发点本是好的,但若是终点是模糊的,那就“坏”了。
试一试,须要有更清晰的终点。关于终点,你也能够从下面一些方面来考虑:
有时候,你由于现实工做须要,可能须要不停地在各类技术栈上切换。而不少技术可能过了那段时间,就再也用不上了,这样的技术尝试不免会让人感受惋惜。但经过我前面列出的关于 “终点” 的方面,再来分析下这个现实场景。
首先,你得面对现实,这样的技术尝试在现实中太多太多了,有时就是没得选择。当年,我也由于工做缘由,从客户端桌面编程的 VB、PB、Delphi 到 Web 编程的 JS 语言和一堆相关框架,再到后端编程的 C 和 Java,而现在不少当年学习的技能早已过期了。但这样的技术切换尝试,从 “收获结果” 的维度看仍是解决了当时的问题,知足了须要,得到告终果。
其次,若是以为仅仅一次性收获的结果,不值得你投入的时间和精力,那就能够从 “理解现实” 的角度去挖掘。这些知识,从学以至用的角度很快就过期了,但它们并非彻底孤立的,事实上计算机程序体系内的不少知识都不是彻底孤立的,它们都有相互的联系与链接点。
从理解的角度,这类技术切换的尝试事实上扩大了你的知识边界,尝试的也许是孤点,但你能够进一步找到它们的链接处,造成体系。由于不少现实的缘由,每一个人的起点和路径都不会同样,但咱们都是从某一点开始去慢慢摸索、尝试,最终走出一个属于本身的体系来的。
最后,当你有了本身的体系,也可能有了更多的尝试选择权,就能够体系为中心,去有选择地尝试对你更有意义或价值的事了。
总结来讲:
试一试,是走出温馨区的一次行动,这本是一个好的出发点,但若只有一个模糊的终点,那么它带来的更可能就是无谓的浪费。
试一试,不只要有一个好的出发点,还须要一个清晰的终点,在这个终点你可能:验证猜测、收获结果、体验过程、理解现实。而在起点和终点之间,你须要选择一条更现实的路径,经过不断地尝试,走出本身的体系。
试一试,本该是个好习惯,可别把它用坏了。
程序员的职业阶梯有5个:初级、中级、高级、资深和专家。
至于对不一样级别的定义,我选择了三个相对容易判断的维度:
通常刚从学校毕业的同窗,能够作事,可是须要较多的指导;要善于总结概括和分享。
能够独立作事,效率和质量有瑕疵;要善于总结概括与分享。
能独立负责一个大系统中的子系统或服务,能够高效率、高质量的独立作事,并能结合业务设计合理的解决方案;除了要善于总结概括与分享,还要进行方法论的沉淀。
资深,有深度和资历(即广度)两个层面,对应到职业生涯路线上,也有两个方向。
在偏基础研发、算法和特定技术复杂领域,会向 “资深工程师” 方向发展,属于深度优先。而在面向业务开发的领域,业务复杂度高于技术复杂度,则会向 “架构师” 方向发展,属于广度优先。
但不管深度仍是广度,进入这个级别即说明你在特定领域都已经具有了至关的积累。这时你是做为相关领域的专家,深度参与和支持团队项目,在领域内进行关键的技术判断和决策,进而帮助团队项目或产品加速成功。
在这个层次上,你面临的都是一些更复杂的、具有一些灰度(不是非此即彼,而是须要折中权衡)特性的问题,这时就须要你可以全方位、多层次、多角度地深刻理解问题,评估每种方案的收益、成本和潜在将来的长短时间影响等。
这个层次的影响方面,除了经验分享和方法论沉淀,还有产品和团队两个考虑维度:即便是作纯技术的东西,最终的影响也是经过技术产品来完成的;而另外一方面则是团队的梯队建设、结构调整与协做优化,决定了团队外在表现。这两个维度,前者可能资深方向侧重多一些,后者则是架构师方向须要侧重思考实践的。
总结一点:能够指导其余人高效率、高质量的作事,有两个方向,广度(架构师)和深度(资深工程师);经验分享和方法论沉淀,还要考虑产品和团队的因素。
某个领域绕不过去的人。
晋升的标准维度,可能有如下四项:
除以上 4 个大维度外,还有一项 “工做业绩” ,不属于现场技术评定的维度,直接来源于过去一年的工做业绩评价。每一个大维度会占据必定的比重,而后能够针对每一个大维度去打分。
更直观的标准是责任域和能力域。
责任域,就是你负责什么,这个相对容易识别。而能力域则过于抽象,很难清晰识别,在述职这样的形式中,最容易判断的仅仅是表达和沟通能力;至于业务和技术能力,虽不那么容易判断,但好在其有最好的展示形式:做品。
晋升的本质是承担更大的责任,而责任和能力是须要匹配的,晋升就是完成这样一种匹配关系的过程。
保持不断学习和提高能力,找到并承担起合适的责任域,那么后续的晋升并贴上一个相应的职级标签,就是一件天然而然的事情了。
核心,意味着最重要的,一切复杂的工程技术方案都是围绕着它来运转。
在深刻核心以前,咱们先讲一个电力行业的故事。虽然说电力项目我没作过,但电站大概的工做原理在中学物理课上就已经学过了,原理很简单。虽理论上是这么说,但现实中看到那些大规模的电站后,仍是感受很复杂的。
故事是这样的:记得有个给咱们上课的主讲老师是个须发皆白的老先生,进门后掏出一堆零件放在讲台上。一盏酒精灯、一个小水壶、一个叶片、一个铜光闪闪的小电机、一个小灯泡。老先生往壶里倒了些水,点燃酒精灯,不一下子水开了,从壶嘴里喷出了蒸汽,带动叶片旋转,而后小灯泡就亮了。
老先生说:“这就是电厂。若是烧的是煤炭,这就是燃煤电厂;若是烧的自然气,这就是燃气电厂;若是得到热能的方式是核裂变,这就是核电厂;若是带动叶片的能量来自从高处流向低处的水流,这就是水电厂。”
“大家或许会问:那咱们看到的电站怎么这么复杂?答案其实很简单,电站须要复杂系统的目的:一是为了确保安全(Safety),二是为了提升效率(Efficiency)。安全与效率的平衡,是全部工程技术的核心。”
听完这个故事,我觉着所谓 “大道至简” 大概就是这样的感受了。
安全,之于信息工程技术领域,包括了 “狭义” 和 “广义” 两个方面的安全范畴。以下图所示:
效率,从程序系统的角度看,一样也是从 “开发”“运维” 和 “运行” 三个方面来考虑。以下图所示:
开发效率,能够从 “个体” 和 “群体” 两个方面来看。
个体,就是程序员我的了,其开发效率除了受自身代码设计与编写能力的影响,同时还要看其利用工具的水平。
更好的源码管理工具与技巧能够避免无谓的冲突与混乱;
代码模板与开发框架能大幅度提高代码产出效率;
而持续集成工具体系则能有助于快速推动代码进入可测试状态。
群体,就是一个团队,其开发效率最大的限制常常是架构致使的。
若是你在一个工程项目上写过几年代码后,多半会碰到这样一种场景,代码库愈来愈大,而功能越改越困难。明明感受是一个小功能变化,也要改上好几天,再测上好几天,这一般都是架构的问题,致使了团队群体开发效率的降低。
之后端服务架构技术演进的变化为例,从单体应用到面向服务架构思想,再到现在已成主流的微服务架构实践,它最大的做用在于有利于大规模开发团队的并行化开发,从而提高了团队总体的效率。理想状况下,每一个微服务的代码库都不大,变化锁闭在每一个服务内部,不会影响其余服务。
微服务化一方面提高了总体的开发效率,但由于服务多了,部署就变复杂了,因此下降了部署的效率。但部署效率能够经过自动化的手段来获得弥补,而开发则无法自动化。另外一方面,每一个微服务都是一个独立的进程,从而在应用进程层面隔离了资源冲突,提高了程序运行的 “安全” 性。
运维效率,能够从 “检查”“诊断” 和 “处理” 三个方面来看。
一个运行的系统,是一个有生命力的系统,并有其生命周期。在其生命周期内,咱们须要按期去作检查,以获得系统的 “生命体征” 的多维度信息数据汇总,以供后续的诊断分析。
运行系统的 “体征” 数据是在实时变化的,并且数据来源是多层次的,从底层的网络、操做系统、容器到运行平台(如:JVM)、服务框架与应用服务。
当异常 “体征” 指标出现时,很难简单地判断到底哪里才是根本缘由,这就须要关联的因果性分析来得出结论,最后智能地发出告警,而不是被告警所淹没。
准确地诊断以后,才能进行合适地处理。和治病不一样,大部分的故障均可以经过常见的处理手段解决,极少存在所谓的 “不治之症”。而常见的线上处理手段有以下三类。
运行效率,关键就是提升程序的 “响应性”,如果服务还包括其 “吞吐量”。
程序运行的高效率,也即高响应、高吞吐能力,全部的优化手段均可以从下面两个维度来分类:
负载均衡器让更多的机器或进程参与服务,并行算法策略让更多的线程同步执行。异步化、无锁化和非阻塞的算法策略让程序执行得更快,缓存与缓冲让数据的读写更快。
有时在某些方面 “安全” 和 “效率” 之间是相互冲突的,但工程技术的艺术性就偏偏体如今这冲突中的平衡上。
打个比方,若是你的程序就跑在你开的车上,那么“安全” 特性会让你开得更放心,“效率” 特性会让你开得更带劲。