对职业生涯的思考

从刚毕业到目前所在公司,差不多6年了,想想这六年里面,自己的能力和刚毕业比有了很大的提升,但是现在在什么能力上,我不知道,毕竟没有去过别的公司。最近也在思考自己未来,算是比较迷茫阶段。趁最近比较闲,顺便整理一下自己的职业路程

  • 刚毕业阶段---工作一年半

  刚毕业进入公司,公司的规模还算比较小的,那个时候觉得很开心,过的也比较充实,自己的任务就是写代码,读代码。在那个时候,自己的能力提升的非常快,毕竟在学校里面做的项目完全无法和公司的所在的项目类比。公司有一套自己的框架,在那个时候的我看来,写的非常不错。有很多比较好的编程规范:约定大于配置,强制树状依赖,多工程模型,但是也存在明显的问题,就是大量使用command 模式以及弱参数类型,导致接口上无法很直观定义入参和出参。那个时候第一次接触到正式项目流程,典型的瀑布式模型。这个阶段自己主要的精力就是学习公司的业务,阅读公司的框架的源代码,知道了很apache 开源项目,也是这个时候,能够熟练的使用一般的设计模式。那个时候公司的规模也比较小,经常也会写一下底层的工具类。架构也比较简单,没有所谓的分布式架构,基本上所有的业务逻辑在一个系统里面全部可以找到,排查问题也非常简单。

个人觉得,在这个阶段,是最适合学习的,尤其是自己的编码技能,也是在这个时候最容易提升的。刚毕业出来的时候,人还有一种拼搏的精神,这个时候相对来说各方面压力比较少,心也沉的住。比较适合学习编码。这个时候公司比较少,你会接触各个方面的知识,包括项目管理,项目部署,项目构建,数据库开发,这个阶段时间是最有效率的,不会有那么多邮件,流程,规范。

  • 工作一半年阶段--工作4年

 这个阶段就是慢慢的开始职业化的过程。从带项目开始,后来开始带人,带团队。这个时期主要偏重设计,所谓设计,就是根据产品整个业务流程,在目前业务框架和技术框架的限制下,给出具体的实现过程。这个阶段公司就开始越来越大了,系统越来越多,业务越来越复杂,慢慢的转变为分布式架构。目前想从一个系统了解到整个业务的流程,已经不太可能。随着拆分的系统越来越多,一个简单的业务流经的系统越来越多,团队配也就越来越重要。沟通和配合能力在这个阶段显的尤为重要。

随着公司的越来越大,工作上的邮件越来越多,流程越来越繁琐,规范越来越完善和变态,沟通和配合越来越多,投入在纯技术层面时间也就越来越少。同时由于工作的高度细化,有DBA,发布团队,开发环境配置团队,工具开发团队,前端团队,测试团队等等。你会发现你很难掌握全局。一个人越来越封闭与自己所负责的圈子里面。基础技术团队已经把所有的组件都封装好了,你只需要实现产品需求就可以了。慢慢的,业务开始主导你的职业生涯,你从一个程序员,会变成一个业务分析师,你花在业务分析上的时间慢慢的会超过编码时间。而公司的组织架构也慢慢的向业务架构看齐,业务架构慢慢不在coder。从这个角度上看,新技术的研究已经毫无意义,你需要的技术都有底层技术团队来实现,你只需要关于业务。这个时候应该是大多数业务导向型公司发展的必经阶段。

在这个阶段,是公司飞速发展的阶段。也是个人晋升最快的时期。记得 现在的yahoo总裁-玛丽萨·迈耶在Google的时候就问过佩奇:如何才能更快的晋升,佩奇回答:加入高速成长的公司。这个说法是相当有道理的,因为公司的业务发展需要更多的更高的职位,这个时候也是人生中最累的时候。但是只要你肯努力,你的机会会很大。可惜这个时候自己有点傻。也没有全力去拼。随着公司业务的发展,业务已经慢慢的趋于饱和了,已经不是打天下的时代,必然不会有太多的机会。而自己的两个朋友在公司发展的顶峰期离职,去了其他的公司,付出超出常人的努力,已经是技术二把手和产品总监了。所以晋升有两个关键因素:1 加入成长期的企业 2付出更多的努力。不过这个也是赌博,全靠眼光和运气。

  • 工作四年到现在

    如果说第二个阶段还会写代码,这个阶段基本上没有写过代码。这个阶段做什么,管人,管团队,开会,管自己的业务,规划业务的发展。当公司越来越大的时候,政治,官僚气息就开始了。在这个阶段,自己也是做的最没有意思的时候,开会讨论需求,一个很简单的需求涉及的利益就很大,开会就在不断的pk和吵架中进行。毕竟业务架构都是虚的,互相不认同,不像代码,好与坏一般都能够分的清楚。这个时候,一个人的技术实力已经显的不太重要了,重要的是沟通,pk,忽悠能力。能把业务方,别的业务团队,开发忽悠住就可以了,忽悠这个能力,也许需要更高一个层次。这个阶段的开发同学就很苦逼,被这种流程,协作,规范逼着,有各种各样的质量、缺陷指标。

这个时候抽象思维能力就比较重要,这也是忽悠的基础。这个往往在架构pk中起决定性作用。业务的规划需要更高的领域知识以及抽象思维能力,而去实现它,相对来说比较简单。所谓抽象,就是从众多的事物中抽取出共同的、本质性的特征,表现在编码方面,就是设计模式,表现在业务上,就是业务架构。由于业务架构和组织架构吻合,往往业务架构能力强一个组织所在话语权就会比另外一个组织强。

体现一个人技能主要通过三个维度:

高度:这个层面往往体现在规划能力,能够看到未来业务的发展,设计出相对合理的架构满足未来业务的快速扩展。这个阶段应该是少参与到具体的编码中去,应该是一个公司的CTO或者首席架构师角色。这个方面的能力比较虚,相对来说也是最难炼成的。

广度:就是知识领域的广度。反映在IT技能上,就是所掌握的领域,比如.net,java,数据库,web,前端等等。不一定每个领域都能够精通,但是至少都能了解,能够在面对问题的时候能够拿出一个切实可行的解决方案。对于跨领域方面,可能是你的沟通能力,管理能力等。

深度:在某一领域有很深入的了解,旺旺是一门具体的技术。比如js代码写的很精通,数据库知识非常丰富,精通linux操作系统底层。

深度->广度->高度,越往上,要求的抽象能力越高,越往下,要求细节知识越具体。一个人往往具备了以上三样,就是一个成功的大牛。

体现一个人价值的也可以主要通过以下五方面:

1 IT技能:这个就是具体的技能,这里就不列举了

2 领域知识:就是你所在行业领域的业务知识,包括证券,基金,电力等等。这个往往在行业领域是最有价值的,也是决定你主要身价的方面,当然前提是你不是做纯技术方面的工作。比如底层框架的开发,数据库管理员。

3 学习能力:这个也比较重要,毕竟IT这一行拼的是脑力而不是体力

4 人脉资源:这个专门指IT行业领域(我们一般找关系),遇到问题,你可以请教他们,相当于多个大脑

5 软技能:也就是沟通,协调,管理能力

你会发现,大多数情况下,你想职位越来越高,后面的比重会越来越大。

在学习方面,你要从学习具体知识到学习抽象知识,再把抽象知识应用到具体事物上。这就是术和道。反映在IT技能方面,就是原理和实现。学习一门技能,一般都从具体的用法开始,在开始学习其原理,然后知其原理,在反过来应用实践。除非是工作必须用到,我们应把更多的时间学习道,只有道,才是最保值的,也是最长久的,好比代码设计思想比代码实现过程更重要。

扯了这么多,回家去。推荐一本书《暗时间》,里面道比较多。呵呵

对IT技术开发职业生涯的思考的更多相关文章

  1. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  2. UWP开发的一些思考

    UWP开发的一些思考 领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中 ...

  3. Java技术开发程序员如果在2019年立足

    2019年的互联网环境相对以往来说要更复杂一些,互联网领域也正在经历从消费互联网向产业互联网转型的阵痛期.其实不少公司从2018年开始已经在陆续进行结构化调整,这些调整中的重要内容就是岗位调整,而岗位 ...

  4. IT技术开发人员获得成功的六大步骤

    IT技术开发人士成功的6大步骤 一个前辈在移民加拿大后写的文章,写得不错,值得借鉴,转来给大家看看,也给自己   序言:经过001多年的洗礼,认识了这里这么多的JJMMGGDD,前几天刚得到签证, 无 ...

  5. 跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用

    一.引言 上一篇博文分享了消息队列(MSMQ)技术来实现分布式应用,在这篇博文继续分享下.NET平台下另一种分布式技术——.NET Remoting. 二..NET Remoting 介绍 2.1 . ...

  6. 转:Google技术开发指南:给大学生自学的建议

    原文来自于:http://blog.jobbole.com/80621/ 技术开发指南 想要成为成功的软件工程师,必须拥有坚实的计算机科学的基础.本指南针对大学生,给出一条自学途径,让学生以科班和非科 ...

  7. 用web技术开发出原生的App应用的体会(1)

    本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,we ...

  8. 平安银行在开源技术选型上的思考和实践 RocketMQ

    小结: 1. https://mp.weixin.qq.com/s/z_c5D8fvHaYvHSczm0nYFA 平安银行在开源技术选型上的思考和实践 平安银行·吴建峰 阿里巴巴中间件 3月7日 随着 ...

  9. 未来-区块链-IBM:IBM 区块链技术开发社区

    ylbtech-未来-区块链-IBM:IBM 区块链技术开发社区 1.返回顶部 1. 开始学习 IBM Blockchain 101:开发人员快速入门指南 这篇快速入门指南适合不熟悉区块链技术,希望快 ...

随机推荐

  1. R-向量

  2. 【转载】.NET/C#-uploadify视频文件or大文件上传

    引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章: [Asp.net]Up ...

  3. Spring(二十):Spring AOP(四):基于配置文件的方式来配置 AOP

    基于配置文件的方式来配置 AOP 前边三个章节<Spring(十七):Spring AOP(一):简介>.<Spring(十八):Spring AOP(二):通知(前置.后置.返回. ...

  4. dubbo Framework pic

    dubbo Framework pic

  5. linux性能分析工具集(图示)

  6. 主成分分析(PCA)原理及推导

    原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...

  7. IncrediBuild 2.40 过期时间

    IncrediBuild 2.40的License有2个文件CoordLicense.dat和AgentLicense.dat,分别位于Coordinator和Agent安装目录下,这两个文件都是RS ...

  8. RobotFramework+Selenium2+Appium环境搭建

    转载:https://www.cnblogs.com/testway/p/7372326.html 装python 2.7 RobotFramework是python2 写的,图形界面使用的wxpyt ...

  9. C#.NET常见问题(FAQ)-如何让Listbox支持多选

    把SelectionMode改成MultiExtended   更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线 ...

  10. 【Linux】好玩的linux命令

    Linux里面有很多有趣的东西,这篇文章整理了一些.摘录一下: 1. sl 命令 你会看到一辆火车从屏幕右边开往左边...... 安装  $ sudo apt-get install sl 运行  $ ...