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