轻舟已撞大冰山

一、关于软工

1.1 想象和目标

在软工这门课正式开课之前,我早已听闻其威名。大二那年,看到学长学姐们为了软工课日日夜夜地开会,我心中对这门课的印象便牢牢地刻上了“麻烦”、“恐怖”、“费劲”这些字眼。甚至开始怀疑,一个学分的实践课,真的值得如此?

作为一个“只会考试的小镇做题家”,自认为编程能力不足,软工这门课对我来说无疑是一场巨大的挑战。面对需要强大代码编写能力的课程内容,我不禁怀疑,自己这个“代码复制粘贴专家”能否在短短三个月内突飞猛进,掌握编程技巧并应用于项目之中?在课前,我的目标和期待是希望通过软工课补齐自己的短板,迅速提升编程能力,同时再添一个项目经历,要不然简历真的没有什么可写的!!!

回顾这三个月的历程,真正让我实现提升编程能力目标的,或许是个人编程和结对编程的实践任务。因为在那段时间里,我真正地参与了代码的编写。在后面的团队组建时,确实很莫名其妙地当上了小组组长。或许心理也是因为“组长不需要写代码”这句话,让我坦然接受了这个“看起来轻松”的活。

无论如何,这几个月的经历不仅提升了我的编程技能,更让我在组织协调和沟通能力上有了质的飞跃。

但最重要的是让我亲身经历了软件工程的全流程,从需求分析到实际编码,再到最终测试,这无疑是一次宝贵的成长机会!

1.2 挑战与不足

挑战

  1. 博客堆积如山:要写的博客真是多得让人头大!大家都非常努力,写作水平也很高,这迫使我必须不断完善每一个任务的博客内容。
  2. 人员协调难题:在团队作业的后期,协调大家的时间变得异常麻烦。每个人都有自己的事情,召集大家开会是一场复杂的工程。
  3. 时间紧迫:Alpha冲刺和Beta冲刺的紧迫性,让每一次汇报都显得匆忙不堪,时间仿佛在和我们赛跑,步步紧逼。
  4. 团队鼓励:在开发过程中,部分团队成员的积极性不高,作为组长,需要不断地激励他们,确保大家都能全力以赴。

不足

  1. 程序与理想有距:最终的程序离理想目标还有些差距,不过这也是所有成员辛苦付出的结果。大家都已经尽力了!
  2. 任务分配失衡:在任务分配上确实出现了大失误,导致有些人任务繁重,而有些人任务轻松,很快就完成了。这种不平衡影响了团队的整体效率。
  3. 缺乏编码参与:到最后,我深感遗憾的是,自己没有真正参与到编码中,感觉有所缺失。回头想想,或许不该因为“组长不需要编码”而完全不参与编码过程。参与编码不仅能学到更多专业知识,还能提高与负责同学沟通交流的效率。毕竟,作为项目经理,技术盲点是不应该存在的。

1.3投入与产出

在软工实践课程中,我编写了三四千行代码(其实没有准确计算,大概吧)。这主要是集中在个人编程作业和结对作业当中写的。对于这两次的编程作业,我要好好感谢一下我的好员工:ChatGPT!!是他帮我写的,我是一点也不会啊!这钱氪的真值!!!!!

在团队项目中我参与了(Man游)的设计与开发,我在其中承担了项目经理的角色。主要是组织开会,分分任务,跟进进度,给大家加油谢谢博客的角色。

作业 花费时间
第一次个人作业 0.5天
第二次个人作业 2天
第一次结对作业 3天
第二次结对作业 4天
第一次团队作业 3天
第二次团队作业 3天
现场编程作业 0.5天
团队作业beta冲刺 15天
累计时间 实际周均时间 预计周均时间
200h 25h 20h

1.4 令我印象最深的答辩

应该是第一次答辩!记得那天下午的答辩,给大家画饼了整整20分钟。

事实证明,一次答辩可以换来“超雄龙”的称号和几张流行到现在的表情包。

二、总结收获

2.1 我的软工实践故事

个人编程——“龙了个龙”的开发

在个人编程的任务中,我开发了一款名为“龙了个龙”的消除类小游戏。这也是我第一个自己完成的消除类小游戏。由于本人自诩为“赶ddl大师”,在最后的两天才开始游戏的开发。在这两天内,深入学习并掌握了Pygame库的使用,了解了游戏开发的基本流程和关键技术。同时,AIGC技术的应用让我认识到人工智能在内容生成和美术设计中的巨大潜力。没有ChatGPT,就没有龙了个龙!!!

项目概述与需求分析

“龙了个龙”旨在为玩家提供类似“羊了个羊”的消除体验。游戏采用Python语言,利用Pygame库构建直观且富有趣味的用户界面。主要功能模块包括主菜单、游戏界面和结束界面,配备撤销和提示等实用功能,并设有多级难度以适应不同玩家的需求。

游戏主菜单

核心功能与设计

主菜单提供“开始游戏”、“设置”、“排行榜”和“退出游戏”选项,设计简洁美观,操作便捷。

游戏逻辑涉及图案的随机生成与层叠摆放,确保每次游戏的挑战性与可玩性。玩家通过点击三个相同图案进行消除,系统实时计分与倒计时,增加游戏的紧迫感。

排行榜系统记录并展示玩家的高分,激励玩家不断挑战自我。

游戏界面

结对编程——实现校园项目招募APP的设计

在软件工程课程的结对作业中,我与队友施宇翔共同开发了一款校园项目招募APP。这个APP旨在为学生提供一个跨专业项目协作的平台,帮助他们发起和参与项目,提升综合能力,拓宽知识面,并积累人脉。

我们在第一次结对作业中设计了原型以及项目的流程图,第一次使用墨刀进行原型设计,这部分还是很有意思的,感觉就是在空想自己的第一个APP程序应该要怎么样的,其实也没考虑最后好不好实现:

在实际编码过程中,我主要负责前端开发工作,包括用户界面设计与实现、前端功能模块的开发(如登录/注册页面、用户主页、项目详情界面等)、响应式设计与优化,以及前端代码的调试与维护。

主要功能

1. 登录/注册页面

用户可以使用手机号或学校学号进行注册或登录,并通过教育邮箱进行身份验证。

2. 用户主页

用户可以查看自己参与的项目,发布新项目,查找志同道合的伙伴。

3. 项目详情界面

展示项目信息,管理项目成员,上传和下载项目文件。

4. 查找项目

用户可以根据关键词搜索项目,系统还会推荐热门或相关项目。

5. 消息通讯

支持用户之间的私聊,方便项目协作和沟通。

6. 个人中心

展示用户的个人信息,允许修改个人信息、反馈意见和管理账号安全。

因为以前没有学过前端的知识,在国庆的假期的最后两三天狂恶补。b站速成了一些前端开发的基本知识,马上在HBuilder上上手开发。虽然面临诸多挑战,但正是有我的好伙伴ChatGPT,还是能做一些基本的界面。但在最后一天,进行前后端交互的时候,也是没有足够的经验,只实现了部分的前后端交互。只能说ChatGPT在当时也无法帮忙解决一些很细节的问题,需要不断的调整代码,自己也需要懂得很多的知识,才能完成开发。在这里就浅浅地展示一下部分界面:

发布项目
搜索
寻求伙伴

现场编程——一个简单的记账本

到了现场编程的环节了,制作一个个人记账本程序。有一说一,这个现场编程属实抽象。三个小时,一个记账本?我们配吗?真的时间来不及。我们在真正编程的时候遇到了相当多的困难,譬如如何分工?每个人的编程基础不一样,分到对应的人手中,能在三个小时的时间完成吗?这些都是项目经理需要考虑的问题。协作编程也是相当困难,每个人写的模块最后合起来解决冲突也是个麻烦事情。

纵使遇到很多的问题,各种艰难险阻,我们也最终在截止时间之前交了个大概的版本。也许仅仅只能实现基础的记账功能,那也是挺让人欣慰的。

团队项目——Man游

最后到整个软件工程课中花的时间最多,也是最能考验自己的项目:Man游!

故事的开头总是极具温柔,刚组队的时候大家都是踌躇满志。

作为项目组长,最重要的就是把大家召集起来开会啦。事实证明,线上沟通的效率真的太低太低了!所以我们小组在alpha冲刺和beta冲刺的时候基本上都是在会议室里。小小的空间里,装下的不仅仅是写代码时的焦头烂额,更是享受合作的乐趣的我们!团队气氛真的很好!没有冲突!没有吵架!只有不断的欢声笑语。

照片

一个良好的分工总是能事半功倍,前期以为后端的工作量会很大,我们安排了六个做后端的同学。后来随着项目的深入,发现前端的工作量远比我们想象中的要大的多。调整了前后端的人数之后,进行了一些基本的模块分工,确定了前后端的小组长——陈碧煌和施宇翔,就真正开始我们的编码之旅啦!

暴风雨前总是宁静的~在校运会放假,大家休息了几天之后的某一天——alpha冲刺的任务来了!

谁能想到,一门一个学分的课,要天天写博客!谁能想到,软件工程居然要拍vlog!

在alpha冲刺的几天里,我每天要做的就是借会议室,跟进进度,向大家确认每天的工作,开会,总结,写博客······周而复始。




真的以为要交一个发行版!那时候真的怕alpha冲刺没有一个完整的作品展示~每天都在push大家,其实此时自己的心理都是很矛盾的。一方面是因为大家都是朋友,一直催也不好;另一方面作为项目经理要为整个团队负责,实属无奈。在软工合作项目的从头到尾都是这么过来的,不过大家真的都很配合,分配给大家的任务也能按时完成。

这边特别记录一下,在beta冲刺汇报的前一天,团队的人在学院楼熬到三四点,只为把我们的APP打包出来。令人心碎的是,打包出来,竟然是空白的!真可谓是“轻舟已撞大冰山,船到桥头自然沉”~

凌晨四点半,致敬永远的曼巴!

项目细节已经写了很多遍了,这里主要分享心路历程。想体验的朋友们可以点开链接体验一下(只能说尽力了,Man!):
https://static-mp-6a026140-60c5-4456-a947-2710927014d0.next.bspapp.com

2.2 新技术或生产力工具

  • ChatGPT:o1-preview真的香。编写代码离开不了他了。很难想象,以前的学长学姐没有AIGC,是怎么写代码的?
  • HBuilder:一款功能强大的集成开发环境(IDE),特别适用于uniAPP的开发,支持跨平台应用的快速构建。个人和结对作业编程过程中就用它了。
  • GitHub:以前仅仅把它当做一个找开源代码的平台,以前一直不会用Git,在软工这门课学会啦~第一次用来团队协作,分支和合并,有效管理项目代码的不同版本。
  • 墨刀:一款在线原型设计工具,支持团队协作和高效的原型制作。咸鱼淘宝买号会便宜很多~

2.3 我的提升

沟通协调能力

有效的沟通是项目成功的基石。在项目合作的过程,我学会了如何更清晰地表达项目目标和任务分配,确保每位团队成员都能准确理解自己的职责。同时,通过定期的会议和即时的沟通工具,及时解决项目中出现的问题,保持团队的信息透明,避免了误解和信息滞后。

时间管理能力

作为一个爱赶ddl的人,在软工这门课上因为这个吃劲了苦头。从软工中学到如何合理规划时间,确保关键任务能完成。时间规划,真的挺重要!

心态和抗压能力

软工的强度真的很大,真的需要一个良好的心态和抗压能力。一个好心态和“适可而止”的心境会让你的软工旅程更加幸福。

2.4 还有什么想说的

这门课真的意义非凡,可谓是惊为天人。刚开始,我可能会说《shabi软工》,到现在更多是《感谢软工》。这门课让我感受到自己还是一个真正的计算机学生,而不是一个只会考试的做题家。

其实很早以前,我思考我未来的职业规划时,我始终觉得我想让自己成为所谓的项目经理而不是一个纯粹的程序员。

很荣幸,在这门课上,我真的体会到了何谓项目经理。曾经的念头里,项目经理一直在我心中是一个沟通,高薪,不用整天面对代码的角色;现在有着更深的理解,或许是领导力,或许是规划能力更要有一些前瞻性的思维。更值得一提的是,分配任务真的很重要!单就软工这门课而言,没有薪酬,如果只是一句“能者多劳”,又或是拿“多给你加几分”绑架自己的组员,会让大家都不开心。在开发后期,发现困难的活全压给个别的几位同学,内心总是自责的。

也很遗憾,我在这门课上选择了项目经理这个角色,本以为“不写代码”是奖励,没想到是”驴粪蛋子表面光“。在企业界的项目经理,多多少少应该懂一点技术,没有一点技术积累,就无法与前后端进行沟通。每当我和前后端的成员沟通时,我总是发现,他们说的我不懂;他们提的我无法解决。从长远和自身发展来看,对于软工这门课,于我来说,体验编码过程可能比体验分配任务跟进进度写写博客的角色要有意义的多。我也不想未来在简历里写下Man游这个项目经历的时候,还要去编自己在里面具体负责的技术环节。所以强烈建议,《项目经理不用写代码》改成《项目经理可以不写代码》,这样当时我听完之后或许就不会有这个不编码的惰性,或许Man游就会多完善几个功能······

对我来说,过程远比结果要重要。无论这门课大家最后拿了多少分,在短短的几周为软工拼搏的日子里会成为在福大一段美好的回忆!

三、致谢

最后,真的很感谢软件工程这门课,一个学分的课,十个学分的效果。

也很感谢张栋、吴越钟两位老师和所有的助教老师。

感谢Man游团队的中流砥柱——施宇翔,让后端团队屹立不倒。

感谢Man游的劳模,凌晨四点在改代码的前端组长——陈碧煌。

也感谢力挽狂澜的王梓铭,成功替全团队的人擦了屁股,成功部署了程序。

感谢我们iman团队的所有组员,大家真的都很尽力!辛苦啦各位!

posted @ 2024-12-29 22:22  LEML  阅读(27)  评论(0编辑  收藏  举报