一年来的经历
2019年,我从大学毕业了,但是因为考研,没有一毕业就去找工作,一直到2020年六月一日,在北京正式入职了一家公司进行Java开发。刚找工作,既没有工作经验,也没有谈薪资的经验,那时候就以一个很低的薪资水平开始干了,边干边学习,也还算过得去。干了十个月,离职了。
之后到了上海,也是找了Java开发的工作,到现在为止是两个月,算上之前的十个月,刚好是一年的Java开发经验了。
一年这样一个时间长度,总是会让人愿意停下来,去思考去回顾,今天也正好是我刚买了个新笔记本的日子,就让我带着用新电脑的激动心情,写下这一年的总结回顾与展望!
经验收获
首先说技术上,经验上的一些收获。毕竟程序员前几年的工作,基本上就是学习技术,培养编程习惯。所以工作经历,在技术经验上的收获,是这一年时间中比较重要的一部分。
因为我大学本科学的专业是物联网工程,软件方面硬件方面都要学,但是在大学里面的时候对硬件的兴趣却要更大一些,毕竟硬件确实比较有趣,所有做出来的东西,都能够直观的看到物理效果,不像软件只能在设备上展现。所以那时候天天研究单片机,研究机器人什么的,但由于硬件相关的专业知识实在太硬核,我的水平也就图一乐,真要放到工作上是完全不够看的,而且毕业之后我也做过尝试,去干了两个多月的硬件开发,着让我更深刻地认识到这一点,于是果断放弃,选择软件开发,选择了Java语言。
大学的时候是有Java课程的,但是老师讲的都是很基础的东西,一年下来也没学到什么东西,但好歹是知道了面向对象的概念,也算是有一个Java学习的理论基础。
之后就是看视频学习Java了,我大概用了四个月的时间,在有一点c语言的基础以及一点面向对象的理论基础上,在B站上看视频,把Java基础,Java web基础以及ssm框架基础过了一遍,也许不足以胜任正式的开发工作,但是给我一段完整的代码能看出来其运行逻辑,给我一个项目基本可以理解这个项目有哪些组成部分(ssm架构的项目)。
靠着这样的一个基础,我找到了第一份工作。这第一份工作是在一个二十人左右的小公司,小公司大家也都知道了,基本上每一个人都是多面手,从需求调研,到制定开发计划,到开发,到对接调整需求,改bug,项目上线,运维都是要会的,我就是在一个这样的公司中开始了自己的职业生涯。
刚开始很难,真的很难,啥都不懂,不知道从哪里入手,甚至问别人都不知道从哪里开始问起。刚开始工作那几天,天天都搞到十点多,就自己在那里琢磨,可是又没有什么进展,毕竟当你对项目完全不懂的时候,并不是靠自己想象就能够提升对项目的理解的。当然,这时候看的代码也不完全是没有意义的,因为之后几天,当时的小组长看我这样的工作方式太没效果了,就问我有啥不懂的,给我讲了不少,这时候配合我自己之前的闷头看代码,终于是有了点进展,对项目对系统对代码有了更加深入的理解,逐渐有了切入点。也一点点的走上了开发的正轨。
我觉得刚开始工作的时候,能有个人带着仔细的给你讲代码讲原理,是靠运气的,能遇到当时的小组长也是很不错的。
逐渐的,我知道了公司使用的架构还是很老的ssh架构,这个架构由于太老了,我也没有怎么去深入理解,只知道是用了Spring的那套IOC、AOP的东西。逐步理解了前端后端是如何建立连接的。这个时候的工作任务也都是一些很简单的页面上字段的修改。
后来逐渐增加了别的工作安排,也一步步开始接触新的东西。
1.事务:我接触到了事务的概念。其实在学习过程中也是知道这个概念的,也了解其事务的特性ACID等,但是学习时只停留在知道这东西很重要的认知程度,在工作中,我遇到了因为hibernate的一些特性,导致事务无法提交,无法读取的问题,我才真正意识到事物的存在,编码过程中是需要考虑到事务的。
2.工作流:还接触了工作流。在我之前学习的过程中,由于没有做过真正的系统,所以其实是没有学习工作流的需求的,因此当时看公司系统中涉及到工作流的内容时,我是一脸懵的,根本不知道这个东西该如何入手去理解,如何去解决工作流中遇到的问题。即使当时看了一些activiti相关的视频,依旧是一脸懵逼。直到我跳槽,到现在的公司接触到新的项目,我才开始理解什么是工作流。其实工作流的本质就是当一个用户处理完一段代码,改变了某个值,另一个用户根据这个值,接着往后执行代码罢了。不过是把这个功能给加强一下,增加了流程的概念,增加了任务的概念而已。
3.开源工具的使用:对开源代码的使用,其实从spring开始就在使用了,但那时候还很难意识到自己在使用别人写好的工具,直到我需要处理系统中的导入导出功能,需要对Excel表格,word文档进行处理,我才意识到了这一点。当时我用了Apache旗下的poi处理,比较轻松的就完成了对Excel、word的处理。这件事让我知道了遇到了问题无从下手,一定要先去搜一搜问一问有没有什么已经写好的,有的话就不要再自己去写了,写不写的出来先放一边,写出来之后能不能用,好不好用,bug多不多也放一边,关键是工作任务那么紧,为什么要自己去写一遍呢。我开始清晰的意识到,程序员就是这么个职业,能够复制的,能够复用的东西,就去复用,最好是不要逞强自己去写,没有那么多时间去写那么多东西的,别人的东西拿来用,又好又快!
4.Linux系统以及部署:win上的服务器部署是很简单的,Linux上部署,理论上来说也很简单,但是遇到的细节问题还是会比较多的,所以学着在Linux上部署,也算是一个小小的收获,一个小小的技术点。
5.调试代码能力:调试代码的能力可以说是一个程序员的基本能力和核心能力了。其实很多代码都是可以从网上找到的,讲代码拼接出来写出来都不是什么难事,可一旦系统运行起来,出现了bug,如何能够快速定位问题,分析问题所在,就是一个很考验经验的事情了,因此调试代码是十分重要的一项能力了。包括利用IDE来进行调试,在浏览器中进行调试,都是一个程序员要掌握的能力。
6.数据库,以及写SQL语句的能力,这个没什么好说的,就是多写多用就可以提升的能力。SQL语句的编写能力真的是靠多写来提升的。
7.前端相关能力的提升不是很大,毕竟不是专门做前端的,但是在不断的工作中,对js、css、html等的处理能力还是有所提升的。
8.报表这个东西也是一种常用的技术,但不算能困难,可以比较快的掌握,只是其需要查询的数据的获取,还是要依赖SQL语句的编写能力。
技术上的提升,主要就是这些方面了,其实还有很多细细碎碎的技术点,但不是很难也不是很重要,就不一一列举了。
心态变化
心态方面的变化,我觉得有所改变又有所未变。首先是对工程难度的认识更加客观了。刚开始工作的时候,对工作难度的认识是很不靠谱的,有的东西觉得好难,没有接触过,觉得要很久才能学会才能做出来,但是给的时间又很少,就很紧张压力很大,但其实最终做出来,也没有用掉多少时间。而有的时候觉得这个东西自己做过,应该很简单,但其实做起来的时候状况频发,可谓是一步一个坎。反而时间用的比较久。心情也是从原来很轻松,逐渐变得沉重。
而且刚开始工作的时候,心态起伏很大,一旦一个功能做出来,就十分兴奋,一旦有一个问题想不明白,整个人就蔫了。这样的心态其实是很不健康的,不利于工作效率提升,也不利于自己的身心健康。而现在心态就平和很多了,问题解决了是正常现象,问题解决不了也是正常现象,问题解决了的时候不必沾沾自喜,只需继续工作,遇到不懂的不会的不理解的,也不慌,先自己想一想画一画,想不明白了,就去百度一下,如何加上自己的思考能够解决自然是好,再不行就休息一下,也许过几分钟就突然想明白了。但如果还是没有头绪,就开始问别人,先问同事,再问领导。反正问题总是会解决的,或者大家一致同意不解决。总之遇到不会的,自己闷头苦想不是解决问题的最终办法。这样处理过几次问题之后,心态自然也就平和起来了,不再惧怕困难。
工作是一辈子的事情,不必为工作高兴,也不必为工作焦虑,只需要保持一颗平和的心态来面对就好了。
未来展望,自我期许
未来这个问题想的太多,就越来越觉得好虚无缥缈,但就是这种对未来的期望才支撑着自己坚持!
还是要努力多学习技术,努力尝试考研,攒钱,买房子,回家,学习!加油!