工作2年还是只会增删改查,Java程序员如何进阶?
做JAVA开发的三年一个坎,你应该庆幸你还有一年的时间可以用来提升,让自己不要后悔!
不过话说回来,在平时的工作中其实90%的工作量都是增删改查,或者是对增删改查的改进,那些所谓的高并发,多线程,高可用系统,分布式系统,负载均衡,缓存,数据库读写分离,分库分表等等全部都是围绕增删改查来做改进的!
比如说缓存是因为数据库的读写压力大的时候,为增加读写效率而引进的,使用缓存的内存读写代替了数据库的硬盘读写!
比如说数据库的读写分离或者分库分表都是在单点数据库的压力过大,性能低的时候引入的无论架构怎么设计都是为了得到更好的读写效率!
再比如说,高可用,分布式都为了避免单点服务出现异常,导致读写服务不可用,从而引入的集群部署或者分布式部署!
由此可见,增删改查是我们最核心的功能,只不过我们引入了其他的架构,完善我们的功能,让我们的增删改查更加的快速!
在实际的开发过程中,要多思考系统的瓶颈在哪?增删改查的压力在哪?怎么改进?不要网上搜一堆乱七八糟的,觉得很屌的东西,学完之后发现他根本不知道是做什么的,一切的开发围绕我们的业务来展开,然后才是增强体验性,搭建快速稳定的架构!
那我们应该怎么来进阶呢?
1,大局观:不要只是盯着自己开发的功能,要知道整个系统的整个架构是什么?使用什么技术?服务之间怎么通信?整个服务的性能怎么优化?全面的来考虑,不然晋升的肯定不会是你!
2,不要一心扑在公司的工作上,要有自己的时间去学习最新的技术,去拓宽自己的知识,明白别的公司用的是什么?主流开发技术开发是什么?
3,一定要多总结,不管是平时的工作中或者学习中都能学到很多有用的东西,要把它转化成demo记录在自己的技术文档里面,方便以后自己查阅和使用!不是做过就算了,一定要记录下来!
我晚上加班的时候,除非有急事,不然都学习自己的!然后才能感觉自己有很大的提升!我自己记录了很多做过的,学过的JAVA相关技术,以后会一直分享,需要的话请关注!
对一个已经两三年的Java程序员来说,如果主要工作还是增删改查,这是相当痛苦的一件事情。互联网行业是一个发展快、变化快的行业,身处这个变化莫测的行业,总让人感觉既兴奋又不安。
在Java程序员的职业生涯中,如何才能不断提升自己的核心竞争力,实现自身技术能力进阶,也一直是一个大家都比较关心的话题。下面简单罗列了Java程序员学习进阶的几个方向,供大家参考。
编程基本功:数据结构和算法
1.数据结构相关的哈希表、链表、二叉树等等
2.常见的算法有哪些?至少下图的算法我认为应该要掌握。
比如:HashMap如何扩容,重点就是考底层数据结构。
编程基本功:Java编程
这些都算是编程基本功底:多线程、JVM、并发容器、并发类、NIO等。
Web开发
其实web开发这个领域,如果你要掌握好了,发展也非常不错的。
比如:现在的H5、小程序等,对于掌握前端技术的开发人员,竞争力也是杠杠的。
当然作为后端开发人员,多掌握点前端的技术,那也是必须的。
数据库
重点就看图了,这里涉及的技术还是蛮多的,mysql、oracle、nosql相关的mongodb,以及如今大家都熟知的分库分表、读写分离等技术。
这些都是大家熟知的,我补充点设计相关的:数据库设计范式、索引、事务、数据库相关的慢查询、长事务。
这些也算是数据库技术的编程功底。
研发相关的框架工具
Java程序员对于下图应该都是比较熟悉的,这些框架与工具都是经常使用。
架构设计
谈到设计,就不得不提到项目中的概要设计和详细设计,这就会涉及到UML。
除此之外,整个项目的设计,这个时候考验你的架构设计能力。
这里的架构设计,包含的系列非常多,特别是Redis、应用程序拆分、拆分后涉及到的RPC微服务等技术,以及后端数据库的拆分技术,以及拆分后的分布式集群部署。
分布式会涉及到:分布式锁、全局唯一ID的生成、分布式Session…这里还有蛮多的,其实大部分我在【BAT架构技术专题合集】中都分享过了,回复【架构】,即可领取。
结束语
要知道,再成功的大佬也是从第一行代码开始的,增删改查是修炼成神必经之路,该走的阶段还是要走,但在走的过程中多看、多学、多思考、多实践,在自己不同的发展时期,找到属于你的立足点,只有站稳了这个立足点,你才可以更好的开始延伸自己别的领域。
程序工作,大多始于增删改查,重复的小事做漂亮,同时扩展自己的技术边际;
职业生涯中的转机,源于坚持不懈找方法、寻求改变,主动出击争取机会;
欲速则不达,循序渐进成长,不同时期,有不同的成长阶段。
俗话说:师傅领进门,修行靠个人,想要技术进阶,需要自己持之以恒,付出100%的努力。提前做好准备,机会总是青睐有准备的人,程序人生,学无止境,共勉~
看到这个问题,我快速回想了自己这十多年的程序员经历,感觉我所有工作的实质好像都是在做增删查改;但哪些是在提升工作能力,哪些是在做重复性的工作,以及怎样应对,我谈谈自己的看法。
增删查改,也要分场景看
举个例子,开发一个商城页面,展示销售量最高的十件商品。
当页面一分钟访问量只有100次的时候,我们可以执行100次select top 10;但是当一分钟访问量有100万次的时候,这还会是一个简单的查询么?
我在上一家单位的时候,所做系统的业务很简单,就是把一批数据,按照模板,加工成待发送的短信、电邮,基本上没有特别难的地方。
但是数据量很大,基本上每天都会处理生成几千万条数据,那时候公司还都是IOE的架构,只有单台Oracle支撑;也就是在这段时间,我练就了一身数据库优化的本领;但是想象一下,如果数据量再增加10倍呢?如果数据量再增加100倍呢?
毫无难度的增删查改,建议赶紧跳出安逸状态
如果每天做的都是毫无难度的增删查改(没有复杂业务,系统也没有多大的压力),建议还是早些跳出这个安逸的状态,就算你对现在的工作环境很满意;因为说不定到什么时候,你就会摸到职业发展的天花板,甚至会面临失业的危机。
还是上一家公司的这个项目,我在这个项目工作第三年的时候,基本上把能做的都做完了,优化基本上也到极限了,最后半年的工作状态是:需求来了,做一下设计,然后让其他同事开发;我朝九晚五,上班有大把的空间时间;还好我利用这些时间去学习,看流行的技术框架,后来跳槽,工资上升了一大截。
如果你正处于这种工作状态,我建议:
一定要清楚地认识到:作为程序员,只做简单的增删查改,是很危险的;
考虑一下能否把项目做得更好,是否可以负责更多的工作;
多学习一些流行的技术,并考虑能否应用到工作中(眼界很重要);
跳槽,寻求更大的平台,很多时候,程序员的成长都是被逼出来的。
不要享受安逸!
最后,敬大家一碗鸡汤:你现在的生活水平,是你三年前的工作状态决定的;而你现在的努力程度,会决定你三年后的生活;软件开发是个逆水行舟,不进则退的行业,既然选择了这个行业,那么就要努力地“敲”下去。
希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
这是Java程序员中大部分初级程序员很容易走上的路,如果自己不主动学习,只靠公司完成的任务很难对自己技术水平提升。
我是Java开发者,看看身边工作了一年到三年的同事,能力参差不齐。
之前听一个工作了一年半的研究生同事分享自己的心得,当着部门总经理的面,说刚开始工作薪资不重要(也暗示了一些东西),主要应该花费精力和财力去提升自己。
工资不高是小事,把钱投资自己是大事
买技术书籍买技术课程,如果走正规渠道花费的都不是小数目,但是对于自己的能力提升,这点金钱和精力也是值得的。
很明显他属于工作之余会找自己的技术栈去深挖。乃至于他仅仅工作两年就可以担任技术组长,可以负责某个核心模块的开发任务。
这也说明一件事,增删改查只是为了完成初级的工作,当你自己主动去学习去提升,才会不断因为自己的能力充足而被赋予更多技术层面更高的任务。
关注“极客宇文氏”,一名有料的软件工程师。
第一,要强大的自律能力。学习是人一生中最不可缺少的东西,活到老学到老。必须要很强的自律能力,坚持每天学习新的知识。
第二,要有合适的方式方法。比如你现在只会增删改查,你可以整理一下你目前自己的知识点盲区所在。对你目前正在用的,并且还不熟悉的技术加以补充学习。
第三,要有合理的计划。说的能力都不是一蹴而就的,班长高楼平地起。再厉害的程序员,他的知识储备库也是靠自己一点一点积累起来的。千万不要贪多嚼不烂,合理安排自己的学习时间以及学习方向。给自己定一个半年计划,等到半年之后你再去看看计划实现了多少?如果你已经实现了一大半,那么恭喜你已经提高了。
初中生毕业能自学JAVA吗?
首先你要明白一件事,你为什么要学编程?你编程做什么?你要带着这样的问题去学习。人之所以为人是因为他能使用工具而并非制作工具。精细到一部手机,一台电视,大到一艘航母,小到一只圆珠笔,每一个部件都不需要你自已去制作,你自己去设计,而是要明白你需要什么,什么适合你,能完成你的需求。轮子是不需要重复造的,今天的文明也是建立在人类几千年文化传承上的。你只需要了解一点基础知识就可以开始一个小型的项目,在开发中你会知道你差什么,缺什么,带着问题去google去百度一步一步完善,不知不觉中你就已经学会了。
初中毕业学习Java是完全没问题的。前期学习的时候跟着视频来即可,认真听老师讲解,老老实实敲代码,先跟着老师的思路过一遍,然后在根据自己的所理解的,再去把相应的功能实现,加深对知识点的理解。学习的过程中做好笔记,方便以后复习。
初学的话,推荐看“如鹏网”的《这样学Java不枯燥》视频教程,适合初学者学习。通过开发超级玛丽,飞机大战,连连看,汤姆猫,电影的弹幕动画等来讲解Java的基础知识点,学起来还是挺有意思的,没想到Java还可以这么学~
电影弹幕动画截图:
Java工程师是一项很有发展前景的职业,像VB、VC等编程语言前景都不如Java。特别是Java学好了以后,可以很轻松地学会JSP,JSP网络编程在国外很流行。Java工程师的比window类编程的程序员薪水相对较高,通常来说,具有3~5年开发经验的工程师,拥有年薪10万元是很正常的一个薪酬水平。初中毕业生完全可以学会电脑,因为初中生已经具备了学习电脑的文化基础。专业的电脑学校针对不同学历开设有不同专业,都是零基础教学的。学院有专门针对初中毕业生设置的专业,是以学习计算机的应用技能为主,强调实际操作能力,初中毕业生完全可以学好;专业的电脑学院能够对学生因材施教,让初中毕业生不仅可以学习电脑,同时能够学会、学精,并成功就业。
当然可以。不过最好先弄清楚你为什么要学,想提高自我打基础呢,还是为了直接找一份工作。
然后选择怎么去学。
1:如果是打基础,可以到网上找相关基础视频教程(很多的),并安装开发环境边学习边练习,培养兴趣,为以后深入学习可以打下很好的基础。
2:如果是为了直接找工作,你最有效的方式还是报一个培训班,这样可以短时间内帮助你学习同时可以对你就业也有一定的帮助。
谢谢邀请!
初中毕业也是可以学习Java语言的,而且能够学得会用的好。因为编程语言本身的难度并不高,只要掌握基本的语法再结合编程思路就可以进行编程了。编程的难度并不在编程语言本身,编程的难度在于算法设计、数据结构、算法实现以及逻辑结构设计上,对于不同知识结构的学习者来说,应该选择适合自己的发展方向。
初中毕业生的基础知识还是比较薄弱的,尤其是数学基础,所以在发展方向上尽量偏向应用级编程,或者从事二次开发,如果在从事编程的过程中能不断补学基础知识,未来从事研发性开发也是有可能的。
目前整个IT行业中从事应用级开发的程序员占据着大量的比例,因为功能性开发具有较强的场景因素,所以应用性开发有大量的市场需求。应用级开发的特点主要是业务的流程模拟,以管理软件居多,很多业务规则是基于数据库的基本操作(增删改查)完成的,对于算法的要求非常少,这部分开发任务复杂度并不高,所以对基础的要求也比较少。
Java Web的应用级开发存在较大的市场需求,学习者需要掌握基础的Java语法知识、数据库知识、Web开发基础、框架开发、前端开发等内容,这些内容的学习虽然有一定难度,但是在通过大量的实验之后,大部分概念是可以掌握的。
Java学习重在概念的理解,因为面向对象编程的一个关键点就在于对“抽象”的理解,Java中抽象无处不在,比如类、接口、抽象类等,这些概念都是“抽象”的典型代表,理解“抽象”是学习Java的第一个难关。突破这道难关之后,剩下的内容按部就班做实验就可以掌握了,难度已经没有那么大了。
我在头条写了关于学习Java的系列文章,包括基础部分和并发编程两个部分,想学习的朋友可以看一下,相信一定会有所收获。
作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。欢迎关注作者,欢迎咨询计算机相关问题。