做为一名 在大、中、小微企业都待过 的 Java 开发者,今天和你们分享下本身在不一样公司的工做平常和收获。包括一些我的积累的工做提高经验,以及一些 Java 学习的方法和资源。程序员
先从个人第一份 Java 开发实习工做提及吧~面试
我是在大二暑期开始了我人生的第一次实习,岗位正是 Java 开发,还混了个 title 叫 “助理 Java 工程师”!算法
这家公司属于一家中型企业,做为第一份实习,我已经很知足了。数据库
刚进入公司的第一天,在导师和运维同窗的帮助下,搞好办公设备,安装开发环境,本觉得次日就能开始写代码。可是整整两周,我都没有写下一行 Java 代码!而是先花了一周的时间熟悉企业的业务、我要参与的项目源码(Spring 全家桶 + Dubbo)、以及公司的各类办公套件和研发流程。这些几乎是每位刚刚进入新公司的同窗都要作的事情。编程
而后我就开始接需求了,面对前人留下的 xx 同样的代码和复杂的业务,我根本无从下手。那么这一周我作了些什么呢?在导师的指导下,我针对这个需求涉及的业务流程画了一个很完整的流程图,而且在流程图上进行了详细的标注。画完流程图以后,我忽然感受思路清晰了不少,接下来就是写伪代码,终于在一周后,我才正式开始写 Java 代码了。后端
在此以前,我基本都是跟着视频教程写写简单的 Demo 程序,或者本身为了学习作作简单的小项目。历来没有像此次同样在写代码前进行如此精心的设计,第一次有了本身走出校园的感受,这种体验和成长是在学校没法感觉到的。这也是为何我建议计算机专业的同窗在学了一些开发技术后,趁早去找一份实习,不用担忧本身的经验不足,经过面试和企业工做的磨练才能让你积累更多的经验、提高技术,也能帮助你明确本身的目标。如今也有不少帮助大学生找实习的平台,像 牛客网、实习僧 都是很不错的。设计模式
实习的这家公司虽然不大,可是团队的氛围很是好。也正由于公司不大,和技术主管、CTO 等大佬的交流机会也很是多,咱们天天开工前都会开站会(敏捷开发)来讨论工做,而且按期地举办技术分享。服务器
整个实习过程真的很是愉快,学到了不少技术和业务知识,也开拓了眼界,明确了我从此的职业发展方向。最爽的事是工做不忙的时候也摸鱼儿刷了一些算法,真的很是感谢公司和这段实习经历!架构
而后分享我目前在 腾讯 作 Java 开发的平常。运维
没错,鹅厂并非只有 C++ 这一门后端开发语言,其实鹅厂的 Java 程序员数量也是不少的!
我从大三暑假开始就在腾讯实习,并经过答辩转正,虽然只毕业半年,但至今累积在鹅厂写 Java 已经一年半多了,那除了偶尔摸鱼外,我平时的工做都作些什么呢?
起初我觉得大厂程序员的工做平常也就是写代码、造轮子,在大公司,就得写更多的代码!
结果在刚入职时,因为经验不足,再加上年轻气盛,有着莫名的自信。刚拿到需求后,我以为特别简单,不就是 CRUD(增删改查)么?因而,我就懒得设计方案了,没怎么思考就直接上手写代码了,结果不断翻车,出现了不少细节问题,好比数据没有访问权限获取不到、和其余部门的同窗接口字段没对齐等等,甚至还出现需求理解错误的状况!最后致使的结果就是作了不少无用功,把原本几天就能作完的需求一拖再拖,一度觉得本身要被劝退了! o(╥﹏╥)o
经历了一次次的翻车后,我开始思考本身的问题到底出在哪里,为何我总感受本身什么都知道、能够写出代码,但写出的代码却常常错误连篇呢?
我向导师和其余的同事请教后发现,其实你们更多的时间并非在写代码,而是在 开会讨论、核对需求、沟通对齐、设计技术方案、测试等。写代码的时间其实不多不多!
导师对我说:“其实写代码并不难,关键是要明确为何要写代码、怎么写代码、写什么代码。”
原来,相比写代码,更重要的是写代码前的技术方案设计和写代码后的测试!
当程序员确认完需求后,要先根据需求来给出一个清晰明确的技术方案,一方面是证实需求的可行性,另外一方面是对本身以后的代码实现有一个大体思路。不少的问题实际上是能够在设计阶段去发现和规避的,而不是等你写代码的时候,才发现以前的设计有问题、甚至是需求自己就不合理!到时候耽误了项目上线,背锅的就是程序员本身!
以前有朋友问,在大公司,万一写着写着代码,没思路了、写不出来了怎么办?这种问题其实就是能够经过前期的技术方案设计来规避的。毕竟老板才不关心你代码写的怎么样,他只关心你的技术方案,换句话说,是关心你能不能按时完成项目!
此前,我即便画了一些流程图,目的也仅仅是在于帮助本身写代码。以为代码能写出来后,我就再也不去考虑方案设计了。
而在乎识到技术方案的重要性后,我会在理解需求后,先写一份详尽的技术方案,包括需求的合理性分析、选用什么技术来实现指定的功能、怎么设计库表结构、怎么设计类之间的关系(用哪一种设计模式)、怎么设计接口、计划工期是多久、有没有什么风险点等等。
设计好方案后,就要投入开发。
基本就是先利用一些数据库管理软件或者登录服务器去配置一些库表,而后选用一些 Java 类库和工具来编写业务代码。说是编写代码,其实 80% 以上都是复制粘贴!复制别人的,复制本身的,积累的代码多了以后,简直爽的飞起!不能复制粘贴的,也能够用一些代码生成工具、甚至是低代码工具来偷偷懒。谁说 CRUD 工程师就没有技术?哼,咱偷懒也要有水平。
写代码的过程当中,你要遵循必定的规范,不断地将重复的代码进行抽象、封装和复用,能够利用一些设计模式,而且要多多编写注释,提升代码的可读性和可维护性。
关于代码规范,建议参考 Google 开源的 Java 代码规范或者阿里巴巴的 Java 代码规范,很是专业!
写好代码后,你要再次检查本身的代码,能够利用一些代码格式化和代码检查工具来提早发现一些规范问题以及 bug,还要在本地编写单元测试来最细粒度地保证代码的可运行性和正确性。
Java 的单元测试类库通常用 JUnit
就好了,本地本身测试请求接口的话能够直接用 IDEA 自带的测试插件,也能够选用 Swagger
或者 YAPI
、Postman
等接口管理工具,甚至还能够直接使用命令行 curl
等。
在写完代码以后,要通过很是很是很是充分的测试才能提交代码!这个阶段也是很是花时间的,须要配合测试同窗,提供一些测试的细节和补充说明,而且对测试中发现的问题进行修复。不少程序员应该都有这种感觉:写 bug 一分钟,改 bug 一小时!
这些就是我目前在鹅厂的平常工做,其实和其余公司不会什么区别,无非就是你负责的业务量级越大,你在设计、测试等环节上投入的时间和精力就要更多;业务团队越大,你在需求沟通和合做上也要花更多的时间。这些工做看似和写代码关系不大,但对于程序员的经验积累以及职业素养、工程能力的提高是相当重要的!
优秀的程序员,不仅是有能力写得一手好代码,更多的是须要具有一些工程师素养,好比:
在工做之余,我也在朝着成为一名优秀工程师的路上而努力。所以,我会利用公司提供的知识平台、问答平台和技术资源进行学习,而且多和身边的技术大牛们交流。大公司技术好,大佬多,提供的资源也真的很是多,这是我认为不少同窗应该去大厂的一个缘由,而身在大厂的同窗更应该利用好这些资源。
我还会积极参与一些公司内外的开源项目,和优秀的程序员朋友一块儿合做,互相学习进步,提高代码的水平。这里也建议你们多看 GitHub 上的开源项目,先在本地运行并熟练使用它,而后尝试分析源码和贡献代码。
不会找开源项目?我以前分享过一篇文章,能帮到你们:【硬核干货】如何高效找到优质编程项目?
此外,提高我的影响力也是很重要的,我认识不少 Java 开发工做者都喜欢写技术文章,而且一些朋友开通了本身的自媒体平台来分享文章,甚至有一些大牛靠自媒体收入还实现了财富自由!在写文章的过程当中,我进一步锻炼了本身的文笔,向不少朋友学到了知识,也督促我来不断输入知识、提高本身。
以上就是个人 Java 开发平常,你可能会好奇,鱼皮在哪家小微公司待过呢?这是个秘密!
Java 开发者的工做看似平淡,但只要你爱好编程,爱好这个行业,每一天都能过的充实而有意义!