轻舟已撞大冰山

news/2025/1/4 2:12:09/文章来源:https://www.cnblogs.com/LeeeLong/p/18638316

一、关于软工

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团队的所有组员,大家真的都很尽力!辛苦啦各位!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861043.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高性能计算-GPU编程模型(21)

1. GPU的内存模型 GPU编程数据需要从CPU主存拷贝到GPU全局存储器,所有线程共享全局存储。开辟的全局存储器空间指针在CPU代码中不能解引用使用,应在计算完结果后再拷贝回CPU主存空间。线程块内共享存储。 (1) 线程私有的存储有寄存器、本地内存 (2) 线程块内有块内线程共享的…

YEAH!!!

目录一.过往云烟1. 对于软件工程课程的想象2.在这门课程中的投入与产出3.印象最深刻的答辩二.果实1.故事2.新伙伴3.大提升软件工程真的是一门很不错的课程!如今也是轻舟已过万重山,但我永远怀念开发福小研的日子!!!三.致谢 一.过往云烟 1. 对于软件工程课程的想象“制作软…

【前端开发】代码上传前怎么避免把 账号,密码,AppId, key 之类私密信息 提交上去

平时我们写代码的时候难免会有一些私密信息不行提交到git仓库上去,比如 账号,密码,AppId, key 之类不希望公开的信息,但是提交代码难免会有疏漏的时候,对此我们可以写个 githook 来协助我们进行检查。 目的 在Git提交操作前,对即将提交的文件进行全面扫描,检查其中是否存…

已有的事后必再有

学期回顾 1.1 回顾对软件工程课程的想象 对软件工程的第一印象 最初,我对软件工程的理解非常肤浅,以为它只是一门普通的专业课程。然而,随着个人作业、结对作业和团队编程的深入,我深刻体会到了软件开发的巨大压力。 初步达到我的预期 在这三个月的学习实践中,我参与了需求…

秒杀场景的设计思考

秒杀场景的设计思考 在学习Redis的之后,一个绕不开的话题就是秒杀系统的设计。本文将从下面几个方面展开一下个人简单的理解:秒杀场景的介绍 设计的核心思路 怎么限流、削峰、异步 planB 总结‍ 秒杀场景的介绍 秒杀场景是大家常说的高并发场景,但是实际上其与单纯的高并发还…

UE4.27, 揣摩源码, 序列化 (三) FLinkerLoad, FLinkerSave

3. FLinkerLoad, FLinkerSave分别是UObject的反序列化和序列化的内核3.0. UPackage与UObjectUObject因为涉及与其他UObject的复杂引用关系,如果我们客制化地单独正反序列化每一个UObject,我们会在反序列化的时候惊觉这是繁琐而不可能的。为了满足UObject这种复杂的对象的序列…

设计Element UI表单组件居然如此简单!

0 前言 上文讲解了Jest框架对组件库测试,TypeScript和Jest都为代码质量和研发效率。之前实现Container和Button组件以渲染功能为主,可根据不同属性渲染不同样式去实现布局和不同格式的按钮。 本文的表单组件,除了要渲染页面组件,还支持很好页面交互,从Element3的表单组件开…

Kubernetes(v1.29)学习笔记

什么是KubernetesK8s是Kubernetes的简称,是一个开源的容器编排系统,用于自动部署、扩展和管理容器化应用程序。 Kubernetes源于希腊语,意为“舵手”或“飞行员”,其主要功能包括服务发现与负载均衡、存储编排、Secret和配置管理、批量执行、水平扩缩、自动化上线和回滚、自…

简答题

1 冯诺依曼结构计算机的基本思想是什么 ?按此思想设计的计算机硬件系统的应由那些部件组成,它们各有什么作用? 存储程序和程序控制是冯诺依曼结构计算机的主要设计思想。存储程序是指将解题的步骤编写为程序,然后将程序和运行程序所需要的数据以二进制的形式存放到存储器中…

基于双PI控制器和三电平SVPWM交流同步直线电机矢量控制系统的simulink建模与仿真

1.课题概述基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真。通过PSO粒子群优化进行最大功率跟踪。2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a 4.系统原理简介光伏(Photovoltaic, PV)发电系统利用太阳能直接转换成电能,是实现可持续能源战略的重要组成部分。…

Gridview使用CheckBox全选与单选 Version 3

还是有网友开发ASP.NET程序,今天联系Insus.NET说,参考下面随笔,无法实现,没有效果。Gridview使用CheckBox全选与单选 Version 2 https://www.cnblogs.com/insus/archive/2013/05/22/3093114.html 几番仔细检查,放大对着搬,照抄,没能错呀!说实的,具体原因,Insus.NET…

RL中on-policy和off-policy的本质区别/重要性采样

讨论了on-policy和off-policy的本质区别。说明了off-policy MC和off-policy TD是如何利用重要性采样的,以及为什么Q-learning不需要进行重要性采样。本随笔的图片都来自UCL强化学习课程lec5 Model-free prediction的ppt (Teaching - David Silver ). 回忆值函数的表达式: \[v…