很多人都问,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对大家的职业生涯,有所帮助。
1、刚接触编程的时候,会觉得这是个很神奇东西,平淡的英文字母,再加上标点符号,竟然可以有这么大魔力。会觉得编程是很有自豪感的事情,因为在我们看来,它就是在创造,用这些跳动的字符,创造我们想要的效果。
我当时第一次看到编程的时候,就是这种感觉,我也不知道它是什么,如何做到的,但是就是感觉这很神奇,是一种不懂但是觉得很酷的感觉,然后就会着迷,开始想学。
2、开始学编程的选择,是没有选择的,因为什么都不懂,可能最先从哪里看到的,就模仿学什么,然后就走上了编程之路。
我最先接触的语言是Pascal语言,当时我不知道它是什么,只知道它叫这个名字。这门语言是在高中的时候,计算机书本上的,我学了一些,与其说是学,还不如是记,因为我没有练过,没有运行过。
3、走上了编程之路后,学习得方式主要看语法,这个是为了入门,但是并不太知道为什么会这样,但是能用,能模仿,这时候算是入门了。
入门后,会迫不及待的,使用实验各种效果,而且这些结果可能都不是自己写出来的,因为入门了,环境可以搭建,会运行,就会从很多地方拷贝一些代码,运行试试,然后感受成功后的自豪感。
我真正做出来东西的语言是VB,可以通过拖动生成界面,然后再填充需要的逻辑代码,就可以实现一些功能,比如MP3后缀名处理,HTML转TXT,那时候主要的目的,还是满足自己的需要,可以做一些酷的东西,并不是真的把它当成一门用于工作的技能系统的学习它,但是即使这样,已经够我在同学面前自豪了。
4、真正的在走向工作之前,这时候的学习,就开始系统性,毕竟要决定靠这个谋生了。这时候我们会看一些实战类的书籍,比如如何做网站,通过什么框架,用到哪些数据库、服务器等等,这时候基本上已经走向正路了。
但是这个时候,我们只是会用阶段,大部分人还不知道为什么,比如Spring框架,我们知道这么配置可以用,可以IoC反转,但是不知道怎么实现的,原理是什么。
这个时候最大的特点就是,给分配的工作都能做,不太会的,也可以通过Google、百度解决,大不了拷贝别人的一份,改改即可。
不管怎么样,现在已经初步具备框架系统体系了,可以谋生了。
5、随着工作时间的加长,经验的增加,你会渐渐的发展,很多常用的知识,自己只会用,但是并不懂,比如内存的分配,类的加载顺序,IoC的原理等等。
这时候大概是工作2年左右,如果快的话,可能会在工作第一年就意识到。这时候你会刻意的去买了一些讲解基础类的书籍,比如以前从来没有认真读完的《Thinking In Java》又开始重读了,并且读的很仔细,还会配合例子测试一下,俨然像一个刚入门的,但是你知道你很清楚你缺少的是什么,想从中学到什么。
然后你可能还会尝试买一些比较深入的书籍,比如讲解原理的,高级特性分析得等等,这时候你会逐步的在你现在的这门语言开始深入,要跨过不光会用,还要懂为什么的阶段,这个阶段是孤独的,因为大部分都是语言特性、原理的学习。
跨过去,就是鱼跃龙门,过不去,就是一个重复的螺丝钉。
6、恭喜你能来到这个阶段,你不光会用,还知道原理。这个时候可能你已经工作3年以上了,这时候你开始独立负责一些项目,设计都是你来做。这时候对你的考验不光是编程语言本身了,你还会考虑如何让你的项目具备更好的扩展性,如何提高性能,如何和数据库、服务器、缓存等配合,设计出更好的系统。
这时候你可能开始看设计模式,也会研究数据库的优化,可能还会对Nginx研究,以便更好的使用。
这时候的主要特征,就是抽象能力、复用能力、组件化、模块化的提升,同时可以和编程周边(数据库、服务器等)进行更好的协调和搭配,以完成自己的项目设计。
这就是成为高级工程师之路。
7、现在你来了第7段,这一段是资深工程师,是第6段的加强,并不会有质的突破。
在这个阶段,你会对抽象、架构的理解更深。开始积累更多的模块,形成一个SDK或者一个微服务,你开始深入研究安全,并发,监控。如果你是服务端,你可能会考虑服务双活甚至多活,考虑网关等等。
并且你可能已经开始跨多个端了解业务和架构设计,比如服务端和前端的分离,服务端和终端的协作,开始逐步的从全局(不限于自己的技术栈)思考问题、设计系统。
这个阶段,就是第6段的继续深入,积累,扩展,然后积累到可以突破到架构师。
8、现在你终于突破到架构师了,你的眼界不在局限在你的技术栈,其他的语言你可能不懂,但是你知道如何使用他们,甚至你自己开始学习另外一门语言。
你设计的系统,不会只考虑自己的技术栈,你可能会选择更合适的技术栈来实现。
你会跨语言、技术栈思考问题,并且可以提出好的方案,比如负责的一个项目,横跨服务端、Android、iOS和前端,你会通盘考虑,兼顾哥哥技术栈,协调大家完成这个项目。
你不光可能完成分配的任务,还能对现有的系统提出更多有建设性的建议,进行优化,改进,甚至提前积累我们业务需要的技术、平台、知识,为我们未来的使用和扩展做准备。
你还会熟悉业务,可能比其他更多的人对业务更熟悉,因为只有这样,才能设计出更适合业务的架构。
你会借助技术负责人的能力,帮你推动协调事情,让你的想法更好的开展和实现。
你的考虑角度,永远都是整个技术部门,而不是再局限在某个项目,某个组,某个技术栈。
那么恭喜你,现在你是一个合格的架构师了。
9、现在,到了第9段,现在可能你已经做了10年了,你发现,所有的一切技术,都是实现业务的工具。业务才是根本,技术是为业务服务的,如果买个系统就能达到目的,那么是不需要自己开发的。
这时候,你具备了再一次横向扩展的能力,可以横向到产品、市场、运营、设计、测试、运维等,这时候,你就不是一个单单的技术人了。
如果有一个称呼的话,可以是技术总监、技术VP等等。
10、以上9段,是我结合自己10多年的从业经验,总结的技术人员成长的9段位,其中第5段是比较重要的,也是一个槛,第6,7段是一个积累的阶段,也是培养抽象、架构能力的阶段,这两个阶段,决定了你是否可以到第8段的架构师,所以第8段也是一个槛。
有些人,可能5年多就可以到第8段,但是可能需要10年才能到第9段,这是一个非常困难的过程,需要长期的积累,思想的蜕变,才能成长到第9段。
从第6段开始,你就不能只顾自己了,要更多的考虑协调、协作、体系、多角度。只有做的事情是让整个团队受益的,才能逐渐的突破第7段,进入第8段的架构师。
每一步,都踩实,多思考、多学习,在每个段位,都做一些超出这个段位的事情,很自然的就进入了下一个段位。