从事软件开发工作10年后的总结
我曾经写过一篇博客,从事软件开发工作5年后的总结,当时写这篇博客的目的就是整理一下自己从事软件开发工作5年以来所接触过的一些技术、工具,将这些内容形成条理化,便于回顾和查漏补缺。时间过的飞快,一下子又过了5年,正好到了10年左右的时间。也还是有必要写一篇这样的文章,对之前所经历的和自己的感想作个简要的总结。
一、职业发展的阶段
从职业发展的角度来看,一个人到了10年这个阶段,之前会经历这么几个阶段:
a) 1-2年(23岁)
职业发展初级阶段,这个阶段的技术小白会对IT技术充满好奇,但技术能力偏弱,对IT技术大牛非常崇拜,梦想着有朝一日也能成为技术大牛,是整个职业生涯的起步阶段,成长非常快。
b) 3年(26岁)
为什么单独把3年拿出来,原因是很多招聘信息要求都是3年左右的经验,为什么偏偏是3年呢?因为3年是一个坎,相对于从事1-2年的开发工作的,3年的从业者有了一些项目开发经验(一般已经做过两个以上的项目),能够独立完成一些难度不大的模块开发。他们是很多公司最需要的人,因为能干活,工资要求不是非常高(正所谓性价比较高),也正因为如此,所以这部分人群非常容易找到工作。
c) 4-5年(28岁)
这个时候的程序员,如果坚持下来的话,基本上都能成长为高级开发工程师。他们能够独立开发、设计一些有难度的系统并有一定的理论知识水平,是企业的技术中坚。
d) 5-8年(31岁)
很多程序员都有一个架构师的梦,这个阶段的程序员普遍会追求这个目标。他们除了更快更好的完成自己的系统开发工作,更多的会去关注性能、安全、系统架构等更高阶的技术问题。很多人在这个阶段,都能成长为架构师、技术专家。
e) 8-10年(33岁)
经过上述阶段的磨炼,不论是技术能力、工作(职场)经验还是自己的身体状态,都到了一个人的巅峰状态。很多人会在这个阶段自己创业、开公司,做培训,从而达到自己事业的巅峰。
二、如何学习新技术
听到不少人说IT技术更新太快了,学不动了。关于这个问题,我觉得并不是真的学不动了,而是有两个原因:一是因为懒,不想再花时间精力去研究,总想着,一招鲜吃遍天,这在日新月异的IT技术领域肯定不适用。不夸张的说,3个月不学习新技术新框架新思想,就落后了,如果1年不学,你就找不到工作了。二是能力不够,其实技术是有关联性的,很多知识也是相通的,之前学的技术只是掌握了招式,并没有掌握精髓,所以在遇到新技术的时候,又重新开始学习,当学新技术遇到困难时,自然就想打退堂鼓。但最本质的原因只有一个,那就是对IT技术的热爱程度不够,如果你真的把IT技术当做自己一生的事业,你不会不去学习这些所谓新技术的,再难学也会慢慢消化掉。
如果有扎实的基本功(计算机专业课程、各种编程技巧)和解决问题的能力(分析问题、找到对策、经验),学习新技术应该是一个很自然而然的过程。这里提出两种学习方法:
1、学以致用
学习是为了解决问题,并不是为了学习而学习。要将自己所学的知识和技术运用于实践,在实践中升华认识,从而获得满足感。
2、带着问题学
学习是有很高的时间成本的,学习要有目的性,不能盲目的学。即我想通过1个小时的学习解决什么问题,从而提高学习的效率。
三、10年后应该达到的能力
a) 看过不止200本技术书籍(实体书),电子书更是不计其数。网络上列出的经典书籍基本都翻阅过,并能结合工作实际提出自己独到的见解。
b) 做过N多的各种规模、不同类型的项目(不限于语言、软件)。不仅仅是工作上的,也有自己接的私活。人生有几个10年?所以一定要有自己的代表作、成名作。
c) 不限于自己的定位,即不再单纯的把自己定位于xxx软件工程师(接触过的语言不下20种,熟练使用的有10种,精通的至少有3种)。不再有编程语言的偏好,而是从编程模式、编译器原理等方面看待编程语言。
d) 对任何IT技术领域出现的新技术新思想保持敏感,新技术的学习在很短的时间内(比如一周学会iOS开发,10天入门单片机)就能上手运用。
e) 将IT技术分门别类,建立技术体系。纵向上从硬件、软件、网络、操作系统等方面深入,横向上从各种不同技术领域的应用入手。能够透过现象,深入分析其本质,即遇到问题时能够精确定位,快速解决问题。