从刚毕业到目前所在公司,差很少6年了,想一想这六年里面,本身的能力和刚毕业比有了很大的提高,可是如今在什么能力上,我不知道,毕竟没有去过别的公司。最近也在思考本身将来,算是比较迷茫阶段。趁最近比较闲,顺便整理一下本身的职业路程前端
刚毕业进入公司,公司的规模还算比较小的,那个时候以为很开心,过的也比较充实,本身的任务就是写代码,读代码。在那个时候,本身的能力提高的很是快,毕竟在学校里面作的项目彻底没法和公司的所在的项目类比。公司有一套本身的框架,在那个时候的我看来,写的很是不错。有不少比较好的编程规范:约定大于配置,强制树状依赖,多工程模型,可是也存在明显的问题,就是大量使用command 模式以及弱参数类型,致使接口上没法很直观定义入参和出参。那个时候第一次接触到正式项目流程,典型的瀑布式模型。这个阶段本身主要的精力就是学习公司的业务,阅读公司的框架的源代码,知道了很apache 开源项目,也是这个时候,可以熟练的使用通常的设计模式。那个时候公司的规模也比较小,常常也会写一下底层的工具类。架构也比较简单,没有所谓的分布式架构,基本上全部的业务逻辑在一个系统里面所有能够找到,排查问题也很是简单。java
我的以为,在这个阶段,是最适合学习的,尤为是本身的编码技能,也是在这个时候最容易提高的。刚毕业出来的时候,人还有一种拼搏的精神,这个时候相对来讲各方面压力比较少,心也沉的住。比较适合学习编码。这个时候公司比较少,你会接触各个方面的知识,包括项目管理,项目部署,项目构建,数据库开发,这个阶段时间是最有效率的,不会有那么多邮件,流程,规范。linux
这个阶段就是慢慢的开始职业化的过程。从带项目开始,后来开始带人,带团队。这个时期主要偏重设计,所谓设计,就是根据产品整个业务流程,在目前业务框架和技术框架的限制下,给出具体的实现过程。这个阶段公司就开始愈来愈大了,系统愈来愈多,业务愈来愈复杂,慢慢的转变为分布式架构。目前想从一个系统了解到整个业务的流程,已经不太可能。随着拆分的系统愈来愈多,一个简单的业务流经的系统愈来愈多,团队配也就愈来愈重要。沟通和配合能力在这个阶段显的尤其重要。程序员
随着公司的愈来愈大,工做上的邮件愈来愈多,流程愈来愈繁琐,规范愈来愈完善和变态,沟通和配合愈来愈多,投入在纯技术层面时间也就愈来愈少。同时因为工做的高度细化,有DBA,发布团队,开发环境配置团队,工具开发团队,前端团队,测试团队等等。你会发现你很难掌握全局。一我的愈来愈封闭与本身所负责的圈子里面。基础技术团队已经把全部的组件都封装好了,你只须要实现产品需求就能够了。慢慢的,业务开始主导你的职业生涯,你从一个程序员,会变成一个业务分析师,你花在业务分析上的时间慢慢的会超过编码时间。而公司的组织架构也慢慢的向业务架构看齐,业务架构慢慢不在coder。从这个角度上看,新技术的研究已经毫无心义,你须要的技术都有底层技术团队来实现,你只须要关于业务。这个时候应该是大多数业务导向型公司发展的必经阶段。web
在这个阶段,是公司飞速发展的阶段。也是我的晋升最快的时期。记得 如今的yahoo总裁-玛丽萨·迈耶在Google的时候就问过佩奇:如何才能更快的晋升,佩奇回答:加入高速成长的公司。这个说法是至关有道理的,由于公司的业务发展须要更多的更高的职位,这个时候也是人生中最累的时候。可是只要你肯努力,你的机会会很大。惋惜这个时候本身有点傻。也没有全力去拼。随着公司业务的发展,业务已经慢慢的趋于饱和了,已经不是打天下的时代,必然不会有太多的机会。而本身的两个朋友在公司发展的顶峰期离职,去了其余的公司,付出超出常人的努力,已是技术二把手和产品总监了。因此晋升有两个关键因素:1 加入成长期的企业 2付出更多的努力。不过这个也是赌博,全靠眼光和运气。数据库
若是说第二个阶段还会写代码,这个阶段基本上没有写过代码。这个阶段作什么,管人,管团队,开会,管本身的业务,规划业务的发展。当公司愈来愈大的时候,政治,官僚气息就开始了。在这个阶段,本身也是作的最没有意思的时候,开会讨论需求,一个很简单的需求涉及的利益就很大,开会就在不断的pk和吵架中进行。毕竟业务架构都是虚的,互相不认同,不像代码,好与坏通常都可以分的清楚。这个时候,一我的的技术实力已经显的不过重要了,重要的是沟通,pk,忽悠能力。能把业务方,别的业务团队,开发忽悠住就能够了,忽悠这个能力,也许须要更高一个层次。这个阶段的开发同窗就很苦逼,被这种流程,协做,规范逼着,有各类各样的质量、缺陷指标。apache
这个时候抽象思惟能力就比较重要,这也是忽悠的基础。这个每每在架构pk中起决定性做用。业务的规划须要更高的领域知识以及抽象思惟能力,而去实现它,相对来讲比较简单。所谓抽象,就是从众多的事物中抽取出共同的、本质性的特征,表如今编码方面,就是设计模式,表如今业务上,就是业务架构。因为业务架构和组织架构吻合,每每业务架构能力强一个组织所在话语权就会比另一个组织强。编程
从设计模式
体现一我的技能主要经过三个维度:架构
高度:这个层面每每体如今规划能力,可以看到将来业务的发展,设计出相对合理的架构知足将来业务的快速扩展。这个阶段应该是少参与到具体的编码中去,应该是一个公司的CTO或者首席架构师角色。这个方面的能力比较虚,相对来讲也是最难炼成的。
广度:就是知识领域的广度。反映在IT技能上,就是所掌握的领域,好比.net,java,数据库,web,前端等等。不必定每一个领域都可以精通,可是至少都能了解,可以在面对问题的时候可以拿出一个切实可行的解决方案。对于跨领域方面,多是你的沟通能力,管理能力等。
深度:在某一领域有很深刻的了解,旺旺是一门具体的技术。好比js代码写的很精通,数据库知识很是丰富,精通linux操做系统底层。
深度->广度->高度,越往上,要求的抽象能力越高,越往下,要求细节知识越具体。一我的每每具有了以上三样,就是一个成功的大牛。
体现一我的价值的也能够主要经过如下五方面:
1 IT技能:这个就是具体的技能,这里就不列举了
2 领域知识:就是你所在行业领域的业务知识,包括证券,基金,电力等等。这个每每在行业领域是最有价值的,也是决定你主要身价的方面,固然前提是你不是作纯技术方面的工做。好比底层框架的开发,数据库管理员。
3 学习能力:这个也比较重要,毕竟IT这一行拼的是脑力而不是体力
4 人脉资源:这个专门指IT行业领域(咱们通常找关系),遇到问题,你能够请教他们,至关于多个大脑
5 软技能:也就是沟通,协调,管理能力
你会发现,大多数状况下,你想职位愈来愈高,后面的比重会愈来愈大。
在学习方面,你要从学习具体知识到学习抽象知识,再把抽象知识应用到具体事物上。这就是术和道。反映在IT技能方面,就是原理和实现。学习一门技能,通常都从具体的用法开始,在开始学习其原理,而后知其原理,在反过来应用实践。除非是工做必须用到,咱们应把更多的时间学习道,只有道,才是最保值的,也是最长久的,比如代码设计思想比代码实现过程更重要。
扯了这么多,回家去。推荐一本书《暗时间》,里面道比较多。呵呵