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

b1202700166e5aca1bb1a9b1e6eae93a.png

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

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

8167e300a189745de8751a3349608a69.png

对初学者建议

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

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

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

ee4e98bda76637521837bf103e87d026.png

参加工作1-2年之间

在这段时间里,想必对Java已经有了一个较为深入的了解。
首先,要非常熟悉设计模式,日常要多看一些关于代码编写优化的书,提高自己的代码能力,能够写出一手优雅的代码;
其次,在工作过程中肯定接触过并发,应该更加深入地去了解并发的相关知识;
最后,要对所使用的框架和Java的类库有一定的研究,还需要去看一些JDK中的类的源码,包括自己日常所使用的框架的源码。
总而言之,这个阶段,需要做的是深入了解Java底层和Java类库,也就是JVM和JDK的相关内容。

参加工作3-4年之间

处于这个阶段,说实话很难再提升代码能力了,因为这个阶段的学习会比较多样化。
在前三年的工作中,相信或多或少都会接触一些其它的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等技术,你能精通任何一项,都将是你未来面试时巨大的优势。
因此,如果自己对某一项技术感兴趣,这时可以深入去研究,即使这项技术不一定会在工作时用到,但一定是相关的。

参加工作4-5年之间

到了这个阶段,应该遇到了所谓的“技术瓶颈期”了。不要急于提高自己的技术,此时更重要的是提高你的影响力。
可以尝试去一些知名公司提高你的就业背景;也可以发表一些技术文章去影响更多的人;还可以去Github创建一个属于自己的开源项目,打造属于自己的产品。这个时候提高自己的影响力主要是可以给自己创造更多的机会,所以,这个阶段最大的任务是提高自己的影响力,为未来工作生涯做准备。
对于软件开发同学而言,首先要客观认识自身的情况,想清楚自己现在要什么、未来要什么,做好职业规划,从而选择不同类型的企业。

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

走向架构师

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

架构师,是Java开发人员非常向往的一个角色。架构师需要拥有完善和扎实的技术体系,具备较好系统分析和设计能力,丰富的项目研发经验。架构师是一个漫长的积累过程,大部分架构师的年龄在35岁左右,这个阶段就是程序员的黄金期。
程序员要向一名架构师发展,需要进一步加强技能的修养。对于互联网公司来言,最重要的技能是对网络和分布式系统的理解,比较麻烦的是分布式系统,除了分布式,在现在大型互联网企业中,还需掌握高性能、深入浅出、性能调优、Spring、JVM等技术。

64bd9beb4cdbb3ed5f3461f9be2c2b39.png

走向项目经理

当然,也有一些运气比较好的程序员,不但负责项目的设计工作,而且还负责项目的管理工作,对项目经理这个工作有一定的尝试。
因此,这类程序员可以审视一下自己,是否合适这项工作,如果自己对这种工作比较满意,而且具备项目经理的要求,则可以向项目经理这个方向发展。
项目经理的工作重点已经从编程转移到对人、对技术、对进度、对项目的管理,因此,项目经理必须要了解软件开发的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。在日常的工作和生活中就得侧重锻炼这方面的能力,还要学习一些项目管理的知识,例如:PMP、CMMI、敏捷开发管理等。
从程序员到项目经理可以使项目经理更好地理解程序员在项目中的地位和作用,了解软件开发的各种规律性的东西,从而保证项目的正常完成。
而且,项目经理的收入和地位在公司里也是比较高的,因此,走向项目经理是程序员的另一个发展空间。

走向管理层

很多程序员希望自己能成为公司中的主管、或项目经理等管理人员,无论是收入还是地位都会相对高一些。
另外,还有一些程序员可能厌倦了日复一日枯燥而繁琐的编程工作,希望借助走向管理岗摆脱这种步步紧逼的工作状态。
当然,走向管理者就要求程序员要比一般人做更多的准备,做更多的转型工作。
由于软件公司的管理者不同于一般公司的管理者,专业能力越强,管理起来就越得心应手,没有专业能力的管理,遇到的问题很多,也很难解决。
所以,想要往管理者发展的程序员,一定要把编程、项目设计、项目管理等基础打好,这样转型到管理者成功率就会高一些,而且到时候也能更加得心应手。

6bbb2d91729eec85657e85bca6226214.png

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。


原作者:Java后端进阶
原文链接:Java程序员的4个职业发展方向,该如何把握黄金5年?
原出处:公众号

18985de21cab749368900e9be98decc9.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 类变量(属性)和实例变量(属性

DAY 4. 类变量(属性)和实例变量(属性) 类变量:在所有类的实例之间都可以共享的变量,类变量在所有对象间只保留一份 在类体中定义类的所有实例对象都可以访问类变量类变量只能由类修改,实例对象…

MySQL 关联表批量修改(数据同步)

update table1 t1 ,table2 t2 set t1.field1 t2.field2 where t1.id t2.id 转载于:https://www.cnblogs.com/52php/p/5677908.html

sourcetree不好做到的一些git操作

2019独角兽企业重金招聘Python工程师标准>>> 日常中我们有很多操作通过sourcetree就可以实现界面化操作,但是有一些场景不好去实现,这里总结下: 场景1:我们有个A分支,需要跟master分支合并等待上线&#xf…

vue大括号里接受一个函数_vue源码探究(第四弹)

vue源码探究(第四弹)结束了上一part的数据代理,这一部分主要讲讲vue的模板解析,感觉这个有点难理解,而且内容有点多,hhh。模板解析废话不多说,先从简单的入手。按照之前的套路,先举一…

类级别的分装 ---四种访问级别

privateprivate成员为类的私有性质,仅有类本身和友元可以访问;protected和private类似,区别于protected可以被该类所有派生类访问;publicpublic的成员可以被外界的所有客户代码直接访问published和public的区别仅在于published的成…

python自省与反射

DAY 5. python自省 这是很久之前写的,当时对自省和反射的概念没理解,学习Java以后多了一点理解,自省是获取对象的能力,反射是操纵对象的能力,python中使用getattr()和setattr()实现反射,而其他的则是自省&…

vb.net 窗体接收键盘事件_(十五)C#WinFrom自定义控件系列-键盘(二)

前提入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。本系列文章将讲解各种控件的开发及思路,欢迎各位批评指正。此系列控件开发教程将全部在原生控件基础上进行重绘开发,目标的扁平化、漂亮、支持触屏。如…

centos下cmake安装

步骤一、安装gcc等必备程序包(已安装则略过此步,用gcc -v检测) yum install -y gcc gcc-c make automake 步骤二、安装wget (已安装则略过此步) yum install -y wget 步骤三、获取CMake源码包 wget http://www.cmake.…

python 生成式,迭代器,生成器

DAY 6. 生成式,迭代器,生成器 6.1 生成式 6.1.1 列表生成式 list [index for index in range(10)]6.1.2 字典生成式 dict {zhangsan: 10,lisi: 12,wangwu: 18 } # 实现键值互换 dict {k:v for v,k in dict.items() if k > 12}6.1.3 集合生成式 # 100以内…

shell MAC 地址 校验

/**************************************************************************************** shell MAC 地址 校验* 说明:* 要对MAC地址进行校验,记录一下正则表达式写法,有些方法在PC上验证是可行的&…

移动端Web开发如何处理横竖屏

<!Doctype html> <html> <head> <meta charset"utf-8"> <meta id"viewport" name"viewport" content"widthdevice-width,initial-scale1.0;"> <title>横竖屏切换检测</title> <style ty…

恩智浦智能车大赛2020_内蒙古科技大学第九届智能车大赛校内公开赛总决赛

为了激发学生的创新意识&#xff0c;提高学生的动手能力&#xff0c;培养团队合作意识&#xff0c;秉承“实践源于真知&#xff0c;创新放飞梦想”的思想。2020年12月6日&#xff0c;内蒙古科技大学第九届智能车大赛总决赛如约而至。本次大赛有来自各院系的223支队伍报名参加了…

python格式化字符串的三种方法(%,format,f-string)

DAY 7. 格式化字符串 到目前为止&#xff0c;我所知道的&#xff0c;python格式化字符串有三种方法&#xff0c;第一是早期就有的%&#xff0c;其次是2.5之后的format(),还有就是3.6添加的f字符串调试 7.1 %格式化字符串 %格式化字符串是python最早的&#xff0c;也是能兼容…

Android App 优化之 ANR 详解

为了便于阅读, 应邀将Android App性能优化系列, 转移到掘金原创上来.掘金的新出的"收藏集"功能可以用来做系列文集了. 今天先来聊聊ANR. 1, 你碰到ANR了吗 在App使用过程中, 你可能遇到过这样的情况: 恭喜你, 这就是传说中的ANR. 1.1 何为ANR ANR全名Application Not…

微信高级群发接口正文乱码解决方案

content里面的内空如果含有html标签的话&#xff0c;需要对内容进行一下转义。如果里面含有style".."类似于这样的带""号的内容的话&#xff0c;就更需要注意了。 foreach ($news as &$item) {foreach ($item as $key > $val){if ($key content){$…

python *args和**kwargs以及序列解包

DAY 8. *args和**kwargs *args&#xff1a;多值元组&#xff0c;**kwargs多值字典&#xff0c;他们是python函数传参时两个特殊的参数&#xff0c;args和kwargs并不是强制的&#xff0c;但习惯使用这两个&#xff0c;如果在函数参数列表中声明了*args&#xff0c;则允许传递任…

解读直播连麦与点播加密

近年来&#xff0c;直播热潮持续升温。有需求就会有变革&#xff0c;直播的相关技术也在不断更新&#xff0c;为直播行业带来更好地服务。如&#xff1a;直播连麦与点播加密技术等。 直播连麦&#xff0c;即主播与连麦者通过互动直播中心进行实时互动&#xff0c;信息在云端混流…

血红蛋白判断access程序答案_普渡大学开发智能手机应用程序 帮助评估贫血症情况...

医生诊断贫血疾病的方法之一&#xff0c;就是通过观察患者的眼皮&#xff0c;判断眼皮是否发红&#xff0c;从而判断红细胞的数量。但对医生来说&#xff0c;面临的挑战是&#xff0c;这种简单的测试不够精确&#xff0c;无法不从患者身上抽取血样就能给出诊断。美国普渡大学的…

学习笔记:AC自动机

话说AC自动机有什么用......我想要自动AC机 AC自动机简介&#xff1a; 首先简要介绍一下AC自动机&#xff1a;Aho-Corasick automation&#xff0c;该算法在1975年产生于贝尔实验室&#xff0c;是著名的多模匹配算法之一。一个常见的例子就是给出n个单词&#xff0c;再给出一段…

python闭包和装饰器

DAY 9. 闭包和装饰器 9.1 闭包 闭包就是内部函数对外部函数作用域内变量的引用 可以看出 闭包是针对函数的&#xff0c;还有两个函数&#xff0c;内部函数和外部函数闭包是为了让内部函数引用外部函数作用域内的变量的 我们先写两个函数 def fun1():print("我是fun1&q…