对IT技术开发职业生涯的思考
对职业生涯的思考
从刚毕业到目前所在公司,差不多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技术开发职业生涯的思考的更多相关文章
- 领域驱动和MVVM应用于UWP开发的一些思考
领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...
- UWP开发的一些思考
UWP开发的一些思考 领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中 ...
- Java技术开发程序员如果在2019年立足
2019年的互联网环境相对以往来说要更复杂一些,互联网领域也正在经历从消费互联网向产业互联网转型的阵痛期.其实不少公司从2018年开始已经在陆续进行结构化调整,这些调整中的重要内容就是岗位调整,而岗位 ...
- IT技术开发人员获得成功的六大步骤
IT技术开发人士成功的6大步骤 一个前辈在移民加拿大后写的文章,写得不错,值得借鉴,转来给大家看看,也给自己 序言:经过001多年的洗礼,认识了这里这么多的JJMMGGDD,前几天刚得到签证, 无 ...
- 跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用
一.引言 上一篇博文分享了消息队列(MSMQ)技术来实现分布式应用,在这篇博文继续分享下.NET平台下另一种分布式技术——.NET Remoting. 二..NET Remoting 介绍 2.1 . ...
- 转:Google技术开发指南:给大学生自学的建议
原文来自于:http://blog.jobbole.com/80621/ 技术开发指南 想要成为成功的软件工程师,必须拥有坚实的计算机科学的基础.本指南针对大学生,给出一条自学途径,让学生以科班和非科 ...
- 用web技术开发出原生的App应用的体会(1)
本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,we ...
- 平安银行在开源技术选型上的思考和实践 RocketMQ
小结: 1. https://mp.weixin.qq.com/s/z_c5D8fvHaYvHSczm0nYFA 平安银行在开源技术选型上的思考和实践 平安银行·吴建峰 阿里巴巴中间件 3月7日 随着 ...
- 未来-区块链-IBM:IBM 区块链技术开发社区
ylbtech-未来-区块链-IBM:IBM 区块链技术开发社区 1.返回顶部 1. 开始学习 IBM Blockchain 101:开发人员快速入门指南 这篇快速入门指南适合不熟悉区块链技术,希望快 ...
随机推荐
- 原:wireshare使用技巧收集
/data/local/tcpdump -p -vv -s 0 -w /sdcard/ThinkDrive.pcap 先抓一个pcap的包. 1. 查看所有的链接与流量 统计->对话 这 ...
- 模拟日历计算 poj1008
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 69932 Accepted: 21524 D ...
- How to duplicate the records in a MongoDB collection
// Fill out a literal array of collections you want to duplicate the records in. // Iterate over e ...
- OpenGL ES3 非常好的系列文章
OpenGL ES3 非常好的系列文章: OpenGL-ES 3.0学习指南(五)--EGL基础 NDK开发OpenGL ES 3.0(二)--初见GLES,第一个三角形 NDK开发OpenGL ES ...
- 解决input框中加入disabled="disabled"之后,改变字体的颜色(默认的是灰色)
在input框中加入disabled="disabled"之后,字体默认的就变成灰色了 解决方案 input[disabled]{color:#fff;opacity:1} dis ...
- C#.NET常见问题(FAQ)-如何让文本框textbox内容限制为数字
//限制文本框的输入 private void txtQuestionScore_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyCha ...
- jQuery 发送验证码倒计时按钮 复制代码
<!DOCTYPE html> <html> <head> <title></title> <script src="../ ...
- 让你的ASP.NET虚拟主机也支持子网站
现在asp.net虚拟主机一般都可以绑定多个域名,但是通过这几个域名打开的页面都一样.如何使绑的这几个域名分别打开不通的页面(即实现子网站的功能)呢? 其实很简单,只需4个步骤: 1)给虚拟主机 ...
- xampp 教程
xampp教程1 使用安装包进行安装 (目前有三种可供选择下载的XAMPP for Windows: 安装包 简单且安全:XAMPP 的便捷安装程序.) 使用安装包来安装XAMPP是最简单的方法. ...
- Linux文件系统操作
1:查看磁盘使用情况 df [-选项] 目录名 2:查看目录下文件大小 du 目录名称 3:实体链接 创建inode产生一个新文件名,链接到一个已有的文件. 限制:不能垮文件系统进行实体链接:不能链接 ...