前言
这次我们学校花了很多心血在这次的课设上,真的是特别感动和感谢,当你遇到真心为你好对你好的老师的时候,真的是会觉得人间值得!
之前在学软件工程的时候我就会觉得这些理论的东西有什么用啊,什么UML,各种模型,还有各种图,感觉很无聊很抽象。所以我也在知乎搜索了这个问题,回答也很诚恳,就是必须要实践才能知道这个软件工程的重要性。其实我在开发一些课设项目的时候也发现了软件工程的重要性了,那就是当你没有做好需求分析,没有花清楚ER图等关键图,没有做好接口文档等等,你就会发现当你开发到后期的时候全是问题,甚至最后因为这些问题那就无法完成系统,所以软件工程的学习必须要实践,而且是一定要在项目中完成运用这些方法才能意识到重要性。
所以在学期结束时,我们老师请了花旗的老师和井星的团队来指导我们完成了这样的一次课设,真的是收获颇丰,也是完全没想到这次课设能有这么强大的阵容,更是直接上了springcloud,压力很大,但是收获更大,接下来主要讲讲收获吧。
项目
软件工程实践——基于spring cloud alibaba实现的试卷管理系统
这次我们是做试卷管理系统,是非常常见的一个系统,本质上逻辑并不复杂。
我们这次springcloud是基于ruoyi的springcloud封装而来,使用井星公司自己封装的开发框架开发,但是我仔细看下来,感觉和若依的没啥大区别,这里也要特别推荐ruoyi这个项目,我感觉对于一个java路线的人来说,吃透这样的一个项目对于个人的成长是十分有帮助的。
若依 / RuoYi-Vue
MirSpectator / exam 基于ruoyi的在线考试项目
思维跳跃科技 / 在线考试系统
由于我们的代码都在私服的gitlab上,所以就不给大家分享了,这里给几个参考的项目,基本上都差不多。
项目收获
这次我作为组长,压力真的是特别大,时间紧任务重,尤其是组内有很多同学基础并不扎实,所以也是遇到了很多问题,现在主要反思一下我在组内遇到的问题,也记录一下我们从这次开发中吸取到的经验
自己的问题
1.技术有欠缺。作为管理者,我自己首先是技术上不够好,自己也是第一次做,所以很多东西都不懂,也是有点懵的,如果第二次再来的话,肯定会更轻车熟路一点,所以经验很重要。
2.决断力不够。因为是第一次,很多问题不知道不清楚,所以在面临问题时,有各种各样的解决方案,组员也会提出不一样的意见,自己就会纠结犹豫,或者碍于其他的,没有坚持自己的想法和意见,有点和稀泥,但是作为组长,你是要把控全局的,所以要坚持对的,同时也要掌握沟通的方式方法,如何高效有效的沟通也是很重要的。此外,在做组长时要掌握沟通方法,不要讨好型人格,听意见,但也要坚持心中的答案,和组员沟通要掌握方式方法,在保证团结的前提下有效沟通。
3.合理规划安排,比自己埋头苦干更重要。因为我是前端路线的,所以我在本次项目中也是写前端,但是一共五个主要模块,我写了三个,真的挺累的,但是也是因为没有人用,只能自己顶上。但这也带来了一系列的问题,那就是我精力不够,项目管理上的很多问题我没有时间和精力去解决,后期我就一直在写界面了,整个项目都是组员自己在推动,没有及时了解沟通,没有掌握项目进度,以至于最后时间很赶,到答辩上午才完全完成,真的是很紧张!所以一定要清晰自己的角色,如果是组长,一定要明白自己最重要的任务是什么,是把控整个项目,推动项目进行,确保最后项目能够完成。这里面还有很多管理的问题,还需要自己多多下功夫。
(这里也有一个思考,那就是如何设立有效的激励机制,其实管理团队很重要的一点就是激发团队成员的积极性,自己努力干和拿着鞭子在后面赶着干肯定是自己干要更好,所以问题就在于如何激励团队,激发积极性,我觉得有效的激励机制是根本,让他们有目标,知道自己这样干能有什么激励,这样不就有积极性了)
4.把握工作和生活,不要太过紧张。自己在最后一晚的时候,由于项目还有很多不完备的地方,第二天就要答辩了,ppt也没有做好,一点上床休息后一直睡不着,脑子里全是今天各个组员给我的建议汇报,然后一直在想明天项目要怎么推进,怎么安排等等,后面就失眠了,一直到快四点才睡着,早上又七点多就醒了,然后就去教室继续。其实我能理解自己睡不着,是因为压力大,但是这样的情况不能再次出现了,其实好好生活好好睡觉好好吃饭是最重要的,只有这些都做好了,才能真正的投入到工作中去,所以要给你自己gap放空的时间,让自己得到充分的休息,要是你晚上十一点就提前结束,然后休息睡觉,早上早起再去,你的效率会大大提升,也不至于早上那么难受了。
团队的问题
1.接口文档没提前写好,接口规范未定义。由于没有提前定义好命名规范,前后端传值时的很多参数命名都不对,就包括传参时的code,成功是200,失败是500,但是前端需要的类型必须是int类型,后端给定义成string类型了,这就导致我们找问题花了很多时间。所以一定要在开始coding前,前后端负责人先开会,定义好前后端的接口规范,不要再后期再浪费时间。
2.git一定要使用好。由于我的组员很多都没怎么用过git,用的最多的就是clone,所以他们拉取推送都要学一学,然后我就写了文档,但是又遇到了最麻烦的问题,因为拉下来有冲突,nacos的微服务配置参数每个人电脑上多多少少有些差别,什么端口号之类的,按理说只要选择保留自己的就好,可是组员们还是每次冲突合并都解决不好,然后就会导致环境错误,项目启动不起来,我就得帮着一点点搞,甚至最后不得不回退。由于时间问题,我就只能放弃git,让他们各自在本地开发,最后手动合并,而又由于我们前期没有定义规范,接口的规范,命名的规范,还有数据库也一直在修改,导致我们最后出现了每个人的命名不一样,有耦合调用的地方就直接gg,然后数据库也不一样,大家要一点点手动合并,最后花了一整天在合并项目上,真的很痛苦。所以,不管再难,只要是团队合作项目必须用git,这个真的是大家找工作进公司后必备的技能啊,如果你这个都不会,真的很难快速上手项目。
3.站立会议一定要坚持开。站立会议我们是放在每天开发结束时大家花十五分钟汇报自己的今日工作,讲讲明日工作,遇到的问题,需要什么样的帮助,这个会真的很重要,尤其对于组长,我们中期因为赶进度就没开,结果导致我没有意识我们的进度已经慢了,后期疯狂赶进度,就很难!这个每日的站会可以有效的帮助组长把控项目进度,你可以知道你们进行到哪里了,慢了要催一催。而且站会是前后端之间沟通的最直接的桥梁,也是团队协作之间沟通和信息统一的最好方式
4.科学高效的开发模式很重要。在这次开发之中我们学习的是两个企业都在用的敏捷开发,一整套流程下来发现在开发中,科学高效的开发模式真的非常重要,能大大提高效率,解决很多问题。毕竟这些问题他们都已经遇到过了,设计出这样的开发模式就是为了解决这些遇到的问题。
总结
这次开发真的收获很多,对vue和element-ui的使用更加熟练,这也是我写的第一个完整的springboot+vue的项目,还有很多值得自己总结反思的地方,我也会继续努力,把这个项目总结好放到简历上,让自己在秋招的时候收获满意的offer