风继续吹
一、学期回顾
1.1 回顾你对于软件工程课程的想象
在学期初,我对软件工程课程没多少了解,觉得它应该和之前的部分课程一样,老师讲解一些编程语法然后布置作业,后期周末去实验室编程完成实验,期末再复习一下这门课编写代码作答题目这门课也就过去了。但实际上的软工有很大不同,老师不会再给你讲解代码,只是告诉你一些需要使用到的代码语言和工具,让你自行摸索完成编程,老师布置的作业也不仅仅只是代码了,其中融合了许多理论知识,让我们的行动都建立在经过检验的有效方法上,我们的编程工作具体完成思路也从随心所欲转变为有迹可循。后期的实践课比起编程,更多的是我们的软件成果展示。期末考试的内容也基本不会涉及代码。与我的预想相反,软件工程最看重的并非编程实现能力,而是当我们拿到一个项目之后,如何以性价比最高的方式对其进行开发,由于现代软件功能之庞大复杂,一个人完成一个比较有价值的软件已经不太现实,我们需要从个人主义中脱落出来,回归到整个团队的考量之中,思考团队应该如何运作以提高效益、降低风险。
1.2 回顾你在这门课程中的投入与产出
在软工实践课程中,我编写了约7000行代码。在团队项目中,我参与了“剑来”的开发,承担了后端设计开发的角色。从第二次个人作业的小游戏编程开始,编程作业难度步步提高,几乎每一次的编程作业都是我以前所从未接触实践过的。这也就意味着我每一次完成编程作业都是从零开始,了解题目->搜索资料->初步尝试->修改完善->最终结果,这一过程与我而言在一开始是十分痛苦的,光准备工作就需要我投入不少的精力,而且前期的投入工作还未必对后续编程工作产生作用(实际编程与想象中不同,方向有误),过程漫长且正反馈少是痛苦的根源。有时候代码写着写着,错误频出,找不到bug在哪,是什么原因,我也就产生放弃的念头,不想再去完善代码了。但所幸每次经过一段时间的休息,我又能够重新投入精力到项目中去了,就这样反反复复项目就完成了。越到后期,我也就越习惯了,我的抗压能力以及对项目的耐心程度都有了极大的提高。当仿“羊了个羊”成功运行时,我的内心是满足而放松的。项目合作平台是我日夜赶工的铁证,而剑来,则是团队齐心协力的灿烂成果。它们都将永远被铭记于心中,随时间愈发光亮。
软工实践的各次作业分别花费的时间:
作业 | 花费时间 |
---|---|
第一次个人作业 | 5小时 |
第二次个人作业 | 15小时 |
第一次结对作业 | 20小时 |
第二次结对作业 | 40小时 |
第一次团队作业 | 30小时 |
第二次团队作业 | 40小时 |
现场编程作业 | 10小时 |
团队作业beta冲刺 | 50小时 |
在软件工程课程上花费的时间:
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
210小时 | 14小时 | 10小时 |
1.3 令你印象最深刻的是哪一次作业或哪一场答辩?
令我印象最深刻的是第二次结对作业,那时的我还尚未理解何为前端,何为后端,不理解何为服务端,何为客户端,不理解如何搭建数据库,使用数据库,不理解如何搭建网站等等。可以毫不夸张地说,第二次结对作业对于那时的我而言是一场噩梦,慌张而又不知所措。我带着未知的恐惧逐一对作业上提及的编程语言和工具进行了解。于是我便担任了后端的工作,框架已经设计好了,一个个代码文件初步编写完成。但由于是毫无经验的首次网页开发,bug层出不穷,我一遍遍地运行->开发者工具->将错误发给ChatGPT->修改代码->错误依然存在->再次运行,循环往复不知道多少遍。我依然记得,在国庆假期10月2日起,我就没有再出过门,每天都在重复着睡觉,吃饭,洗漱,写作业这几样事。有时候ChatGPT用多了模型使用受限,回答效果不好,然后就又得等几个小时才能继续。国庆假期只有我一个人在宿舍,其他舍友都回家了,我好像成了无情而烦恼的机器人,不说话,只是一味坐在椅子上,电脑前,也不知道疲倦,常常熬到深夜,甚至通宵,第二天两眼一睁又是干。从那次我学到了很多,我开始理解程序员的工作,开始理解现实中的编程是怎样的了。
二、总结收获
2.1 展开说说你的软工实践故事
第二次结对作业中,队友意外发烧,我只能为她完成部分本来属于她的工作,实际情况似乎总不能与计划一致。团队实践中,组长总是会投喂我们,让原本疲惫的身心有了一些放松。现场编程中,我们原本已经完成了一个记账功能,但最终由于过于匆忙导致版本运行错乱,功能展示时未能成功,事后重新运行却发现功能能够正常使用,但已经错过了。这些种种都说明我们是人,是普通人,总有一些意料之外的事情发生,但也许我们不应为此懊恼,而应为此庆幸,庆幸经验的积累,庆幸对软件工程有了新的认识。
2.2 介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的帮助?
-
Git
Git是我在这门课中最早接触到的工具之一。通过Git,我学会了如何进行版本控制,管理代码的变更历史,以及如何与队友协作开发。Git的分支功能让我能够在开发新功能时不影响主代码的稳定性,而Pull Request的机制也让代码审查变得更加规范。可以说,Git是我在团队项目中不可或缺的工具。 -
GitHub
GitHub作为Git的远程仓库平台,为我们的团队项目提供了极大的便利。通过GitHub,我们能够轻松地共享代码、管理任务、跟踪问题,并进行代码审查。GitHub的Issue和Project功能帮助我们更好地规划任务和分配工作,而CI/CD集成也让我们的代码能够自动构建和测试,大大提高了开发效率。 -
云服务器
在团队项目中,我们使用了云服务器(如阿里云、腾讯云等)来部署我们的应用。通过云服务器,我们能够快速搭建开发环境,并进行远程协作。云服务器的弹性扩展能力也让我们能够轻松应对流量高峰,确保应用的稳定性。此外,云服务器还提供了丰富的监控和日志功能,帮助我们快速定位和解决问题。 -
墨刀
墨刀是一款原型设计工具,在团队项目的需求分析和设计阶段,我们使用墨刀来快速搭建产品原型。通过墨刀,我们能够直观地展示产品的界面和交互流程,方便与队友和用户进行沟通和反馈。墨刀的拖拽式设计和丰富的组件库让我们能够快速完成原型设计,节省了大量的时间和精力。此外,墨刀还支持多人协作,让我们能够同时编辑和评论原型,进一步提高了团队的工作效率。 -
Jest
Jest是一个JavaScript测试框架,我们在前端开发中使用Jest来编写单元测试和集成测试。通过Jest,我们能够确保代码的每个模块都能按照预期工作,减少了Bug的出现。Jest的自动化测试功能让我们能够在每次代码变更后快速运行测试,确保代码的稳定性。此外,Jest还提供了丰富的断言和Mock功能,让我们能够轻松地模拟复杂的测试场景。
2.3 技术之外,这门课程还给你带来了哪些方面的提升?
- 沟通能力:在与队友和老师的交流中,我的沟通能力得到了显著提升。
- 时间管理:通过多次项目的实践,我学会了如何更好地管理时间,合理安排任务。
- 抗压能力:在面对项目压力和挑战时,我学会了如何保持冷静并高效解决问题。
2.4 如果还有什么想记录的或者想说的,就写在这儿吧!
这门课让我对于计算机世界有了一个全新的认知,让我对于未来的工作有了初步的想象,也许从这门课开始,我才算真正地踏入了通往计算机世界的大门,这门课很忙,但忙得有价值。由衷感谢软件工程,我真切地感觉到了成长。我的个人总结不多,但都是肺腑之言。
三、致谢
感谢所有与我协作的人
首先,我要感谢我的队友们。在团队项目中,我们共同面对挑战,互相支持,最终完成了项目。
感谢所有给予我帮助的人
其次,我要感谢那些在课程中给予我帮助的同学和朋友。无论是结对编程中的搭档,还是在我遇到技术难题时伸出援手的同学,你们的支持和鼓励让我在困难中找到了前进的动力。
感谢老师和助教
最后,我要特别感谢老师和助教,你们为我们的作业付出了大量的努力。