程序员从开始选择到坚持下去,工作了六年对一个程序员意味什么?在职位上:高级开发工程师?架构师?技术经理?or ... ?在能力上:各种编码无压力?核心代码无压力?平台架构无压力? or ... fuck?看着这些问号都心累。相同六年,不同程序员却走在了不同的路线,有些能在六年成为架构师,有些却还是程序员,不是工作年限加长而已,那么,六年你迷惘了吗?又走到了那个十字路口?
毕业六年,从北京到上海到硅谷,从国内互联网公司外企,看到了公司好的地方和坏的地方,这里只是根据自己的经历写一些大方向选择建议,仅供参考。
第一、合理的职业规划
什么是职业规划—-就是你短期或者长期的一个职业计划!大道理不讲,咱简单点。先问你几个问题:
a.你工作几年了,你愿意一直和新入行的新手一样就是个简单的程序员吗?
b. 你愿意一直写代码,而不关心其他吗?
c. 一个项目的前期需求,设计,后期部署维护,领导找到你,你说咱搞不定,行吗?
程序员不是敲代码的机器。第一年太多东西不懂,你可以一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;但是第二年,你还是这样吗?不可能的,一年的经验你完全可以入行了,是时候该学习怎么进行需求分析,怎么设计数据库,怎么写各类文档,怎么写更好的代码?这是高级程序员的要求!
第二、行业背景很重要
行业背景非常重要;工作3年后必须确定自己的行业背景,比如一直从事电信行业,一直从事银行项目,一直从事ERP行业等等。
一个程序员不可能是一直写代码的,就是写代码也要知道业务逻辑,满足什么需求;俗话说隔行如隔山,每个行业的业务都不一样,甚至差别很大,比如你一直从事流媒体的研究,让你跳槽到一家银行项目,完了,一切从头学吧,以前的行业经验都用不上了;而且,一个公司公司招人,就是希望找到那些很容易上手,不需要培训业务很久的程序员;频繁跳槽的朋友,一定要注意这点;
一直在一个行业呆久了,就可以成为这个行业的专家;我们可以经常看到,一个项目组的某个leader,代码写的一般,但是却可以跟客户流畅的沟通,控制着新需求的提出,bug的修正等等;而客户也很愿意跟他打交道,因为那些老的项目只有他能维护,他甚至熟悉系统的每一张表结构——-可想在这个行业呆的时间有多久啦。
第三、别以上班太忙没时间学习为借口
很多人认为自己没有成为技术大牛并不是自己不聪明,也不是自己不努力,而是中国的这个环境下,技术人员加班都太多了,导致自己没有额外的时间进行学习。
实际上的做法正好相反:首先我们应该在工作中学习和提升,因为学以致用或者有实例参考,学习的效果是最好的;其次工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习。
对程序员来讲,开发思想、架构、代码就是财富,软件的价值在于重复利用,而不是每个东西,都从头开发。有些模块在很大程度上有一定的相似性,例如业务逻辑上都需要某个查询字段、显示某些信息,操作上都涉及到数据的增删改查。这种重复的工作无形中增加了开发工作量。xjr快速开平台正好解决了这方面的问题,xjr快速开发平台是开发人员以某种编程语言或者某几种编程语言(比如:目前流行的多种web技术,包括springboot, JPA,Druid, Activiti,Lombok,swagger,poi,WebSocket,Jquery,BootStrap, maven,Jenkins 等等 )为基础,将各种需要的功能封装在不同的层中,具大家调用而开发出来的一个软件。基础简单的功能交给它。可以花更多时是来学习新知识,不断提升自我。
Java程序员的工作2-5年成长路线可以以下方面来。
一、阅读源码
深入的Java学习,经典源码阅读不可少。
二、分布式架构
随着业务越来越复杂,数据量越来越大,并发量越来越大,单体的架构模式显然再也无法对应,作为Java后端架构师,高并发+高可用+海量数据的分布式架构体系,是必不可少的。
三、性能优化
作为后端Java技术专家,解决性能问题才真正体现一个架构师的功力。只有深入学习JVM底层原理,Mysql底层优化以及Tomcat调优,做到知其然,知其所以然。