作为一名 在大、中、小微企业都待过 的 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

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

  1. Java黄金五年——1~5年一个Java程序员从入行到大牛的晋升之路

    在程序界流行着一种默认的说法叫"黄金5年",也就是一个程序员从入职的时候算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向,如何走好这5年,彻底从一个刚入行的菜鸟蜕 ...

  2. Interview:Java岗位面试—面试求职攻略之一个JAVA程序员面试心得(非常值得收藏)

    Interview:Java岗位面试-面试求职攻略之一个JAVA程序员面试心得(非常值得收藏) 导读 据网上资料显示:2018年互联网行业是寒冬,其他行业日子也不好过.各个互联网大厂纷纷缩招减员,严格 ...

  3. 曝光,程序员的 10 个摸鱼神器

    问:程序员该不该上班摸鱼? 答:认真上班是劳动换取报酬,上班摸鱼才是从老板那赚钱. 曝光,程序员的 10 个摸鱼神器 摸鱼一时爽,一直摸一直爽 方案一:实物摸鱼 方案二:命令行斗地主 方案三:假装系统 ...

  4. 一个java程序员的真实经历

    半路出家的老java程序员的一点感悟 我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业.回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作 ...

  5. 一个java程序员看待互联网行业与物联网行业的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载 互联网(Internet):又称网际网络,或音译因特网(Internet).英特网,互联网始于1969年美国的阿帕网.是网络与网络之间所串连成的庞大 ...

  6. 四年Java 一个java程序员的年终总结

    -     年底了,该给自己写点总结了! 从毕业到现在已经快4年啦,一直在Java的WEB开发行业混迹.我不是牛人,但是自我感觉还算是个合格的程序员,有必要写下自己将近4年来的经历,给自我以提示,给刚 ...

  7. 一个JAVA程序员成长之路分享

    我搞JAVA也有些日子了, 因为我比较贪玩,上进心不那么强, 总是逼不得已为了高薪跳槽才去学习, 所以也没混成什么大牛, 但好在现在也已经成家立业, 小日子过的还算滋润, 起码顶得住一月近万元的吃喝拉 ...

  8. 作为一个Java程序员,一生必看的15本书!赶快收藏起来,适合所有程序员们

    作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...

  9. 一个JAVA程序员成长之路(转载)

    我搞JAVA也有些日子了, 因为我比较贪玩,上进心不那么强, 总是逼不得已为了高薪跳槽才去学习, 所以也没混成什么大牛, 但好在现在也已经成家立业, 小日子过的还算滋润, 起码顶得住一月近万元的吃喝拉 ...

最新文章

  1. OpenCV-Python形态变换、图像金字塔、轮廓属性、直方图
  2. 人类dna信息量_多大容量的硬盘才能装下全部人类的DNA?
  3. (超级详细)numpy与torch用法对比手册
  4. 谈谈Koa 中的next
  5. 大型Java项目架构演进
  6. VIP到131970年过期就离谱~
  7. [译] ROS C++ 代码规范
  8. MVC-05 Model(1)
  9. 谷歌浏览器之如何快速找到js、css等文件
  10. 顺序表输入栈元素c语言,C语言数据结构之栈简单操作
  11. 点击底部input输入框,弹出的软键盘挡住input(苹果手机使用第三方输入法 )
  12. java技术_2020年最流行的Java开发技术
  13. mysql 列换行 表设计 设计_MySql行转列、列转行
  14. 干程序员辣么久,你为什么还没有年薪60万?
  15. scp从另一台服务器下载或者上传文件
  16. SiFive募集1.75亿美元融资 计划2024年上市
  17. MySQL 对 CREATE TABLE IF NOT EXISTS SELECT 的处理
  18. 一文读懂民航客机飞控系统
  19. 【读书笔记】目标是什么
  20. 高二上计算机知识点,【高考备考】2017高二数学知识点归纳整理:期中考试必背的知识点...

热门文章

  1. Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)
  2. 登录工程:传统 Web 应用中的身份验证技术
  3. .NET Core全新路线图
  4. ASP.NET Core 中文文档 第一章 入门
  5. django23:BS4/kindeditor上传图片
  6. Django05-1: 有名分组、无名分组与反向解析
  7. mysql505复位密码_mysql5 如何复位根用户密码[官方文档]
  8. php 错误日志 redis' already loaded in Unknown on line 0
  9. Android ndk之Check that/ndk/openssl/crypto/libsfk.so exists or that its path is corret
  10. LeetCode之Two Sum II - Input array is sorted