校外实践

由于对实验室的云计算网络和虚拟环境安全研究不太感兴趣,也有些摸不着头脑,我也希望有一些研发的经历,为将来毕业找到适合的工作早做准备,于是我利用业余时间到校外企业参与了应用项目的研究与开发。接下来我详细说明这段实践经历。

实践单位概况:

上海网鱼信息科技有限公司。网鱼网咖致力于成为中国网咖业的领航者,给用户美好的体验,让更多人玩出梦想。截至目前,全球已有1000余家门店,实名注册会员超1100万。网鱼还积极融入游戏行业的发展,与腾讯、完美、网易、暴雪等知名游戏厂商展开深度合作,联合举办全国性的电竞赛事;网鱼与腾讯互娱、iG电子竞技俱乐部等签订战略合作协议,共谋产业发展。

实习内容:

我参与的项目是网鱼钉钉流程开发,开发语言主要是Java,在校期间我曾花了几个月时间自学Java,项目与我的技术方向相符,我还希望在实践中进一步了解Java研发,这也是选择这份实习offer的原因。

网鱼钉钉流程主要是使用Spring Boot的微服务架构,基于钉钉这一第三方开放平台开发的一个企业Java Web系统。该系统由网鱼流程和网鱼报表两个独立的部分组成,网鱼的流程涉及公司各个部门(如人力资源部、运营部、法务部、IT部、财务部等部门)的相关流程,网鱼报表则是对已归档的流程相关信息进行汇总,并生成对应表单,支持excel导出。

初来实习,先是准备搭建开发的环境,安装配置JDK,我用的是Eclipse,因此需要配置maven项目环境,然后安装Git插件,将流程代码pull到本地。流程开发还需要安装一个重要的工作流插件Activiti,视图插件FreeMarker。如果使用目前流行的IDEA编辑器,由于它默认集成了Git、freemarker,安装就更简单了。当然,这是个逐渐学习的过程,为了更快上手,我选用自己熟悉的Eclipse。对于系统所采用的Spring Boot框架,它具有许多优点如支持自动配置编码更简单,部署更简单,监控更简单。这也是企业选择它的原因吧。

整合MyBatis后的项目结构上比较清晰:流程图以及流程模板放在/yoa-web/resources下,服务层接口和实现在/yoa-service下,控制层在/yoa-web/web下,dao接口和映射mapper文件在/yoa-dao下,流程实体类在/yoa-modal下。尽管如此,对于公司上百个流程而言,要查找定位到具体的流程无异于大海捞针,光是翻看目录就“令人窒息”,好在带我的同事教我用Eclipse快捷键,这样一来,Ctrl+Shift+R,Ctrl+H,想找什么文件找什么代码都得心应手了。第一次接触到这么大的代码量,虽然是很多开发人员共同奋斗的结果,但小菜鸟看着都觉得很激动了哈哈。

开发人员首先得弄清楚需求,第一次看流程需求文档时觉得没什么,不知它是开发人员开展工作的指南,其中的表格和文字说明都是重要的,会体现到代码上的。有时候,文档中有不清楚的地方,我都会与流程经理沟通。流程经理虽说不了解技术,但对业务却是比我更懂的,人也比较亲切,每次沟通还算顺利。

项目里已经有很多流程存在了,大多情况是已有流程需求变更需对其优化,这时需要去找到已有的代码,看懂别人的代码,然后添加或修改代码。也会有需要开发的新流程,这时候就得看看类似的已有流程,依葫芦画瓢,一个新流程编码调试到自己测试通过,不出意外通常需要三天左右。总的来说,由于底层已经封装好服务类,有些方法直接传参数调用即可,所以看下别人怎么调用方法自己就知道怎么写了。也难怪网上的段子手调侃程序员只会复制粘贴了。下面以我写过的新流程—直营闭店资产清算处理审批为例来说明。

第一步,创建流程图,流程图主要包括开始,任务,流程控制网关和结束,还有一些属性值需要注意填写,有时候会忘记填写导致一些异常被抛出。第二步,创建与流程关联的Form,也就是所谓的前端视图,表单域主要是申请人信息以及具体资产清算方式和金额信息,还有隐藏的表单域如流程号、活动ID等也是必不可少的,我常常会没注意到这些隐藏字段导致抛出异常或与预期不同的结果,前端的语言用的HTML和JQuery,工作之余我也会学习这些前端知识。第三步,写DataHandle文件,DataHandle文件用来对前端数据进行填充,除了发起节点外,其余节点审批人需要看到发起者填写的信息,这时,由DataHandle填充值然后返回Map对象给前端。第四步,写Controller文件,控制器中对应一些web请求,映射到相应的方法,主要包括:提交、审批、拒绝、查询子表等。第五步,Service接口和实现类。服务层主要是调用DAO层进行数据的存取和一些业务事件处理,同时它又被Controller层所调用。就我举例的这个流程,包括save、update、delete、findById、findChildById、complete、sendmessage、sendmail等业务方法。第六步,写DAO接口和对于mapper xml文件。这里主要用到MyBatis语法,涉及到对MySQL数据库的insert、update、select、delete操作,一些sql语句的编写。这样以来,从前端到后端的整个过程就走了一遍了。调试通过,push到远端git库,然后打包上测试环境测试通过后,就生产发布投入实际使用了,看到自己写的功能在钉钉上被别人用,其实也有些小小的成就感了,呵呵。

统计下我的代码量,开发一个新流程,比如直营闭店资产清算处理,一共写了10个文件,包括流程图、流程模板、邮件模板、两个实体类、 DirectShopClosedAssetsLiquidationDataHandle.java、DirectShopClosedAssetsLiquidationController.java、DirectShopClosedAssetsLiquidationServiceImpl.java、IDirectShopClosedAssetsLiquidationDao.java和IDirectShopClosedAssetsLiquidationDao.xml。这里我偷工减料少写了一个服务层接口,不影响最终的功能。一共有接近900行代码。

除了流程的开发,我还负责流程上线前的测试。公司的制度是上线前测试通过,有了测试报告才可以发布版本上线。于是,这项看似微小的活儿就交给我这个实习生了,测试的时候我是严肃的甚至是严格的,因为如果因为自己的疏忽或者偷懒,以至于上线后流程不能用被打回来,自己脸上无光,上级怪罪来恐怕饭碗不保了。和我一起流程开发的是带我的师父,有时候我也能找出它的程序中的小问题。他教给我技术给我答疑,我帮他挑出bug,也算是相互合作、互利共存了。测试也不简单,测起来小半天就没了,有时候需要测试的数据环境,为了验证那一个个测试点,我需要自己往数据库中加数据,枯燥但我也不敢马虎。

当然我的工作并不是单一机械的重复,每次的流程工作也都涉及不同方面。有的流程优化简单,只需改下节点审批角色。流程中的子表和附件的处理稍有不同。有的模板涉及到金额合计,这个js代码对我而言有些挑战。还有写定时任务,让流程超时自动流转。写过的sql语句种类也很全面。以及写报表时接触到JPA和Swagger,对我而言的新技术时而出现,整个实习过程,都需要看代码再尝试自己写,不断学习。

当然,公司制度对实习生也足够宽松,让我也能兼顾到学校的研究和学习,以学校为重,有时候居然发现学校所学和实习的某些地方有相通之处,对自己的学习也是有帮助。8小时外求发展,业余时间我也养成看技术书籍,有计划地学习一门新技术的习惯了。

公司的环境也值得一赞,水吧的奶茶和饮料零食福利,让人觉得在网吧办公。周年庆的趣味运动会也鼓励实习生参加,只有动起来运才会来,在趣味运动中收获了感动与欢笑,也让我看到了沉闷研究生生活之外的另一个世界。还有幸见证iG夺冠的那个星期六,对网游不感冒的我也被同事们的激情以及这年轻的氛围所感染。

回头看,连我自己都不敢相信,几个月的实习工作,我一共开发3个新流程、1张报表、优化了19个流程,这小小的数字见证着我的努力和成长,以及我为网鱼公司奉献的小小价值,每一步如履薄冰、步步惊心,也为未来打下了基础。学习技术只有多动手尝试多思考多问,才能有所提高。在离职的时候,我心里由衷感谢帮助过我的小伙伴们和我的上级,有了他们实习才变得充实,我才能胜任这份工作,更自信。工作中哪怕是一个白眼,也能让我更加有力量,更何况他们听说我是复旦的研究生,都对我赞叹不已。但学历只是一方面,公司其实更看重技术以及胜任工作的能力,就像我的师父,虽然大专文凭,但是技术上绝对是值得我好好学习的。流程经理,同济的在职硕士,在如何协调工作与下属沟通这点上也是值得我学习的。研发实习,累并快乐着。面前的路还很长,我还需要不断地学习,积累更丰富的经验,准备好迎接未来更多的挑战。


工作累了喝口奶茶

完成工作发发呆

新人培训合影被挤到最左是我

在网鱼研发实习的一段经历相关推荐

  1. 实习生总结报告(讲述上海实习的一段经历)

    我可能再也遇不到这样的人了,一次技术总监与实习生的谈话.

  2. 2021年4月12日 阿里供应链Java研发实习面试(一面)(含总结)

    title: 2021年4月12日 阿里供应链Java研发实习面试(一面) tags: 面经 2021年4月12日 阿里供应链Java研发实习面试(一面) 自我介绍介绍项目你用哪个版本的Java呢?( ...

  3. 跨越敏捷 — 闲鱼研发效能升级之路

    摘要: 在2018第二届研发效能嘉年华专场上,来自阿里巴巴集团研发效能张燎原为听众带来了<跨越敏捷 - 闲鱼研发效能升级之路>的精彩分享.在分享中,他从以业务为导向的跨职能协作.按需求进行 ...

  4. 2021年4月16日 阿里供应链Java研发实习面试(二面)

    title: 2021年4月16日 阿里供应链Java研发实习面试(二面) tags: 面经 2021年4月16日 阿里供应链Java研发实习面试(二面)(70min) 自我介绍 介绍自己的研究生项目 ...

  5. 想成为真正的网游研发员吗,从这开始吧

    目前,中国网游蒸蒸日上,无论是代理的,如魔兽世界(美国),劲舞团(韩国),地下城与勇士(韩国),还是自主研发的,如盛大的梦幻西游,腾讯的QQ炫舞,都是很成功的经典网游,并且,更加激励人心的是,中国研发 ...

  6. 金山WPS服务端研发实习面经——一、二面+HR面

    周一前往了金山软件园去参加内推笔试,然后HR小姐姐说你们来回也挺麻烦的,就直接给你们安排面试了 笔试就6道问答+4道算法,自认为写得还行吧 因为排到我面试的时候已经到饭点了,所以给了我一张VIP卡让我 ...

  7. 我从实习到现在的经历,幸运女神总会来到!

    我从实习到现在的经历,幸运女神总会来到! 2018年10月份实习时间到了,和大部分大学生一样,开始找工作,我是在山东日照上的大学,于是自己穿着正装坐火车去了荣成,面试一家规模比较大的公司,当然&quo ...

  8. 十二年10次IT大考!猪八戒网的系统架构和开发流程经历了什么?

    刚刚发布的"腾云 10 号",不是一个产品,而是 13 个研发项目的组合,更是近 200 人研发团队投入 3 个月精力的一次"行动",在迄今为止猪八戒网创立的 ...

  9. 程序员看过来:阿里毕玄提升代码能力的4段经历

    简介:对于程序员而言,我始终认为代码是展现能力的关键.一个优秀程序员写的代码,和一个普通程序员写的代码是很容易看出差别的,代码是展示程序员硬实力的名片.如何提升写代码的能力,始终是一个关键的话题,不过 ...

最新文章

  1. 线段树 (经典题目合集)
  2. php tp框架手册,php框架手册
  3. 基于Spring-Data-Redis存储JavaBean对象
  4. 【2019牛客暑期多校训练营(第八场)- G】Gemstones(栈,模拟)
  5. 初次接触GWT,知识点总括
  6. Linxu:磁盘分区
  7. C#串口数据读写——计数器数据获取重置功能记录
  8. win10计算机桌面天气,win10电脑桌面显示时间和天气日期怎么设置
  9. [转载]hostapd配置解析
  10. hash算法和常见的hash函数
  11. C++ STL源码剖析 tr1与std array
  12. 阈的粤语发音_新编粤语读音字典 - 粤语 | Cantonese | 白话 - 声同小语种论坛 - Powered by phpwind...
  13. Android加载本地大Bitmap文件,解析出来的Bitmap是整张图片是黑色的
  14. 吃透一切整流滤波电路
  15. EXCEL里的Trend函数如何做到数据预测?
  16. 中国私营企业特点有哪些
  17. 自动采集高清壁纸网站源码 二次美化版
  18. 懒人必备:最强多人智能记账APP 百事AA记账
  19. 谁是Linux家族桌面系统之王?
  20. 【美化§银河妖怪win7电脑主题下载§】

热门文章

  1. 代理模式-为别人做嫁衣
  2. python 闲鱼消息_GitHub - ygq556/XianyuSdd: 爬取闲鱼某关键字实时信息,将最新的发送到钉钉群聊。更多我们共同开发的项目(咸鱼反爬更新,只能作为学习使用)...
  3. 优乐商城05-1 项目环境搭建
  4. 静息态fMRI的白质功能连接:鲁棒性、​可靠性和与灰质的关系
  5. 华为交换机业务口堆叠
  6. kktv支持鸿蒙系统,康佳电视怎么投屏?看完这篇文章后,你就是“投屏达人”...
  7. 自闭症是广告敏感词?_我帮助建立了一个向自闭症儿童教授手语的机器人。 这是我学到的。...
  8. Matlab图像处理基础(2):区域处理,边沿检测
  9. linux0.11—内存管理实验
  10. 深度学习框架caffe在ubuntu上无GUP编译环境详细配置