在IT领域摸爬滚打多年,从一个普通程序员到技术主管,到技术经理,再到技术总监,踩过很多坑、加过很多班,也背过很多锅,在提高自身技术能力与管理能力的同时,也一直在思考,做为IT技术从业者,如何作才能让咱们在这个领域里发展得更好,在年龄渐长时能从容应对所谓的“中年危机”,或者说IT技术人员的自我修养,应从哪些方面去努力。本文不是所谓成功人士的经验之谈(做者离本身理解的成功还有十万八千里),而是以一个技术人员的角度作的一些思考与总结,但愿能给已在这个行业或有志于从事这个行业的同僚以参考,与之共勉。
前端
学习能力应该是一我的最重要的能力之一,由于咱们绝大部分技能都须要经过学习得到,所谓天才,也不过是其学习效率或学习能力比通常人强而已。IT技术更新突飞猛进,不管是新版本的更新仍是新框架的产生,都以极快的速度在推动,使人眼花缭乱,目不暇接。所以,对IT技术人员来讲,持续学习、有选择地学习显得尤其重要。程序员
那么咱们平时应该怎么来学习,不断提高本身专业技能及综合能力呢,我总结了以下几种方式:面试
1. 从书本学,从网络学算法
如今技术书籍市场也是鱼龙混杂,参差不齐,而且价格都还不便宜。因此建议仍是有选择地购买技术书籍,通常原理介绍类书籍,如介绍JVM基本原理,数据库基本原理,设计模式、算法之类的书籍等等,具有必定的保值度,能够购买不断重温学习,而框架介绍类书籍,我的不建议购买,由于框架更新迭代通常都比较快,有时候你买的时候可能就已通过时了,不具有保值度,因此建议从官方文档、博客、公众号等渠道学习,也就是从网络学。从网络学最好的方式是从官方文档学,由于信息在传播过程当中是有损耗的,尤为是英文文档,各人语言、理解水平不一样,对原文的解析或多或少有些误差,官方文档最原始,损耗也最低。其次,从一些知名的优质的博客学,从公众号学,而且最好能从头至尾地看,了解学习做者总体的技术体系(那些东拼西凑、没有通过实践直接复制粘贴的最好就不要去看了)。数据库
2. 向先进学后端
三人行,必有我师焉,向比你厉害的人学。在一个团队中,总有那么几个能力比较强的,而能力强的人总有一些不同的特质与习惯,多与这些人交流,善于去发现总结别人好的特质与习惯,而后模仿,吸取,最终造成本身的特质与习惯。设计模式
3. 从复盘总结学服务器
任何一个组织或团队,总会存在这样那样的一些问题,若是一个团队没有任何问题,那这自己就是一个问题。对问题的处理不该该终止于解决,还应及时对其复盘总结,从中吸收经验与教训,避免一样的问题再次发生。我曾就任的某公司数据部门,在第一次对跨年晚会现场直播作实时数据统计与分析时,因缺少经验,产品运营部门给的预估并发用户数是50w左右,因而团队按这个预估作了压测,准备了对应的服务器,结果当晚直播并发在线用户数达到250w+,5倍还不止的压力直接把整条实时分析链路冲垮,而且搞笑的是当初准备的服务器磁盘大可能是几十G的配置,滚滚而来的日志不到几分钟就把磁盘给打满,几我的光是迁移日志文件保障数据不丢失就已经是手忙脚乱了,对实时分析服务只能撒手弃疗,所幸数据都保存了下来,过后补救也创造了咱们连续工做36个小时的记录。这是一次典型的失败教训,过后咱们复盘总结了几点,一是预估不足;二是没有准备应急方案;三是没有与其余部门协同起来,好比运维。在第二年年末时,咱们作了三倍于预估量的准备,而且每一个服务作好镜像,随时准备扩容,而且把运维部门协同起来做战,实时监视每项指标,顺利应对了同时在线五六百万用户的现场直播。所以,从对问题与失败的复盘总结中学,是进步提升的一个主要方式,团队如此,我的也如此。微信
4. 作好知识管理网络
闻道有前后,术业有专攻,对IT技术领域来讲,真正的全栈是极少的,样样精通通常就意味着样样平庸。因此,选好本身的技术方向,并深耕下去,通常IT软件技术领域的方向有服务端、WEB前端、移动端、大数据、人工智能等。在学习与工做的同时,对一些重点、难点及时作好记录。好记性不如烂笔头,不少人在上学阶段都有作笔记的好习惯,可是参加工做后,却把这个好习惯给丢了。对于IT技术人员, 天天大部分时间都对着电脑,因此能够采用一些笔记软件(如印象笔记、OneNote等)来对平时学习的一些知识点,遇到的一些问题及解决方案进行整理记录,便于回顾与查阅,也能够经过博客、公众号的形式,定时对本身的知识体系进行梳理,既巩固了本身的知识,又能给人以学习参考,何乐而不为。若是这二者都尚未的,赶忙去选一个从今天开始用起来吧。
所谓求甚解,就是理解事物背后的本质与根源,从而举一反三,触类旁通。好比你在某某博文中看到添加某个注解就能达到某某功能,你是直接拿来就用仍是会分析为何这么作就能达到效果;再好比某个程序崩溃了,你是直接重启处理仍是在有条件的状况下收集必要的数据分析缘由,或者在先保障程序服务可用以后再持续跟进定位。许多人都有过找人协助解决问题的经历,我也帮助过不少人定位处理过问题,但其中至关一部分人在你帮他解决问题以后,来一句“牛叉”,而后,就没有而后了。不会问这个问题出现的缘由是什么,不会问为何这么处理就没事了,不会问怎么来避免这个或这类问题,而后下次找你过去协助,你会发现可能又是相似的问题。我也见过不少这样的场景,线上服务故障了,某程序员经过重启服务恢复了,但不久后又故障了,因而再重启,以致于后面天天定时重启一下,来避免故障再出现,却历来没有想过去定位故障发生的缘由,可能会以为没有相似经验,不知道从何处入手,但经验都是积累的,没有人从一开始就能掌握全部技能。这些都是一种浮于表面,不求甚解的不良习惯。
怎么求甚解,最简单的方法就是多问几个为何,直至了解到某个问题或某个知识点的本源。 我曾与一个如今微软工做的研究生同窗一块儿跟随一家公司作项目需求调研,当时那家公司组织去黄山旅游,咱们就在黄山脚下的酒店里整理文档,晚上你们一块儿吃饭喝酒,回到房间的时候,我已经只能在椅子上趴着了,却发现我那同窗不急不慢地从包里拿出电脑,而后开机,而后,打开了Eclipse……后来了解到是他一直在思考解决一个问题,吃饭的时候突发灵感,因此回来就立刻试验一下。这个例子我并非说我那同窗酒后写代码的能力有多强,而是说优秀者之因此优秀,在于他们那种遇到问题力求甚解的习惯与品质。但另外一方面,求甚解并不意味着你要一头钻到底,花费大量功夫绞尽脑汁追溯到操做系统底层甚至硬件层次,由于毕竟工做不一样于科研,是须要有高效产出的。通常而言,你了解到框架设计的基本原理及关键源码,或问题产生的根本缘由与最优解决方案,防止同类问题再次发生便可。
衡量一个技术人员是否合格的标准我以为无外乎三个:有态度、有技术、有素养。这里我将态度放在第一位,责任感是态度的一个重要表现。技术人员的责任感表如今哪些方面呢,我认为也是三点,是否具备自我驱动力、是否具备契约精神、是否具备主动担当。自我驱动力就是把分配给你的任务真正当成本身的事情,保质保量定期去完成,主动去跟进你的依赖上游,主动跟团队反馈问题与进度,主动去学习提高技能与工做效率;契约精神就是对本身承诺的事情说到作到,若是有变更也能及时沟通反馈协商;主动担当就是敢于承担本身应当承担或者无人能承担的责任,为团队出谋划策,尽本身能力协助他人。作到这三点,就是一个有责任感的人,就是一个靠谱的人,这样的人就是不管是老板或上级,仍是同事都会信赖,尊重的人。
常常听到一些同行抱怨,在这里天天就是增删改查,没什么意思,也没什么成长。面对这种抱怨,我想说的是技术人员的视野不该该这么狭隘。任何一个Web项目,都会涵盖从产品定位、需求分析到系统架构设计、数据库设计、先后端开发、测试到部署上线、运行维护,其中涉及的每个环节都包含一本书都没法说清的内容,都有你能够去学习的东西。有些人可能会说,我就是个开发,你让我去管产品、架构、测试、运维的事?面对这种质问,我可能会说,那你接着去写增删改查吧。
我认为技术人员的价值,不在于你能写出多么优美的代码(固然不是说代码不须要写得好),也不在于你能设计出一个多么大而全高屋建瓴的架构,而在于你实实在在的解决问题的能力,在于你使用技术手段服务于业务的能力。增删改查以外,你能够了解的东西太多,好比你了解大家项目的总体架构吗,了解系统的部署方案吗,了解总体业务流程吗,了解全部的重点难点吗,若是都了解了,那你能找出现有各环节存在的问题吗, 能给出解决这些问题的具体方案吗。因此,不要抱怨只有增删改查了,延伸你的视野,从软件工程的角度而不仅是某个功能某个模块的角度来提高本身的认知与能力吧。由于只有延伸你的视野,拓宽你的知识面,才能提高你实实在在的解决问题的能力。若是你一直停留在这事不归我管的认知,那你的水平能力与发展空间也就基本止步于此了。
有人可能会说,你说的这么轻巧,我天天写代码都写不完,哪有那么多时间来学习、求甚解、延伸视野。对于这类同窗,可能须要反问下本身为何会一直这么忙,是技术水平与岗位不匹配仍是工做效率过低?经历过面试筛选的通常来讲技术水平与岗位应该仍是匹配的,那怎么来提升工做效率,我认为一个主要方法是提升专一度。读书的时候,你发现那些成绩好的,每每下课或放学都不会一直捧着书看,而那些一天到晚都捧着书看的,每每成绩都通常般,为何?由于成绩好的在学习的时候他能高度专一,心无旁骛,因此效率很高,而那些一天到晚捧着书看的不可能无时无刻都能集中注意力,由于人的精力是有限的,有可能一会听听音乐,一会放空下大脑,长此以往养成这种拖泥带水的习惯,想不低效都难。工做也同样。
说一个我本身的例子,我属于那种工做时候能高度专一的人,忙事情的时候可能一天下来水都忘了喝一口。临毕业时曾在一家德企实习,一块儿进来的有一位同济的同窗与一位复旦的同窗(这里没有任何学校偏见,纯属个例讨论),每周主管会给咱们三人分配同等工做量的任务,我通常两到三天并能完成且不须要加班,而那两位同窗却几乎天天加班却还经常完不成,最后经过我协助才定期完成。有几天我特地注意了一下他俩的工做状态,发现一会看看新闻刷刷微博,一会去冲杯饮料,戴着耳机听着音乐,不急不躁,悠然自在得很。这种工做状态,除非能力很是强经验很是丰富,能轻车熟路三下五除二把事情处理完,否则,想不低效都难。
所以保持高度的专一,是提升工做效率的有效方式。工做效率提升了,你才能有一些时间去学习去求甚解去延伸视野,从而提高能力促进工做效率的进一步提升,这是一个良性的循环;反之,工做效率提不高,你就没有足够的时间去学习提高,当任务过来的时候,只会愈来愈忙,这是一个恶性的循环。
对于不少IT技术人员来讲,技术管理是其职业发展的一个方向,尤为在国内环境中,很难有在40岁以上还能安心写代码的(除非你已经不须要靠工资生活了,写代码纯粹成了一种兴趣)。从一个普通程序员成长为一个技术管理者,除了技术能力,还要有必定的软实力,如沟通表达能力、组织协调能力、业务架构能力等。程序员广泛性格内敛,沟通表达的欲望与技巧相对欠缺,所以在平时的工做中,应尽量有意识地在这些方面去提升本身,与人沟通表达好一点,主动担当多一点,对业务了解深一点。机会永远青睐有准备的人,只有平时的不断积累,当机会降临时,你才有足够的能力与自信去迎接。
如何去寻找与把握技术管理方向发展的机会,通常而言,有以下几种途径:1. 去有潜力的创业公司;2. 去知名大企业镀金,而后跳槽到中小企业;3. 现有上级离职;4. 公司新开业务线;5. 本身创业。任何一种途径,都只是一种机会而已,可否把握一方面看机遇,另外一方面看本身的积累与准备。
失败者失败的缘由各有不一样,成功者的特质与习惯却大同小异。IT技术人员的自我修养,能够从持续学习,求甚解,责任感,延伸视野,高度专一,软实力等方面去提高。不积跬步无以致千里,只有沉下心来,一步一个脚印踏踏实实地提升、进步,才能在一个领域里扎下根基,脱颖而出,才能从容应对所谓“中年危机”。
以上,共勉。
本文发表于微信公众号:jboost-ksxy (一个不仅有实战干货的技术公众号,欢迎关注、交流,及时获取更新内容)
———————————————————————————————————————————————————————————————