美文网首页
作为Java程序员的你,如何才能把握好职业的黄金五年?

作为Java程序员的你,如何才能把握好职业的黄金五年?

作者: Lemonrel | 来源:发表于2019-12-16 20:55 被阅读0次

在Java业界流行着一种说法——黄金5年,就是从程序员入职时算起,前五年的工作选择直接影响整个职业生涯的职业发展和薪资走向。如何把握这五年,从一个刚入行的菜鸟蜕变成一个处事不惊的大佬,这是一个涉及到自身的专业知识储备和选择的难题,那么,一个Java程序员如何做才能完成从入行到大佬的晋升之路呢?
参加工作1-2年之间
在这段时间里,想必对Java已经有了一个深入的了解。首先,你要非常熟悉设计模式,看一些关于代码编写优化的书,提高你的代码能力,能够写出一手优雅的代码;其次,你在工作过程中肯定接触过并发,你应该更加深入地去了解并发的相关知识;最后,你要对所使用的框架和Java的类库有一定的研究,还需要去看一些JDK中的类的源码,包括你所使用的框架的源码。总而言之,这个阶段,你需要做的是深入了解Java底层和Java类库,也就是JVM和JDK的相关内容。
参加工作3-4年之间
如果你处于这个阶段,说实话很难再提升代码能力了,因为这个阶段的学习会比较多样化。在前三年的工作中,你肯定不同程度地接触过其它的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等技术,你能精通任何一项,都将是你未来面试时巨大的优势。因此如果你对某一项技术感兴趣,这时可以深入去研究,这项技术不一定是你工作所用到的,但一定是相关的。


参加工作4-5年之间
参加工作四至五年的程序员,这时,你应该遇到技术的瓶颈了。不要急于提高自己的技术,此时更重要的是提高你的影响力,你可以尝试去一些知名公司提高你的就业背景;你也可以发表一些技术文章去影响更多的人;你还可以去Github创建一个属于你的开源项目,打造属于自己的产品。技术学到这个阶段,很容易遇到瓶颈,而且往往达到一定程度后,你再深入研究的效果就真的微乎其微了,除非你是专门做学术研究的。然而很可惜,大部分程序猿做不到这一步,那是科学家做的事情。这个时候提高影响力主要是影响力可以给你创造更多的机会,所以,你最大的任务是提高自己的影响力,为未来工作生涯做准备。

我有个朋友2011年毕业,作为一名软件开发程序员,踏入软件开发行业已有8个年头了,他做过初级软件工程师、高级软件工程师、项目主管、技术经理、项目经理,近些年带过开发团队、参与招聘面试。我请他把这些年的工作体会分享下,有不同意见的欢迎探讨。
对于软件开发同学而言,首先要客观认识自身的情况,想清楚自己现在要什么、未来要什么,做好职业规划,从而选择不同类型的企业。例如,当前身无几分,急需就业,技术能力较为一般,可以选择人力资源外包临时过渡;喜欢技术专研,对技术有浓厚的兴趣,希望以后成为某个领域的技术牛人,可以选择互联网平台类型;有一定的技术基础,以后想往技术经理、项目经理方向发展,可以选择项目外包类型。接下来将对程序员的职业发挥发展规划提出具体的建议:
顺便给大家推荐一个Java技术交流群:473984645里面会分享一些资深架构师录制的视频资料:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多!
你是否有了明确的职业发展规划?
1、 走向架构师
对任何一个Java开发人员来说,架构师都是一个令人向往的角色。那么程序员与架构师之间的主要区别是什么呢?架构师拥有完善和扎实的技术体系,具备较好系统分析和设计能力,丰富的项目研发经验。其实,程序员的成长首先来自自身的学习,而阅读成熟项目的代码会使人受益匪浅;其次是来自所从事领域的经验,要了解分布式系统的特点,在做项目时,要能够关注性能、扩展性、可靠性、可用性等指标。
架构师是一个漫长的积累过程,大部分架构师的年龄在35岁左右,这个阶段就是程序员的黄金期。那么我们如何以一个架构师的标准来加强自己的能力呢?程序员要向一名架构师发展,需要进一步加强技能的修养。对于互联网公司来言,最重要的技能是对网络和分布式系统的理解,比较麻烦的是分布式系统,除了分布式,在现在大型互联网企业中,还需掌握高性能、深入浅出、性能调优、Spring、JVM等技术。当然,良好的驾驭管理开发团队的能力和人格修养,能够让架构师在开发项目中游刃有余,不会出现意外的干扰。
2、 走向项目经理
有一些程序员工作机遇比较好,不但负责项目的设计工作,而且还负责项目的管理工作,对项目经理这个工作有一定的尝试。因此,这类程序员可以审视一下自己,是否合适这项工作,如果自己对这种工作比较满意,而且具备项目经理的要求,则可以向项目经理这个方向发展。项目经理的工作重点已经从编程转移到对人、对技术、对进度、对项目的管理,因此,项目经理必须要了解软件开发的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。
在日常的工作和生活中就得逐步锻炼这方面的能力,其次,学习一些项目管理的知识,例如:PMP、CMMI、敏捷开发管理等。从程序员到项目经理可以使项目经理更好地理解程序员在项目中的地位和作用,了解软件开发的各种规律性的东西,从而保证项目的正常完成。而且,项目经理的收入在公司中的地位也是比较高的,因此,我认为走向项目经理是程序员的另一个发展空间。我想提醒一下,程序员在担任项目经理之前最好要把软件设计工作做好,这样在做项目经理的时候,就会有很好的基础。
3、 走向管理者
很多程序员希望自己能成为公司中的主管、经理、老总、老板,这样在公司无论是收入还是地位都相对高一些。另外,有些程序员可能厌倦了年复一年的编程工作,希望能摆脱这种步步紧逼的工作状态,走向管理者程序员要比一般人做更多的准备,做更多的转型工作。但是,如果你有这个志向,又积累了这方面的工作经验,可以努力往管理者发展。由于软件公司的管理者不同于一般公司的管理者,专业能力越强,管理起来就越得心应手,没有专业能力的管理,遇到的问题很多,也很难解决。 因此,我的建议程序员最好要把编程、项目设计、项目管理等基础打好,这样转型到管理者成功率就会高一些。
4、 原地踏步
当然也有程序员惰性比较大,安于现状,也无可厚非。对待这些程序员,我的建议是原地发展,把本职工作做得更好,把自己的技术水平再提高一步。在这个过程中他们的能力和自信心都会得到提高,他们的想法自然不会一成不变。不管做哪一行,都应尽早做好职业规划,人都需要有一个目标去激励自己,Java程序员更是如此,朝着一个目标逐步提升自身实力总会比原地打转好,相信聪明的你该知道怎么做。
据不完全统计,截至目前(2019.3)为止,中国Java程序员的数量已经超过百万。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,这不仅是一个刚踏入职场的初级程序员,也是工作三五年后开始迷茫的老程序员,都必须要面对和明白的问题。为了帮助大家少走弯路,我总结出一个Java程序员的工作2-5年成长路线。
推荐大家阅读:
Java高级架构学习资料分享+架构师成长之路​
Java程序员应该掌握的技术
1、通信协议
2、序列化
3、数据库
4、 存储
5、应用框架
6、接口
除了要在如上的各种不可或缺的组成部分中有所了解,还要能清楚地知道一些常用系统模块的原理,并能够很深入的玩起来。几个值得注意的:
HTTP服务器:常见的无非是nginx、apache,自己要能进行基本配置,包括静态文件、fastcgi转发等。
关系式数据库:常见的如mysql、postgresql、sqlite,自己要对每一种都有深入的了解,可以做一遍常见操作的性能测试,并牢记于心。比如sqlite虽然并不需要走网络,但是实际查询性能很差。
NoSQL数据库:memcache、redis、mongodb等,近几年有很多,挨个了解其实现原理,以及各种常用操作的性能,当有需要时,随时能拿得出手来用。
云计算平台:几种常见的云计算平台的应用方式要有了解,如Google的资源方式和Amazon的VPS方式,每种云计算平台往往还会提供一大堆附加服务,比如可靠数据库,存储,缓存等,也要分别有所了解。
加密/签名技术:常见如truecrypt、openssl、gnu pg、sha1、md5、scrypt等,了解各种加密/签名技术的安全性、字长等,并都能自己做过hello world。
那如何快速学习并精通呢?
针对当前互联网公司的技术需求以及结合主流技术,我自己整理了一套系统的架构技术体系,当你技术过硬的时候,能够解决技术问题才会服众。不少公司都很重视高并发高可用的技术,特别是一线互联网公司,分布式、JVM、spring源码分析、微服务等知识点已是面试的必考题,这些东西可能你们平时在工作中接触过,但是缺少全面系统的学习。
推荐大家阅读:
Java高级架构学习资料分享+架构师成长之路​
顺便给大家推荐一个Java技术交流群:473984645里面会分享一些资深架构师录制的视频资料:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多!

相关文章

网友评论

      本文标题:作为Java程序员的你,如何才能把握好职业的黄金五年?

      本文链接:https://www.haomeiwen.com/subject/puxjnctx.html