一、学期回顾
1.1 对于软件工程课程的想象
- 在软件工程课开始之前,我曾经关于就业方面感到困惑不解,因为自己前两年在学校大部分学的都是理论知识,那么当我去参加工作,我要从事什么呢?
- 学期初一位学姐告诉我,这学期的软件工程是一门很重要的课程,有很强的应用性,可以解答我的疑惑,所以我对这门课充满了好奇。
- 软件工程课开始后,每次的作业对我来说都是一个挑战。在这个过程中我学会了需求分析、原型设计、前端和前后端对接技术(好多都是全面速成彻夜奋战😭),也对软件开发的流程有了更详细全面的认识。但是我的技术水平还是不够过硬,复杂一些的就会让我感到棘手。
1.2 回顾投入与产出
在软工实践课程当中我编写了将近6000行代码。
1.2.1 yummy消除小游戏
- 这是一个类似“羊了个羊”的小游戏,有三百多行代码。
这对于我来说是一个不小的挑战,因为我从前没有接触过python以及小游戏制作开发,所以一开始看到时非常头大,到处网络学习。
在开发的最后还遇上了我的二十岁生日,几乎是刚和朋友们大吃一餐就马不停蹄回去改代码🤧
所幸最后在自己的努力和ai的帮助下,成功完成了一个自己较为满意的小游戏。
最喜欢唬不懂行的朋友😂所以即使辛苦看到朋友的夸奖也满足了(ps.只有我自己知道我有多草台班子
1.2.2 ProjectPartner软件
- 结对编程中我负责前端部分,由于我们设计的功能较多,结对编程又只有两个人,所以在那些天我几乎是不眠不休地熬夜写代码,最终汇总出来我的代码量有4000+行。当然代码量太大有一部分原因是我不够精简,总是采用一些笨方法。比如下图中一些冗余页面是可以合并的,只不过当时的我并不会。
前后端都写好之后,最崩溃的事情发生了————我们对接不上!对于两个初学者来说,就像让猴子去造汽车😭还好在之前认识的软件工程专业的朋友来帮了我们一把,最终顺利提交了。
虽然长的很简陋,但是这是我第一次完完全全开发出一个可以使用的软件😽对我来说意义非凡
1.2.3 养食记小程序
- 在团队项目中我参与了“养食记”的设计与开发,我参与了需求分析、原型设计、前端开发、前后端对接的工作。编写了近两千行的代码。
我们小组的安排井井有条,最终在大家的共同努力下开发出了小程序。
1.2.4 花费时间
作业 | 花费时间 |
---|---|
第一次个人作业 | 4h |
第二次个人作业 | 21h |
第一次结对作业 | 19h |
第二次结对作业 | 10天 |
第一次团队作业 | 7天 |
第二次团队作业 | 7天 |
现场编程作业 | 4h |
团队作业beta冲刺 | 14天 |
在软件工程课程上花费的时间
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
318h | 24h | 20h |
1.3 印象深刻的作业
其实有两次作业都很印象深刻。一次是第二次结对编程,因为那时候我对开发一无所知,和我的队友都是零基础,我们两个忙的焦头烂额。那时候还遇上了国庆节,我和队友基本没有休息,每天都在学习和尝试写代码,很基础的流程我们都要现学现卖,心里的焦虑和对未知的恐惧让我们很有压力。
另一次是小组冲刺时,我的前端页面制作还算顺利,前后端对接时出了很多问题和麻烦,我和后端同学积极沟通,向有经验的前端同学咨询求助,最终终于在交付前实现了我负责的部分对接功能。
二、总结收获
2.1 软工实践故事
个人编程
个人编程的是制作一个消消乐小游戏,我在有限的时间内了解了大概的框架和代码,我意识到了AI的重要性,在我个人能力不足的情况下,AI帮助了我解决很多困难。我一开始想自己动手建框架、写代码,但是基础不足浪费了我很多时间,后期学会了AI辅助,就做到事半功倍了。
结对编程
结对的时候我们一个人负责前端一个人负责后端,这次经历让我意识到了沟通的重要性,需求一定要明确地和对方沟通清楚,避免后期的接口问题。比如我们一开始沟通不清晰,所以导致前后端对接的时候很麻烦。
现场编程
现场编程考验了我们的现场发挥能力,在有限的时间内想要快速开发出应用,需要组长迅速统筹规划,避免团队内部意见不统一,并且把握时间,合理分工。比如我们一开始时候确立的路线其实并不太合适,导致最后的结果存在瑕疵和问题,并且短时间内无法解决这个bug。
团队编程
团队编程中我的经验是要扬长避短,一个朋友选择了在团队编程中自己没有接触过的后端,导致花费了大量时间进行学习,并且在后面也跟不上进度,自己的学习和作业安排也协调不好。还有就是要尽快完成任务,遇到问题不要自己纠结,可以尽快求助更有经验的同学朋友。
2.2 新技术或生产力工具
Git:一开始说上传到github进行pr操作我一窍不通,后面在同学的帮助下我学会了使用git进行pr操作。
Github:我以前没有使用过,这个还需要挂梯子,我的梯子很卡,在朋友的帮助下我下载了更为流畅的watt toolkit,使我轻松打开了github。我学会了在上面上传代码,以及学习并直接下载参考别人的源代码。
figma、墨刀:最初我使用figma进行原型设计,它确实更专业、自由度更大,但是这也意味着figma的上手难度也比较高,所以我做出来的页面也比较简单。后来在团队合作中我跟随团队使用墨刀,发现这个软件进行原型设计更为方便、快捷,对新手更加友好,而且还是全中文的/哭泣。
HBuilder X:我使用这个软件进行前端设计,这个软件很清晰明确并且好上手,而且打包成app很简单方便,可以直接使用云打包功能进行快速打包。但是因为我的学艺不精,所以最后打包出来的软件在我手机上呈现的效果并不好,存在页面样式变形的问题(我也不知道为什么,明明电脑上运行出来模拟好好的😭)
chatgpt、豆包、智谱清言、kimi:这几款ai都是我编程过程中使用过的,我充分意识到了新时代人工智能的发展对编程的影响,这些ai软件也各有优劣,也不存在能直接给出你所需代码的ai,每个都只是能用于参考,实际上想使用还是需要自己去调整。ai可以给出辅助以及建立框架,但是还是不能彻底代替程序员。
2.3 我的提升
1.抗压能力(和忍术🙌)。时间紧任务重,而且很多都是我不曾接触过的新知识,很多时候看到布置的任务都不知道要从何做起,所以一定的抗压能力很重要。
2.时间管理能力。在这学期我们专业的课程非常繁忙,基本都是满课,软工的很多作业都需要挤时间或者熬夜完成,所以需要适当规划时间,保证学业和休息时间。
3.合作和沟通能力。在结对编程和团队编程中,都不是一个人在战斗,为了实现最终的效果,我们需要和队友详细沟通,充分交流,不然根本不可能实现。
2.4 我的话
虽然这门课很辛苦而且压力很大,但同时非常充实且有意义,通过软件工程课我充分体验了软件开发的基本流程,对自己未来的就业方向有了更清晰的认识(不过现在找工作好像超级难😱)。在最后完成团队作业的时候,我才感长出一口气,意识到切实的“纸上得来终觉浅,绝知此事要躬行”。
三、致谢
首先感谢我们的软件工程团队,有着靠谱负责的组长,还有细心认真的小组长,在他们的带领下我们分工明确,一起努力着。和我一起进行前端开发的队友也很值得感谢,我们一起面对了很多难题,每当对方找出处理策略时都会帮助另一方。
其次要感谢我精通前端开发的朋友,多亏了朋友鼎力相助,时常帮助我修改bug和解决各种疑难问题,我才能顺利完成软件工程作业,向大佬鞠躬🥹