故事起因: 最近我有个刚毕业的学生问我说:我感觉现在Java行业已经饱和了,也不是说饱和了,是初级的Java根本就没有公司要,哪怕你不要工资也没公司要你,Java刚学出来,没有任何的项目经验和工作经验,根本就不会有公司要你啊,这是最大的一个问题,而且现在也没有任何公司找初级Java,实习Java,都是要求有工作经验的。我感觉学完以后出来找工作,真的除了靠关系,找到工作的可能性很低。 看完了这个学生对我说的话,我非常疑惑,难道现在的90后都是这个做事态度吗?这个学生的情况是在大学打了4年游戏。今年毕业才意识到自己什么都没学,不知道听谁说的Java发展好,自己来自学Java。学了不到一个月,心态就出现了问题。他目前的情况是想找高薪工作,又不肯脚踏实地的好好学技术。我不知道是我不了解现在的年轻人,还是90后大部分都是这个状态。 我对于这个学生的评价是:自己什么都没有付出过,想着一切都不可能,大事做不了,小事不肯做。
我对于目前Java程序员市场行情的看法:
我做这行也有16年了,目前精通八门编程语言,对于Java也颇有了解。说一下我目前看到的市场行情吧! 首先我可以负责的告诉这个学生,Java从2015年才开始大量的需求人才,如果Java真的有所谓的“饱和”,那真的是大部分人都要失业了。 现在的发展趋势是任何一家公司都需要“互联网部门”,实体必须对接“互联网+”,不然一定会被淘汰。所以我个人认为完全不用担心Java会饱和的问题,我们人口基数大,任何一个行业都有竞争,这是非常正常的情况。为什么说Java这种技术性的工作饱和,而不说扫大街的会饱和呢?因为但凡上点档次的技术工作,需要每个人静下心来去学习的时候,有多少人能真正的做到把技术学好?在有技术能力的人面前永远没有饱和的说法,而大部分技术能力很差的,面试了几家工作就觉得找不到工作,就放弃了,这样的人当然会说饱和。可是问题在于你技术学好了没有?你说你基本的技术需求都可以满足,我是不相信谁找不到工作的。除非这个社会乱了,真正有用的人才一定会有工作,这是毋庸置疑的。
没有工作经验?没有项目经验?
首先我必须声明一点,工作经验工作年限不等于这个人的技术水平。我曾经面试过很多人,有很多四五年工作经验的人不如工作一两年的人,这样的事情非常常见。没有工作经验是正常的,可是没有项目经验就是你自己的问题了。学习技术必须有项目跟着,网上资源那么多,开源项目那么多?自己把整个项目搞清楚,并不是一件特别难的事情。如果连起码的项目都没有,怎么证明你的技术学得好?难道只是看视频吗?这样能找到工作才怪。
掌握以下内容可以找到Java程序员工作:
**Javase:**java基础,既然是基础,那肯定是最重要的,所以学习的时候也是需要重点学习的地方。
**数据库:**为什么要学数据库呢,因为我们的web数据需要持久化到磁盘上统一管理,而数据库无疑就是最好工具。目前主流的关系型数据库有mysql 和oracle。我建议先学mysql。为什么呢mysql相比Oracle难度要低,而在国内应用场景又是最多的。
学会了mysql可以开发出一个完整的产品了,再学oracle都可以的。
**前端基础:**既然是做一个网站,那肯定不能是后台的数据,这样用户也是没办法看的,所以需要学习前端知识,把数据展示到页面上,而对于后台人员来说,学习阶段只需要学习前端基础就可以了。Html 、js、css、jquery就可以了。当然到离开后期你也可以学学专门为后端人员定制的前端框架,比如,layui,easyui。如果还觉得不够可以学学前端专用框架。比如vue element ,但是大前提是把自己的后台学到位了再学其他的。
**Javaweb:**jsp、servlet。为什么用了html还要学jsp呢。因为jsp和Java是无缝连接的。学了javaweb以后就可以自己做一个项目出来了,比如你想做一个个人网站。你可以给你们学校做一个教务管理系统都是可以的。
**Spring:**后台框架。为什么要用框架呢,可以快速开发,并且降低了耦合。Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用,Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
**Mybatis:**持久层框架,当然持久层还有一个框架应用也很广的,那就是hibernate,一个是半自动的一个是全自动,而在国内应用最多的是mybatis,在国外用得最多的是hibernate,具体原因,大家可以百度查查。持久层框架有什么好处呢?如果你用原始的jdbc做开发,那你得自己来管理每一个连接,连接的打开和关闭,都是有开发人员来操作的,而且jdbc也没有实体的映射,需要我们写代码把值set进去,而用了框架这些都交给框架去做了。
**Maven:**mavne是一个工具,他的核心是pom.xml,这个配置文件,pom的全英文是project object model,意思是对象管理模型,也就是把项目也看成一个对象来操作了。给我们带来最直观的好处就是依赖问题,以前我们需要自己下载jar包,在构建到项目中,但是有了maven只需要写jar的依赖就可以自动给我们下载了。
顺便在这里说一下,我目前是在职Java开发,如果你现在也在学习Java,了解Java,渴望成为一名合格的Java开发工程师,在入门学习Java的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,博主组建了一个程序员交流群,里面有很多的我整理的内部资源:Java题库,大厂面试题,学习大纲,自学课程大纲,简历模板等,群号:853665602,有什么问题都可以在里面询问交流,希望欢迎到很多一起学习Java的小伙伴,感谢你们的支持!。这里聚集了很多正在学习Java技术的初学者,小组文件里面还有我做Java技术这段时间整理的一些学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以自行来获取下载。
**Springboot:**springboot是基于maven的,springboot最明显的特点就是开箱即用,也就是构建了一个springboot项目 直接就可以做开发了,而不需要像我们自己配一个springmvc的框架一样的需要去配置大量的xml文件。让我们开发人员更着重于业务上的开发。
**Redis:**前面的mysql,oracle是关系型数据库,什么是关系型呢,就是一对一 一对多 多对多。有表与表之间有这些关系在,所以就叫关系型数据库,而redis就是非关系型数据库,也就是他存储数据之间是没有这些关系,他是以键值对 list set方式存储的。
**Springcloud:**微服务框架,什么是微服务呢,就是把我们传统的单体服务拆分开了,就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,微服务架构其实就是一个分布式架构,具体的就不详细的讲了,因为这里面牵涉到的解决方案是灵活的。
**Linux:**linux的应用通常都是在底层,那我们上层开发人员为什么也要学它呢,其实我们的主要应用是在服务器上,也就是服务器的系统。当然系统也有Windows的,而Windows的和Linux的区别就是Windows服务器有问题是微软来解决,很方便:别人替你做,但也不方便:你遇到问题都得让他官方来解决漏洞,但是Linux就不一样,他是完全开源的,有问题自己马上就可以解决,只要开发人员能力够硬去改内核都是可以的。
**Git:**版本管理工具,与之对应的还有svn,最大的区别在于git是分布式系统,而svn不是分布式的,因为你们进企业以后都是协同开发 也就是一个项目小组里面几个小伙伴一起开发一个项目,所以就要有一个代码的管理工具来保证你们做的不同模块可以整合,所以说git也是需要学的。
大家公认为做Java程序员,工资高,加薪快?没错,现实的确是这样的。这样导致大批的人员加入程序员的行业中。于是,慢慢就会有另一种别样的声音传出,“程序员已经饱和了,还要不要再学Java编程了”,可现实是这样嘛,答案是否定的,并不是这个样子。
现在的现状,只能说现在初级Java程序员占市场主体,而且这部分Java程序员如同工厂流水线下来的半成品,经验与能力尚浅,所以在拼命的吐苦水,向外界阐述程序员工作如何不好找,而作为初级程序员,真实的他们到底会做些什么呢?
1、0-3年工作经验(一般是刚从大学毕业),会写简单的脚本
2、初步了解整个应用程序的生命周期、初步了解数据库和应用程序的服务(队列,缓存等)
3、不需了解复杂的应用中的每一个部分
从上面不难看出,他们现在掌握的东西还远远达不到一个企业招聘的需求,从而导致出现求职之路不容易,可是试问问,任何一个行业的大神级别人物,不都是从小白这个阶段开始,一路打怪升级后,慢慢养成的嘛。
我们熟知《射雕英雄传》中那个愚笨的郭靖,刚步入江湖的时候,虽然有江湖七怪的指点,但经验还是太浅,后来在闯荡江湖中不断得到各界大侠的指点并经过自身不断的学习,最后终成一代大侠。所以说,任何小菜都需要经过时间积累才能达到你想要成为的目标,只是现代人太急于求成,只看到自己的期望,却从未关注过自身的能力。
说完初级程序员,我们再来聊聊高级Java程序员,相对于初级程序员而言,高级程序员的数量则要少很多,而企业招聘都希望找到一个有丰富开发经验,能写较复杂程序,而且还有管理经验的高级复合人才(至少四年工作经验+能写较复杂的程序+深入理解整个应用程序的生命周期+掌握数据库和应用服务(队列,缓存等)+要了解应用程序的每一个方面)。而这方面的程序员又需要花时间来积累,所这中、高级程序员备显珍贵,达到这个级别的程序员这时找工作就显得游刃有余。
所以,凡事都有两面性。
从社会需求量来讲,软件开发人员的数量还是跟不上软件需求的发展,随着后期人工智能出现,互联网会进一步×××到社会各个领域。所以后期对程序员的需求量还是会进一步扩大。比如现阶段炒的比较火的人工智能、大数据以及区块链都必将需要更多的研发人员投入。
所以,现在不是市场饱和了,而是市场门槛高了而已。现在你没有点真材实料想找个工作确实不容易,但也从侧面验证了,现阶段对技术门槛要求高了,如果你的技术扎实找一个像样的工作是没有问题的。
最后欢迎大家加入博主组建的Java学习技术交流群呀!群号:853665602,有什么问题都可以在里面询问交流,还有博主整理的很多资料,需要大家的加入,才能壮大这个组织!群里面有很多的我整理的内部资源:Java题库,大厂面试题,学习大纲,自学课程大纲等,希望欢迎到很多一起学习Java的小伙伴,感谢你们的支持!