龙空技术网

Java程序员的4个职业发展方向,该如何把握黄金5年?

撑伞的小朋友 1990

前言:

此时小伙伴们对“java职业发展方向”都比较注重,姐妹们都想要了解一些“java职业发展方向”的相关知识。那么小编在网摘上网罗了一些有关“java职业发展方向””的相关资讯,希望姐妹们能喜欢,大家一起来学习一下吧!

在Java程序界流行着一种默认的说法叫“黄金5年”,意思是说,一个Java程序员从入职的时候算起,前五年我选择直接影响着整个职业生涯的发展方向和薪资走向。

而这5年,也决定了一个程序员能否成为职业大牛的可能。那么,在这黄金5年,Java程序员如何做才能实现自我突破呢?

对初学者建议

首先,对尚未进入职场工作的在校生以及准备转行Java的同学的建议:

一定要从最基础的知识学起,学习Java基础的时候,应该尽量多动手写,写出来运行一下,会发现很多问题。

学完基础内容之后,对Java有一个基本的了解之后,不要着急着进入更高级的学习,尝试用Java语言写出一些简单的程序锻炼自己。

参加工作1-2年之间

在这段时间里,想必对Java已经有了一个较为深入的了解。

首先,要非常熟悉设计模式,日常要多看一些关于代码编写优化的书,提高自己的代码能力,能够写出一手优雅的代码;

其次,在工作过程中肯定接触过并发,应该更加深入地去了解并发的相关知识;

最后,要对所使用的框架和Java的类库有一定的研究,还需要去看一些JDK中的类的源码,包括自己日常所使用的框架的源码。

总而言之,这个阶段,需要做的是深入了解Java底层和Java类库,也就是JVM和JDK的相关内容。

参加工作3-4年之间

处于这个阶段,说实话很难再提升代码能力了,因为这个阶段的学习会比较多样化。

在前三年的工作中,相信或多或少都会接触一些其它的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等技术,你能精通任何一项,都将是你未来面试时巨大的优势。

因此,如果自己对某一项技术感兴趣,这时可以深入去研究,即使这项技术不一定会在工作时用到,但一定是相关的。

参加工作4-5年之间

到了这个阶段,应该遇到了所谓的“技术瓶颈期”了。不要急于提高自己的技术,此时更重要的是提高你的影响力。

可以尝试去一些知名公司提高你的就业背景;也可以发表一些技术文章去影响更多的人;还可以去Github创建一个属于自己的开源项目,打造属于自己的产品。

这个时候提高自己的影响力主要是可以给自己创造更多的机会,所以,这个阶段最大的任务是提高自己的影响力,为未来工作生涯做准备。

对于软件开发同学而言,首先要客观认识自身的情况,想清楚自己现在要什么、未来要什么,做好职业规划,从而选择不同类型的企业。

Java程序员职业发展规划和方向

走向架构师

程序员与架构师之间的主要区别是什么呢?

架构师,是Java开发人员非常向往的一个角色。架构师需要拥有完善和扎实的技术体系,具备较好系统分析和设计能力,丰富的项目研发经验。

架构师是一个漫长的积累过程,大部分架构师的年龄在35岁左右,这个阶段就是程序员的黄金期。

程序员要向一名架构师发展,需要进一步加强技能的修养。对于互联网公司来言,最重要的技能是对网络和分布式系统的理解,比较麻烦的是分布式系统,除了分布式,在现在大型互联网企业中,还需掌握高性能、深入浅出、性能调优、Spring、JVM等技术。

走向项目经理

当然,也有一些运气比较好的程序员,不但负责项目的设计工作,而且还负责项目的管理工作,对项目经理这个工作有一定的尝试。

因此,这类程序员可以审视一下自己,是否合适这项工作,如果自己对这种工作比较满意,而且具备项目经理的要求,则可以向项目经理这个方向发展。

项目经理的工作重点已经从编程转移到对人、对技术、对进度、对项目的管理,因此,项目经理必须要了解软件开发的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。

在日常的工作和生活中就得侧重锻炼这方面的能力,还要学习一些项目管理的知识,例如:PMP、CMMI、敏捷开发管理等。

从程序员到项目经理可以使项目经理更好地理解程序员在项目中的地位和作用,了解软件开发的各种规律性的东西,从而保证项目的正常完成。

而且,项目经理的收入和地位在公司里也是比较高的,因此,走向项目经理是程序员的另一个发展空间。

走向管理层

很多程序员希望自己能成为公司中的主管、或项目经理等管理人员,无论是收入还是地位都会相对高一些。

另外,还有一些程序员可能厌倦了日复一日枯燥而繁琐的编程工作,希望借助走向管理岗摆脱这种步步紧逼的工作状态。

当然,走向管理者就要求程序员要比一般人做更多的准备,做更多的转型工作。

由于软件公司的管理者不同于一般公司的管理者,专业能力越强,管理起来就越得心应手,没有专业能力的管理,遇到的问题很多,也很难解决。

所以,想要往管理者发展的程序员,一定要把编程、项目设计、项目管理等基础打好,这样转型到管理者成功率就会高一些,而且到时候也能更加得心应手。

Java程序员应该掌握的技术

通信协议

各个子系统之间要进行通信,必须要选择一种或多种通信协议,现代比较常见的是基于HTTP的协议。

所以,了解更多协议对于学习安全也有很大的帮助,比如MySQL和PostgreSQL的协议都有安全的设计。

序列化

系统之间通过网络传输或者存储到文件时,肯定只有一种格式,就是字符串。

要将复杂的数据结构与字符串之间进行转换,就需要用到序列化,简单的序列化如JSON和XML,稍微复杂些的有protobuf、thrift等。

需要了解所有这些序列化方式之间的优势和劣势。比如JSON和XML只能用于传递数据,而protobuf与thrift还可以用来做RPC协议,至少要确保每种序列化方式都自己尝试过hello world。

数据库

要形成自己的数据库选取风格,就需要先对自己常用的数据库有足够深入的了解。

对于关系式数据库,除了一般的Create、Query、Delete、Update操作外,还需要能自行建立索引、数据库的平行扩展、了解如何进行性能调试,以及了解常见查询操作的性能级别、常见的查询性能瓶颈点。

存储

需要关注的是每个目录下的文件数不应该太多,当一个目录下文件数(实际是inode数量,包括文件和目录)超过1000时,性能就很差了。

所以,建议将一个系统中要存储的对象ID做16进制,随后每2位16进制做成一级目录,这样可以确保每个目录下的文件数不会超过256个。现代云计算,如Amazon S3已经把存储的问题解决的很好了,如果可能,尽量用好。

应用框架

多注意了解自己关注方向的所有框架的优势和劣势,选择最适合自己的,而不是选择最新的。

接口

主要是指接口协议,或者RPC协议。系统之间进行RPC调用很常见,注意选择自己能熟练使用的,并且有所深入研究,并了解其常见的限制。

RESTful API就是个比较常见的选择,但是性能并不好,自己要对性能等参数有量化的了解,而不是简单的一句好或不好。短连接接口在三次握手时是串行操作,要了解其为何耗时。

除了要在如上的各种不可或缺的组成部分中有所了解,还要能清楚地知道一些常用系统模块的原理,并能够很深入的玩起来。

几个值得注意的方面:

1、HTTP服务器:常见的无非是nginx、apache,自己要能进行基本配置,包括静态文件、fastcgi转发等。

2、 关系式数据库:常见的如mysql、postgresql、sqlite,自己要对每一种都有深入的了解,可以做一遍常见操作的性能测试,并牢记于心。比如sqlite虽然并不需要走网络,但是实际查询性能很差。

3、NoSQL数据库:memcache、redis、mongodb等,近几年有很多,挨个了解其实现原理,以及各种常用操作的性能,当有需要时,随时能拿得出手来用。

4、云计算平台:几种常见的云计算平台的应用方式要有了解,如Google的资源方式和Amazon的VPS方式,每种云计算平台往往还会提供一大堆附加服务,比如可靠数据库,存储,缓存等,也要分别有所了解。

5、 加密/签名技术:常见如truecrypt、openssl、gnu pg、sha1、md5、scrypt等,了解各种加密/签名技术的安全性、字长等,并都能自己做过hello world。

关注“重庆千锋”,预约千锋14天免费试听课,名师大咖亲授最新技术,带你轻松入门IT,和专业的人一起学习,快速成长!

标签: #java职业发展方向