学期回顾
1.1 回顾对软件工程课程的想象
对软件工程的第一印象
最初,我对软件工程的理解非常肤浅,以为它只是一门普通的专业课程。然而,随着个人作业、结对作业和团队编程的深入,我深刻体会到了软件开发的巨大压力。
初步达到我的预期
在这三个月的学习实践中,我参与了需求分析、原型设计和小组编程的后端开发,大致了解了软件开发的全部流程。特别是在后端接口开发和数据库部分,我不仅实践了所学知识,还将其与数据库课程内容相结合。
2.磨练了个人的意志。在众多作业完成过程中,最让我感到痛苦的是修改bug,尤其是修改别人的代码。对于自己编写的代码,至少还能有一定的思考方向,但遇到其他人的问题时,真的让人无从下手。
3.最重要的是掌握AIGC技术。AI贯穿了我整个软件工程学习史。从国内的大模型如Kimi、豆包,到国外的ChatGPT,一系列人工智能大模型在代码实现、bug查找修改等方面发挥了巨大作用,可以说没有AI,就没有今天能够顺利完成软件工程课程的我。
1.2 回顾这门课程中的投入与产出
在软工实践课程中,我编写了大约9000行代码。其中,个人作业约500行代码,结对作业约3000行代码,剩余的都是在团队作业中完成的,包括后端接口代码、单元测试代码和数据库相关代码。后期还参与了前端对接和部分代码问题修改。
在个人作业中,我实现了类似“羊了个羊”的小游戏“猴了个猴”。小游戏本身逻辑不难,但从零开始设计构思并编写一个小游戏程序对当时的我来说确实是一个不小的挑战(多亏AIGC才能快速实现满足需求的代码)。
在结对作业中,我主要负责前端界面的路由跳转等函数设计以及云数据库的管理。两个人一起实现开发一个小程序,几乎占据了我们整个国庆假期(除去休息的前两天),在各大网站学习技术,了解相关知识,在GitHub上查阅了大量前人的代码,在结合AIGC工具的帮助下,终于在截止日期前完成了项目。接下来三天,我们几乎每天都是两点一线,宿舍食堂两头转,两眼一睁就是写代码。
在团队项目中,我参与了“养食记”的设计与开发,承担的角色是前端页面设计。好处是有的,能够理解其他人的工作,更好地进行交流讨论,改进优化程序,修改bug。
软工实践的各次作业分别花费的时间:
作业 | 花费时间 |
---|---|
第一次个人作业 | 4小时 |
第二次个人作业 | 20小时 |
第一次结对作业 | 20小时 |
第二次结对作业 | 45小时 |
第一次团队作业 | 30小时 |
第二次团队作业 | 100小时 |
现场编程作业 | 5小时 |
团队作业beta冲刺 | 80小时 |
在软件工程课程上花费的时间:
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
304小时 | 24小时 | 25小时 |
1.3 印象最深刻的是
毫无疑问,是小组编程阿尔法冲刺的经历。在大约10天的时间里,在白天还要上课的基础上,将原型设计的软件实现出来,我认为这对所有人来说都是一个极大的挑战。但是,在组长的带领下,历经多个日夜的鏖战,我们最终还是完成了大部分重要的功能,使我们的项目初具雏形,能够在发布会上进行展示。那一段时间里,和小组成员在宿舍苦苦熬夜,为实现一个功能感到开心,发现修改一个bug而激动,现在看来,都是微不足道的小事情,但在当时却是激励我们不断把软件完成下去的动力。当最终看到自己编写的程序成功运行起来,通过二维码展示给大家时,欢欣雀跃,无比自豪的心情无疑是对自己最大的回报。
二、总结收获
2.1 展开说说你的软工实践故事
经验总结:
(以下观点都是建立在自身痛苦经历上总结出来的)
一定要养成写代码注释的好习惯:注释不仅是用来帮助其他人理解你的代码,还是帮助未来的自己。因为一段时间后,可能连你自己也看不懂这段代码(至少花费一定的时间去理解)。
前期不要过多的设计细节:过多的设计细节的功能会大大拖延前期的进度,同时在没有整体完成的基础上,一些小的功能是依赖与其他主要功能的,在大部分模块完成前无法实现。
2.2 学习到的新技术或生产力工具以及它们给你带来了哪方面的帮助
技术方面
云服务器配置搭建及小程序项目部署:自主搭建了腾讯云服务器并用于配置mysql数据库以及小程序的后端,了解配置域名以及ssl等服务器管理有关方法。
mysql数据库管理维护:实践了在数据库管理系统课程上学习到的知识,配置、运行、维护数据库,实时监控保证数据安全。
python-flask后端框架:掌握搭建flask框架体系,开发运行于服务器上,轻量级的后端框架,满足对数据库进行操作的接口需求。实现ai接口的调用。
vue3框架:了解vuee3前端框架,设置store来管理全局变量,页面的设计,函数的编辑以及接口的调用。
生产力工具
APIFOX:便捷的编写接口文档,支持根据文档写接口测试,根据文档生成代码,直接发送请求并判断返回格式是否正确。同时,还能用于简单接口自动化测试,可以支持多线程多请求访问。
HBuilder:前端开发工具,支持内置浏览器预览设计的小程序,且支持一键打包,对小型的程序还可以生成临时查看的二维码。
XShell Xgtp:好用的远程连接服务器的工具,不论是上传文件还是操作终端。
AIGC工具:无论是编写实现某些功能的代码,还是修改代码中bug,以及帮助优化代码,AIGC在本次的课程中都居功至伟,可以说全部以上的代码都由AI经手过。(再次感谢Kimi,豆包,ChatGPT4)
2.3 技术之外,这门课程还给你带来了哪些方面的提升?
抗压能力:面对时间紧迫,任务量繁多的项目开发工作,没有良好的心理抗压能力,很难在日后的职场上坚持下来。
协作能力:较大的团队项目不是一个人埋头苦干能够完成的,如何分工,如何对接,如何避免矛盾分歧,都需要在实践中学习掌握。
自学能力:学校不可能教会你所需的全部知识。只有不断的自主学习才能跟进时代的潮流,把握机会,成长自己。
时间管理能力:在日常课程中挤出时间,分配好每一部分的工作,按部就班的完成,最大化利用时间,才能高效率的完成任务。
2.4 如果还有什么想记录的或者想说的,就写在这儿吧!
虽然我的专业是大数据,未来不一定会从事软件开发相关工作,但是作为一名计算机学院的学生,怎么能没有和伙伴们熬夜开发程序的经历呢。大三上的软件工程课程很好的弥补了这一缺憾,算是让我的计算机学习生涯更加圆满了一些吧。过程中尽管存在种种挫折,可是当这篇博客写到这里,一切都即将结束的时候,或者真的只有一句轻舟已过万重山可以形容此时我的心情了吧。
三、致谢
最想要感谢的人是我们小组的组长。在他们的帮助鼓励下,我才能在软件工程这门课程上收获如此之多。在遇到问题时有人分享,思考解决。遇到困难时,分工合作,共同化解。情绪低落时,能够一起谈笑抱怨,缓解压力。同时,在困惑时,有人一起探索求真,指引方向。
同时,也感谢张栋,吴越钟老师以及助教们的帮助指导,顺利的完成本学期的软件工程课程。