小李毕业后在一家公司做软件工程师,转眼间,一年多的时间过去了。
回想刚毕业那会,他怀着无比忐忑的心情进入了这家公司的技术部门。各种新奇的开发工具,叫不上名字的众多软件框架,庞大的代码库,井然有序的工作流程,都是小李以前在学校里不曾遇到过的,这让他感到了前所未有的压力。
于是,在开始的那半年里,小李就像一株久旱的禾苗遇到了雨水,拼命地吸收着工作中遇到的每一点知识。他学习新的编程语言,学习新的开发工具,学习调试和解bug的技巧,也学习处理各种棘手的业务逻辑。虽然每天工作都很累,却收获满满。
而现如今,小李俨然是一名很有经验的老手了。对于工作中一般的问题,他都能游刃有余地加以解决。无非是把现有的一些内部接口重新组合利用,或者按照原有的套路重新设计改进一番。
应付工作既然比以前轻松了许多,工作的压力也就显得没有那么大了。于是小李平常也能抽出时间来上上网,看看美剧,或者打打游戏,有时候也带着女友去看场电影或者球赛。
然而,时间长了,小李心里却隐隐多了一丝不安。他再也找不到刚开始时那种突飞猛进的爽快了,而且当对工作越来越熟悉之后,工作本身就开始变得枯燥、没意思。他决定花更多精力在自己的技术提高上,但却感觉无从下手,很难突破。每次在完成一个新的开发需求时,也只是不断重复旧有的东西而已。
成长曲线和四大阶段
以上小李的情况其实非常典型。很多技术人员在工作一两年之后,对工作周围的事情都驾轻就熟了,就可能会陷入第一个瓶颈期,从而难以突破。
为了能更清晰地分析技术成长过程中出现的各种情况,我们来对技术的成长曲线做一个总结。如下图:
技术的成长过程并非匀速线性的,而是分阶段的。每个高速增长的突破期后面,都跟着一个平缓的增长期,既可以称为舒适期,也可以称为瓶颈期。舒适期是针对过去而言的,而瓶颈期的说法则更着眼于未来。
一般来说,突破的过程,绝非轻而易举,而且有可能伴随着阵痛。它需要我们付出十分的心力,甚至承担一定的风险,做成一些原本超出自己能力极限的事情。而一旦过了突破期,各种技能都能在这个层次上融会贯通,从而给我们带来极大的自信和成就感。这个时候,处理同一层面的问题,逐渐变得轻车熟路,于是便进入了舒适期。
舒适期对人有一种天然的吸引力,只要我们待在这个阶段,就能获得最大的安全感,尽量少地遭受不确定性的折磨。很多人会选择待在这个区间,不再走出一步。
而另一些人则会对这一阶段的缓慢增长产生焦虑,于是舒适期变成了瓶颈期,从而引发下一轮的突破。以每一次大的突破为分界,我们可以将技术人员的成长粗略划分为四大阶段:新手、熟手、专家、宗师(开创者)。
新手经过半年到一年的工作经验,如果能成功适应这份工作,基本就能有所突破,变成一个熟手。熟手的特点是,能对现成的工具充分利用,胜任大部分日常工作。
在技术水平的表现上,他了解大部分的技术概念,但不一定理解真正的含义;在他的眼中,技术还无法自成体系,能理解到的知识架构还有所残缺。他解决问题时更多的是依靠经验而非缜密的逻辑。前面提到的小李,正处于这个阶段。
熟手再向上突破一层,则成为技术专家。专家在某个领域拥有足够全面、系统而深入的知识储备。对于技术上的疑难杂症,有能力深入到足够的层次,指出问题的症结所在;另一方面,专家还应该能够完成对具体问题的抽象,拥有“造轮子”的能力。在专家的眼中,技术的黑盒子被打开,知识点也不再是孤立存在的,而是相互枝连,构成一个完整的逻辑系统。
而真正达到宗师这一级别的,整个世上也寥寥无几。他们是真正的开创者,能够引领一个技术时代。什么样的人才配得上“宗师”这个称呼呢?比如Dennis M. Ritchie(C语言和Unix之父),再比如Linus(Linux内核的发明人)。
但就像前面的技术成长曲线图所描绘的,技术的成长阶段并没有一个上限。无论你处在哪个阶段,前面仍然存在无限的上升空间。
郭靖的进阶之路
近日细读金庸老爷子的《射雕英雄传》,忽然意识到,郭靖乃是金庸武侠中天资最为鲁钝的一位主人公。然而,郭靖从一个普通少年,终成长为一代大侠,这一过程,正好暗合了前面讲到的技术成长曲线。
郭靖从六岁开始,在蒙古大漠接受江南六怪传授武功,花了整整十年。后又得全真教掌教马钰传授内功一年有余,武功初入门径,获得了武学上第一个突破(熟手期)。处于这个阶段的郭靖,在武功上与同龄的杨康不相上下。
郭靖在武学上的第二个突破,起因于两个事件:一个是“北丐”洪七公传授他降龙十八掌,另一个是老顽童骗他背诵《九阴真经》。经过一番历练,在华山顶上,他已经拥有了分别与“东邪”和“北丐”过手三百招而保持不败的战绩。此时的郭靖,已经是高手中的高手了(专家)。这第二次突破,他只用了两年有余。
而郭靖的第三个突破,已经是在《射雕》之后了,终于成长为一代武学宗师。
为什么天资并不出众的郭靖,却能够接连取得突破呢?至少两个原因不容忽视。一个是勤奋,“人家练一朝,我就练十天”,所以根基打得好;另一个原因是他恰好学对了东西,降龙十八掌和《九阴真经》都是正宗武学,有幸学到自然是突飞猛进。
突破的要领
技术成长的关键在于突破。
然而,在技术成长的路上,越到后面,突破的难度就越大。大部分新手,只要保持足够的勤奋,总能达到熟手的程度。但很多人却止步于此,他们或流连于舒适期的诱惑不肯走出来,或长期卡在瓶颈期却找不到突破的出口。能够突破达到专家这一阶段的技术人员,已经有足够的能力成为各大公司技术部门的翘楚了。而要达到宗师的级别,则不光靠个人的努力,还需要时代的机遇才有可能。
那么,为了达到真正的突破,有哪些因素是我们需要重视的呢?
1根基
在接触一门新技术或者一个新的技术领域时,良好的基础有利于我们快速突破,抵达下一个阶段。不同技术之间,基础却是相通的。比如,对于计算机软件学科的基础知识——数据结构和算法。处于熟手期的程序员可能多半会认为它们在工作中根本没有实际作用。这是因为这个阶段的技术人员主要靠孤立的经验解决问题,一些基础的知识自然就用不上。
但对于技术专家层次的人来说,数据结构和算法却是在系统设计的很多方面发挥着潜移默化的作用。对于其它计算机基础学科,这个道理也同样适用。
再比如,现在人工智能和机器学习技术比较火,似乎全民都在学习。但要想学好这些技术,至少应该对微积分、线性代数、概率论、统计学等数学知识有比较扎实的基础,才能走得更远。
2外因,一个不疾不徐的环境
过于宽松的环境自然不利于人的进步,而盲目的紧张也不利于人的成长。
突破的过程需要付出巨大的精力,所以需要投入足够的时间从容地完成。我们大概都经历过这样一种场景:新产品上线在即,但还有很多问题需要解决。如果距离预定上线时间还有数天,那么我们可以相对从容地用比较优雅的方式来解决这些问题,并做一些长远的打算;但如果我们碰到的情况是,两个小时以后就要上线了,那我们多半会想一些歪点子来规避这些问题。
产品开发和技术优化,有时相辅相成,有时又互相矛盾。如果你所处的工作岗位,只是要求你不停地修改业务流程,盲目地试错,那么,可能公司根本没有给你留出技术突破的空间。
试想一下,一个主旨不清,功能点做了新的就扔了旧的,没有长远的目标,也不去持续优化体验的一个产品,又怎能有持续的生命力呢?
3正确(正宗)的学习资料
新手刚开始工作时,通常只要看一些入门教程(Tutorial),跑几个Demo,扫除了表面上的技术疑问点,再针对业务代码向老员工请教一番,基本就能开始工作了。然后一边编码,一边查阅所需要的API Reference,时间长了,经验和技巧足够多了,就自然变成熟手了。
而从熟手向专家的突破,则需要系统地去补习知识架构。技巧应该建立在对于普遍规则的理解之上。这里不得不提及Spec,它是涉及某项技术的完备的、系统的描述,包含该项技术涉及到的方方面面。
在奔向技术专家的路上,阅读Spec,是不可逾越的一道功课。《射雕》中郭靖的武功突破,很大程度上就是因为他阅读了《九阴真经》这份大大的Spec。当然,除此之外,你可能还需要通读重要部分的API Reference以及Source Code。
技术专家必然将原始文献(官网Spec、论文等)作为知识的第一来源。相反,跟着某人的博客去系统地学习某方面的技术,是要冒有很大风险的,还需慎重选择。
最后,要想成为技术上的一代宗师,则需要更高的抽象,做出完全创造性的工作。这份工作不仅仅是阅读Spec,解决具体的问题了,而是创作Spec,开创全新的天地。
4独立思考,不要自我设限
现在,很多人喜欢把技术好的人喊作“大神”。这自然是代表一种尊重,很多听的人也很受用。
但是,“神”的称呼暗含了一层意思:神是无法超越的,是普通人学不来的。这是人们在潜意识里划出的一道鸿沟。所以,我就不太喜欢类似这种称呼。
很多人碰到问题就喜欢找身边“大神”去问,但殊不知问再多问题,你仍然无法真正地有所提高。普通人和“大神”之间真正的鸿沟在于,能否独立思考和解决问题。
在追求技术成长的路上,不可能总是一帆风顺。我们不免有时沮丧,有时欣喜。
人生苦短,有人穷其一生,就是想要达到理想中的那个状态。但不管结果如何,当我们青春不再的时候,只求问心无愧。
经作者同意授权转载
来源:张铁蕾的订阅号(ID:tielei-blog)
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721