在鹅厂,我作为一个Java 程序员每天都在摸鱼!!!

作为一名 在大、中、小微企业都待过 的 Java 开发者,今天和大家分享下自己在不同公司的工作日常和收获。包括一些个人积累的工作提升经验,以及一些 Java 学习的方法和资源。

先从我的第一份 Java 开发实习工作说起吧~

实习生工作日常

我是在大二暑期开始了我人生的第一次实习,岗位正是 Java 开发,还混了个 title 叫 “助理 Java 工程师”!

这家公司属于一家中型企业,作为第一份实习,我已经很满足了。

刚进入公司的第一天,在导师和运维同学的帮助下,搞好办公设备,安装开发环境,本以为第二天就能开始写代码。但是整整两周,我都没有写下一行 Java 代码!而是先花了一周的时间熟悉企业的业务、我要参与的项目源码(Spring 全家桶 + Dubbo)、以及公司的各种办公套件和研发流程。这些几乎是每位刚刚进入新公司的同学都要做的事情。

在这里插入图片描述
然后我就开始接需求了,面对前人留下的 xx 一样的代码和复杂的业务,我根本无从下手。那么这一周我做了些什么呢?在导师的指导下,我针对这个需求涉及的业务流程画了一个很完整的流程图,并且在流程图上进行了详细的标注。画完流程图之后,我突然感觉思路清晰了很多,接下来就是写伪代码,终于在一周后,我才正式开始写 Java 代码了。

在此之前,我基本都是跟着视频教程写写简单的 Demo 程序,或者自己为了学习做做简单的小项目。从来没有像这次一样在写代码前进行如此精心的设计,第一次有了自己走出校园的感觉,这种体验和成长是在学校无法感受到的。这也是为什么我建议计算机专业的同学在学了一些开发技术后,趁早去找一份实习,不用担心自己的经验不足,通过面试和企业工作的磨练才能让你积累更多的经验、提升技术,也能帮助你明确自己的目标。现在也有很多帮助大学生找实习的平台,像 牛客网、实习僧 都是很不错的。

实习的这家公司虽然不大,但是团队的氛围非常好。也正因为公司不大,和技术主管、CTO 等大佬的交流机会也非常多,我们每天开工前都会开站会(敏捷开发)来讨论工作,并且定期地举办技术分享。

整个实习过程真的非常愉快,学到了很多技术和业务知识,也开拓了眼界,明确了我今后的职业发展方向。最爽的事是工作不忙的时候也摸鱼儿刷了一些算法,真的非常感谢公司和这段实习经历!

然后分享我目前在 腾讯 做 Java 开发的日常。

鹅厂工作日常

没错,鹅厂并不是只有 C++ 这一门后端开发语言,其实鹅厂的 Java 程序员数量也是很多的!

我从大三暑假开始就在腾讯实习,并通过答辩转正,虽然只毕业半年,但至今累积在鹅厂写 Java 已经一年半多了,那除了偶尔摸鱼外,我平时的工作都做些什么呢?

在这里插入图片描述
起初我以为大厂程序员的工作日常也就是写代码、造轮子,在大公司,就得写更多的代码!

结果在刚入职时,由于经验不足,再加上年轻气盛,有着莫名的自信。刚拿到需求后,我觉得特别简单,不就是 CRUD(增删改查)么?于是,我就懒得设计方案了,没怎么思考就直接上手写代码了,结果不断翻车,出现了很多细节问题,比如数据没有访问权限获取不到、和其他部门的同学接口字段没对齐等等,甚至还出现需求理解错误的情况!最后导致的结果就是做了很多无用功,把本来几天就能做完的需求一拖再拖,一度以为自己要被劝退了! o(╥﹏╥)o

经历了一次次的翻车后,我开始思考自己的问题到底出在哪里,为什么我总感觉自己什么都知道、可以写出代码,但写出的代码却经常错误连篇呢?

我向导师和其他的同事请教后发现,其实大家更多的时间并不是在写代码,而是在 开会讨论、核对需求、沟通对齐、设计技术方案、测试等。写代码的时间其实很少很少!

导师对我说:“其实写代码并不难,关键是要明确为什么要写代码、怎么写代码、写什么代码。”

原来,相比写代码,更重要的是写代码前的技术方案设计和写代码后的测试!

技术方案设计

当程序员确认完需求后,要先根据需求来给出一个清晰明确的技术方案,一方面是证明需求的可行性,另一方面是对自己之后的代码实现有一个大致思路。很多的问题其实是可以在设计阶段去发现和规避的,而不是等你写代码的时候,才发现之前的设计有问题、甚至是需求本身就不合理!到时候耽误了项目上线,背锅的就是程序员自己!

之前有朋友问,在大公司,万一写着写着代码,没思路了、写不出来了怎么办?这种问题其实就是可以通过前期的技术方案设计来规避的。毕竟老板才不关心你代码写的怎么样,他只关心你的技术方案,换句话说,是关心你能不能按时完成项目!

此前,我即使画了一些流程图,目的也仅仅是在于帮助自己写代码。觉得代码能写出来后,我就不再去考虑方案设计了。

而在意识到技术方案的重要性后,我会在理解需求后,先写一份详尽的技术方案,包括需求的合理性分析、选用什么技术来实现指定的功能、怎么设计库表结构、怎么设计类之间的关系(用哪种设计模式)、怎么设计接口、计划工期是多久、有没有什么风险点等等。
如需课件源码软件等资料添加小助手vx:ma-xiaoguo(备注:果果)

开发

设计好方案后,就要投入开发。

基本就是先利用一些数据库管理软件或者登陆服务器去配置一些库表,然后选用一些 Java 类库和工具来编写业务代码。说是编写代码,其实 80% 以上都是复制粘贴!复制别人的,复制自己的,积累的代码多了之后,简直爽的飞起!不能复制粘贴的,也可以用一些代码生成工具、甚至是低代码工具来偷偷懒。谁说 CRUD 工程师就没有技术?哼,咱偷懒也要有水平。

写代码的过程中,你要遵循一定的规范,不断地将重复的代码进行抽象、封装和复用,可以利用一些设计模式,并且要多多编写注释,提高代码的可读性和可维护性。

关于代码规范,建议参考 Google 开源的 Java 代码规范或者阿里巴巴的 Java 代码规范,非常专业!
在这里插入图片描述
写好代码后,你要再次检查自己的代码,可以利用一些代码格式化和代码检查工具来提前发现一些规范问题以及 bug,还要在本地编写单元测试来最细粒度地保证代码的可运行性和正确性。

Java 的单元测试类库一般用 JUnit就行了,本地自己测试请求接口的话可以直接用 IDEA 自带的测试插件,也可以选用 Swagger或者 YAPI、Postman 等接口管理工具,甚至还可以直接使用命令行 curl 等。

在这里插入图片描述

测试

在写完代码之后,要经过非常非常非常充分的测试才能提交代码!这个阶段也是非常花时间的,需要配合测试同学,提供一些测试的细节和补充说明,并且对测试中发现的问题进行修复。很多程序员应该都有这种感受:写 bug 一分钟,改 bug 一小时!

在这里插入图片描述
这些就是我目前在鹅厂的日常工作,其实和其他公司不会什么区别,无非就是你负责的业务量级越大,你在设计、测试等环节上投入的时间和精力就要更多;业务团队越大,你在需求沟通和合作上也要花更多的时间。这些工作看似和写代码关系不大,但对于程序员的经验积累以及职业素养、工程能力的提升是至关重要的!

优秀的程序员,不只是有能力写得一手好代码,更多的是需要具备一些工程师素养,比如:

对技术有独特的兴趣和追求,持续学习

  • 有全局观,总能站在一个更高、更全局的视角去考虑问题

  • 处理事情小心谨慎,而不是凭直觉和过去的经验主观臆断

  • 沟通能力强,能够用方便他人理解的方式来描述问题

  • 强大的设计架构能力

  • 刨根问题,深究问题本质

  • 代码洁癖,精益求精

  • 不止技术,还注重业务底层逻辑,关心用户

  • 执行力强,有责任心

  • 懂得利用自动化工具提升效率

  • 善用绘图、图表来描述技术架构和问题

  • 乐于分享,积极为他人指路

在工作之余,我也在朝着成为一名优秀工程师的路上而努力。因此,我会利用公司提供的知识平台、问答平台和技术资源进行学习,并且多和身边的技术大牛们交流。大公司技术好,大佬多,提供的资源也真的非常多,这是我认为很多同学应该去大厂的一个原因,而身在大厂的同学更应该利用好这些资源。

我还会积极参与一些公司内外的开源项目,和优秀的程序员朋友一起合作,互相学习进步,提升代码的水平。这里也建议大家多看 GitHub 上的开源项目,先在本地运行并熟练使用它,然后尝试分析源码和贡献代码。

最后,祝大家早日学有所成,拿到满意offer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

心中一万只草泥马在奔腾是种怎样的体验?| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(图源横店街道办主任,侵权删)

iOS工程中的info.plist文件的完整研究

原地址:http://blog.sina.com.cn/s/blog_947c4a9f0100zf41.html 们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除。 如果…

不会自动化UI测试?不会编程?没问题,会造句就行!

上次,我们介绍了用于Web应用程序自动化测试的工具Playwright for .NET。但是直接使用它来编写测试用例,代码比较凌乱,后期也不好维护。因此,我们利用SpecFlow让测试用例更好理解和维护。1.SpecFlow介绍SpecFlow是.Net平台下用于行…

鼠标手势识别 [Flash]

算法:演示:源代码:http://www.foxaweb.com/demos/mousegesture/mouse_gesture_v1_0.zip转载于:https://www.cnblogs.com/boringlamb/archive/2008/05/20/1203115.html

Java交流|面试最后一问:你有什么问题想问我吗?

尽管,我们之前做了这么多的面试准备,然而,最后这个90%可见的最后一问可能直接让你功亏一篑。这么厉害的最后一问:”你有什么问题想问我吗?“ 看似平淡无奇的问题,但是却蕴含着多方面的含义。这个问题表面上…

基于MapWinGis的开发探索(三)--改善缩放、渲染、显示文本

继续对MapWinGis进行研究探索,紧接上一篇文章。MapWinGis自身有很多功能,此篇主要也是基于其内在方法来写的。除了第二点显示文本是根据其源代码进行扩展的。原图:一、改善缩放功能上一版本放大缩小都必须点击下工具栏的放大、缩小。是鼠标处于缩放状态&…

T-SQL利用Row_Number函数实现分页

SQL: CREATE PROCEDURE PagingViewTest (currentPageIndex INT, --页序号pageSize INT, --页大小pageCount INT OUTPUT --返回值,总记录数 ) AS BEGIN--取总记录数 SELECT pageCountCOUNT(OrderID) FROM dbo.sale_Order; --利用CTE以提高执行效率 WITH Result AS (…

程序员没有女朋友的原因,我终于找到了!

全世界只有3.14 % 的人关注了青少年数学之旅程序员没有女朋友的原因▼程序员大脑里想的▼每天要学习太多语言,程序员太忙了▼女朋友 VS 编译器▼程序员sao起来,还需要女朋友吗?▼电脑才是程序员的女朋友▼互道晚安后,会不会偶遇在…

dotNet 5 中执行 Node.js

在低代码产品中为了扩展功能,我们在业务编排中会扩展代码块的功能,允许用户直接在界面中进行代码(Node.js、 Python)的编写,来实现取数或者赋值的一些功能。本文简单介绍下在 dotNET 5 中怎么样进行 Node.js 的调用以及…

为什么会有蟑螂这种反人类的动物出现?

全世界只有3.14 % 的人关注了青少年数学之旅相信很多人都听过南北蟑螂的故事,即使是一个可以打死老虎的北方人在南方蟑螂面前也会惊慌失措。除此之外,我们日常生活里和蟑螂的故事还有很多,比如:当你打开灯的时候,会有一…

Ajax使用初步

Ajax定义为“Asynchronous JavaScript XML”的简称,也就是异步的JavaScript和XML处理。从原理上看,主要是Ajax可以通过调用HttpRequest实现与服务器的异步通讯,并最终在网页中实现丰富友好的用户界面Ajax使用初步,配置步骤1.把Aj…

WPF 如何流畅地滚动ScrollViewer

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看,谢谢~。 前言看了看原生UWP的ScrollViewer,滑动很流畅(例如 开始菜单),但是WPF自带的ScrollViewer滚动十分生硬..突发奇想&#x…

10岁吊打职业教师的天才,仅用10篇论文称霸数学界160多年,40岁英年早逝却迄今无人超越...

全世界只有3.14 % 的人关注了青少年数学之旅今天超模君就给大家讲讲黎曼。人类历史上最伟大的数学天才的德国数学家是十九世纪数学界的巅峰——节选自《数学之旅 闪耀人类的54个数学家》1826年,黎曼作为家中的老二在德国汉诺威的布雷斯伦茨村出生了。他的父亲是村里…

面试可以,但别打扰我睡觉! | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(图源科技九洲君,侵权删)

基于事件驱动架构构建微服务第3部分:Presenters, Views和Controllers

原文链接:https://logcorner.com/building-microservices-through-event-driven-architecture-part3-presenters-views-and-controllers/在本文中,我将实现Presentation(展示层)。这里的展示层不是指用户界面而是Web API。也可以在实现展示层之前先实现r…

牛逼!不得不服,第一次有人把Java 反射机制讲解这么透!

反射概述 什么是反射 将类的各个组成部分封装为其他对象的过程就叫做 反射,其中 组成部分 指的是我们类的 成员变量(Field)、构造方法(Constructor)、成员方法(Method)。 使用反射的优缺点 …

拿破仑最欣赏的数学家,师从拉格朗日,撕逼泊松,一生痴迷热学最后却死于热学...

全世界只有3.14 % 的人关注了 青少年数学之旅 这几天,终于变凉了,超模君再也不用被热死了。 但炎热夏日的离去,也让超模君想起了那个和热脱不了关系的数学家——傅里叶。 “对自然界的深入研究是数学发现最丰富的源泉” ——节选自 《数学之旅…

记一次 .NET 某智慧水厂API 非托管内存泄漏分析

一:背景 1. 讲故事七月底的时候有位朋友在wx上找到我,说他的程序内存占用8G,托管才占用1.5G,询问剩下的内存哪里去了?截图如下:从求助内容看,这位朋友真的太客气了,动不动就谈钱&…

直接开撸! 阿里Spring高频面试题泄露,持续更新~

阿里HR面试核心的几个问题: 1、你为什么离职? 2、你怎么看待自己的职业生涯?(包括怎么平衡家庭和工作的关系、加班、选择一家公司时的考量、location等) 3、薪资期望 4、项目中遇到的最大挑战是什么?怎么…

重磅!Nature盘点年度十佳论文,生命科学占据半壁江山,中国学者表现亮眼

全世界只有3.14 % 的人关注了青少年数学之旅科学是人类进步的阶梯!在当今社会,科学技术的发展进步将为人类社会带来巨大的效益,毫不夸张的说,科学指引并推着着人类文明的进程。基础科学作为科学技术的理论基石,其重要性…