在Java程序界流行着一种默认的说法叫“黄金5年”,也就是一个程序员从入职的时候算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向。
如何走好这5年,彻底从一个刚入行的菜鸟蜕变成可以以不变应万变的职业大牛,这是一个涉及到自身专业知识储备和选择的大难题。
那么,这五年里,一个Java程序员如何做才能完成从入行到大牛的晋升之路呢?
-
参加工作1-2年之间
在这段时间里,想必对Java已经有了一个深入的了解。首先,你要非常熟悉设计模式,看一些关于代码编写优化的书,提高你的代码能力,能够写出一手优雅的代码;
其次,你在工作过程中肯定接触过并发,你应该更加深入地去了解并发的相关知识;
最后,你要对所使用的框架和Java的类库有一定的研究,还需要去看一些JDK中的类的源码,包括你所使用的框架的源码。
总而言之,这个阶段,你需要做的是深入了解Java底层和Java类库,也就是JVM和JDK的相关内容。
-
参加工作3-4年之间
如果你处于这个阶段,说实话很难再提升代码能力了,因为这个阶段的学习会比较多样化。
在前三年的工作中,你肯定不同程度地接触过其它的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等技术,你能精通任何一项,都将是你未来面试时巨大的优势。
因此如果你对某一项技术感兴趣,这时可以深入去研究,这项技术不一定是你工作所用到的,但一定是相关的。
-
参加工作4-5年之间
参加工作四至五年的程序员,这时,你应该遇到技术的瓶颈了。不要急于提高自己的技术,此时更重要的是提高你的影响力,你可以尝试去一些知名公司提高你的就业背景;
你也可以发表一些技术文章去影响更多的人;你还可以去GitHub创建一个属于你的开源项目,打造属于自己的产品。
技术学到这个阶段,很容易遇到瓶颈,而且往往达到一定程度后,你再深入研究的效果就真的微乎其微了,除非你是专门做学术研究的。
然而很可惜,大部分程序猿做不到这一步,那是科学家做的事情。这个时候提高影响力主要是影响力可以给你创造更多的机会,所以,你最大的任务是提高自己的影响力,为未来工作生涯做准备。
-
那如何快速学习并精通呢?
针对当前互联网公司的技术需求以及结合主流技术,年薪百万的首席架构师整理了一套系统的架构技术体系,当你技术过硬的时候,能够解决技术问题才会服众。
不少公司都很重视高并发高可用的技术,特别是一线互联网公司,分布式、JVM、Spring源码分析、微服务等知识点已是面试的必考题,这些东西可能你们平时在工作中接触过,但是缺少全面系统的学习。
百万年薪架构师分享一套全面的知识图谱,无论走架构,管理还是项目经理的路线这些技术你都应该有一定的了解及掌握!(迷茫的朋友可以参考下学习方向)
学会如何分析源码?
大部分程序员都会「写」代码,或者至少会抄代码和改代码。
但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。因为它是两个原因造成的:
1:我们所有的教育和培训都在强调怎么写代码,并没有教大家如何读代码
2:大多数工作场景都是一个萝卜一个坑,我们只需要了解一个系统的局部便能开展工作,读不相干的代码,似乎没用
所以,要养成源码三问的习惯:
-
“为什么要有这样的架构”
-
“他是什么样子的”
-
“他是怎么工作的”
分布式架构专题
首先需要说明的是,分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看一两本书可能都是不能完全覆盖其所有内容的。
微服务为什么会这么火?
相信大家都了解业务越来越复杂,服务分层,微服务架构是架构升级的必由之路,而对于微服务的优点相信大家都不陌生。
比如:易于开发与维护 / 微服务相对小,易于理解 / 启动时间短,开发效率高 / 独立部署 / 伸缩性强 / 每个服务都可以在横向和纵向上扩展 / 微服务架构可以更好将架构和组织相匹配 / 每个团队独立负责某些服务,获得更高的生产力 / 降低尝试新技术的成本……
程序员到底要不要学习JVM?
总有人问这个东西好像用不上,于是要不要学这样的问题,然后又总有人担心一直搬砖成天做些重复没提升的东西。
如果你这辈子只甘心做一个平庸的Java码农,那么你完全没有必要去学习JVM相关的知识。
被我们忽略掉的工程化专题
在IT产业中,寡头化出现代表着创业公司减少–没人再去用声势浩大的发布会讲故事、没人再去宣传自己拿了多少融资。
这一代中国人自小的教育不比欧美的STEAM,而是重学术、轻手艺。我们往往会为工科和产能过剩画上等号。
强大的资本和技术门槛为这些产业蒙上了一层神秘的面纱,让普通人很难真正了解到其中技术和工艺的复杂程度,也就更难明白其中的价值。
可正是因为中国的工程化能力,才让我们有机会走到AI时代的第一梯队,而不仅仅是靠学术研究能力。
没有高并发经验,想进大公司该怎么办?
假如没有靠谱的公司,接触不到高并发的业务场景怎么办?你永远解决的是小问题,工作10年技术也未必提升多少。
很多程序员也经常找我说,没有经验就没有靠谱的公司收,没有靠谱的公司也就没有经验,我看了无数的书,自己做了无数的实验拼命想找个靠谱公司去深入,但是感觉好难,简直是个死循环
大家都比较关注高并发,原因很简单,想去BAT这样的大公司,你必须要有高并发的经验。今天普及下高并发的知识,希望大家对高并发有一个正确的认识。
学习千遍,不如项目实战成功一次
有人说:项目实战相信很多程序员都多少会有的,可是我们这个还要学习什么呢?
我的回答是:那就要看你想不想成为一个架构师了,为什么98%的程序员工作10年,一辈子还只是一个开发者,程序员们都要想一想这个问题,我是不是需要提升了。
我认为,学习项目实战最重要的还是学习项目管理,作为程序员,都应该学点项目管理。
凡事皆为“项目”项目的两类属性(复杂的逻辑,庞大的信息量)
这才是我们学习“项目实战”的终极意义。
相信大家,在学习的路上也遇到了不少的坑,有人放弃,有人坚持,但是我相信作为程序员的你不会想终其一生也只是一个开发,所谓不想进阶架构师的程序员不是好程序员。